PZEM004T e un ESP8266 per monitorare i consumi energetici casalinghi via WiFi

“Finita questa mostra, di luce elettrica non sentiremo più parlare.”
frase pronunciata nel 1878 all’Esposizione di Parigi da Erasmus Wilson

Uno dei dilemmi casalinghi più frequenti sembra essere l’uso contemporaneo di più elettrodomestici. Roba del tipo “Cara, dovrei accendere la lavastoviglie. C’è forse la lavatrice in funzione?”, per evitare di superare la fatidica soglia dei 3000W per più di 30 secondi, che provoca l’antipatico distacco per “superamento potenza”.

Così, un po’ per sfizio e un po’ per sfida, mi lancio nella realizzazione di uno smart power energy meter casalingo usando un modulo PZEM004T, capace di misurare (per induzione, attraverso un toroide) da 80 a 260V e fino a 100A di corrente con una precisione dello 0,5% (dicono nelle specifiche):

PZEM-004T-100A: Campo di Misura 100A 

Tensione = Campo di misura: 80 ~ 260 V con risoluzione: 0.1 e  precisione di misura: 0.5% 
Corrente = Campo di misura: 0 ~ 100A (PZEM-004T-100A) con risoluzione: 0.001A e precisione di misura: 0.5% 
Potenza attiva = Campo di misura: 0 ~ 23kW (PZEM-004T-100A) con risoluzione: 0.1 W e precisione di misura: 0.5% 

Hardware

Il modulo PZEM004T comunica via seriale TTL, attraverso una interfaccia a 4 pin (5V, GND, TX e RX) che collegheremo a un modulo ESP8266. Ho aggiunto un buzzer passivo sulla scheda, per poter segnalare –attraverso un allarme sonoro– l’eventuale sforamento della potenza massima.

Per l’alimentazione della scheda ho usato un modulo alimentatore Hi-Link da 5v con una corrente massima di 600maA.

ATTENZIONE: PERICOLO DI MORTE!

Questo progetto richiede l’utilizzo della 220V, sia per l’installazione del toroide di controllo che per il resto. È necessario fare estrema attenzione e scollegare l’impianto dal contatore a monte prima di qualsiasi intervento sulla rete elettrica casalinga. Inoltre, questo intervento potrebbe invalidare la conformità dell’impianto elettrico.

Non mi assumo alcuna responsabilità per danni, incidenti o quant’altro possa capitarvi. Fate molta attenzione a quello che fate.

Partiamo subito con lo schema elettrico delle connessioni.

Lo schema elettrico dei collegamenti

La parte più difficile è stata l’installazione del toroide “TR1”: deve essere installato su uno solo dei due fili (generalmente blu e marrone) provenienti dal contatore ENEL. Nel mio caso, ho scelto di sfruttare lo spazio dentro la scatola dei differenziali “salvavita”:

Per sicurezza, ho ulteriormente protetto e isolato elettricamente il modulo PZEM004T, usando un pezzo sagomato di multistrato. Sono così riuscito a sfruttare perfettamente lo spazio residuo, cablaggi inclusi, senza modificare l’estetica della casa.

il modulo PZEM004T
Bill Of Materials

E adesso, passiamo al software!

Il Firmware

Per gestire i dati rilevati dal modulo PZEM004T ho usato la libreria scaricabile da github.com/olehs/PZEM004T. Se avere una versione 3.0 del modulo (la mia è 2.0), potete sostituirla con la libreria github.com/mandulaj/PZEM-004T-v30, che in più offre il rilevamento della frequenza e del fattore di potenza.

Potete verificare la versione del firmware della Vostra scheda dalla sigla stampigliata a destra del connettore seriale.

Attraverso la porta seriale si va a interrogare i registri interni del modulo, recuperando i valori di tensione, potenza e corrente misurati (le librerie citate sopra si occupano di tutto).

Partendo da qui, ho costruito il firmware aggiungendo l’interfaccia web, da dove visualizzare i dati in tempo reale e impostare i parametri di configurazione, incluso l’allarme di superamento potenza che fa suonare il buzzer:

Interfaccia web di visualizzazione parametri

Sfruttando il protocollo MQTT, già implementato, è possibile inviare i parametri rilevati a un database remoto e visualizzare l’andamento nel tempo usando una piattaforma come Grafana.

Potete scaricare i sorgenti del firmware da github.com/michelep/ESP8266_EnergyMeter, per poi procedere con la compilazione.

Per compilare il sorgente dovete usare Arduino IDE (testato con la versione 1.8.13), precedentemente configurato con la piattaforma per gli ESP8266 e incluso (è molto comodo!) il plugin ESP8266 SPIFFS FS, che vi permetterà di caricare nella partizione SPIFFS i files necessari.

Dovete anche includere le seguenti librerie:

dopodiché la compilazione dovrebbe andare a buon fine. Ricordatevi di selezionale la scheda ESP8266 corretta (NodeMCU 1.0 – ESP12 Module) e il partizionamento della flash (FS:1MB OTA:~1019KB). Eventuali aggiornamenti potranno anche essere caricati via OTA.

Dopo aver caricato il firmware, dobbiamo caricare i files dell’interfaccia Web e di configurazione (nella directory /data) nella SPIFFS. Prima, però, ricordatevi d’impostare i parametri della rete wifi in config.json!

Se tutto è andato a buon fine, la scheda si sarà già connessa alla rete wifi impostata e, navigando con un qualsiasi browser sul server Web, apparirà l’interfaccia di visualizzazione in tempo reale e le impostazioni del sistema:

  • Power alarm: un valore > 0 indica che, al superamento di potenza di questo valore, il buzzer inizierà a “bippare” ogni secondo;
  • WiFi SSID e PSK key: il nome (SSID) e la chiave (PSK) della rete WiFi;
  • MQTT broker host, port, client ID e Timeout: l’IP del broker MQTT, la porta (tipicamente 1883), l’ID univoco del sistema e ogni quanti secondi inviare i dati (di default, ogni 5 minuti);
  • Hostname: MDNS host name;
  • NTP server e NTP timezone: parametri del server NTP per mantenete l’ora sempre aggiornata;
  • Username e Password: se impostati, le credenziali per accedere a questa interfaccia;
  • OTA updates: se spuntato, permette l’aggiornamento del firmware via OTA;

Dovrebbe essere tutto. Per qualunque domanda, suggerimento, consiglio… lasciate pure un commento qui sotto!

Questo articolo è stato visto 3 volte (Oggi 1 visite)

Ti è piaciuto questo articolo?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.