Ir a contenido
Building the LightMessenger : Manufacturing, Part 2

Construcción del LightMessenger : Fabricación, Parte 2

Lab401 Light Messenger : Diario de desarrollo

Parte 2 de nuestra serie "Fabricación de productos con Lab401".

En la Parte 1, hablamos de nuestro enfoque y metodología para crear, fabricar y lanzar productos.

En esta parte, profundizamos en los entresijos de la producción del accesorio de Persistencia de Visión / Light Painting de Lab401 para el Flipper Zero.

¿Qué es el Light Messenger?

El Light Messenger es un accesorio de Persistencia Visual y Light Painting para el Flipper Zero. Tiene 16 LEDs RGB y un acelerómetro; cuando se conecta a tu Flipper Zero y se desliza hacia adelante y hacia atrás, "pinta" texto e imágenes en el aire.

Es de código abierto y completamente pirateable, y la comunidad ya ha añadido algunas funciones nuevas.

Muchas gracias a @tixlegeek, el ingeniero que está detrás del proyecto, y a @codeallnight por sus contribuciones al código base desde el lanzamiento del producto.

Paso 0: ¿Qué vamos a construir?

Al principio, empezamos con una sesión de brainstorming en la que anotamos varias ideas. El objetivo era encontrar conceptos que fueran divertidos, interesantes y capaces de aportar innovaciones reales al Flipper Zero, en lugar de limitarse a replicar los mismos módulos de hardware que proliferan como clones. Pretendíamos crear un proyecto novedoso, cautivador y educativo.

A continuación, evaluamos cada idea para determinar por dónde empezar. Era la primera vez que lo hacíamos, así que era crucial que el proyecto inicial estuviera claramente definido y fuera accesible.

Además de la "Métrica de Producto" definida en el post anterior, dado que éste sería nuestro primer accesorio Flipper Zero, teníamos varias métricas adicionales:

  • Aprender la arquitectura de hardware de Flipper Zero
  • Aprender la arquitectura de desarrollo de software de Flipper Zero (FURI)
  • Establecer y gestionar una cadena de suministro completa (desarrollo, creación de prototipos, producción, etc.)
  • Probar el mercado de los accesorios de Flipper Zero

Debido a esta sobrecarga adicional, era importante establecer objetivos alcanzables. Por ello, queríamos asegurarnos de que el alcance de los accesorios fuera relativamente sencillo, para poder concentrarnos en adquirir conocimientos sin sentirnos abrumados.

Nos decidimos por el accesorio "Persistencia de la visión / Light Painting", ya que era relativamente sencillo en términos de hardware y producción, lo que nos permitiría concentrarnos en los elementos más complejos: el desarrollo de software y la arquitectura de Flipper.

Del mismo modo, si no hubiera mercado para los accesorios Flipper, y todo el proyecto fuera un fracaso, fracasaríamos rápidamente (y, por tanto, de forma más barata).

En resumen: este proyecto nos permitió aprender y explorar qué podíamos hacer, y cómo.


Diseño

Bocetos iniciales del producto

Antes de sumergirnos en el diseño final, había que tener en cuenta varios factores. Tuvimos que trabajar con limitacionesfísicas, presupuestarias y logísticas que orientarían nuestras decisiones técnicas:

  • Robustez mecánica
    El complemento será utilizado por personas reales, con manos grandes y un uso a veces perruno. Por lo tanto, necesitábamos diseñar un módulo robusto, especialmente teniendo en cuenta las limitaciones GPIO del puerto externo del Flipper Zero.

  • Desarrollo
    El código debe ser claro y accesible para que cualquiera pueda entenderlo y contribuir. Por ello, hemos optado por organizar el proyecto en varios módulos (configuración, gestión del acelerómetro, renderización de gráficos, etc.) y utilizar estándares probados (como JSON para la configuración y Bitmap para las imágenes).

  • Producción
    Cada elemento debe ser fácilmente fabricable con componentes fácilmente disponibles. La elección del parLIS2DH12/SK6805 resultó ser una decisión acertada en términos de fiabilidad y abastecimiento.

  • Coste
    El planteamiento fue sencillo y eficaz. Damos prioridad a lo necesario para garantizar que el producto final esté disponible a un precio razonable.

  • Estética
    A menudo se pasa por alto la estética, pero contribuye significativamente a la experiencia del usuario, al atractivo del producto y a la imagen de los creadores. Tanto Lab401 como yo queríamos estar lo más orgullosos posible de lo que se ofrece al usuario, asegurándonos de que se sienta respetado y valorado. El objetivo era ofrecer algo bonito que demostrara que realmente nos hemos esforzado al máximo.


