Natale High-Tech: Comanda il Tuo Albero con Telegram e Fishino Guppy!

Realizzato in plexiglass assemblato ad incastro, viene illuminato da strip Neopixel gestite da Fishino Guppy che comandiamo con lo smartphone tramite un bot di Telegram.

Questโ€™anno le luci dellโ€™albero di Natale le comando con Telegram!
Potremmo riassumere in questo slogan il progetto descritto in queste pagine, che come tutti gli anni รจ in tema natalizio ma questโ€™anno รจ qualcosa di particolarmente tecnologico: รจ un albero di natale in plexiglass trasparente con giochi luminosi e musica comandabile tramite smartphone.

Lโ€™elettronica prevede quattro strip di LED Neopixel comandate dalla piccola scheda Fishino Guppy, dotata di WiFi e quindi perfetta per gestire le animazioni luminose e la musica dellโ€™albero mediante uno smartphone.

Piรน esattamente, il comando non รจ diretto ma avviene tramite Telegram, la app di instant messaging che si contende la notorietร  con Whatsapp, ma che offre, pur essendo meno conosciuta dal grosso pubblico, interessanti funzioni come i bot: proprio con un bot comandiamo le strip Neopixel e la musica dellโ€™alberello luminoso attraverso lo smartphone e in queste pagine vi spiegheremo in che modo lo faremo.

Prima di procedere ci soffermiamo sulla scelta del plexiglass trasparente come struttura dellโ€™albero, che non รจ casuale ma deriva dalla capacitร  che questo materiale ha, al pari del vetro, di farsi attraversare dalla luce trasversalmente; questo ci permette di realizzare una struttura formata da due sagome ad abete da incrociare, lungo le quali corrono quattro strip a LED e da piani trasversali, incastrati perpendicolarmente alle sagome e che propagheranno la luce che i LED Neopixel irradiano dallโ€™interno. Il tutto poggia su una base stampata in 3D con del PLA trasparente, che fa anche da contenitore per lโ€™elettronica.

Lโ€™elettronica

Il cervello dellโ€™albero di Natale WiFi รจ una board Fishino Guppy. Sul PCB trovano posto anche un lettore MP3 e i connettori per collegare comodamente le strip Neopixel.

Il tutto viene alimentato da un comune alimentatore AC/DC con uscita a tensione stabilizzata 5V 2A.

Il tutto va collegato secondo lo schema di cablaggio che trovate in queste pagine.

Caratteristiche tecniche

- Tensione di alimentazione: 5 Vcc
- Assorbimento: 1 A
- Interfaccia di controllo: WiFi
- Illuminazione a LED Neopixel
- Riproduttore MP3 integrato con microSD

Schema elettrico

Diamo dunque uno sguardo allo schema, nel quale distinguiamo la Fishino Guppy, siglata U2 (cod. GUPPY) e il riproduttore MP3 con microSD, chiamato U1 (cod. DFR0299); della Guppy utilizziamo solamente quattro pin di I/O digitale, ossia:
โ€ข D5 per inviare le stringhe di comando alle strip Neopixel, che saranno collegati in parallelo attraverso i connettori OUT1, OUT2, OUT3 e OUT4, sui quali รจ multiplata la linea dati da collegare al contatto DI (Data Input) delle strip (lโ€™alimentazione รจ riportata in parallelo sui quattro connettori);
โ€ข D2, che riceve i dati dal modulo MP3 attraverso il suo contatto TX (pin 3) attraverso la resistenza R1;
โ€ข D3, che invia i comandi al modulo MP3 sul suo pin RX (2) mediante la resistenza R2;
โ€ข D6, che controlla la linea BUSY (pin 16) del modulo MP3.

D2 e D3 costituiscono lโ€™interfaccia seriale che permette a Fishino Guppy di controllare il modulo MP3 a 9.600 baud e le resistenze sono state inserite per โ€œadattareโ€ i livelli logici della Guppy a quelli del lettore.

Le strip NeoPixel vengono gestite in parallelo con una sola linea del microcontrollore della nostra Fishino, impostato nello sketch; la comunicazione รจ unidirezionale.

