- Potrebné materiály:
- Fungovanie prúdového snímača ACS712:
- Schéma zapojenia
- Kód a vysvetlenie:
- Aplikácia pre Android na sledovanie spotreby elektrickej energie:
Všetci vieme o elektromeroch, ktoré sú inštalované v každej domácnosti alebo kancelárii na meranie spotreby elektrickej energie. Mnoho z nás sa každý posledný mesiac obáva vysokého účtu za elektrinu a raz za čas sa musíme pozrieť na merač energie. Čo však robiť, ak môžeme sledovať našu spotrebu elektriny odkiaľkoľvek na svete a dostať správu SMS alebo e-mail, keď vaša spotreba energie dosiahne hraničnú hodnotu. Tu budujeme projekt merača energie založený na IoT.
Predtým sme vybudovali obvod merača energie, ktorý vám prostredníctvom modulu GSM posiela SMS o faktúre. V tomto projekte vyrábame inteligentný elektromer využívajúci Arduino a Wi-Fi modul ESP8266, ktorý vám môže nielen posielať SMS / e -maily s účtami za elektrinu, ale môžete tiež sledovať spotrebu energie kedykoľvek a odkiaľkoľvek na svete. Tu sme na meranie spotreby energie použili prúdový snímač ACS712, o ktorom si čoskoro povieme.
Pomôžeme platforme IFTTT prepojiť naše Wi-Fi s SMS / e-mailovými upozorneniami. Na sledovanie využívania energie budeme tiež používať aplikáciu MQTT Dashboard pre Android. Takže poďme začať…
Potrebné materiály:
- Arduino Uno
- ESP12 / NodeMCU
- Senzor prúdu ACS712-30Amp
- Akékoľvek AC zariadenie
- Dráty muž-žena
Fungovanie prúdového snímača ACS712:
Predtým, ako začneme stavať projekt, je pre nás veľmi dôležité pochopiť prácu prúdového senzora ACS712, ktorý je kľúčovou súčasťou projektu. Meranie prúdu, najmä prúdu striedavého, je vždy náročná úloha, pretože s ním súvisí aj šum, ktorý súvisí s nesprávnym problémom s izoláciou atď. Ale pomocou tohto modulu ACS712, ktorý bol skonštruovaný spoločnosťou Allegro, je oveľa jednoduchšie.
Tento modul pracuje na princípe Hallovho efektu, ktorý objavil Dr. Edwin Hall. Podľa jeho princípu, keď je vodič prenášajúci prúd umiestnený do magnetického poľa, vytvára sa cez jeho okraje napätie kolmé na smery prúdu aj magnetického poľa. Nezaoberajme sa príliš hlboko touto koncepciou, ale zjednodušene povedané, pomocou Hallovho snímača merame magnetické pole okolo vodiča prenášajúceho prúd. Toto meranie bude vyjadrené v milivoltoch, ktoré sme nazvali ako Hallovo napätie. Toto namerané Hallove napätie je úmerné prúdu, ktorý pretekal vodičom.
Hlavnou výhodou použitia prúdového snímača ACS712 je to, že dokáže merať striedavý aj jednosmerný prúd a tiež poskytuje izoláciu medzi záťažou (záťaž AC / DC) a meracou jednotkou (časť mikrokontroléra). Ako je znázornené na obrázku, na module máme tri piny, ktoré sú Vcc, Vout a Ground.
2-pólová svorkovnica je miestom, kde by mal prechádzať vodič prenášajúci prúd. Modul pracuje na + 5 V, takže Vcc by mal byť napájaný z 5 V a zem by mala byť pripojená k zemi systému. Pin Vout má ofsetové napätie 2 500 mV, čo znamená, že keď vodičom nepreteká žiadny prúd, bude výstupné napätie 2 500 mV a pri pozitívnom prúde bude napätie väčšie ako 2 500 mV a pri negatívnom prúde napätie bude nižšie ako 2 500 mV.
Použijeme analógový pin Arduina na načítanie výstupného napätia (Vout) modulu, ktoré bude 512 (2 500 mV), keď drôtom nepreteká žiadny prúd. Táto hodnota sa zníži, keď prúd bude prúdiť v negatívnom smere, a bude sa zvyšovať, keď prúd bude prúdiť v kladnom smere. Nasledujúca tabuľka vám pomôže pochopiť, ako sa líši výstupné napätie a hodnota ADC v závislosti od prúdu prechádzajúceho vodičom.
Tieto hodnoty boli vypočítané na základe informácií uvedených v údajovom liste ACS712. Môžete ich tiež vypočítať pomocou nasledujúcich vzorcov:
Napätie Vout (mV) = (Hodnota ADC / 1023) * 5 000 Prúd vodičom (A) = (Vout (mv) -2500) / 185
Teraz, keď vieme, ako senzor ACS712 funguje a čo od neho môžeme čakať. Prejdime k schéme zapojenia.
Tento snímač sme použili na výrobu obvodu digitálneho ampérmetra pomocou mikrokontroléra PIC a ACS712.
Schéma zapojenia
Krok 1: Prihláste sa do IFTTT pomocou svojich prihlasovacích údajov.
Krok 2: V časti Moje applety kliknite na položku Nový applet
Krok 3: Kliknite na + toto
Krok 4: Vyhľadajte AdaFruit a kliknite na ňu.
Krok 5: Kliknite na Monitorovanie krmiva na AdaFruit IO.
Krok 6: Vyberte možnosť Feed as bill, Relationship as „ equal to“ a prahovú hodnotu, pri ktorej chcete e-mail. Kliknite na Vytvoriť akciu . Ako svoju hraničnú spúšťaciu hodnotu som použil 4.
Krok 7: Kliknite na + to . Vyhľadajte G-mail a kliknite na neho. Prihláste sa pomocou svojich prihlasovacích údajov pre e-mail.
Krok 8: Kliknite na možnosť poslať si e-mail.
Krok 9: Napíšte svoj predmet a telo podľa obrázka a kliknutím vytvorte.
Krok 10: Váš „ recept “ je pripravený. Skontrolujte to a kliknite na dokončiť.
Teraz sme s webovou integráciou hotoví. Poďme na kódovaciu časť..
Kód a vysvetlenie:
Používame sériovú komunikáciu medzi ESP12 a Arduino. Musíme teda napísať kód pre Arduino aj NodeMCU pre vysielanie a príjem.
Kód pre časť vysielača, tj. Pre Arduino Uno:
Kompletný kód Arduino je uvedený na konci tohto tutoriálu. Použijeme knižnicu pre snímač prúdu, ktorú je možné stiahnuť z tohto odkazu.
Táto knižnica má zabudovanú funkciu na výpočet prúdu. Môžete napísať svoj kód na výpočet prúdu, ale táto knižnica má presné algoritmy merania prúdu.
Najskôr zahrňte knižnicu pre aktuálny snímač ako:
#include "ACS712.h"
Vytvorte pole na ukladanie energie na jeho odoslanie do NodeMCU.
char watt;
Vytvorte inštanciu na použitie ACS712-30Amp na PIN A0. Zmeňte prvý argument, ak používate variant 20 Amp alebo 5 Amp.
Senzor ACS712 (ACS712_30A, A0);
Vo funkcii nastavenia definujte prenosovú rýchlosť 115 200 na komunikáciu s NodeMCU. Zavolajte funkciu sensor.calibrate () na kalibráciu prúdového senzora na získanie presných údajov.
void setup () { Serial.begin (115200); senzor.kalibrovat (); }
Vo funkcii slučky zavoláme sensor.getCurrentAC (); funkcia na získanie aktuálnej hodnoty a uloženie do floatovej premennej I. Po získaní prúdu vypočítajte výkon pomocou vzorca P = V * I. Používame 230V, pretože je to bežný štandard v európskych krajinách. Ak je to potrebné, zmeňte sa na miestny server
void loop () { float V = 230; float I = sensor.getCurrentAC (); plavák P = V * I;
Tieto vedenia prevádzajú energiu na Wh.
last_time = current_time; current_time = millis (); Wh = Wh + P * ((current_time -last_time) /3600000.0);
Teraz musíme tento Wh previesť do znakovej formy, aby sme ho mohli poslať do NodeMCU pre tento dtostrf (); prevedie float na char pole, aby ho bolo možné ľahko vytlačiť:
dtostrf (Wh, 4, 2, watt);
Formát je:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
Napíšte toto pole znakov do sériovej vyrovnávacej pamäte pomocou Serial.write () ; funkcia. Toto pošle hodnotu Wh na NodeMCU.
Serial.write (watt); oneskorenie (10 000); }
Kód pre časť prijímača NodeMCU ESP12:
Na to potrebujeme knižnicu AdaFruit MQTT, ktorú je možné stiahnuť z tohto odkazu.
Teraz otvorte Arduino IDE. Prejdite na príklady -> knižnica AdaFruit MQTT -> mqtt_esp8266
Tento kód upravíme podľa našich AIO kľúčov a poverení Wi-Fi a prichádzajúcich sériových údajov z Arduina.
Najskôr sme zahrnuli všetky knižnice pre ESP12 Wi-Fi modul a AdaFruit MQTT.
#include
Definujeme SSID a heslo pre vašu Wi-Fi, z ktorej chcete pripojiť váš ESp-12e.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Táto časť definuje server AdaFruit a port servera, ktoré sú opravené ako „io.adafruit.com“ a „1883“.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Nahraďte tieto polia svojím používateľským menom a kľúčmi AIO, ktoré ste skopírovali zo stránky AdaFruit pri vytváraní informačného kanála.
#define AIO_USERNAME "********" #define AIO_KEY "******************************"
Potom sme vytvorili triedu ESP12 WiFiClient na pripojenie k serveru MQTT.
Klient WiFiClient;
Nastavením triedy klienta MQTT odovzdaním klienta WiFi a servera MQTT a prihlasovacích údajov.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Nastavte informačný kanál s názvom „Power“ a „bill“ na zverejnenie zmien.
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / Power"); Adafruit_MQTT_Publish bill = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / bill");
Vo funkcii nastavenia pripojíme modul Wi-Fi k prístupovému bodu Wi-fi.
void setup () { Serial.begin (115200); oneskorenie (10); Serial.println (F ("Adafruit MQTT demo")); // Pripojenie k prístupovému bodu WiFi. Serial.println (); Serial.println (); Serial.print („pripája sa k“); Serial.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …. …. … }
Vo funkcii loop skontrolujeme prichádzajúce dáta z Arduina a zverejníme ich v AdaFruit IO.
void loop () { // Zaistite, aby bolo pripojenie k serveru MQTT živé (vytvorí sa prvé // pripojenie a po odpojení sa automaticky znova pripojí). Ďalej pozri definíciu funkcie MQTT_connect //. MQTT_connect (); int i = 0; float watt1;
Táto funkcia skontroluje prichádzajúce dáta z Arduina a tieto dáta uloží do wattového poľa pomocou funkcie serial.read ().
if (Serial.available ()> 0) { oneskorenie (100); // umožňuje prijímať všetky odoslané sériové čísla, zatiaľ čo (Serial.available () && i <5) { watt = Serial.read (); } watt = '\ 0'; }
Funkcia atof () prevádza znaky na float hodnoty a túto float hodnotu uložíme do inej float premennej watt1.
watt1 = až (watt);
Vypočítajte sumu účtu vynásobením výkonu (vo Wh) tarifou za energiu a vydelte ju 1000, aby ste vytvorili výkon v KWh.
bill_amount = watt1 * (energyTariff / 1000); // 1jednotka = 1kwH
Teraz môžeme zverejňovať obsah!
Serial.print (F ("\ nPosielanie výkonu")); Serial.println (watt1); Serial.print ("…");
Táto časť kódu zverejňuje hodnoty výkonu v informačnom kanáli napájania
if (! Power.publish (watt1)) { Serial.println (F ("Failed")); } else { Serial.println (F ("OK!")); }
Týmto sa zverejní účet za elektrinu v informačnom kanáli.
if (! bill.publish (bill_amount)) { Serial.println (F ("Failed")); } else { Serial.println (F ("OK!")); }
Suma našej faktúry sa môže rýchlo meniť, ale spustenie appletu trvá IFTTT, takže tieto riadky poskytnú čas na spustenie, aby sme mohli dostať limitný e-mail.
Zmeňte hodnotu bill_amount, na ktorú chcete dostávať e-maily. Tiež zmena v nastavení IFTTT AdaFruit IO.
if (bill_amount == 4) { for (int i = 0; i <= 2; i ++) { bill.publish (bill_amount); oneskorenie (5 000); } suma_faktúry = 6; }
Kompletný kód pre Arduino a NodeMCU ESP12 je uvedený na konci tohto tutoriálu.
Teraz nahrajte kódy na obe dosky. Pripojte svoj hardvér tak, ako je to znázornené na schéme zapojenia a na Open io.adafruit.com. Otvorte informačný panel, ktorý ste práve vytvorili. Uvidíte, že účet za spotrebu energie a elektrinu sa aktualizuje.
Keď váš účet dosiahne na INR 4 potom dostanete e-mail, ako je tento.
Aplikácia pre Android na sledovanie spotreby elektrickej energie:
Na sledovanie hodnôt môžete použiť aplikáciu pre Android. Na tento účel si stiahnite aplikáciu pre Android MQTT Dashboard z obchodu Play alebo z tohto odkazu.
Ak chcete vytvoriť spojenie s webom io.adafruit.com, postupujte takto:
Krok 1: Otvorte aplikáciu a kliknite na znamienko „+“. Vyplňte ID klienta čokoľvek chcete. Server a port zostávajú rovnaké, ako je znázornené na snímke obrazovky. Používateľské meno a heslo (aktívny kľúč) získate z dashboardu AdaFruit IO, ako je uvedené nižšie.
Aktívny kľúč je vaše heslo.
Krok 2: Vyberte elektromer a vyberte možnosť Prihlásiť sa na odber. Pri odbere uveďte priateľské meno a tému. Formát témy je „ vaše používateľské meno“ / kanály / „názov zdroja“ a kliknite na vytvoriť.
Krok 3: Rovnakým spôsobom sa prihláste na odber informačného kanála faktúr.
Krok 4: Pretože vaše spotrebiče spotrebúvajú energiu, aktualizované hodnoty sa zobrazia pod položkou Power and Bill .
Takto môžete vytvoriť inteligentný elektromer, ktorý je možné nielen monitorovať z ktoréhokoľvek miesta na svete, ale tiež spúšťať e-maily, keď máte vysokú spotrebu elektriny.
Skontrolujte tiež všetky naše projekty IoT.