Sei sulla pagina 1di 27

focus

GUIDA COMPLETA All’ESP8266


GESTIONE DEL SISTEMA
Per capire meglio il funzionamento...

Indice

4 ESP8266, MQTT E GOOGLE HOME


SCHEDA DI CONTROLLO BASE PER LA
DOMOTICA DIY.

8 HACK SENSORE PIR CON ESP8266 E


NODERED.

10 SENSORE DI MOVIMENTO WI-FI DIY


CON ESP8266 E MQTT

16 MODULO PULSANTI WIRELESS DIY


CON ESP8266

20 GUIDA ALL’UTILIZZO DEI MODULI


WIRELESS ESP8266 E ESP32

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 2


focus

ESP8266

ESP8266, MQTT E GOOGLE HOME: SCHEDA


DI CONTROLLO BASE PER LA DOMOTICA DIY

Oggi vedremo come realizzare una


scheda elettro-
nica basata su un modulo ESP8266,
che permetta di controllare un mo-
dulo con otto relè non soltanto da
remoto da smartphone, ma anche
in locale tramite dei pulsanti isici
e Google Home per il controllo vo-
cale.
La scheda che andremo a realizzare
permette di essere gestita tramite
MQTT ed integrata in diversi siste-
mi, come ad esempio OpenHAB. “collegamenti” con i propri dispositivi IoT. RSS e servizi meteo.
Permette di visualizzare in tempo reale i dati
ADAFRUIT IO ricevuti e collegare i propri device a dei servi- Un aspetto molto interessante è la sua nativa
Per questo esperimento, per il broker MQTT zi web esterni come ad esempio Twitter, feed compatibilità con IFTTT e Zapier, che nel nos-
ci affideremo alla piattaforma Adafruit IO. In
questo modo non avremo bisogno del
nostro sistema basato su Raspberry Pi.
Naturalmente questa scelta ha degli aspetti
negativi, che tratteremo tra poco, ma questa
configurazione potrebbe invece essere la mi-
gliore nel caso in cui non si è interessati ad
implementare nel proprio sistema di domo-
tica DIY delle funzioni particolari e si voglia
integrare velocemente il controllo vocale.
Si tratta di un servizio cloud, pensato prin-
cipalmente per la memorizzazione e lettura
di dati, con il quale si possono realizzare dei

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 4


focus

tro caso semplifica la fase di configurazione Per implementare il comando vocale con
per il controllo del sistema con Google Assis- Google Home tramite IFTT , basterà sempli-
tant, tramite Google Home. cemente collegare il servizio al proprio ac-
count google e creare l’applet specifica per
La versione gratuita della piattaforma ha lo scopo.
delle limitazioni, che riguardano il numero
massimo dei topic e messaggi al minuto che Guarda il video alla fine dell’articolo per
è possibile pubblicare, la velocità di comuni- scoprire come fare.
cazione e la memorizzazione dei messaggi
sulla piattaforma..

IFTT LISTA DELLA SPESA


IFTTT è l’acronimo di If This Then That (Se Per realizzare questo progetto, avrai bisogno
questo accade allora fai accadere quello) ed dei componenti seguenti:
è un servizio web gratuito che permette di
creare in pochi passi un insieme di condi- • DEV Board basata su ESP8266
zioni, chiamate applet, che vengono attivate • Basetta millefori
da altri servizi, tra i quali ad esempio Gmail, • Trasformatore incapsulato da CS HLK-PM01
Facebook e Adafruit IO. • 4 x Connettori a tre terminali

IFTTT è stato reso disponibile il 7 settembre HARDWARE


2011, negli anni ha ampliato le sue funzio- Per cercare di non essere ripetitivo, vi riman-
ni ed oggi è diventato un ottimo strumento do ai seguenti articoli per approfondire il
che permette agli utenti di personalizzare e funzionamento del trasformatore incapsula-
automatizzare determinati servizi in base a to da CS e per maggiori informazioni sulle
determinate condizioni. DEV board basate sui moduli ESP.
FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 5
focus

Collegare i componenti come nello SOFTWARE


schema di collegamento seguente:
Il codice relativo a questo progetto potete
scaricarlo al link più in basso.
Permette di gestire soltanto un relè e pulsan-
te, ma potete in pochi passi fare copia e in-
colla della sezione di codice dedicata al con-
trollo dei relè per aggiungere gli altri sette.
••••••••••••••••••••••••••••••••••

LISTA DELLA SPESA Per la comunicazione con il broker MQTT, ho


Per realizzare questo progetto, avrai scelto di utilizzare la libreria Pubsubclient,
bisogno dei componenti seguenti:
ma con alcune modifiche è possibile utilizza-
re quella rilasciata da Adafruit.
• DEV Board basata su ESP8266
• Basetta millefori
• Trasformatore incapsulato da
CS HLK-PM01
• 4 x Connettori a tre terminali
••••••••••••••••••••••••••••••••••

La mia realizzazione risulta essere diversa da Per programmare il codice sul modulo
quella proposta nello schema di collegamen- EP8266, sarà necessario:
to, per il semplice motivo che ognuno può
avere delle necessità e fantasie progettuali 1) Scaricare lo sketch allegato a questo articolo;
diverse, di conseguenza quello che trovate 2) Avviare l’IDE di Arduino;
in questo articolo è il progetto base, pron- 3) Aprire lo sketch appena scaricato e modificar-
to per essere modificato e personalizzato il lo inserendo i dati della propria rete Wifi e il token
più velocemente possibile. Adafruit collegato al proprio account;
4) Collegare la DEV board al PC tramite un cavetto
Ad esempio, per il momento sulla mia micro USB;
scheda non ho installato il trasformatore 5) Selezionare la board corretta;
incapsulato, mentre i pulsanti e la scheda 6) Avviare il caricamento ed aspettarne il comple-
relè ho deciso di interfacciali al modulo ESP tamento.
tramite un MCP23017.
Se non hai mai configurato l’IDE di Ar-
duino per programmare un modulo ESP,
segui prima >>> questi passaggi. <<<