Bocetos

Empiezo por este punto porque es uno de mis pasos favoritos. Quería que todos los complementos compartieran una historia común y un hilo conductor para crear un auténtico lore. Esta atención al detalle refuerza el compromiso del usuario, aunque no sea estrictamente necesario desde un punto de vista técnico.

Empecé en papel, esbozando ideas, y luego finalicé los bocetos con Inkscape (<3).

Para la parte posterior de la PCB, diseñé una hoja de trucos sobre "Seguridad de la Información" centrada en la codificación, incluyendo el modelo de Shannon, comparaciones entre Codificación, Cifrado y Hashing, así como una tabla ASCII condensada y un diagrama para el código Morse.


Prototipos

Pasamos por numerosas iteraciones, desde la prueba de concepto hasta la versión final, lo que nos permitió iterar rápidamente cada vez que se identificaba un problema:

Primer prototipo que nos permitía controlar las funciones periféricas y probar diversas opciones.

Algunos de los prototipos desarrollados

Cada prototipo nos permitió probar un aspecto concreto del módulo, desde la detección de movimiento hasta la pantalla LED, y perfeccionar nuestro código. Este enfoque nos permitió iniciar un desarrollo serio sobre una base sólida.


Selección de componentes

Para poner en marcha la producción, teníamos que asegurarnos de que todos los componentes estuvieran disponibles en cantidades suficientes. Tras numerosas pruebas e iteraciones de diseño, optamos por la parejaLIS2DH12/SK6805:

  • LIS2DH12: Un acelerómetro que ofrece todas las funcionalidades necesarias, con una excelente fiabilidad y soporte de software proporcionado por STMicro.

  • SK6805: El único modelo que emite por el lateral, algo que no estaba previsto inicialmente pero que resultó ser la solución ideal. También están fácilmente disponibles.


PCB

La PCB se diseñó con KiCad (<3), un software gratuito y de código abierto extremadamente potente. Su comunidad dinámica y sus funciones avanzadas nos permitieron diseñar un circuito adaptado a las necesidades específicas del proyecto, manteniendo al mismo tiempo una calidad profesional.


Funcionamiento y POC

Esta sección se adentra en el corazón del proyecto. Las especificaciones eran las siguientes

  • Visualización de texto

  • Visualización de imágenes

  • Visualización bidireccional

Para cumplir las limitaciones dimensionales y garantizar al mismo tiempo una buena resolución, optamos por una matriz de 16 LED RGB (SK6805).

Para la detección del movimiento, utilizamos un acelerómetro con al menos dos interrupciones de tipo "inclinación". Estas interrupciones detectan las inversiones de fuerza y generan pulsos en los pines GPIO, que son esenciales para disparar interrupciones en el código.

Es importante tener en cuenta que el puerto GPIO del Flipper está muy bien diseñado, pero también es bastante limitado. Tuvimos que hacer varias pruebas, buscar ideas y ayuda de los equipos de Flipper, pero finalmente, funcionó, y rápidamente implementamos un POC satisfactorio.

Primeros vistazos a la implementación "funcional


Primer código funcional


El código