NeoPixel รจ una particolare soluzione a LED RGB โ€œintelligentiโ€ dove ogni LED NeoPixel dispone di controller a bordo, comandato da Fishino attraverso lโ€™apposita libreria FastLed .

Ogni LED RGB puรฒ essere gestito individualmente tramite un apposito comando inserito nella stringa seriale e puรฒ produrre fino a 256 tonalitร  del proprio colore, determinando un totale di 16.777.216 combinazioni di colore.

Una particolaritร  dei LED NeoPixel รจ che possono essere collegati in cascata in modo che la linea dati da uno passi al successivo.

Per ogni strip di LED รจ possibile impostare a piacimento la frequenza di refresh, in modo da rendere impercettibili determinati giochi di luce, fermo restando il limite dettato dalla quantitร  di strip collegate.

Nel nostro caso utilizziamo 3 strip da 12 led ciascuna e una strip da 13 led. La striscia piรน lunga utilizza lโ€™ultimo sul led per illuminare la stella posizionata in cima allโ€™albero.

Lโ€™intero circuito viene alimentato attraverso un jack DC dal quale la tensione continua applicata dallโ€™alimentatore raggiunge la linea 5V attraverso i diodi di protezione D1, D2 e D3, collegati in parallelo per ripartirsi la corrente e presentare cosรฌ la minima caduta di tensione possibile.

Sul catodo dei diodi abbiamo posto una batteria di condensatori di filtro (C1, C2, C3 e C4) utili a livellare ulteriormente la tensione continua prima di mandarla alla Fishino Guppy e al modulo MP3: C1 e C3 filtrano eventuali disturbi impulsivi (sono molto utili se alimentiamo il circuito con un alimentatore switching) e C2-C4 fungono da ulteriore livellamento e soppressione del ripple di un eventuale alimentatore da rete con trasformatore e filtro capacitivo.

La Fishino Guppy viene alimentata attraverso il pin +5V e quelli di GND.

Quanto al modulo MP3, nello schema rende disponibili entrambe le uscite audio di cui dispone, ovvero quella per altoparlante (in questo caso รจ MONO) che va collegato tra i contatti SPK1 ed SPK2, oltre a quella a basso livello, da amplificare con un dispositivo esterno o da inviare allโ€™ingresso di un mixer, un registratore o altro di simile, stereo e localizzata ai piedini 4 e 5 (riferiti a massa).

 

Piano di montaggio ed elenco componenti

R1: 1 kohm 
R2: 1 kohm 
C1: 100 nF ceramico 
C2: 470 ยตF 16 VL elettrolitico 
C3: 100 nF ceramico 
C4: 470 ยตF 16 VL elettrolitico 
U1: Modulo MP3 DFR0299 
U2: Guppy 
D1: 1N4007 
D2. 1N4007 
D3: 1N4007 
AMP: Connettore jack 3.5mm da CS 

Varie: 
- Plug alimentazione 
- Presa filo-scheda 2 vie volante 
- Presa filo-scheda 3 vie volante
(4 pz.) 
- Connettore filo-scheda 2 vie da PCB 
- Connettore filo-scheda 3 vie da PCB
(4 pz.) 
- Strip maschio 8 vie (2 pz.) 
- Strip maschio 15 vie (2 pz.) 
- Circuito stampato S1422 
(102x53 mm)

Il riproduttore MP3

Il componente che utilizziamo per la riproduzione dellโ€™audio permette di far riprodurre dalla base dellโ€™albero brani musicali MP3 senza dover utilizzare hardware costoso e impegnativo: infatti il DFR0299 (U1 nello schema) รจ un completo decoder che attinge a un supporto SD-Card (microSD, per lโ€™esattezza), decifra lโ€™audio e poi lo amplifica on-board pronto per inviarlo a un altoparlante (da 8 ohm di impedenza) con quasi 3 watt di potenza, erogati da un piccolo finale BF interno mono, con stadio dโ€™uscita a ponte.