ESP8266 AND MQTT HOME AUTOMATION


BASIC CODE. (download zip file)

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 6


focus

APP PER ANDROID E OPENHAB NEXT


Creare un nuovo feed su Adafruit IO; CONCLUSIONE
Muoversi tra le funzioni di Adafruit IO; Come accennato in precedenza, utilizzare la
Creare una nuova applet IFTT per l’attivazio- versione base della piattaforma Adafruit IO
ne e disattivazione dei relè tramite i comandi ha dei limiti.
vocali;
Installare e configurare l’applicazione per Per questo motivo nel codice del progetto
smartphone MQTT Dashboard; non è stato impostato alcun topic di callback
Utilizzare il sistema appena creato (video test e di conseguenza in dispositivi diversi lo sta-
del progetto); to dei relè potrebbe non essere aggiornato
in tempo reale.

VIDEO CONFIGURAZIONE E TEST Per ovviare a questo problema, è possibile


Spesso vedere come fare una determinata passare alla versione Premium di Adafruit
cosa, rende la spiegazione più semplice e IO per poter pubblicare più messaggi in più
veloce, quindi nel seguente video scoprirai topic, oppure utilizzare un broker MQTT ins-
come: tallato su una propria piattaforma.

1. Creare un nuovo feed su Adafruit IO; Comunque sia, quello che è stato presenta-
2. Muoversi tra le funzioni di Adafruit IO; to oggi è un valido spunto per comprendere
3. Creare una nuova applet IFTT per l’attiva- quanto possa essere soddisfacente creare il
zione e disattivazione dei relè tramite i co- proprio sistema di domotica DIY e quanto sia
mandi vocali; versatile il protocollo MQTT.
4. Installare e configurare l’applicazione per
smartphone MQTT Dashboard; Prossimamente tratteremo l’implementazio-
5. Utilizzare il sistema appena creato (video ne di dispositivi MQTT in OpenHAB, passan-
test del progetto); do così ad un livello superiore.

Cercando nel Google Play Store, mi sono im-


battuto nell’applicazione MQTT Dashboard,
che risulta essere molto leggera, facile da
configurare ed anche con un buon concept
grafico.
Supporta la lingua italiana e permette il
collegamento con un broker MQTT in pochi
passi.

VIDEO CONFIGURAZIONE E TEST

Spesso vedere come fare una determinata


cosa, rende la spiegazione più semplice e
veloce, quindi nel seguente video scoprirai
come:

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 7


focus

ESP8266

HACK SENSORE PIR CON


ESP8266 E NODERED

Ormai si sa, con i moduli wireless


della Espressif Systems, è possibile
fare di tutto, dalla realizzazione di
un progetto, all’hack di dispositivi
elettronici.

Sul sito FE in passato ne abbiamo


parlato e continueremo a farlo, an-
che oggi.

Nell’articolo di oggi vedremo come


Rui Santos ha modificato un comu-
nissimo sensore di movimento,
per interfacciarlo con un modulo
ESP8266 e segnalare i rilevamenti
effettuati tramite MQTT.

L’articolo originale potete trovarlo al


seguente indirizzo.

In sintesi, l’autore ha modificato un sensore


di movimento commerciale, in modo tale che
ogni qualvolta venga rilevato un movimento,
vada ad alimentare il modulo ESP8266.

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 8


focus

Ogni volta che l’ESP8266 si accende, ese-


gue lo sketch, che invia dei dati a Node-RED
via MQTT per registrare la data e l’ora in cui è
stato rilevato il movimento.

Come server per Node-RED e il broker MQTT


viene utilizzata una board Raspberry Pi e la
programmazione del modulo ESP8266 vie-
ne eseguita tramite l’IDE ufficiale di Arduino.
Con questa configurazione, al posto di utili-
zzare un sensore PIR da interfacciare con il
modulo ESP8266, come ad esempio il diffu-
sissimo HC-SR501, si ha il vantaggio di avere
direttamente un device pronto da installare Node-RED è invece uno strumento di interfacciarli con altri microcontrollori e di
con una scocca già costruita. sviluppo per l’IoT basato su JavaScript, tra- usufruire direttamente dei loro pin GPIO per
Inoltre la board realizzata da Rui può benis- mite il quale è possibile collegare tra loro sviluppare dei sistemi personalizzati.
simo essere utilizzata come espansione per diversi dispositivi hardware, servizi online e
installazioni già esistenti. Per semplificare la fase di programmazione e
API, il tutto con pochi click grazie all’interfac-
cia grafica dell’editor. sperimentazione, sono presenti in commer-
Nel suo hack, Rui ha utilizzato pochi com- cio alcune board di sviluppo tramite le quali
ponenti: Quando si parla Home Automation e IoT DIY, è possibile trovare la configurazione che più
non possono non venire in mente i moduli ci aggradi e raggiungere il proprio obbiettivo
1. Sensore di movimento PIR 220V;
2. ESP8266-01;
3. Programmatore per ESP8266-01;
4. Alimentatore incapsulato Hi-Link HLK-
PM03;
5. Basetta millefori;
6. Fusibile (200mA);
7. Condensatore elettrolitico 47 uF;
8. Board Raspberry Pi, come host per Node-
-RED e il broker MQTT.

La comunicazione avviene tramite MQTT, un


protocollo di comunicazione binario sempli-
ce e versatile, di tipo client-server che è sta-
to creato nel 1999 con l’intento di ottenere
un protocollo che potesse ridurre al minimo ESP8266 e ESP32, che negli ultimi anni han- progettuale.
l’utilizzo della banda nelle comunicazioni tra no permesso a milioni di persone di realizza- In questo articolo vedremo esattamente di
dispositivi e il consumo delle batterie. re dei dispositivi di grande successo. cosa stiamo parlando, quali sono le poten-
Il protocollo MQTT, per scambiare informa- zialità di questi moduli e tutto quello che
zioni, sfrutta un meccanismo di pubblicazio- Per chi non lo sapesse, si tratta di due mo- bisogna sapere sulle dev boards per riuscire
ne e sottoscrizione di messaggi tramite un duli prodotti dall’azienda cinese Espressif a sfruttarle al meglio.
apposito message broker. Systems, con Wi-Fi integrato e possibilità di
FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 9
focus

ESP8266

SENSORE DI MOVIMENTO WI-FI DIY


CON ESP8266 E MQTT

Con pochi e semplici componenti è


possibile assemblare un sensore di
movimento Wi-Fi universale, inte-
grabile in tutti i propri progetti.
Un sensore di movimento è un
device tanto semplice quanto in-
dispensabile e versatile, in quanto
permette l’esecuzione di determi-
nate azioni ad ogni rilevazione,
trovando impiego in diversi campi,
domotica e sicurezza compresi.

SCOPO DEL PROGETTO

In commercio è possibile trovare diversi


sensori di movimento Wireless, ma la mag- LISTA DELLA SPESA
gior parte di questi operano su onde radio
a 433Mhz. Questo significa che per essere Per realizzare questo progetto, basterà reperire pochi componenti, indicati qui di seguito.
integrati in un sistema di home automation,
necessitano di un dispositivo supplementare
che faccia da ponte di collegamento.
• 1x Modulo ESP8266-01
Questo progetto nasce dalla necessità di ave- • 1x Sensore PIR HC-SR501
re un sensore di movimento low-cost univer- • 1 x Trasformatore incapsulato da CS Hi-Link HLK-PM03
sale, che si possa collegare ad una rete W-Fi e • 1 x Basetta millefori (Facoltativo)
che possa essere integrato tramite MQTT con • Saldatore, cavetti e stagno per assemblare il circuito
praticamente tutte le piattaforme sofware
per la domotica, compresa OpenHAB.

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 10


focus

MODULO ESP-01 SENSORE PIR HC-SR501 ALIMENTATORE INCAPSULATO DA CS

In questo progetto al posto di utilizzare Il sensore PIR è un tipo di sensore passivo, Per alimentare la board verrà utilizzato il
una DEV board basata sul modulo Wireless che rileva i raggi infrarossi nel suo campo vi- trasformatore incapsulato HLK-PM03,
ESP8266, è stato scelto di impiegare diret- sivo, segnalando se qualcosa (o qualcuno) è creato per alimentare con estrema semplicità
tamente un modulo ESP8266, in versione in movimento. le schede elettroniche.
ESP-01. Dato un input compreso nel range di 100-
Questo perchè è in grado di individuare tutto 240V AC , verrà dato un output di 3.3V DC,
Questo per ridurre al minimo la dimensione quello che presenta una temperatura supe- erogando fino a 3W.
del circuito e perché non sono necessari mol- riore allo zero assoluto e che di conseguenza La casa madre di questo trasformatore com-
ti pin di input e output. emette energia sottoforma di radiazioni in- mercializza anche altre due versioni, da 5V e
frarosse. 12V DC.
Il modulo Wireless ESP8266, è basato su un
SoC MCU a 32bit ed è nato per aggiungere Davanti al sensore è presente una lente (len-
connettività Wireless ai sistemi elettronici e te di Fresnel) che scompone l’ambiente in
SOFTWARE - MQTT
per la progettazione di sistemi IoT low-cost. fasci in modo da creare le zone necessarie a
MQTT è un protocollo di comunicazio-
percepire la differenza di temperatura ge-
ne binario semplice e versatile, di tipo
Si tratta di modulo disponibile in diverse nerata da un corpo caldo che le attraversa.
client-server.
versioni, con una potente capacità di elabo-
Creato nel 1999 con l’intento di ottenere
razione grazie alla quale è possibile collega- Il sensore si adatta al livello di radiazione
un protocollo che potesse ridurre al minimo
re, attraverso i suoi pin GPIO, diverse periferi- infrarossa presente nella stanza in cui è ins-
l’utilizzo della banda nelle comunicazioni tra
che, tra le quali dei sensori ed altri dispositivi tallato e comincia a monitorare ogni variazio-
dispositivi e il consumo delle batterie.
compatibili. ne nel suo campo d’azione.
Dopo pochi anni venne acquisito dall’asso-
ciazione OASIS e nel 2010 divenne uno de-
Le sue dimensioni ridotte lo rendono idea- Ogni oggetto che si muove nella stanza per-
gli standard più interessanti nel mondo
le per la progettazione di dispositivi com- turberà questo livello di radiazione infraros-
dell’IoT.
patti e la mole di documentazione presente sa, e produrrà una variazione di stato che
online, accoppiata alla possibilità di utilizzar verrà segnalata dal modulo PIR.
Il protocollo MQTT, per scambiare informa-
diversi linguaggi di programmazione, ren-
zioni, sfrutta un meccanismo di pubblicazio-
dono il suo utilizzo meno ostico. Esistono diversi modelli di sensori PIR, ma
ne e sottoscrizione di messaggi tramite un
la funzione basilare è uguale per tutti: ogni
apposito message broker.
Maggiori informazioni sui moduli e le DEV qualvolta viene rilevato un movimento, varia
Se un determinato client vuole comunicare
board basati sui moduli wireless ESP8266 e lo stato logico del sensore.
con un altro, pubblica un messaggio su un
ESP32 li trovate in questo articolo.
certo argomento (detto topic) sul message
FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 11
broker. ...(continua)
focus