Desarrollar el código fue el verdadero reto.

  • Estructura modular:
    El código se divide en varios módulos claros:

    • Configuración: Lectura y análisis del archivoJSON para definir la pantalla y los parámetros.

    • Acelerómetro: Gestión de interrupciones a través de las funciones zmax_callback y zmin_callback, que determinan la dirección del movimiento y actualizan la estructura de la aplicación a través de swipes_init.

    • Renderizado de gráficos: Un shader computa en tiempo real los colores de todos los píxeles de una columna en función de los parámetros y del estado del acelerómetro.

  • Optimización en tiempo real:
    El hilo principal se ejecuta continuamente para recalcular y actualizar la pantalla LED. La gestión precisa de los microsegundos permite equilibrar el rendimiento y la capacidad de respuesta, incluso en hardwarelimitado.

  • Herramientas dedicadas para crear texto e imágenes fácilmente, dadas las limitaciones del flipper zero (pantalla monocroma y unos pocos botones).

  • Facilidad de contribución:
    Nos hemos asegurado de que el proyecto sea fácilmente extensible. Mediante el uso de estándares como JSON y Bitmap, los usuarios pueden generar, importar y modificar archivos sin esfuerzo y sin tener que dominar complejos procesos.

El código se diseñó para que cada nueva función (como añadir colores a las imágenes o mejorar el sombreado) pueda integrarse sin alterar el sistema general.

Primeras pruebas con éxito de la función "bitmap


Detalles de funcionamiento

El acelerómetro desempeña un papel central en la orquestación de la pantalla de matriz de LED. Una vez que aparece el mensaje"SWIPE ", un hilo dedicado (app_acc_worker) toma el relevo para gestionar las interrupciones y dirigir la pantalla.

Nota:
Al examinar el código, observará que no utilizamos mecanismos tradicionales como mutexes o colas de eventos dentro de la rutina "display". La API Flipper, basada en FreeRTOS, ofrece estas estructuras, pero demasiado costosas a este nivel. Optamos por técnicas más directas, aunque algunos las llamen "sucias". Tras varias semanas de iteraciones, este enfoque resultó ser el más fiable para nuestro caso de uso, garantizando los tiempos y la estabilidad

Las dos interrupciones generadas por el acelerómetro activan las funciones zmax_callback y zmin_callback. Estas funciones actualizan la dirección del movimiento, que es utilizada por el hilo principal para animar los LED mediante un sombreador dinámico . Este sombreador está diseñado para ser fácilmente modificable mediante un simple cambio en la función callback, lo que permite explorar diferentes paletas de colores y efectos visuales.


El ecosistema Flipper

Trabajar en Flipper Zero es a la vez estimulante y desafiante. Los esfuerzos de la comunidad y de los equipos de desarrollo son impresionantes y dinámicos, a pesar de que la constante evolución de la API a veces obliga a revisar partes del código. Esta naturaleza dinámica garantiza que el proyecto se mantenga a la vanguardia y se beneficie de las últimas mejoras del sistema.


Fabricación, producción y pruebas

Una vez iterado el hardware final, pudimos poner en paralelo algunos procesos:

  • PCB / PCBA
  • Pruebas y control de calidad
  • Embalaje

PCB / PCBA

En la fabricación, el primer paso consiste en enviar los archivos completos del proyecto a la fábrica seleccionada. Normalmente se trata de los "GERBERS" y la "Lista de materiales" (BOM).

Esto permitirá a la fábrica fabricar las placas de circuito impreso (PCB) y preparar las máscaras de soldadura y la pantalla de seda, así como preparar el montaje de las placas de circuito impreso (PCBA), donde se eligen, colocan y sueldan los componentes en la PCB.

Optamos por utilizar uno de nuestros contactos existentes en Shenzhen para el PCB + PCBA.

Pruebas iniciales de PCB

Placas de circuito impreso de producción. Optamos por el "snap-off ladder style" para facilitar las pruebas. Una vez probada una PCB, se podía retirar a presión, para que no hubiera confusión sobre lo que se había probado o no.