Siccome il decoder MP3 del modulo รจ stereo, in realtร  le uscite audio disponibili sono due, ossia una per canale, perรฒ sono accessibili dallโ€™esterno solo a basso livello e impedenza relativamente alta, fatte per pilotare amplificatori, ingressi di mixer, cuffie a 300 ohm ecc. Sono accessibili dai pin 4 (DACR, canale destro) e 5 (DACL, canale sinistro). Lโ€™amplificatore di potenza incorporato รจ, invece, mono e amplifica la miscelazione dei canali destro e sinistro.

Il modulo nasce per essere gestito da Arduino, il quale di fatto si limita a inviargli comandi in formato seriale (9.600 baud) per gestire la riproduzione; nel nostro caso, a gestirlo รจ la scheda Fishino Guppy; il resto viene fatto dal chip decoder interno al modulo.

Il riproduttore DFR0299 puรฒ essere utilizzato in stand-alone, alimentandolo a 5 volt (la corrente richiesta per erogare 3 watt su 8 ohm, che si ottengono a 5 volt, รจ 0,45 ampere), collegandogli un altoparlante e dei pulsanti, oppure puรฒ essere usato in combinazione con un microcontrollore dotato di porta seriale TTL.

I brani musicali MP3 da riprodurre devono essere contenuti in una microSD e il decoder supporta fino a 100 cartelle, ciascuna delle quali puรฒ contenere fino a 255 brani MP3. Nel nostro caso abbiamo creato una cartella MP3 dove abbiamo copiato fino a 9 brani chiamati 0001.mp3, 0002.mp3, ecc.

La regolazione del volume prevede 30 livelli. Lโ€™alimentazione prevista รจ da 3,2V a 5V in continua (la corrente assorbita in standby รจ di soli 20 mA).

Le principali caratteristiche del modulo sono:
โ€ข decodifica MP3 11172-3 e ISO13813-3 layer3 audio decoding;
โ€ข possibilitร  di equalizzazione Pop, Rock, Jazz, Classica;
โ€ข frequenze di campionamento in riproduzione (kHz): 8/11,025/12/16/22,05/24/32/44,1/48
โ€ข DAC a 24 -bit, che supporta una gamma dinamica di 90 dB e un rapporto segnale/rumore di 85dB;
โ€ข supporto file system FAT16 e FAT32;
โ€ข massima capacitร  di memoria indirizzabile pari a 32 GB, 32G di USB disk, blocchi di 64 MB Flash NOR.

Per la gestione del modulo รจ chiaramente stata sviluppata una libreria specifica (scaricabile dalla sezione download qui sotto) che il nostro sketch include, la quale permette di decidere quale file riprodurre, regolare il volume ecc.

Da Telegram potete ordinare al modulo di suonare un brano specifico, con il comando playx nel quale al posto di x va il numero del file MP3 memorizzato nella card (da 1 a 9); potete anche impostare il volume dโ€™ascolto, alzandolo con il comando volup o abbassandolo con voldown.

Tutti i comandi, al pari di quelli per gli effetti luminosi, sono testi da inviare tramite Telegram.

 

Schema di cablaggio

 

Le connessioni alle strip Neopixel: si utilizzano tre fili da saldare nelle piazzole dellโ€™estremitร  bassa degli spezzoni.

 

 

Ciascuno dei LED delle strip si affaccia dallโ€™interno di uno dei quattro lati del piano in plexiglass, cosรฌ che la luce venga diffusa trasversalmente: come vedete, guardando di lato si vedono gli spot luminosi dei LED.

Il comando remoto

Come accennato, Fishino Guppy si connette in WiFi al router che lo affaccia su Internet e da qui dialoga con i server di Telegram attraverso un bot creato ad arte; il bot si crea con servizi web come BotFather e risiede in Fishino.

Ma facciamo un passo indietro e spieghiamo, a chi non lo sapesse, che cosa รจ un bot di Telegram: si tratta di un utente virtuale, non associato (o non necessariamente associato) a un numero di telefono, come invece รจ necessario se si vuol creare un account Whatsapp. La particolaritร  รจ che si tratta di un robot software (da qui il nome bot, che ne รจ lโ€™abbreviazione) che interloquisce con altri utenti quasi fosse un utente vero e che ci permette di realizzare alcune automazioni.

