Non ci sono prodotti a carrello.
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
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โ.
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
Albero di Natale con Fishino Guppy
1 file(s) 5.22 KB
Per il download di questo file รจ necessario essere registrati al sito
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.
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.
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.
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.
Bene, con questo abbiamo terminato; non ci resta che augurarvi buone feste in compagnia del vostro nuovo Social-albero di Natale!