Pruebas y control de calidad

Existen múltiples enfoques para las pruebas y el control de calidad.
Según nuestra experiencia, las pruebas al 100% (es decir, cada producto se prueba individualmente) son más seguras, fiables y, a la larga, más baratas que el muestreo aleatorio.

Para realizar un control de calidad al 100%, es necesario proporcionar a la fábrica un documento SOP (Procedimiento Operativo Estándar) en el que se describa cómo debe probarse un producto y cuáles son las condiciones de PASA/FALLA.

Si es posible, es preferible que las pruebas se realicen en una "plantilla". Se trata de un dispositivo semiautomatizado que permitirá a la fábrica probar rápidamente cada dispositivo individual.

Por lo general, si usted puede suministrar el esquema + firmware + SOP, la fábrica se las arreglará para construir físicamente la plantilla para satisfacer sus necesidades.

El documento SOP

La implementación de la fábrica de la plantilla de pruebas (con alien inesperado 👽)

Muestra de una unidad que pasa

Muestra de una unidad defectuosa (el acelerómetro falló durante el PCBA)


Embalaje

El embalaje es un tema fascinante: desempeña un papel importante en la percepción que el cliente tiene de un producto; esta percepción puede incluso empañar las primeras experiencias prácticas de un cliente con un dispositivo.

Al mismo tiempo, a menos que se trate de un dispositivo coleccionable, los envases se desechan casi instantáneamente.
Desde el punto de vista ético, ¿cuál es el límite entre ofrecer al cliente una percepción de calidad y no cobrarle de más por algo que se va a tirar?

Asimismo, los envases tienen un gran impacto medioambiental. En la producción, se utilizan todo tipo de productos químicos para blanquear y colorear las materias primas; en la recepción, van a parar a los vertederos.

Preferimos utilizar envases sencillos:

  • Cartón sin blanquear ni revestir, para minimizar nuestra huella de productos químicos nocivos.
  • Tintas a base de soja, para minimizar el impacto ambiental
  • Inserciones de espuma sencillas (sin cortes a medida, etc.) para minimizar los costes.

Creemos que de este modo conseguimos un equilibrio entre nuestros compromisos éticos y la agradable experiencia de desembalaje para el cliente. Además, somos honestos con los clientes: no pagan por algo que van a tirar.

Después de tomar estas decisiones, elegimos un formato que nos funcionaba, pero que seguía siendo lo bastante delgado para poder optar a los precios de franqueo de los "sobres".

Sin embargo, podríamos y deberíamos haberlo hecho aún más delgado; incluso una reducción del 50% de la altura habría reducido significativamente nuestros costes de paleta, envío y almacenamiento. Lección aprendida para el próximo accesorio.

Nuestra caja.


Conclusión

Este proyecto resultó ser mucho más complejo de lo previsto, ¡pero lo dimos todo para entregar un productoacabado, funcional, extensible, estético, educativo y divertido! Cada línea de código, cada elección técnica, se hizo para proporcionar una experiencia de usuario rica y una base sólida para futuras contribuciones.

A medida que desarrollemos nuevos proyectos, el equipo Lab401 y yo seguiremos ganando confianza, organización y habilidades.

Nuestra ambición sigue siendo crear dispositivos que encarnen plenamente nuestra visión inicial, y te invitamos a explorar, contribuir y compartir tus ideas en GitHub.

Si te interesa echar un vistazo al producto final, el LightMessenger, nos sentiríamos muy honrados, ¡y muy interesados en ver lo que haces con él!

Capturas de clientes que muestran light-painting, mapas de bits, modos de texto y distintos efectos de color.

Artículo anterior Construcción del DigiLab : Entre bastidores
Artículo siguiente Fabricación de productos con Lab401

Dejar un comentario

Los comentarios deben ser aprobados antes de aparecer

* Campos requeridos