- Materiali richiesti:
- Funzionamento del sensore di corrente ACS712:
- Schema elettrico
- Codice e spiegazione:
- App Android per il monitoraggio del consumo di elettricità:
Conosciamo tutti i contatori di energia elettrica che vengono installati nella casa o negli uffici di tutti per misurare il consumo di elettricità. Alla fine di ogni mese, molti di noi si preoccupano per l'elevata bolletta elettrica e ogni tanto dobbiamo guardare il contatore di energia. Ma cosa succederebbe se fossimo in grado di monitorare il nostro consumo di elettricità da qualsiasi parte del mondo e ricevere un SMS / e-mail quando il consumo di energia raggiunge un valore soglia? Qui stiamo costruendo un progetto di misuratore di energia basato sull'IoT.
In precedenza abbiamo realizzato un circuito Energy Meter che ti invia SMS sulla bolletta utilizzando il modulo GSM. In questo progetto realizziamo un contatore di energia elettrica intelligente utilizzando Arduino e il modulo Wi-Fi ESP8266 che non solo può inviarti un SMS / e-mail della tua bolletta elettrica, ma puoi anche monitorare i consumi energetici in qualsiasi momento e da qualsiasi parte del mondo. Qui abbiamo utilizzato un sensore di corrente ACS712 per misurare il consumo di energia, ne parleremo a breve.
Ci serviremo dell'aiuto della piattaforma IFTTT per collegare il nostro Wi-Fi alle notifiche SMS / e-mail. Useremo anche l' app Android MQTT Dashboard per monitorare i nostri consumi energetici. Quindi iniziamo….
Materiali richiesti:
- Arduino Uno
- ESP12 / NodeMCU
- ACS712-30Amp Sensore di corrente
- Qualsiasi apparecchio AC
- Fili maschio-femmina
Funzionamento del sensore di corrente ACS712:
Prima di iniziare a costruire il progetto è molto importante per noi comprendere il funzionamento del sensore di corrente ACS712 in quanto è il componente chiave del progetto. Misurare la corrente, in particolare la corrente alternata, è sempre un compito difficile a causa del rumore accoppiato con esso, problema di isolamento improprio ecc. Ma, con l'aiuto di questo modulo ACS712 che è stato progettato da Allegro, le cose sono diventate molto più semplici.
Questo modulo funziona secondo il principio dell'effetto Hall, scoperto dal Dr. Edwin Hall. Secondo il suo principio, quando un conduttore che trasporta corrente viene posto in un campo magnetico, viene generata una tensione ai suoi bordi perpendicolare alle direzioni sia della corrente che del campo magnetico. Non andiamo troppo in profondità nel concetto, ma semplicemente usiamo un sensore Hall per misurare il campo magnetico attorno a un conduttore che trasporta corrente. Questa misura sarà in millivolt che abbiamo chiamato tensione di sala. Questa tensione hall misurata è proporzionale alla corrente che scorreva attraverso il conduttore.
Il vantaggio principale dell'utilizzo del sensore di corrente ACS712 è che è in grado di misurare sia la corrente CA che CC e fornisce anche l'isolamento tra il carico (carico CA / CC) e l'unità di misura (parte del microcontrollore). Come mostrato nell'immagine abbiamo tre pin sul modulo che sono rispettivamente Vcc, Vout e Ground.
La morsettiera a 2 pin è il punto in cui deve passare il filo che trasporta la corrente. Il modulo funziona a + 5V, quindi il Vcc dovrebbe essere alimentato a 5V e la terra dovrebbe essere collegata alla terra del sistema. Il pin Vout ha una tensione di offset di 2500mV, il che significa che quando non c'è corrente che scorre attraverso il filo, la tensione di uscita sarà 2500mV e quando la corrente che scorre è positiva, la tensione sarà maggiore di 2500mV e quando la corrente che scorre è negativa, il la tensione sarà inferiore a 2500 mV.
Useremo il pin analogico di Arduino per leggere la tensione di uscita (Vout) del modulo, che sarà 512 (2500mV) quando non c'è corrente che scorre attraverso il filo. Questo valore si ridurrà quando la corrente scorre in direzione negativa e aumenterà quando la corrente scorre in direzione positiva. La tabella seguente ti aiuterà a capire come varia la tensione di uscita e il valore ADC in base alla corrente che scorre attraverso il filo.
Questi valori sono stati calcolati sulla base delle informazioni fornite nel Datasheet dell'ACS712. Puoi anche calcolarli usando le seguenti formule:
Tensione Vout (mV) = (Valore ADC / 1023) * 5000 Corrente attraverso il filo (A) = (Vout (mv) -2500) / 185
Ora che sappiamo come funziona il sensore ACS712 e cosa possiamo aspettarci da esso. Passiamo allo schema del circuito.
Abbiamo utilizzato questo sensore per realizzare un circuito amperometro digitale utilizzando il microcontrollore PIC e l'ACS712.
Schema elettrico
Passaggio 1: accedi a IFTTT con le tue credenziali.
Passaggio 2: nelle mie applet, fare clic su Nuova applet
Passaggio 3: fare clic su + questo
Passaggio 4: cerca AdaFruit e fai clic su di esso.
Passaggio 5: fare clic su Monitorare un feed su AdaFruit IO.
Passaggio 6: scegli Feed come fattura, Relazione come " uguale a" e il valore di soglia a cui desideri ricevere un'e-mail. Fare clic su Crea azione . Ho usato 4 come valore di attivazione della soglia.
Passaggio 7: fare clic su + quello . Cerca G-mail e fai clic su di esso e accedi con le tue credenziali g-mail.
Passaggio 8: fare clic su invia a te stesso un'e-mail.
Passaggio 9: scrivi l'oggetto e il corpo come mostrato e fai clic per creare.
Passaggio 10: la tua " ricetta " è pronta. Rivederlo e fare clic su Fine.
Ora, abbiamo finito con l'integrazione web. Passiamo alla parte di codifica..
Codice e spiegazione:
Stiamo usando la comunicazione seriale tra ESP12 e Arduino. Quindi, dobbiamo scrivere codice sia per Arduino che per NodeMCU per la trasmissione e la ricezione.
Codice per la parte del trasmettitore, ad esempio per Arduino Uno:
Il codice Arduino completo viene fornito alla fine di questo tutorial. Useremo la libreria per il sensore di corrente che può essere scaricata da questo collegamento.
Questa libreria ha una funzione incorporata per calcolare la corrente. Puoi scrivere il tuo codice per calcolare la corrente, ma questa libreria ha algoritmi di misurazione della corrente accurati.
Innanzitutto, includi la libreria per il sensore di corrente come:
#include "ACS712.h"
Crea un array per immagazzinare energia per inviarlo a NodeMCU.
char watt;
Creare un'istanza per utilizzare ACS712-30Amp al PIN A0. Cambia il primo argomento se stai usando la variante da 20A o 5A.
Sensore ACS712 (ACS712_30A, A0);
Nella funzione di configurazione , definire la velocità di trasmissione di 115200 per comunicare con NodeMCU. Chiama la funzione sensor.calibrate () per calibrare il sensore di corrente per ottenere letture accurate.
void setup () { Serial.begin (115200); sensor.calibrate (); }
Nella funzione loop , chiameremo sensor.getCurrentAC (); funzione per ottenere il valore corrente e memorizzarlo nella variabile float I. Dopo aver ottenuto la corrente, calcolare la potenza utilizzando la formula P = V * I. Usiamo 230V perché è lo standard comune nei paesi europei, cambia al tuo locale, se necessario
void loop () { float V = 230; float I = sensor.getCurrentAC (); float P = V * I;
Queste linee convertono la potenza in Wh.
last_time = current_time; current_time = millis (); Wh = Wh + P * ((current_time -last_time) /3600000.0);
Ora, dobbiamo convertire questo Wh in forma di carattere per inviarlo a NodeMCU, per questo dtostrf (); convertirà un float in un array di caratteri in modo che possa essere stampato facilmente:
dtostrf (Wh, 4, 2, watt);
Il formato è:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
Scrivere questo array di caratteri nel buffer seriale utilizzando Serial.write () ; funzione. Questo invierà il valore Wh a NodeMCU.
Serial.write (watt); ritardo (10000); }
Codice per parte del ricevitore NodeMCU ESP12:
Per questo abbiamo bisogno della libreria MQTT di AdaFruit che può essere scaricata da questo link.
Ora apri l'IDE di Arduino. Vai agli esempi -> Libreria MQTT di AdaFruit -> mqtt_esp8266
Modificheremo questo codice in base alle nostre chiavi AIO e credenziali Wi-Fi e dati seriali in arrivo da Arduino.
Innanzitutto, abbiamo incluso tutte le librerie per ESP12 Wi-Fi Module e AdaFruit MQTT.
#includere
Definiamo l'SSID e la password per il tuo Wi-Fi, da cui desideri connettere il tuo ESp-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Questa sezione definisce il server AdaFruit e la porta del server, fissati rispettivamente come "io.adafruit.com" e "1883".
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Sostituisci questi campi con il tuo nome utente e le chiavi AIO che hai copiato dal sito AdaFruit durante la creazione del feed.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Quindi abbiamo creato una classe WiFiClient ESP12 per connettersi al server MQTT.
Client WiFiClient;
Imposta la classe client MQTT passando il client WiFi e il server MQTT e i dettagli di accesso.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Imposta un feed chiamato "Power" e "bill" per la pubblicazione delle modifiche.
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / Power"); Adafruit_MQTT_Publish bill = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / bill");
Nella funzione di configurazione , colleghiamo il modulo Wi-Fi al punto di accesso Wi-Fi.
void setup () { Serial.begin (115200); ritardo (10); Serial.println (F ("Adafruit MQTT demo")); // Connetti al punto di accesso WiFi. Serial.println (); Serial.println (); Serial.print ("Connessione a"); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …. …. ... }
Nella funzione loop , controlleremo i dati in arrivo da Arduino e pubblicheremo questi dati su AdaFruit IO.
void loop () { // Assicurati che la connessione al server MQTT sia attiva (questo farà la prima // connessione e si riconnetterà automaticamente quando disconnesso). Vedere la definizione della funzione MQTT_connect // più avanti. MQTT_connect (); int i = 0; float watt1;
Questa funzione controlla i dati in arrivo da Arduino e memorizza questi dati in un array di watt utilizzando la funzione serial.read ().
if (Serial.available ()> 0) { delay (100); // consente a tutti i seriali inviati di essere ricevuti insieme mentre (Serial.available () && i <5) { watt = Serial.read (); } watt = '\ 0'; }
La funzione atof () converte i caratteri in valori float e memorizzeremo questo valore float in un'altra variabile float watt1.
watt1 = atof (watt);
Calcola l'importo della bolletta moltiplicando la potenza (in Wh) per la tariffa energetica e dividila per 1000 per ottenere la potenza in KWh.
bill_amount = watt1 * (energyTariff / 1000); // 1 unità = 1kwH
Ora possiamo pubblicare cose!
Serial.print (F ("\ nSending Power val")); Serial.println (watt1); Serial.print ("…");
Questo pezzo di codice sta pubblicando i valori di potenza nel feed di alimentazione
if (! Power.publish (watt1)) { Serial.println (F ("Failed")); } altro { Serial.println (F ("OK!")); }
Questo pubblicherà la bolletta dell'elettricità nel feed delle bollette .
if (! bill.publish (bill_amount)) { Serial.println (F ("Failed")); } altro { Serial.println (F ("OK!")); }
L'importo della nostra fattura può cambiare rapidamente, ma IFTTT richiede tempo per attivare l'applet, quindi queste righe daranno tempo per l'attivazione in modo che possiamo ricevere l'email di soglia.
Modifica il valore bill_amount su cui desideri ricevere l'email. Inoltre, modifica la configurazione IFTTT AdaFruit IO.
if (bill_amount == 4) { for (int i = 0; i <= 2; i ++) { bill.publish (bill_amount); ritardo (5000); } bill_amount = 6; }
Il codice completo per Arduino e NodeMCU ESP12 è fornito alla fine di questo tutorial.
Ora carica i codici su entrambe le schede. Collega l'hardware come mostrato nello schema del circuito e apri io.adafruit.com. Apri la dashboard che hai appena creato. Vedrai il consumo di energia e la bolletta dell'elettricità si sta aggiornando.
Quando il disegno di legge ha raggiunto a INR 4 , allora si otterrà una e-mail come questo.
App Android per il monitoraggio del consumo di elettricità:
Puoi utilizzare l'App Android per monitorare i valori. Per questo scarica l' app Android MQTT Dashboard dal Play Store o da questo Link.
Per impostare la connessione con io.adafruit.com segui questi passaggi:
Passaggio 1: apri l'app e fai clic sul segno "+". Compila l'ID cliente come preferisci. Il server e la porta rimangono gli stessi mostrati nello screenshot. Otterrai il nome utente e la password (chiave attiva) dalla dashboard di AdaFruit IO come mostrato di seguito.
La chiave attiva è la tua password.
Passaggio 2: selezionare Contatore di elettricità e selezionare Abbonati. In sottoscrizione, fornire un nome descrittivo e un argomento. Il formato dell'argomento è " yourusername" / feeds / "feedname" e fai clic su crea.
Passaggio 3: allo stesso modo, effettua l'iscrizione per il feed di fatture.
Passaggio 4: man mano che i tuoi elettrodomestici consumano energia, i valori aggiornati verranno visualizzati sotto Power and Bill .
In questo modo è possibile creare un contatore di energia elettrica intelligente, che non solo può essere monitorato da qualsiasi parte del mondo, ma può anche attivare l'e-mail quando si ha un elevato consumo di elettricità.
Controlla anche tutti i nostri progetti IoT.