Scroll Indicator
Costruire LightMessenger: produzione, parte 2
Lab401 Light Messenger: Diario di sviluppo
Seconda parte della serie "Produzione di prodotti con Lab401".
Nella prima parte abbiamo discusso il nostro approccio e la nostra metodologia per la creazione, la produzione e il lancio dei prodotti.
In questa parte, ci addentriamo nel dietro le quinte della produzione dell'accessorio Persistence of Vision / Light Painting di Lab401 per Flipper Zero.
Che cos'è il Light Messenger?
Il Light Messenger è un accessorio per Persistence of Vision e Light Painting per Flipper Zero. È dotato di 16 LED RGB e di un accelerometro; quando è collegato al Flipper Zero e viene fatto scorrere avanti e indietro, "dipinge" testi e immagini nell'aria.
È open-source e completamente hackerabile, e la comunità ha già aggiunto nuove fantastiche funzioni.

Un grande ringraziamento a @tixlegeek, l'ingegnere che sta dietro al progetto, e a @codeallnight per il loro contributo alla base di codice dal rilascio del prodotto.
Fase 0: cosa costruiremo?
Inizialmente, abbiamo dato il via a una sessione di brainstorming durante la quale abbiamo annotato diverse idee. L'obiettivo era quello di trovare concetti divertenti, interessanti e in grado di apportare innovazioni reali al Flipper Zero, anziché limitarsi a replicare gli stessi moduli hardware che proliferano come cloni. Il nostro obiettivo era quello di creare un progetto originale, accattivante ed educativo.
Poi abbiamo valutato ogni idea per stabilire da dove cominciare. Si trattava di una prima volta per noi, quindi era fondamentale che il progetto iniziale fosse chiaramente definito e accessibile.
Oltre alla "metrica del prodotto" definita nel post precedente, dato che questo sarebbe stato il nostro primo accessorio Flipper Zero, avevamo diversi altri parametri aggiuntivi:
- Imparare l'architettura hardware di Flipper Zero
- Imparare l'architettura di sviluppo del software Flipper Zero (FURI)
- Stabilire e gestire una catena di fornitura completa (sviluppo, prototipazione, produzione, ecc.)
- Testare il mercato degli accessori di Flipper Zero
A causa di questi costi aggiuntivi, era importante fissare obiettivi raggiungibili. Per questo motivo, volevamo assicurarci che la portata degli accessori fosse relativamente semplice, in modo da poterci concentrare sulla creazione di conoscenze senza essere sopraffatti.
Abbiamo scelto l'accessorio "Persistence of Vision / Light Painting", in quanto relativamente semplicistico in termini di hardware e produzione, che ci avrebbe permesso di concentrarci sugli elementi più complessi: lo sviluppo del software e l'architettura di Flipper.
Allo stesso modo, se non ci fosse stato un mercato per gli accessori Flipper e l'intero progetto fosse stato un fallimento, avremmo fallito rapidamente (e quindi in modo più economico).
In sintesi: questo progetto ci ha permesso di imparare ed esplorare ciò che potevamo fare e come.
Il design
Schizzi iniziali del prodotto
Prima di immergerci nel design finale, è stato necessario prendere in considerazione diversi fattori. Dovevamo lavorare entro vincolifisici, di budget e logistici che avrebbero orientato le nostre scelte tecniche:
-
Robustezza meccanica
Il componente aggiuntivo sarà utilizzato da persone reali, con mani grandi e talvolta con un uso sconsiderato. Pertanto, abbiamo dovuto progettare un modulo robusto, soprattutto tenendo conto delle limitazioni GPIO della porta esterna di Flipper Zero. -
Sviluppo
Il codice deve rimanere chiaro e accessibile in modo che chiunque possa capirlo e contribuire. Per questo motivo abbiamo scelto di organizzare il progetto in diversi moduli (configurazione, gestione dell'accelerometro, rendering grafico, ecc.) e di utilizzare standard collaudati (come JSON per la configurazione e Bitmap per le immagini). -
Produzione
Ogni elemento deve essere facilmente producibile con componenti facilmente reperibili. La scelta della coppiaLIS2DH12/SK6805 si è rivelata una decisione valida in termini di affidabilità e approvvigionamento. -
Costo
L'approccio è stato quello di rimanere semplici ed efficienti. Diamo priorità a ciò che è necessario per garantire che il prodotto finale sia disponibile a un prezzo ragionevole. -
Estetica
L'esteticapuò essere spesso facilmente trascurata, ma contribuisce in modo significativo all'esperienza dell'utente, all'attrattiva del prodotto e all'immagine dei creatori. Sia io che Lab401 abbiamo voluto essere il più orgogliosi possibile di ciò che viene offerto all'utente, assicurandoci che si senta rispettato e valorizzato. L'obiettivo era fornire qualcosa di bello che dimostrasse che abbiamo fatto del nostro meglio.
Schizzi
Inizio con questo punto perché è una delle mie fasi preferite. Volevo che tutti i componenti aggiuntivi condividessero una storia comune e un filo rosso per creare una vera e propria storia. Questa attenzione ai dettagli rafforza il coinvolgimento degli utenti, anche se non è strettamente necessaria dal punto di vista tecnico.
Ho iniziato su carta, abbozzando le idee, per poi finalizzare le bozze con Inkscape (<3).


Per il retro del PCB, ho disegnato un foglio informativo sulla "sicurezza delle informazioni" incentrato sulla codifica, che comprende il modello di Shannon, confronti tra codifica, crittografia e hashtag, nonché una tabella ASCII condensata e un diagramma del codice Morse.
I prototipi
Siamo passati attraverso numerose iterazioni, dal proof of concept alla versione finale, che ci hanno permesso di iterare rapidamente ogni volta che veniva identificato un problema:
Primo prototipo che ci ha permesso di controllare le funzioni della periferica e di testare varie opzioni.
Alcuni dei prototipi sviluppati
Ogni prototipo ci ha permesso di testare un aspetto specifico del modulo, dal rilevamento del movimento alla visualizzazione dei LED, e di perfezionare il nostro codice. Questo approccio ci ha permesso di avviare uno sviluppo serio su basi solide.
Selezione dei componenti
Per avviare la produzione, dovevamo assicurarci che tutti i componenti potessero essere reperiti in quantità sufficienti. Dopo numerosi test e iterazioni di progettazione, abbiamo optato per la coppiaLIS2DH12/SK6805:
-
LIS2DH12: un accelerometro che offre tutte le funzionalità richieste, con un'eccellente affidabilità e il supporto software fornito da STMicro.
-
SK6805: L'unico modello che emette lateralmente, non previsto inizialmente ma che si è rivelato la soluzione ideale. Sono anche prontamente disponibili.
PCB
Il PCB è stato progettato utilizzando KiCad (<3), un software gratuito e open source estremamente potente. La sua comunità dinamica e le sue funzioni avanzate ci hanno permesso di progettare un circuito su misura per le esigenze specifiche del progetto, mantenendo una qualità professionale.
Funzionamento e POC
Questa sezione entra nel vivo del progetto. Le specifiche erano le seguenti:
-
Visualizzazione del testo
-
Visualizzazione di immagini
-
Visualizzazione bidirezionale
Per rispettare i vincoli dimensionali e garantire una buona risoluzione, abbiamo optato per un array di 16 LED RGB (SK6805).
Per il rilevamento del movimento, abbiamo utilizzato un accelerometro con almeno due interrupt di tipo "tilt". Questi interrupt rilevano le inversioni di forza e generano impulsi sui pin GPIO, essenziali per attivare gli interrupt nel codice.
È importante tenere presente che la porta GPIO di Flipper è molto ben progettata, ma anche piuttosto limitata. Abbiamo dovuto eseguire diversi test, cercare idee e aiuto dai team di Flipper, ma alla fine ha funzionato e abbiamo rapidamente implementato un POC soddisfacente.
Primi sguardi all'implementazione "funzionante

Il primo codice funzionale
Il codice
Lo sviluppo del codice è stata la vera sfida.
-
Struttura modulare:
Il codice è suddiviso in diversi moduli chiari:-
Configurazione: Lettura e analisi del fileJSON per definire la visualizzazione e i parametri.
-
Accelerometro: Gestione degli interrupt tramite le funzioni
zmax_callbackezmin_callback, che determinano la direzione del movimento e aggiornano la struttura dell'applicazione tramiteswipes_init. -
Rendering grafico: Uno shader calcola in tempo reale i colori di tutti i pixel di una colonna in base ai parametri e allo stato dell'accelerometro.
-
-
Ottimizzazione in tempo reale:
Il thread principale viene eseguito continuamente per ricalcolare e aggiornare il display a LED. La gestione dei microsecondi a grana fine ci permette di bilanciare prestazioni e reattività, anche su hardwarelimitato. -
Strumenti dedicati per creare facilmente testo e immagini, date le limitazioni del flipper zero (schermo monocromatico e pochi pulsanti).
-
Facilità di contributo:
Abbiamo fatto in modo che il progetto fosse facilmente estensibile. Utilizzando standard come JSON e Bitmap, gli utenti possono generare, importare e modificare i file senza sforzo e senza dover gestire complesse pipeline.

Il codice è stato progettato in modo che ogni nuova funzionalità (come l'aggiunta di colori alle immagini o il miglioramento dello shader) possa essere integrata senza interrompere l'intero sistema.
Primi test di successo della funzione "bitmap".
Dettagli operativi
L 'accelerometro svolge un ruolo centrale nell'orchestrazione del display a matrice di LED. Una volta visualizzato il messaggio"SWIPE", un thread dedicato (app_acc_worker) subentra per gestire gli interrupt e dirigere il display.
Nota:
Se si esamina il codice, si noterà che non vengono utilizzati meccanismi tradizionali come i mutex o le code di eventi all'interno della routine "display". L'API Flipper, basata su FreeRTOS, offre queste strutture, ma troppo costose a questo livello. Abbiamo optato per tecniche più dirette, anche se qualcuno potrebbe definirle "sporche". Dopo diverse settimane di iterazioni, questo approccio si è rivelato il più affidabile per il nostro caso d'uso, garantendo tempi e stabilità.
I due interrupt generati dall'accelerometro attivano le funzioni zmax_callback e zmin_callback. Queste funzioni aggiornano la direzione del movimento, che viene poi utilizzata dal thread principale per animare i LED mediante uno shader dinamico . Questo shader è stato progettato per essere facilmente modificabile tramite un semplice cambio di funzione di callback, consentendo l'esplorazione di diverse palette di colori ed effetti visivi.
L'ecosistema Flipper
Lavorare su Flipper Zero è stimolante e impegnativo. Gli sforzi della comunità e dei team di sviluppo sono impressionanti e dinamici, anche se l'API in costante evoluzione richiede talvolta la revisione di parti del codice. Questa natura dinamica fa sì che il progetto rimanga all'avanguardia e benefici dei più recenti miglioramenti del sistema.
Fabbricazione, produzione e collaudo
Dopo aver iterato l'hardware finale, siamo stati in grado di mettere in parallelo alcuni processi:
- PCB / PCBA
- Collaudo / QC
- Imballaggio
PCB / PCBA
Quando si produce, il primo passo è inviare i file completi del progetto alla fabbrica selezionata. In genere si tratta dei "GERBERS" e della "distinta base" (BOM).
Ciò consentirà alla fabbrica di produrre i circuiti stampati (PCB), di preparare le maschere di saldatura e la serigrafia, nonché di prepararsi per l'assemblaggio del circuito stampato (PCBA), in cui i componenti vengono prelevati, posizionati e saldati sul PCB.
Abbiamo scelto di utilizzare uno dei nostri contatti esistenti a Shenzhen per il PCB + PCBA.
Test iniziali dei PCB

PCB di produzione. Abbiamo optato per lo stile "scala a scatto" per facilitare i test. Una volta che il PCB era stato testato, poteva essere staccato a scatto, in modo da non creare confusione su ciò che era stato o non era stato testato.
Test / QC
Esistono diversi approcci al collaudo e al controllo di qualità.
Secondo la nostra esperienza, il controllo al 100% (cioè ogni prodotto viene testato singolarmente) è più sicuro, più affidabile e, a lungo termine, più economico del campionamento casuale.
Per eseguire un controllo di qualità al 100%, è necessario fornire alla fabbrica un documento SOP (Standard Operating Procedure) che illustri come deve essere testato un prodotto e quali sono le condizioni PASS/FAIL.
Se possibile, è preferibile che i test vengano eseguiti in una "dima". Si tratta di un dispositivo semi-automatico che consente alla fabbrica di testare rapidamente ogni singolo dispositivo.
In genere, se è possibile fornire lo schema + il firmware + la SOP, la fabbrica troverà il modo di costruire fisicamente la dima per soddisfare le proprie esigenze.

Il documento SOP
L'implementazione della dima di collaudo da parte della fabbrica (con un alieno imprevisto 👽)
Campione di un'unità funzionante
Campione di un'unità non funzionante (accelerometro guasto durante il PCBA)
L'imballaggio
L'imballaggio è un argomento affascinante: svolge un ruolo significativo nella percezione che il cliente ha di un prodotto; questa percezione può persino influenzare le prime esperienze pratiche del cliente con un dispositivo.
Allo stesso tempo, a meno che non si tratti di un dispositivo da collezione, le confezioni vengono quasi immediatamente scartate.
Dal punto di vista etico, qual è il confine tra il fornire al cliente una percezione di qualità e il non fargli pagare troppo per qualcosa che verrà gettato via?
Allo stesso modo, l'imballaggio ha un forte impatto ambientale. In fase di produzione, vengono utilizzate sostanze chimiche di ogni tipo per sbiancare e colorare le materie prime; al ricevimento, finiscono in discarica.
Noi preferiamo utilizzare imballaggi semplici:
- Cartone non sbiancato e non rivestito, per ridurre al minimo l'impronta di sostanze chimiche dannose.
- inchiostri a base di soia, per ridurre al minimo l'impatto ambientale
- Inserti di schiuma semplici (senza tagli personalizzati, ecc.) per ridurre al minimo i costi.
Riteniamo che questo sia un equilibrio tra i nostri impegni etici e la possibilità di offrire al cliente una piacevole esperienza di unboxing. Allo stesso modo, siamo onesti con i clienti: non pagano per qualcosa che poi butteranno via.
Dopo aver fatto queste scelte, abbiamo selezionato un formato che andava bene per noi, pur rimanendo abbastanza sottile da poter beneficiare dei prezzi di affrancatura "in busta".
Tuttavia, avremmo potuto e dovuto renderlo ancora più sottile: anche una riduzione del 50% dell'altezza avrebbe ridotto significativamente i costi di imballaggio, spedizione e stoccaggio. Lezione imparata per il prossimo accessorio!

La nostra scatola.
Conclusione
Questo progetto si è rivelato molto più complesso del previsto, ma abbiamo dato il massimo per realizzare un prodottofinito, funzionale, estensibile, estetico, educativoe divertente! Ogni riga di codice, ogni scelta tecnica è stata fatta per fornire una ricca esperienza all'utente e una solida base per i contributi futuri.
Con lo sviluppo di nuovi progetti, il team di Lab401 e io continueremo ad acquisire fiducia, organizzazione e competenze.
La nostra ambizione rimane quella di creare dispositivi che incarnino pienamente la nostra visione iniziale e vi invitiamo a esplorare, contribuire e condividere le vostre idee su GitHub.
Se siete interessati a dare un'occhiata al prodotto finale, il LightMessenger, saremo onorati e molto interessati a vedere cosa ne farete!
Scatti del cliente che mostrano il light-painting, le bitmap, le modalità di testo e i diversi effetti cromatici.
Lascia un commento