“Interruttore Smart” con Arduino: sviluppare, apprendere e condividere

Da tempo il gruppo dei maker del GULLi, il “GULLiGarage”, prova nuove soluzioni, nuovo software, nuovi hardware e nello stile classico del gruppo, condividano le esperienze con soci e simpatizzanti. Il nostro laboratorio è ovviamente un acceleratore di queste attività: materiale, componenti, un luogo adatto a chi vuole sperimentare nuove idee, tutto vicino, tutti insieme. Il periodo di distanziamento sociale ci ha riportato davanti a dei problemi che comunque sono quelli di una società globale, dove le persone devono collaborare a distanza, prima ognuno per conto proprio, poi mettendo insieme i contributi.

L’ “interruttore smart” è un progetto basato su Arduino che permette di controllare un dispositivo generico, una lampada, un motore, un’apparecchiatura, un cancello, sia localmente tramite un semplice pulsante che da remoto da una app sul nostro cellulare.

Indipendentemente dall’utilità immediata del progetto che, come tutti i progetti del GULLI, è open-source e disponibile gratuitamente nel rispetto della licenza attribuita, abbiamo voluto inserire degli aspetti formativi, degli argomenti specifici che i partecipanti hanno sviluppato durante i lavori. E’ stato come avere dei problemi nei problemi, le cui soluzioni hanno portato alla crescita personale ed alla soluzione del progetto.

La complessità tecnica del progetto è stata quindi volutamente limitata, permettendoci di dedicare del tempo a degli aspetti specifici, senza allungare troppo la durata delle attività.

Le caratteristiche funzionali

L’interruttore del progetto permette di accendere e spegnere un dispositivo con un semplice pulsante controllando un relè. Contemporaneamente il circuito ha un interfaccia WiFi che permette il controllo remoto. Il controllo remoto avviene tramite un app per smartphone che può funzionare ovunque, sia quando siamo collegati alla rete locale che quando usiamo la rete Internet.

I componenti principali

Cuore hardware del progetto è una scheda piccola scheda “WEMOS D1 Mini” che si basa su un chip ESP8266. La scheda può essere programmata come un normale Arduino e grazie alle librerie già disponibili si può facilmente accedere alla rete WiFi.

La scheda misura solo 25.6 mm x 34.2 mm ed ha consumo di potenza ridotta, caratteristiche che la rendono facilmente integrabile in piccoli contenitori e con alimentazione anche a batterie.

Oltre alle librerie disponibili che possono essere usate immediatamente nell’ambiente di sviluppo di Arduino, è stato impiegato il sistema Blynk che include un sistema per sviluppare semplici app per smartphone, un server esterno e quanto necessario per comunicare con il nostro dispositivo via internet.

La programmazione ad oggetti

La programmazione ad oggetti è stato uno degli obiettivi didattici del progetto. Gli elementi del progetto (il pulsante, l’elemento controllato, etc…) sono stati modellizzati in forma di oggetti con metodi e attributi. Con il supporto di Daniele abbiamo dedicato alcune serate per introdurre l’argomento e scrivere il codice.

Il sistema Blynk

Blynk è uno strumento open molto utile nel mondo IoT (Alessandro aveva illustrato l’argomento in passato). Offre una soluzione al problema di comunicazione di un dispositivo come il nostro, in una rete privata ma che vogliamo controllare dall’esterno. Questo avviene impiegando un server esterno che funge da ponte fra il nostro Arduino e la app sullo smartphone. 

L’utilizzo di un server su cui transitano i nostri dati pone due problemi attuali: privacy e affidabilità. Il GULLi aveva già affrontato il problema con un talk di Alemaio sull’installazione di un server Blynk privato da installare su una macchina Linux, in casa, in ufficio o su un server sul Cloud.

Condivisione del codice con GitLab

Il distanziamento sociale ci ha invitato a studiare nuovamente l’utilizzo dei repository pubblici per supportare lo sviluppo dei nostri programmi. Questa volta abbiamo voluto testare GitLab, un servizio gratuito per le comunità di sviluppo, che ci ha permesso di condividere il nostro codice e permettere agli sviluppatori di contribuire in maniera ordinata, senza corrompere il lavoro degli altri.

Ci siamo confrontati organizzando delle videocall per condividere le esperienze di utilizzo e per comprendere le possibilità che offre il sistema. Abbiamo fatto qualche esempio sfruttando il progetto condiviso https://gitlab.com/alemaio/esp8266_device_control


Il risultato

Di seguito la realizzazione del prototipo di Alemaio. La dimensione della batteria e dello smartphone rendano l’idea delle dimensioni ridotte. L’alimentazione in questo caso è a batteria per comodità dei test, ma può essere comunque installato facilmente nei pressi del dispositivo da controllare con una alimentazione fissa. L’unica interfaccia elettrica sono i due contatti di uscita del relè (centro della foto). Chiaramente abbiamo bisogno della copertura WiFi.

Possibili sviluppi futuri

il progetto “Interruttore Smart v1.0” è testato e funzionante nella sua configurazione.
Durante i test ci siamo accordi che potremmo ottimizzare la disposizione dei componenti interfacciati al controllore, abbiamo deciso quindi di continuare lo sviluppo su un ramo del progetto dedicato, inoltre prevederemo altri ingressi digitali ed analogici, che potranno essere utilizzati secondo necessità dell’applicazione finale.  Realizzeremo gli schemi e i disegni costruttivi, oltre al circuito stampato PCB con il software Kicad. Disegneremo il case per racchiudere il progetto realizzandolo con la stampante 3D.