CONCLUSIONE
Il message broker ha il compito di filtrare e pubblicato un nuovo messaggio su quegli Con pochi componenti è stato possibile as-
distribuire le comunicazioni tra pubblisher e argomenti, il message broker lo distribuisce semblare un dispositivo che può risultare
subscriver. a tutti i destinatari, configurando in questo utile in diverse circostanze.
I client possono iscriversi a determinati modo un sistema di messagistica uno a mol- Il circuito presentato può essere saldato su
argomenti (topics) e ogni volta che viene ti. una basetta millefori, ma data la sua sempli-
cità, i collegamenti potrebbero essere ese-
guiti saldando direttamente dei cavi ai com-
ponenti, da installare accuratamente dentro
un apposito box.

Il protocollo di comunicazione MQTT per-


mette di ottenere con estrema semplicità
una vera e propria rete di comunicazione tra
diversi dispositivi, anche se appartenenti a
dei sistemi diverso, motivo per il quale pros-
simamente approfondiremo l’argomento.

Scarica il codice sorgente

PROGRAMMAZIONE HARDWARE
Per programmare il modulo EP8266, po- Per assemblare il circuito, collegare i compo-
tete fare riferimento alla Guida completa nenti come nell’immagine di collegamento
sui moduli ESP8266 e ESP-32. seguente:

Ecco il procedimento da seguire:

1. Scaricare lo sketch allegato a questo arti-


colo;
2. Avviare l’IDE di Arduino;

3. Aprire lo sketch appena scaricato;

4. Collegare il modulo ESP8266 al PC come


indicato nella guida;

5. Selezionare la board corretta;

6. Avviare il caricamento ed aspettare il


completamento dell’operazione.

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 12


