Relè WiFi smart controllato da smartphone o comandi vocali: guida alla realizzazione e programmazione con ESP8266

Controllato da smartphone o comandi vocali, supporta le modalità Smart lock e Smart switch: la prima è una serratura elettronica per l’apertura di varchi motorizzati e la seconda è un interruttore per l’accensione di un punto luce

Eccoci nuovamente assieme per proporvi un nuovo dispositivo IoT, questa volta però un relè WiFi smart dal costo contenuto, semplice da realizzare e programmare, controllato dall’assistente vocale Amazon Alexa o Google Assistant.

È un dispositivo compatto con interfaccia WiFi basata sul modulo ESP01S con a bordo il chip ESP8266 e dotato di un relè di potenza in grado di pilotare carichi fino a dieci ampere.

Poiché il modulo è già assemblato il progetto è alla portata di tutti anche al neofita con una conoscenza base di elettronica e di tutti quelli che non sono bravi nell’usare il saldatore.

Schema elettrico dello smart relè

Anche se il modulo viene acquistato assemblato, ad esempio su questo sito con il codice prodotto ESP01RELMOD, riteniamo utile analizzarne lo schema elettrico.

Il cuore del circuito è il transceiver ESP01S basato sul conosciutissimo microprocessore Espressif ESP8266 con architettura RISC a 32 bit, clock a 80 MHz ed equipaggiato con una memoria flash da 1MB.

La tensione di alimentazione di 5V, collegata al connettore CON1, viene abbassata dal regolatore di tensione lineare LD1117 a 3,3V, nello schema elettrico siglato U1, e disaccoppiata dai condensatori C1 e C2 che assicurano stabilità al regolatore, ovvero prevengono l’impossibilità di innescare fenomeni oscillatori.

I piedini 6 “RST”, 7 “CH_PD” e 3 “GPIO0” del modulo ESP01S, siglato nello schema elettrico U3, sono mantenuti ad alto livello dalle resistenze R4, R1 e R5 collegate al positivo dei 3,3 V.

Il piedino 3 GPIO0 a sua volta è configurato come uscita e va a comandare il catodo del diodo del fotoaccoppiatore U2, piedino 2, mentre l’anodo, piedino 1, è collegato al positivo tramite la resistenza R6.

Il collettore del transistor del fotoaccoppiatore, piedino 4, è collegato al positivo, mentre l’emettitore, che fa capo al piedino 3, va a pilotare il gate del MOSFET T1 a canale N, tenuto a livello logico basso dalla resistenza R2 collegata a massa.

Il MOSFET è di tipo logic level, cioè la tensione VGS necessaria per mandarlo in conduzione è inferiore ai 3 V. Il Drain di T1 va a comandare la bobina del relé RL1, mentre i contatti del deviatore interno sono collegati ai piedini del connettore CON2. In parallelo alla bobina del relé troviamo il diodo D1 che elimina le extratensioni autoindotte dalla bobina, proteggendo i componenti attivi a valle.

L’attivazione del relé è segnalata dal LED LD1, e la corrente assorbita è limitata dalla resistenza R3. Il pulsante SW1 collegato al piedino 6 “RST” di U3 serve a resettare il modulo mentre il condensatore C3 da 100nF assieme alla resistenza di pull up R4 da 10K crea un circuito RC.

Rammentiamo che la costante di tempo di un circuito RC è il tempo necessario affinché la tensione passi da 0V a 0,632V (tensione del generatore) mentre il tempo necessario per la carica completa del condensatore è circa τ=5RC, ovvero trascorso un intervallo in cui ragionevolmente si può ritenere esaurito il transitorio di carica.

La Fig. 1 esemplifica il transitorio in una rete RC.

Fig. 1 Transitorio di carica di un condensatore

Programmazione e collaudo del relè con ESP8266

La programmazione del modulo ESP01S, deve essere effettuata mediante un adattatore USB per ESP8266, visibile in Fig. 2, (codice prodotto YM203) nel cui zoccolo andrà inserito l’ESP01S prelevato dal Modulo relè; completata la programmazione, rimuovete il modulo ESP01S (dopo aver estratto l’adattatore dalla presa USB) e rimontatelo sul modulo relè WiFi.

L’adattatore in questione è un convertitore basato sul chip USB-TTL CH340G, permette di caricare il firmware o il codice sorgente compilato con Arduino ide sul modulo Wi-Fi ESP8266.