Nel nostro caso il bot manda a Fishino Guppy i comandi che noi, tramite il nostro account utente di Telegram, trasmettiamo dallo smartphone sotto forma di messaggi di testo e riceve risposte di stato (sullโ€™esecuzione dei comandi) e richieste da inoltrarci, sempre attraverso messaggi testuali di Telegram.

Insomma, il bot รจ come una persona cui scriviamo cosa deve fare il nostro alberello luminoso WiFi e che si occupa di interagire con Fishino Guppy, informandoci anche sullโ€™attivitร  dellโ€™alberello stesso.

Quando accendiamo lโ€™albero la prima volta, Fishino cerca la connessione WiFi (nello sketch dobbiamo inserire lโ€™SSID e la password della nostra rete) e se non la trova lancia lโ€™illuminazione in dissolvenza, che รจ lโ€™animazione predefinita; quando si connette in WiFi, invece, esegue quella che gli inviamo da smartphone.

Ad ogni successiva accensione esegue lโ€™ultima animazione luminosa che gli รจ stata impostata da remoto per ultima. Oltre alle luci, se glielo ordiniamo da Telegram fa accendere anche il riproduttore MP3 ed eseguire il brano corrispondente alla richiesta.

La libreria Fishgram

Per gestire Fishino Guppy da Telegram abbiamo utilizzato unโ€™apposita libreria chiamata Fishgram, la quale permette la gestione tramite un semplice messaggio di Telegram.

Per poter realizzare il nostro progetto, innanzitutto dobbiamo scaricare Telegram sul nostro dispositivo portatile, sia esso basato su sistema operativo Android, iOS, Windows Mobile, collegandoci allo store oppure sul web, alla pagina https://telegram.org/.

Una volta installata la app, utilizzando lo strumento di ricerca, dobbiamo cercare Botfather, avviarlo e creare il nostro bot che utilizzeremo per la gestione dellโ€™alberello a LED (Fig. 1).

Una volta avviato BotFather ci troviamo di fronte alla schermata proposta nella Fig. 2. Nella Fig. 3 vedete un esempio di interazione tramite messaggi con BotFather, il quale ci parla come se fosse un utente in carne ed ossa e possiamo interloquire con lui.

Nel caso specifico, inviandogli il messaggio /start impartiamo il comando che ci restituisce le funzionalitร  e la rispettiva sintassi.

Da qui, il procedimento da seguire per creare il nostro bot รจ molto semplice:
1. inviare il testo di comando /newbot;
2. scegliere un nome;
3. scegliere un soprannome terminante in โ€œbotโ€.

 

Fig. 1 – Ecco come si presenta la chat con BotFather

 

 

Fig. 2 – Chat in corso con BothFather: ci vengono mostrate le funzioni disponibili.

 

 

Fig. 3 – Creazione del bot da BotFather.

 

 

Annotiamoci lโ€™access token perchรฉ ci servirร  in seguito.

Dovrร  essere qualcosa del tipo:ย  276340267:AAHselgOVrYae5rJedXgsSBIGid01XgOPHc

Adesso dobbiamo permettere al bot di comunicare con noi attivandolo. Sempre nella casella di ricerca dobbiamo rintracciare il nostro bot cercandolo tramite il soprannome che abbiamo scelto per esso.

Una volta aperta la chat, dobbiamo premere Avvia come abbiamo fatto per BotFather. Cosรฌ facendo saremo in grado di comunicare con il bot e lui sarร  in grado di comunicare con noi.

Ai piรน attenti tra voi non sarร  sfuggito un importante dettaglio: se per attivare il nostro bot รจ stato sufficiente cercarlo e premere avvia, questo significa che chiunque puรฒ farlo, tuttavia solo chi ha creato il bot puรฒ modificarne le proprietร  tramite BotFather, oppure conoscerne lโ€™access token. Inoltre ogni messaggio inviato al Bot viene contrassegnato da un id utente al quale abbiamo accesso, perciรฒ รจ possibile inserire un controllo nel codice per eseguire solo le istruzioni dellโ€™id autorizzato. I restanti messaggi verranno letti, ma ignorati.

 

Il firmware

Addentriamoci quindi nei meandri del codice; dopo aver incluso le librerie necessarie e dopo aver impostato SSID, password con i comandi:

#define MY_SSID โ€œ********โ€
#define MY_PASS โ€œ********โ€

troviamo lโ€™istruzione che ci permette di inserire il Token di Telegram :

#define MY_TELEGRAM_TOKEN โ€œ******:********************โ€

Dopo e solo dopo aver inserito questโ€™ultime due linee di codice inseriamo:

FishGram.begin(F(MY_TELEGRAM_TOKEN));

Questa istruzione inizializza Fishgram con il Token del nostro bot.

Lโ€™istruzione:
FishGram.messageEvent(FishGramHandler);

permette di richiamare la routine FishGramHandler ogni volta che arriva un messaggio. In questa routine andremo a verificare il messaggio ricevuto (salvato nella variabile message) e se รจ tra quelli previsti eseguiremo la relativa funzione. Ad esempio per alzare il volume il comando รจ /volup e il codice che gestisce questo comando รจ il seguente:

if (!strcmp(message, โ€œ/volupโ€))
{if (vol<MAX_VOL-STEP_VOL){
vol=vol+STEP_VOL;
} else {
vol=MAX_VOL;
}
setvolume(vol);
String ans = F(โ€œAlzo il volume. Livello volume โ€œ);
ans += vol;
FishGram.sendMessage(id, ans.c_str());
return true;
}

Come vedete in ans viene salvata la risposta che il bot dovrร  restituire e con lโ€™istruzione FishGram.sendMessage(id, ans.c_str()); viene inviata al mittente.

Download

Realizzazione pratica

Una volta assemblato lโ€™albero saldate ai tre contatti di base di ciascuna strip un cavetto a tre fili terminante con un connettore femmina volante a passo 2,54 mm che innesterete nella scheda, questโ€™ultima da fissare al fondo della base dellโ€™albero insieme allโ€™altoparlante, come mostrano le foto del prototipo che vedete in queste pagine e in particolare la Fig. 4.

Fig. 4 – La scheda elettronica completa di Fishino Guppy e del DFR0299 applicata al fondo della base dellโ€™albero.

 

Notate che i piani dellโ€™albero si introducono dallโ€™alto della struttura a portante (che appare come una croce) partendo dal piรน grande, giacchรฉ si incastrano in virtรน del fatto che le sagome sono triangolari, quindi larghe alla base e strette in cima; la Fig. 5 chiarisce come avviene lโ€™assemblaggio per incastro.

Fig. 5 Lโ€™albero applicato alla sua base, dalla quale escono i quattro cavetti da saldare alle strip Neopixel: notate il dettaglio dellโ€™incastro dei piani sulle sagome incrociate.

 

 

 

Le strip a LED devono essere applicate mediante del biadesivo nelle scanalature dei piani, ossia allโ€™interno degli incroci delle sagome verticali; la piรน lunga deve sporgere di un LED in modo da spuntare alla base della stella.

 

Nei connettori che si trovano a sinistra del jack DC dovete innestare le femmine volanti dei quattro spezzoni di strip a LED, mentre in quello che si trova alla destra inserirete il connettore del cavetto bipolare che porta allโ€™altoparlante; questโ€™ultimo dovrร  essere da 3 watt e 4 ohm di impedenza, ovvero 1,5 watt su 8 ohm.

Una volta posizionati e fissati al fondo del contenitore lโ€™altoparlante e la scheda mediante viti, chiudete la base e applicatevi il tronco di base dellโ€™albero, fissando il tutto. Ricordate che il contenitore devโ€™essere forato per far uscire il suono dellโ€™altoparlante.

Notate che se avete preparato il contenitore per stampa 3D, lo stesso ha giร  le finestrelle per rendere accessibili lateralmente il jack DC e quello audio, nonchรฉ la feritoia laterale per inserire la micro SD nel lettore MP3; altrimenti dovrete realizzare da voi le relative aperture.

A questo punto potete alimentare lโ€™albero con un alimentatore da rete tipo wall-cube (cioรจ quelli con spina di rete incorporata) capace di erogare 5 volt in continua e una corrente dellโ€™ordine di 2 ampere, quindi connettere la Fishino Guppy al PC con un cavo USB-A/microUSB e avviare lโ€™IDE Arduino per trasferire nella memoria di programma dellโ€™ATmega della board lo sketch che permetterร  di dare vita allโ€™albero.

Notate che Fishino Guppy supporta lโ€™aggiornamento dello sketch Over The Air e questa funzionalitร  ci puรฒ tornare molto utile quando la board รจ giร  stata montata sulla scheda dellโ€™albero di Natale e questโ€™ultima รจ giร  stata inserita nella base e racchiusa in essa. In un caso del genere potete aggiornare il firmware senza smontare la Fishino Guppy, ma ricorrendo alla procedura di aggiornamento OTA; la stessa procedura potete utilizzarla per il primo caricamento, senza preoccuparvi di preparare la board con il suo sketch prima del montaggio.

Per il caricamento dello sketch da wireless dovete scaricare lโ€™applicazione FishinoFlasher (da http://fishino.it) e poi:
– predisponete la board per lโ€™upgrade del firmware;
– lanciate FishinoFlasher;
– selezionate il firmware;
– spuntate la casella โ€œAttivare il caricamento sketch da WiFiโ€; se questa casella non รจ presente, รจ possibile che il flasher e/o la versione del firmware siano troppo vecchi;
– inserire un nome per la vostra scheda, per esempio โ€œIlMioFishinoโ€;
– inserire un numero di porta per la connessione WiFi; suggeriamo di mantenete la 7777 predefinita;
– cliccare sul pulsante Flash per avviare lโ€™upgrade del firmware.

Per programmare OTA Fishino Guppy occorre realizzare un collegamento โ€œvolanteโ€ tra due pin sul connettore ESPCONN e precisamente tra il GPIO5 e lโ€™ ATM-RES; questo serve a permettere al modulo WiFi di resettare il microcontrollore.

Ora dovete caricare (via USB) almeno una volta uno sketch che esegua la connessione al vostro router WiFi, per dare modo al modulo WiFi di memorizzarne i parametri di connessione e permettergli di collegarsi alla vostra rete WiFi allโ€™avvio. Fatto questo, lanciate lโ€™ IDE e andate nel menu di selezione della porta; vedrete che apparirร  una nuova porta con il nome che avete assegnato al Fishino in fase di aggiornamento firmware.

Caricato lo sketch, spegnete e accendete Fishino e fatto ciรฒ lasciate che Fishino Guppy si connetta alla vostra rete wireless.

Durante la connessione la stella dellโ€™albero sarร  inizialmente rossa, poi gialla e infine, se tutto รจ andato bene, diventerร  verde. A questo punto potete inviare i comandi con lo smartphone o tablet che intendete utilizzare per interagire con lโ€™albero.

I comandi utilizzabili sono divisi in due categorie e corrispondono tutti a messaggi di testo:
โ€ข quelli per gestire le animazioni luminose prodotte dai LED Neopixel;
โ€ข quelli per riprodurre le musiche MP3.

Tutti i comandi sono riepilogati nella Tabella 1 ย devono essere scritti preceduti dalla barra (slash); giร  scrivendo la barra, il nostro bot ci andrร  a suggerire i comandi possibili.

 

 

Tabella 1 – Tutti i comandi inviati da Telegram devono iniziare con il carattere /. Appena digitate / il bot vi propone i comandi gestiti da esso bot, poi รจ sufficiente selezionare quello richiesto per inviare il messaggio.

 

La schermata dellโ€™app Telegram durante la chat con il bot che governa lโ€™albero WiFi รจ quella proposta nella Fig. 7: come vedete, abbiamo i comandi impartiti che sono contrassegnati dal colore azzurro perchรฉ sono i messaggi che inviamo alla Fishino Guppy e nel fumetto, in nero, le risposte.

Fig. 7 – I comandi per lโ€™audio e i giochi di luce, con le rispettive risposte generate dal bot.

 

Bene, con questo abbiamo terminato; non ci resta che augurarvi buone feste in compagnia del vostro nuovo Social-albero di Natale!

Lascia un commento

Il tuo indirizzo email non sarร  pubblicato.

Menu