Listato focus
/* pinMode (PIR_SENSOR_PIN, INPUT);
Binh Nguyen, 7 agosto 2018 Serial.begin (115200);
*/ ritardo (10);
/ * __ INCLUDE BIBLIOTECHE ______ * / Serial.println (“Nodo iniziale denominato” + String (SENSORNA-
#include <ESP8266WiFi.h> ME));
#include <PubSubClient.h>
#include <ESP8266mDNS.h> setup_wifi ();
#include <WiFiUdp.h> client.setServer (mqtt_server, mqtt_port);
#include <ArduinoOTA.h> client.setCallback (callback);
#include <ArduinoJson.h>
WiFiClient espClient; Serial.println ( “Ready”);
Client PubSubClient (espClient); Serial.print (“IPess:”);
Serial.println (WiFi.localIP ());
/ * __ INFORMAZIONI WIFI e MQTT ___ * / ricollegare ();
#define wifi_ssid “wif_ssid” }
#define wifi_password “wifi_passowrd”
#define mqtt_server “192.168.1.50” / * __ AVVIO CONFIGURAZIONE WIFI __ * /
#define mqtt_user “janedoe” void setup_wifi () {
#define mqtt_password “johndoe”
#define mqtt_port 1883 ritardo (10);
Serial.println ();
/ * __ TEMATICHE MQTT __________ * / Serial.print (“Connessione a”);
#define light_state_topic “sensore / porta / pir” Serial.println (wifi_ssid);
#define SENSORNAME “pirOne”
const char * on_cmd = “ON”; WiFi.mode (WIFI_STA);
const char * off_cmd = “OFF”; WiFi.begin (wifi_ssid, wifi_password);

/ * __ DEFINIZIONI DEL PIN ________ * / int i = 0;


#define PIR_SENSOR_PIN 0 while (WiFi.status ()! = WL_CONNECTED) {
#define LED_PIN 2 ritardo (1000);
i ++;
/ * __ VARIABILI GLOBALI __________ * / Serial.printf (“% i”, i);
char message_buff [100]; if ((i% 10) == 0) {
int calibrazioneTime = 0; WiFi.begin (wifi_ssid, wifi_password);
const int BUFFER_SIZE = 300; ritardo (1000);
tempo di attività del galleggiante; }
preSampling lungo senza segno = 0;
int pirState; if (i> = 30) {
String motionStatus; Serial.printf (“Ripristino ESP”);
bool stateOn = false; ESP.restart ();
}
/ * __ INIZIA IMPOSTAZIONE _______ * / }
void setup () { Serial.println (“WiFi connesso, indirizzo IP:”);
Serial.println (WiFi.localIP ());
ritardo (100); }
pinMode (LED_PIN, OUTPUT);
digitalWrite (LED_PIN, LOW);
FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 13
focus
/ * ___ INIZIA CHIAMATA __________ * / / * ___ INIZIA INVIA STATO _________ * /
annullamento della richiamata (argomento char *, payload byte *, void sendState () {
lunghezza int senza segno) { StaticJsonBuffer <BUFFER_SIZE> jsonBuffer;
// Serial.print (“Message arrived [“); JsonObject & root = jsonBuffer.createObject ();
// Serial.print (argomento);
// Serial.print (“]”); uptime = millis () / 1000 / 3600.00;
root [“uptime”] = (String) uptime;
messaggio char [lunghezza + 1]; root [“sensor”] = SENSORNAME;
per (int i = 0; i <lunghezza; i ++) { root [“state”] = (stateOn)? on_cmd: off_cmd;
messaggio [i] = (char) payload [i]; root [“motion”] = (String) pirState;
}
messaggio [lunghezza] = ‘\ 0’; buffer di caratteri [root.measureLength () + 1];
// Serial.println (messaggio); root.printTo (buffer, sizeof (buffer));
String sPayload = “”;
if (! processJson (message)) { root.printTo (sPayload);
ritorno; char * cPayload = & sPayload [0u];
}
// mappa il valore su LED se necessario client.publish (light_state_topic, buffer, true);
if (stateOn && (pirState == 0)) {
digitalWrite (LED_PIN, HIGH); // Serial.println (“Pubblicato 1:” + String (buffer));
} else if (! stateOn) digitalWrite (LED_PIN, LOW);
}
sendState (); / * ____ INIZIA RICONNETTERE ______ * /
} void reconnect () {
// Ripeti finché non ci riconnettiamo
/ * __ INIZIO PROCESSO JSON ______ * / while (! client.connected ()) {
bool processJson (char * message) { // Serial.print (“Tentativo di connessione MQTT ...”);
StaticJsonBuffer <BUFFER_SIZE> jsonBuffer; // Tentativo di connessione
if (client.connect (SENSORNAME, mqtt_user, mqtt_password)) {
JsonObject & root = jsonBuffer.parseObject (messaggio); Serial.println ( “connesso”);
// client.subscribe (light_set_topic);
if (! root.success ()) { sendState ();
Serial.println (“parseObject () fallito”); } altro {
restituire false; // Serial.print (“failed, rc =”);
} // Serial.print (client.state ());
if (root.containsKey (“state”)) { // Serial.println (“riprova tra 5 secondi”);
if (strcmp (root [“state”], on_cmd) == 0) { // Attendi 5 secondi prima di riprovare
stateOn = true; ritardo (5000);
} }
else if (strcmp (root [“state”], off_cmd) == 0) { }
stateOn = false; }
}
};
ritorno vero;
}

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 14


focus
/ * ____ INIZIA LOOP PRINCIPALE ____ * /
void loop () {

if (! client.connected ()) {
// reconnect ();
software_Reset ();
}
client.loop ();
bool pir = digitalRead (PIR_SENSOR_PIN);

// Serial.print (“PIR read:”);


// Serial.println (pir);
if (pir == HIGH && pirState! = 1) {
motionStatus = “movimento rilevato”;
pirState = 1;
sendState ();
} altrimenti if (pir == LOW && pirState! = 0) {
motionStatus = “standby”;
pirState = 0;
sendState ();
}
if (pir == HIGH) {
digitalWrite (LED_PIN, HIGH);
} else digitalWrite (LED_PIN, LOW);
ritardo (100);
dare la precedenza();
}

/*____ RIPRISTINA ______________*/


void software_Reset () {
Serial.print ( “reset”);
ESP.reset ();
}

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 15


focus

ESP8266

MODULO PULSANTI WIRELESS DIY


CON ESP8266

Quando si progetta un sistema di


domotica ibrido, nel quale ogni
singola parte può essere controlla-
ta e gestita sia fisicamente che da
remoto, per semplificare il proprio
sistema e renderlo il più versatile
possibile, non si può fare a meno di
tenere conto di alcuni aspetti pro-
gettuali che permetteranno di otte-
nere esattamente quello di cui si ha
bisogno.
In questo articolo vedremo come
realizzare un modulo pulsanti che
permetta di eseguire alcune fun-
zioni programmate alla pressione SCOPO DEL PROGETTO zione in grado di rispondere in modo
di un determinato tasto, il tutto in diverso alla pressione dei pulsanti,
modalità Wireless. Questo progetto nasce dall’esigenza di attivando ad esempio degli scenari,
Integrando questo modulo con gestire oltre che da remoto, anche tra- la riproduzione di musica, segnalare
OpenHAB, sarà possibile gestire mite dei pulsanti fisici, dei relè ai qua- un’emergenza, etc…
qualsiasi funzione con la pressione li sono collegati dei dispositivi nella
di un tasto, interagendo con MQTT propria propria abitazione, come ad Realizzando questo progetto si otterrà
mantenendo sincronizzato lo stato esempio dei punti luce, le tapparelle una board che possa non soltanto es-
del dispositivo via software. e gli elettrodomestici. sere di facile installazione ed integra-
Gestire un carico o attivare uno sce- Vista la strutturazione del sistema, è zione all’interno di una comune placca
nario non è mai stato così semplice. possibile optare per una programma- per pulsanti, ma un sistema fisico di

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 16


focus

controllo al 100% personalizzabile. COMPONENTI E FUNZIONAMENTO


Grazie al trasformatore incapsulato
saldato sul circuito, il modulo viene DEV BOARD
alimentato dalla rete elettrica domes-
tica. In questo progetto è stata utilizzata
una DEV board basata sul modulo
Il modulo si collega alla propria rete Wireless ESP8266, ma una volta ot-
Wifi ed interagisce con il proprio siste- timizzato il progetto sono sicuro che
ma di domotica grazie al protocollo di utilizzerò esclusivamente un modulo
comunicazione MQTT. ESP-08 senza alcun componente elet-
tronico superfluo.
Per approfondire le diverse tipologie
di configurazione, mezzi trasmissivi e Lo stesso vale per la basetta mille fori, ALIMENTATORE INCAPSULATO DA CS
protocolli di comunicazione per la do- che provvederò sostituire con un cir-
motica, potete leggere questo articolo. cuito stampato progettato apposita- Per alimentare la board ho scelto di
mente. utilizzare un trasformatore incapsula-
Alla pressione dei pulsanti, il mo- to HLK-PM01, nato per venire saldato
dulo invierà un segnale al sistema Maggiori informazioni sui moduli e le direttamente su un circuito stampato.
centrale, che in base alla precedente DEV board basati sui moduli wireless Per alimentarlo basta collegarlo alla
programmazione, eseguirà una de- ESP8266 e ESP32 li trovate in questo tensione di rete e in uscita fornisce una
terminata funzione corrispondente al articolo. tensione di 5V DC erogando 600mA,
pulsante premuto. abbastanza corrente da permettere il
corretto funzionamento del circuito.
La casa madre di questo trasformatore
incapsulato da CS commercializza an-
che altre due versioni da 3.3V e 12V
DC.
LISTA DELLA SPESA
PULSANTI IN METALLO
Come nodo
• 1 x DEV Boardcentrale
basata su utilizzo
ESP8266 una board
Raspberry Pi 3 con installato Ope-
• 1 x Basetta millefori
Esistono tante tipologie di pulsanti, di-
nHAB, softwareincapsulato
• 1 x Trasformatore grazie aldaquale
CS confi- fferenziandosi tra loro per forma, colo-
gurare questoa tre
• 1 x Connettore modulo
terminalie realizzare il
re, materiali, qualità e caratteristiche.
proprio sistema
• 1 x Connettore Stripdi2,54mm
Home Automation Per puro e semplice gusto personale
è•un gioco da
4 x Pulsanti ragazzi.
in metalloretroilluminati da 12mm ho selezionato dei pulsanti in metallo
• 4 x Resistenze da 10K Ω da 12mm retroilluminati, reperendo
• Saldatore, cavetti e stagno per assemblare la versione a 3.3V DC, in modo da ave-
il circuito re piena compatibilità con il modulo
ESP8266.

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 17


focus

I pulsanti che ho scelto di utilizzare sono retroilluminati: il LED interno si accen-


de soltanto se scorre corrente nei due pin dedicati a questa funzione.
Tramite software sarà quindi possibile segnalare lo stato di una determinata
funzione attivando la retroilluminazione: ad esempio se il punto luce che può
essere controllato da questo pulsante è attivo, allora deve esserlo anche il LED
interno.

HARDWARE

Per realizzare il modulo pulsanti Wireless presentato in questo articolo, collega-


re i componenti come nello schema di collegamento seguente:

Sul circuito sono presenti dei pin che vanno formare un connettore 4×4, al
quale collegare i pulsanti e i relativi terminali per la retroilluminazione.
Ogni fila di pin del connettore va collegata ai pulsanti retroilluminati secondo
la seguente configurazione:

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 18


focus

SOFTWARE

Per programmare il codice sul modulo EP8266 basterà:

1. Scaricare lo sketch allegato a questo articolo;


2. Avviare l’IDE di Arduino;
3. Aprire lo sketch appena scaricato;
4. Collegare la DEV board al PC tramite un cavetto micro USB;
5. Selezionare la board corretta;
6. Avviare il caricamento ed aspettare il completamento
dell’operazione.

Se non hai mai configurato l’IDE di Arduino


per programmare un modulo ESP,
segui prima questi passaggi.

VIDEO DI REALIZZAZIONE

Ecco due video nei quali è possibile vedere l’assemblaggio


del modulo.

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 19


focus

ESP8266 E ESP32

GUIDA ALL’UTILIZZO DEI MODULI WIRELESS


ESP8266 E ESP32

Quando si parla Home Automation


e IoT DIY, non possono non veni-
re in mente i moduli ESP8266 e
ESP32, che negli ultimi anni hanno
permesso a milioni di persone di
realizzare dei dispositivi di grande
successo.
Per chi non lo sapesse, si tratta di
due moduli prodotti dall’azienda
cinese Espressif Systems, con Wi-Fi
integrato e possibilità di interfac-
ciarli con altri microcontrollori e
di usufruire direttamente dei loro
pin GPIO per sviluppare dei sistemi le potenzialità di questi moduli e tutto giungere connettività Wireless ai siste-
personalizzati.. quello che bisogna sapere sulle dev mi elettronici e per la progettazione di
boards per riuscire a sfruttarle al me- sistemi IoT low-cost.
Per semplificare la fase di programma- glio. Questo modulo, ha una potente ca-
zione e sperimentazione, sono presen- pacità di elaborazione, grazie alla
ti in commercio alcune board di svilu- quale è possibile collegare, attraverso
ppo tramite le quali è possibile trovare INIZIO DELLA RIVOLUZIONE: i suoi pin GPIO, diverse periferiche tra
la configurazione che più ci aggradi e ESP8266 le quali dei sensori ed altri dispositi-
raggiungere il proprio obbiettivo pro- vi compatibili.Inoltre, le sue ridotte
gettuale. La storia comincia con l’uscita del dimensioni e la mole di documenta-
In questo articolo vedremo esattamen- modulo Wireless ESP8266, basato zione presente online rendono meno
te di cosa stiamo parlando, quali sono su un SoC MCU a 32bit; nato per ag- ostico il suo utilizzo e perfetto per es-

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 20


focus

sere utilizzato per la realizzazione di na è inclusa direttamente nel circuito


dispositivi compatti. stampato, ma ad esempio nella ver-
sione ESP-05, è necessario collegare
Oltre a potere essere programmato un’antenna esterna.
come una vera e propria board di Converrà scegliere una versione piut-
sviluppo, può essere utilizzato come tosto che un’altra in base a quelle che
adattatore Wireless-Seriale con un sono le proprie necessità progettuali.
collegamento di tipo SPI/SDIO.

Visto la possibilità di poter personaliz- EVOLUZIONE IN ESP32


zare sia la parte che concerne il softwa- VERSIONI DISPONIBILI
re che l’hardware, è un modulo dai Dopo qualche anno dall’uscita
mille utilizzi, risultando ottimo per le
dell’ESP8266, dopo una lunga fase A differenza dell’ESP8266, la casa ma-
applicazioni di network grazie alla sua
di test vide la luce il suo successore: dre ha creato un’unica versione del
alta efficienza energetica con la possi-
ESP32. modulo ESP32, che può essere inte-
bilità di settare tre modalità: modalità grato facilmente in circuiti stampati
attiva, modalità sleep e modalità deep
L’evoluzione più interessante sta nel personalizzati, ma per utilizzarlo su
sleep. fatto che sono presenti più pin GPIO una scheda millefori sarà necessario
con i quali sviluppare dei progetti più utilizzare un adattatore che perme-
Quando il modulo riduce al minimo complessi senza dovere ricorrere ad tta di saldarlo su contatti con passo
le sue funzioni disattivando quelle un GPIO expander come ad esempio il 2.54mm.
non essenziali, arriva a consumare MCP23017, la presenza di connettivi-
poco meno di 12uA. tà Bluetooth, sensore touch e maggio-
re memoria.

VERSIONI DISPONIBILI

I moduli ESP8266 sono disponibi-


li in diversi formati denominati da
ESP-01 a ESP-12.

Come è possibile dedurre dall’imma-


gine seguente, la differenza principale
tra questi moduli è il formato e la dis-
tribuzione dei pin GPIO, che in alcune
versioni sono stati messi tutti a dispo-
sizione mentre in altre è possibile usu-
fruire di alcuni soltanto.
Nella maggior parte di questi, l’anten-

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 21


focus

CONFRONTO TRA I DUE MODULI

Nella tabella seguente, sono messe a confronto le specifiche tecniche di entrambi i SoC

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 22


focus

SCHEDE DI SVILUPPO

Sia per i moduli ESP8266 che ESP32,


nel tempo sono state realizzate e com-
mercializzate molte schede di svilu-
ppo grazie alle quali, approcciarsi al
loro funzionamento e realizzare i pro-
pri progetti risulta essere meno ostico.

La maggior parte di queste schede di


sviluppo permettono infatti di essere
programmate ed utilizzate con una ADAFRUIT HUZZAH ESP8266 ADAFRUIT FEATHER HUZZAH
semplicità disarmante, visto che BREAKOUT ESP8266
montano uno stabilizzatore di tensio-
ne che permette la corretta alimenta- Se si è alla ricerca di una dev Board Adafruit Feather HUZZAH ESP8266
zione dei moduli e, dove presenti, il che oltre ad essere stata prodotta con è una scheda di sviluppo basata su un
convertitore USB-seriale e i tasti RESET dei componenti hardware di buona modulo ESP8266 facente parte di una
e FLASH semplificano la fase di pro- qualità sia anche compatta, non si linea completa di schede di sviluppo
grammazione. può che scegliere la Adafruit HUZZAH stand-alone impilabili.
ESP8266 breakout. Le schede Feather possono essere ali-
A meno che non si necessiti di realizza- Consumi e dimensioni ridotti al mini- mentate direttamente tramite delle
re un circuito stampato personalizzato mo per poter essere integrata anche in batterie lipo e di conseguenza essere
sul quale andare a saldare un modulo dei progetti finiti che non necessitano utilizzate per la realizzazione di proge-
ESP, scegliere una buona scheda di di essere modificati nel tempo. tti che necessitano di un’alimentazio-
sviluppo permetterà sicuramente di Per programmare questa board, è ne esterna, come ad esempio dei data
velocizzare la fase di prototipazione. necessario utilizzare un convertitore logger o dispositivi potatili.
USB/seriale esterno.
Sulla scheda è incluso un connettore
SCHEDA TECNICA per batterie ai polimeri di litio da 3,7
V ed un connettore micro USB tramite
il quale, oltre ad alimentare la scheda
è possibile ricaricare la batteria ed ese-
guire il caricamento del codice.

SCHEDA TECNICA

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 23


focus

LINKNODE R8 NODEMCU DEVKIT ADAFRUIT HUZZAH32 ESP32 WIFI

LinkNode R8 è una board pro- NodeMCU non si riferisce direttamen- Board molto simile ad una di quelle
grammabile che monta a bordo il mo- te al nome della scheda, ma fa riferi- viste in precedenza, ma la presente
dulo ESP-12f ed otto relè che è possi- mento al firmware che che è già preca- monta un modulo ESP32 anziché un
bile gestire da remoto. ricato sul modulo ESP8266. ESP8266.
I relè supportano un carico massimo Tramite NodeMCU DevKit è possibile Anche questa serie di board possono
di 10 A ciascuno e possono essere con- programmare utilizzando direttamen- essere alimentate direttamente trami-
trollati via software per controllare lo te il linguaggio LUA collegando la te delle batterie lipo e di conseguenza
stato dei dispositivi collegati. board al computer tramite un cavetto essere utilizzate per la realizzazione di
L’interfaccia WiFi, tramite un’applica- micro USB. progetti portatili.
zione, consente di associare la scheda Questa è una board che è possibile tro- La presenza maggiore di pin GPIO per-
alla propria rete WiFi e di scambiare vare a basso costo in molti store Cinesi mette di sviluppare dei progetti più
informazioni. e su Amazon. variegati, mentre la maggiore potenza
di calcolo e memoria possono essere
SCHEDA TECNICA ___ impiegati per svolgere operazioni più
impegnative.

SCHEDA TECNICA

Prima di potere utilizzare qualsiasi scheda di sviluppo, è indispensabile eseguire


l’installazione dei driver del convertitore USB/seriale saldato sulla dev board che
si è scelto di utilizzare.
Se volete approfondire l’argomento DEV boards, vi consiglio di leggere questo articolo nel quale ne vengono confron-
tate alcune.

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 24


focus

FIRMWARE DISPONIBILI Tra questi, uno che risulta essere par- PROGRAMMAZIONE
ticolarmente interessante oltre a No-
Online è possibile trovare disponibili deMCU, è il firmware ESP Easy che I moduli ESP8266 e ESP32 possono
diversi Firmware, molti dei quali cus- permette la gestione dei moduli at- essere programmati in diversi lingua-
tom. traverso un’interfaccia Web rendendo ggi di programmazione, tra i quali:
Qui di seguito eccone alcuni tra i quali più semplice l’interfacciamento dei
è possibile scegliere. moduli ESP con dei componenti har- • Wiring (Attraverso l’IDE di Arduino)
dware, come ad esempio dei sensori • LUA
ambientali e dei GPIO expander. •C
FIRMWARE UFFICIALE
Inoltre tramite ESP Easy è possibile PROGRAMMAZIONE IN WIRING
Il firmware ufficiale rilasciato da Es- eseguire il collegamento con altre pia-
pressif permette la comunicazione con ttaforme, come OpenHAB, attraverso La buona notizia per gli amanti di Ar-
il modulo attraverso dei comandi AT. diversi protocolli di comunicazione. duino, è che è possibile utilizzare il
I comandi AT, sono delle particolari
stringhe utilizzate per comunicare con
diversi dispositivi elettronici, come ad
esempio i vecchi Modem fonici.
Il modo più semplice per inviare dei
comandi AT al modulo, è quello di
collegarlo al PC attraverso un conver-
titore USBseriale ed inviare i comandi
attraverso un monitor seriale.
Potrete trovare la lista dei comandi
completi per la gestione dei moduli
ESP nella documentazione ufficiale.

ALTRI FIRMWARE:
• Official FreeRTOS firmware1.1k
• Electodragon custom AT firmware732
(9600 baud with GPIO control)
• NodeMCU789 (Lua firmware)
• MicroPython640
• Frankenstein533 (Das-Uboot style prompt)
• NodeLua789 (Lua interpreter with web IDE)
• ESP Easy

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 25


focus

suo IDE per compilare ed eseguire


il caricamento del codice sui moduli
ESP8266 ed ESP32.
Prima di arrivare a questo passaggio,
è necessario settare alcuni parametri
che ci permetteranno di compilare
correttamente il codice per caricarlo
senza problemi.

ESP8266

er quanto riguarda i moduli ESP8266,


per poterli programmare attraverso
l’IDE di Arduino, prima di tutto quello
che bisogna fare è aggiungere alle
board supportate dell’IDE tutte quelle
basate sul modulo ESP8266.
Quindi apriamo l’IDE di Arduino, clic- http://arduino.esp8266.com/stable/package_esp8266com_index.json

chiamo su File > Impostazioni, e nella


casella Additional Boards Manager
URLs, inseriamo il seguente indirizzo
dal quale verranno aggiunte automa-
ticamente le board di qui avremo bi-
sogno:

http://arduino.esp8266.
com/stable/package_esp-
8266com_index.json

Dopodichè per installare le boards,


apriamo Strumenti > Scheda >
Boards Manager e clicchiamo su ins-
talla nella voce esp8266 by ESP8266
Community.

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 26


focus

Per eseguire il caricamento di un co- Per compilare il codice da caricare CONCLUSIONE


dice su un ESP8266, adesso basterà su un modulo ESP32, è necessario
aprire l’IDE di Arduino, scrivere il nos- installare il compilatore Xtensa Quest’articolo che hai appena letto è
tro programma e prima di cliccare su GNU. stato scritto con l’intento di creare un
“Carica” scegliere la board giusta. punto di riferimento per tutti coloro
Per gli utenti Windows, questa ope- che, venuti conoscenza di questi due
Bisogna tenere a mente che a diffe- razione è eseguibile aprendo sempli- fantastici moduli dai mille utilizzi,
renza di quando programmiamo una cemente il file eseguibile get.exe già hanno deciso di sperimentare ed in-
board Arduino, per indicare il pin che presente nella cartella esp32/tools. camminarsi verso la realizzazione di
vogliamo utilizzare nello sketch, do- dispositivi connessi in rete.
bbiamo scrivere esattamente quello Gli utenti MAC e Linux, per installare Non si tratta di un articolo statico,
che generalmente è riportato sulla se- questo tool, dovranno invece navigare ma verrà aggiornato ed arricchito
rigrafia della DEV board (ad esempio attraverso il terminale fino alla cartella nel tempo.
D0, D1, D2, A0, etc.), o nella documen- esp32/tools ed eseguire il seguente
tazione del modulo. comando:

python get.py Bibliografia immagini


ESP32
http://www.pighixxx.com/test/portfo-
Lo script python get.py, scaricherà au-
lio-items/esp32-processor/
Per quanto riguarda quest’altro mo- tomaticamente gli strumenti del com-
dulo, la configurazione va effettuata in pilatore Xtensa e il kit di sviluppo del https://cdn-learn.adafruit.com/
modo diverso rispetto alla procedura software ESP32 e li inserirà nel percor- guides/images/000/001/007/me-
vista in precedenza. so corretto in pochi minuti. dium800/qt.jpg?1448302153

https://cdn-learn.adafruit.com/guides/
Per aggiungere la compatibilità dei
images/000/001/170/medium800/
moduli ESP32 sull’IDE di Arduino, pri- CURIOSITÀ smalldemo.jpg?1448482000
ma di tutto bisogna scaricare la suit
esp32-arduino presente su Github a Alcuni utenti del Web hanno scoperto http://www.linksprite.com/wiki/
questo indirizzo e copiarla nella carte- che alcuni moduli ESP8266 ed ESP32 images/thumb/a/ae/LinkNode_R8-5.
lla degli Sketch Arduino nel seguente sono stati utilizzati per la realizzazio- jpg/640px-LinkNode_R8-5.jpg
percorso che creeremo appositamen- ne di prodotti commerciali, come ad
https://cdn-shop.adafruit.
te: esempio questo. com/970x728/3405-06.jpg

hardware/espressif/esp32

FARE ELETTRONICA FOCUS - Nº 2 - APRILE 2020 27