Sull’adattatore è presente, oltre al connettore femmina 2×4 pin dedicato all’ESP8266, anche un regolatore di tensione a 3,3 volt. La compilazione del sorgente e la programmazione può essere effettuata direttamente dall’ambiente di sviluppo Arduino Ide scaricando le definizioni della scheda dal sito web http://arduino.esp8266.com/stable/package_esp8266com_index.json, indirizzo che dovete aggiungere tra gli “URL aggiuntivi per il gestore di schede” nel menu “impostazioni”.

Dal menu “sketch” selezionate “#include libreria” e cliccate su “Gestione libreria”. Dalla finestra Gestione libreria cercate e installate le librerie “IotWebConf” e “SinricPro”, necessarie per compilare lo sketch scaricabile nella sezione download di questo articolo.

Fig. 2 Adattatore USB per programmare l’ESP01S

 

A scopo informativo il sorgente del prototipo è stato compilato utilizzando il package core ESP8266 versione 2.7.4 e le librerie “Iotwebconf” versione 3.2.0, “SinricPro” versione 2.9.10 e “ArduinoJson” versione 6.18.5.

Fate attenzione che la versione del package core dell’ESP8266 caricato in Arduino IDE sia aggiornato alla 2.7.4, altrimenti avrete problemi di funzionamento con la libreria IotWebConf.

Al momento della stesura dell’articolo la versione del package core dell’ESP8266 è arrivata alla versione 3.0.2 .

Per chi interessa in Fig. 3 riportiamo la configurazione di programmazione del modulo ESP01S usata da noi nell’ambiente di sviluppo Arduino IDE.

Per alimentare il relé WiFi potete utilizzare un comune alimentatore da parete per smartphone con uscita USB da 5V oppure, se avete a disposizione una bassa tensione continua, usare un convertitore DC/DC switching di tipo Step-Down come quello visibile in Fig. 4, basato sull’integrato LM2596 a catalogo con codice prodotto MODULODCDC oppure il modulo MP1584ENDCDC.

In alternativa potete usare quello lineare basato sul chip LM317 a catalogo codice prodotto HR0051.

All’accensione, per una frazione di secondo, il modulo relé WiFi porta basso il piedino GPIO0 facendo eccitare il relé RL1.

Problema non trascurabile se volessimo usare il circuito per pilotare l’apertura di un cancello o peggio ancora la porta di casa.

 

 

Fig. 3 Impostazioni di programmazione del modulo ESP01S nell’ambiente di sviluppo Arduino Ide

 

Fig. 4 Convertitore DC/DC switching di tipo Step-Down basato sul chip LM2596S

 

Ad ogni blackout, al ripristino della corrente il relé verrebbe eccitato e la porta si aprirebbe.

Risolvere questo problema di progettazione hardware non è possibile mediante software poiché l’impulso sul piedino GPIO0 è causato dalla corretta sequenza di boot dell’ESP01S.

Per risolvere il problema bisognerebbe modificare il PCB tagliando le piste e usare un altro pin disponibile, in alternativa potete saldare due condensatori multistrato ceramici SMD da 220 µF in parallelo, tra i piedini 1 e 2 del fotoaccoppiatore, come indicato nello schema elettrico e visibile in Fig. 5.

Potete usare anche un solo condensatore elettrolitico, molto più ingombrante, facendo attenzione al corretto orientamento, collegando il terminale positivo al piedino 1 del fotoacoppiatore e il terminale negativo al piedino 2 del fotoacoppiatore.

Con l’aggiunta dei condensatori si introduce un ritardo sull’uscita GPIO2, prevenendo l’attivazione del relé all’accensione.

Fig. 5 Collegamento dei due condensatori da 220 uF sui piedini 1 e 2 del fotoaccoppiatore

 

Gli sketch da noi messi a disposizione sono due: l’ESPSmartSwitch.ino e l’ESPSmartLock.ino

Con il primo sketch il dispositivo viene riconosciuto come un normale interruttore elettronico, mentre con il secondo il dispositivo viene riconosciuto come una serratura elettronica e per sbloccarla l’assistente vocale richiede, come ulteriore protezione di sicurezza, la conferma mediante un codice PIN composto da quattro numeri.

All’inizio dello sketch ci sono delle righe commentate che servono a impostare la compilazione del sorgente. Ad esempio se la memoria Flash montata sul modulo ESP01S è marchiata Puya, e volete abilitare il supporto di tale memoria in fase di compilazione, dovete togliere il commento “//”davanti a “#define PUYA_SUPPORT 1”.

Se invece volete attivare il debug togliete il commento davanti a “#define ENABLE_DEBUG. La libreria Iotwebconf di default fa visualizzare sulla seriale le chiavi del vostro account IoT in chiaro.

Per motivi di sicurezza vi consigliamo di disabilitare tale opzione aggiungendo all’inizio del file IotWebConfSettings.h, che si trova nella cartella SRC, la seguente riga di testo “#define IOTWEBCONF_DEBUG_DISABLED”.

Quando aggiungete un nuovo dispositivo sul server https://sinric.pro, nella casella Tipo di dispositivo scegliete “Switch” per lo sketch “ESPSmartSwitch.ino”, e “Smart Lock” per lo sketch ”ESPSmartLock.ino”. Ricordiamo che il pin predefinito è “123”.

Utilizzo dell’ESP smart relé

Terminata la programmazione del modulo ESP01S, facendo attenzione al corretto orientamento, montatelo nell’apposito zoccolo a otto pin di colore giallo sul modulo relé WiFi e date tensione.

All’avvio il modulo diventa un access point con captive portal. Accedendo alla rete il browser si avvierà in automatico e aprirà la pagina all’indirizzo IP 192.168.4.1.

Qui configurerete la rete, la password di sistema e le impostazioni per accedere alla rete wireless domestica.

Come visibile in Fig. 6, per accedere alla pagina di configurazione vi verrà richiesto il nome utente e la password. Come nome utente inserite “admin” e come password “123456789” se non l’avete cambiata. Una volta entrati nella sezione “Settings” potete impostare i parametri richiesti come proposto nella Fig. 7.

Fig. 6 Home page dell’ESP smart relé con a bordo il firmwareESPSmartSwitch.ino

 

 

Fig. 7 Schermata della pagina web di configurazione dell’ESP smart relé

 

Le impostazioni sono uguali a quelli dello Smart switch che abbiamo analizzato nell’articolo proposto nel fascicolo n° 260 di dicembre 2021. Per questo motivo andremo solo a elencare velocemente le impostazioni.

In “Timer” potete impostare il valore in minuti dell’autospegnimento del carico collegato all’uscita. La casella di spunta “Turn on at startup” vi permette di abilitare la funzione di attivazione del relè in uscita all’accensione del dispositivo. La casella di spunta “Enable assistant control” vi permette di abilitare o disabilitare il controllo mediante assistente vocale Amazon Alexa o Google Assistance.

La casella di spunta “Enable web control” vi permette di abilitare il controllo mediante pagina web. La casella di spunta “Reboot device on save”, abilita il riavvio del dispositivo dopo aver cliccato il tasto “Apply”.

In Fig. 8, Fig. 9 e Fig. 10 trovate alcuni schemi esemplificativi di collegamento dell’ESP smart relè.

Fig. 8 Collegamento del modulo relé WiFi al cancello motorizzato. L’alimentazione viene prelevata dall’alimentatore a 24 Vdc della centralina del motoriduttore

 

 

Fig. 9 Cablaggio del modulo relé WiFi alla serratura elettrica della porta o del cancelletto I 12 Vac in corrente alternata vengono prelevati dal trasformatore della serratura elettrica

 

 

Fig. 10 Cablaggio del modulo relè Wi-Fi per comandare un punto luce. L’alimentazione a 5 V può essere prelevata da un carica batterie per telefonini

 

Se sullo smartphone installate l’App Google Home, l’ESP smart relè potrà essere comandato anche con l’assistente vocale Google Assistant.

Di seguito riportiamo alcuni comandi riconosciuti dall’assistente vocale Amazon Alexa. Supponiamo che in https://sinric.pro al nostro dispositivo abbiamo assegnato il nome “Cancello”.

Per attivare il relé pronunciate: “Alexa, apri il cancello” oppure “Hey Google, apri il cancello”.

Per disattivare il relé pronunciate: “Alexa, chiudi il cancello” oppure “Hey Google, chiudi il cancello”.

Se decidete di utilizzare il firmware ESPSmartLock.ino alla richiesta di apertura del cancello l’assistente vocale vi chiederà il PIN che avete memorizzato nelle impostazioni del dispositivo e se corretto aprirà il cancello vedi Fig. 11 e Fig. 12. Al contrario in chiusura il PIN non sarà più richiesto. La richiesta del codice PIN per le serrature elettroniche Iot è implementata di default in tutti gli assistenti vocali come sicurezza nel caso smarriste lo smartphone.

 

Fig. 11 Impostazioni dell’App Amazon Alexa. Ricordatevi di abilitare il funzionamento tramite App, mediante comando vocale; inoltre modificate il codice vocale (PIN) come indicato nell’immagine

 

 

Fig. 12 Interfaccia dell’App Google home

 

Nell’App Amazon Alexa la funzione di sblocco delle serrature è disattivata per impostazione predefinita, quindi bisogna attivarla manualmente e impostare il codice PIN cliccando su Modifica codice vocale come visibile in Fig. 11.

Se reputate scomoda la richiesta del pin potete installare sullo smartphone l’App Sinric pro che vi permetterà di aprire il cancello senza la richiesta del pin cliccando sull’apposita icona.

Se nell’ESP smart relé installate il firmware ESPSmartLock.ino in http://sinric.pro nel menu a tendina Tipo di dispositivo dovete scegliere il tipo Smart Lock, vedi Fig. 13, mentre se installate il firmware ESPSmartSwitch.ino dove scegliere il dispositivo di tipo Switch.

 

Fig. 13 Se caricate il firmware ESPSmartLock in Sinric pro scegliete il tipo di dispositivo “Smart lock”, mentre se caricate il firmware ESPSmartSwitch dal menu a tendina scegliete il tipo di spositivo “Switch”

 

Per saperne di più e conoscere tutti i comandi vocali riconosciuti dall’assistente vocale Amazon Alexa, nell’App Amazon Alexa selezionate l’icona ≡ in alto a sinistra, scegliete la voce “Cose da provare” e cliccate l’opzione “Casa intelligente”, se in casa avete un dispositivo Amazon echo dot, comandare l’ESP smart relè sarà ancora più comodo e facile.

Per personalizzare l’esperienza e le impostazioni dell’assistente vocale Google Assistant, andate in Google Home e nel menu funzionalità del menu impostazioni cliccate su assistente Google.

Oppure consultate la guida cliccando sull’icona in alto a destra. Poiché l’apertura e la chiusura del cancello, vedi Fig. 8, avviene mediante un breve comando da un pulsante o dal radiocomando, nelle impostazioni del nostro dispositivo impostate il Timer a un secondo.

Così una volta attivato il relé con un comando vocale, questo dopo un secondo si disecciterà automaticamente simulando l’apertura.

Lo stesso vale se il nostro dispositivo dovesse aprire il cancelletto o la porta d’ingresso del condominio, vedi Fig. 9, dove la serratura elettromeccanica viene sbloccata da una bobina, se il relé rimanesse eccitato per troppo tempo rischierebbe di surriscaldarla e danneggiarla.

Grazie alla funzione Timer utilizzando il firmware “ESPSmartSwitch.ino” possiamo utilizzare il nostro dispositivo per sostituire il temporizzatore della luce delle scale come raffigurato in Fig. 10.

Ponendo il Timer a zero questo verrà disabilitato e il nostro dispositivo potrà essere utilizzato come un comunissimo interruttore. Con un comando vocale potete accendere la luce, che rimarrà accesa fino al successivo comando di spegnimento.

Come avete notato in entrambi gli schemi di Fig. 9 e Fig. 10 per alimentare l’ESP smart relè abbiamo utilizzato il convertitore DC/DC switching step-down LM2596S.

Facciamo presente che il suddetto modulo viene fornito con una tensione in uscita non tarata a 5 V. per questo motivo prima di alimentare il dispositivo consigliamo di tarare il trimmer multigiri per avere in uscita una tensione di 5 V.

Grazie alla sua versatilità l’ESP smart relé può essere utilizzato in diversi contesti e trasformare i vecchi dispositivi in moderni dispositivi smart.

Conclusioni e Download

Con questo dispositivo speriamo di aver soddisfatto i lettori che volevano realizzare un dispositivo smart versatile, di dimensioni e dal costo contenuto e facile da realizzare.

Capace non solo di accendere e spegnere la luce di casa, ma anche di trasformare altri dispositivi, come la porta del garage o il cancello di casa, in moderni dispositivi smart comandabili da remoto mediante smartphone o con l’assistente vocale Amazon Alexa e Google Assistant.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu