- Szükséges anyagok:
- Az ACS712 áramérzékelő működése:
- Kördiagramm
- Kód és magyarázat:
- Android-alkalmazás a villamosenergia-fogyasztás ellenőrzésére:
Mindannyian ismerünk olyan villamosenergia-fogyasztásmérőket, amelyeket mindenki házába vagy irodájába telepítenek az áramfogyasztás mérésére. Minden hónap végén sokan aggódunk a magas villanyszámla miatt, és egyszer-egyszer meg kell néznünk az energiamérőt. De mi van akkor, ha figyelemmel kísérhetjük a világ bármely pontjáról felhasznált villamos energiánkat, és SMS-t / e-mailt kapunk, amikor az energiafogyasztás eléri a küszöbértéket. Itt építünk egy IoT-alapú energiamérő projektet.
Korábban építettünk egy Energiamérő áramkört, amely SMS-t küld Önnek a számláról a GSM modul segítségével. Ebben a projektben intelligens villamosenergia-mérőt készítünk az Arduino és az ESP8266 Wi-Fi modul segítségével, amely nemcsak SMS-t / e-mailt küld Önnek a villanyszámlájáról, hanem a világ bármely pontjáról és bárhonnan figyelheti az energiafelhasználást. Itt ACS712 áramérzékelőt használtunk az energiafogyasztás mérésére, rövidesen megbeszéljük.
Segítséget nyújtunk az IFTTT platformhoz, hogy összekapcsoljuk a Wi-Fi-t az SMS / E-mail értesítésekkel. Az MQTT Dashboard Android alkalmazást is felhasználjuk az energiafelhasználás figyelemmel kísérésére. Így kezdjük el….
Szükséges anyagok:
- Arduino Uno
- ESP12 / NodeMCU
- ACS712-30Amp áramérzékelő
- Bármely váltóáramú készülék
- Férfi-női vezetékek
Az ACS712 áramérzékelő működése:
A projekt építése előtt nagyon fontos megértenünk az ACS712 áramérzékelő működését, mivel ez a projekt legfontosabb eleme. Az áram mérése, különösen az AC áram mindig nehéz feladat a zaj és a helytelen elszigetelési probléma stb. Miatt. De ennek az Allegro által tervezett ACS712 modulnak köszönhetően sokkal könnyebbé vált.
Ez a modul a Hall-effektus elvén működik, amelyet Dr. Edwin Hall fedezett fel. Elve szerint, amikor egy áramvezető vezetőt mágneses mezőbe helyeznek, annak szélein feszültség keletkezik, merőlegesek mind az áram, mind a mágneses mező irányára. Ne mélyüljünk bele mélyen a koncepcióba, hanem egyszerűen úgy fogalmazzunk, hogy hall érzékelővel mérjük a mágneses teret egy áramvezető körül. Ez a mérés millivoltban történik, amelyet hall-feszültségnek neveztünk. Ez a mért csarnokfeszültség arányos a vezetéken keresztül áramló árammal.
Az ACS712 áramérzékelő használatának legfőbb előnye, hogy képes mérni mind az AC, mind az egyenáramot, és elszigetelést biztosít a terhelés (AC / DC terhelés) és a mérőegység (mikrovezérlő rész) között is. Amint a képen látható, a modulon három csap van, amelyek Vcc, Vout és Ground.
A 2 tűs sorkapocson át kell vezetni az áramvezetéket. A modul + 5 V feszültségen működik, így a Vcc-t 5 V-ra kell táplálni, és a földet a rendszer földeléséhez kell csatlakoztatni. A Vout tüskének eltolási feszültsége 2500mV, vagyis amikor nincs áram a vezetéken keresztül, akkor a kimeneti feszültség 2500mV lesz, és ha az áram pozitív, akkor a feszültség nagyobb lesz, mint 2500mV, és amikor az áramló áram negatív, a feszültség kevesebb lesz, mint 2500mV.
Az Arduino analóg csapját használjuk a modul kimeneti feszültségének (Vout) leolvasására, amely 512 (2500mV) lesz, ha a vezetéken nem áramlik áram. Ez az érték csökken, amikor az áram negatív irányban áramlik, és növekszik, amikor az áram pozitív irányba áramlik. Az alábbi táblázat segít megérteni, hogy a kimeneti feszültség és az ADC értéke hogyan változik a vezetéken keresztül áramló áram függvényében.
Ezeket az értékeket az ACS712 adatlapján megadott információk alapján számoltuk ki. Ezeket az alábbi képletek segítségével is kiszámíthatja:
Vout feszültség (mV) = (ADC-érték / 1023) * 5000 vezeték a vezetéken keresztül (A) = (Vout (mv) -2500) / 185
Most, hogy tudjuk, hogyan működik az ACS712 érzékelő, és mit várhatunk tőle. Menjünk tovább a kapcsolási rajzra.
Ezt az érzékelőt használtuk digitális ampermérő áramkör előállítására PIC mikrokontroller és ACS712 segítségével.
Kördiagramm
1. lépés: Jelentkezzen be az IFTTT-be a hitelesítő adatokkal.
2. lépés: A Saját kisalkalmazásokon kattintson az Új kisalkalmazások elemre
3. lépés: Kattintson a + this elemre
4. lépés: Keressen rá az AdaFruitra, és kattintson rá.
5. lépés: Kattintson az AdaFruit IO hírcsatornájának figyelése elemre.
6. lépés: Válassza a Hírcsatorna számlának, a Kapcsolat értéknek „ egyenlőnek”, és válassza azt a küszöbértéket, amelynél e-mailt szeretne kapni. Kattintson a Művelet létrehozása elemre. 4-et használtam küszöbindító értékemként.
7. lépés: Kattintson a + gombra . Keressen a G-mailre, kattintson rá, és jelentkezzen be a g-mail hitelesítő adataival.
8. lépés: Kattintson az e-mail küldés gombra.
9. lépés: Írja le a témát és a testet az ábra szerint, és kattintson a létrehozáshoz.
10. lépés: Kész a „ recept ”. Ellenőrizze és kattintson a Befejezés gombra.
Most elkészültünk a webintegrációval. Menjünk tovább a kódolási részre..
Kód és magyarázat:
Soros kommunikációt használunk az ESP12 és az Arduino között. Tehát, az Arduino és a NodeMCU számára is kódot kell írnunk az átvitelhez és fogadáshoz.
Az adó része, azaz az Arduino Uno kódja:
A teljes Arduino-kód a bemutató végén található. A Jelenlegi érzékelő könyvtárat fogjuk használni, amely letölthető erről a linkről.
Ez a könyvtár beépített funkcióval rendelkezik az áram kiszámításához. Írhatja kódját az áram kiszámításához, de ez a könyvtár pontos árammérő algoritmusokkal rendelkezik.
Először vegye fel az aktuális érzékelő könyvtárát:
#include "ACS712.h"
Készítsen egy tömböt az energia tárolására a NodeMCU-hoz történő elküldéshez.
char watt;
Hozzon létre egy példányt az ACS712-30Amp használatához az A0 PIN kódnál. Változtassa meg az Első argumentumot, ha 20Amp vagy 5 Amp változatot használ.
ACS712 érzékelő (ACS712_30A, A0);
A beállítási funkcióban adjon meg 115200 adatátviteli sebességet a NodeMCU-val való kommunikációhoz. Hívja az érzékelőt. Calibrate () funkció az áramérzékelő kalibrálásához a pontos leolvasás érdekében.
void setup () { Soros.kezdés (115200); érzékelő.kalibrálás (); }
A hurok funkcióban meghívjuk az sensor.getCurrentAC (); függvény az aktuális érték megszerzéséhez és az I. lebegő változó tárolásához . Miután áramot kapott, számítsa ki a teljesítményt a P = V * I képlet segítségével. 230 V-ot használunk, mert ez az európai országokban elterjedt szabvány. Szükség esetén cserélje ki a helyi szolgáltatót
void loop () { úszó V = 230; úszó I = szenzor.getCurrentAC (); úszó P = V * I;
Ezek a vonalak alakítják az energiát Wh-vé.
utolsó_idő = aktuális_idő; current_time = millis (); Wh = Wh + P * ((jelenlegi_idő-utolsó_idő) / 3600000,0);
Most át kell alakítanunk ezt a Wh karakterformává, hogy elküldjük a NodeMCU-nak, ehhez a dtostrf (); az úszót char tömbgé alakítja, így könnyen kinyomtatható:
dtostrf (Wh, 4, 2, watt);
A formátum:
dtostrf (floatvar, StringLengthIncDecimalPoint, numVarsAfterDecimal, charbuf);
Írja ezt a karaktertömböt a soros pufferbe a Serial.write () használatával ; funkció. Ez Wh- értéket küld a NodeMCU-nak.
Soros.írás (watt); késés (10000); }
Kód a vevő alkatrész csomópontjához: MCU ESP12:
Ehhez szükségünk van az AdaFruit MQTT könyvtárra, amely erről a linkről tölthető le.
Most nyissa meg az Arduino IDE alkalmazást. Ugrás a példákra -> AdaFruit MQTT könyvtár -> mqtt_esp8266
Ezt a kódot az AIO kulcsok és a Wi-Fi hitelesítő adatok, valamint az Arduino bejövő soros adatai szerint szerkesztjük.
Először az ESP12 Wi-Fi modul és az AdaFruit MQTT összes könyvtárát belefoglaltuk.
#include
Meghatározzuk SSID-jét és jelszavát a Wi-Fi-hez, ahonnan az ESp-12e-t szeretné csatlakoztatni.
#define WLAN_SSID "xxxxxxxx" #define WLAN_PASS "xxxxxxxxxxx"
Ez a szakasz meghatározza az AdaFruit kiszolgálót és a kiszolgáló portot, amelyek “io.adafruit.com”, illetve “1883” javítással vannak rögzítve.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883
Cserélje le ezeket a mezőket a felhasználónevével és az AIO kulcsokkal, amelyeket az AdaFruit webhelyéről másolt a Feed készítése közben.
#define AIO_USERNAME "********" #define AIO_KEY "*******************************"
Ezután létrehoztunk egy ESP12 WiFiClient osztályt, hogy csatlakozzunk az MQTT szerverhez.
WiFiClient kliens;
Állítsa be az MQTT kliens osztályt a WiFi kliens és az MQTT szerver és a bejelentkezési adatok megadásával.
Adafruit_MQTT_Client mqtt (& kliens, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Állítson be egy „Power” és „bill” nevű hírcsatornát a változások közzétételéhez.
Adafruit_MQTT_Publish Power = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / Power"); Adafruit_MQTT_Publish bill = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/ feeds / bill");
A beállítási funkcióban a Wi-Fi modult csatlakoztatjuk a Wi-Fi hozzáférési ponthoz.
void setup () { Soros.kezdés (115200); késés (10); Serial.println (F ("Adafruit MQTT bemutató")); // Csatlakozás a WiFi hozzáférési ponthoz. Soros.println (); Soros.println (); Serial.print ("Csatlakozás a következőkhöz"); Soros.println (WLAN_SSID); WiFi.begin (WLAN_SSID, WLAN_PASS); …. …. … }
A loop funkcióban ellenőrizni fogjuk az Arduino bejövő adatait, és ezeket az adatokat közzétesszük az AdaFruit IO-n.
void loop () { // Győződjön meg arról, hogy a kapcsolat az MQTT szerverrel él (ezzel létrejön az első // kapcsolat, és a kapcsolat megszűntével automatikusan újra csatlakozik). Lásd alább az MQTT_connect // függvénydefiníciót. MQTT_csatlakozás (); int i = 0; float watt1;
Ez a funkció ellenőrzi az Arduino bejövő adatait, és tárolja ezeket az adatokat watt tömbben a serial.read () függvény használatával.
if (Soros.elérhető ()> 0) { késleltetés (100); // lehetővé teszi az összes elküldött soros vételét, miközben (Soros.elérhető () && i <5) { watt = Soros.olvas (); } watt = '\ 0'; }
Az atof () függvény a karaktereket lebegő értékekké konvertálja, és ezt az úszó értéket egy másik watt1 változóban tároljuk.
watt1 = atof (watt);
Számolja ki a számla összegét úgy, hogy megszorozza a teljesítményt (Wh-ben) az energia tarifával, és ossza el 1000-vel, hogy a teljesítmény KWh-ban alakuljon ki.
számla_összeg = watt1 * (energiatarifa / 1000); 1egység = 1kwH
Most közzétehetünk cuccokat!
Serial.print (F ("\ nA Power val küldése")); Soros.println (watt1); Soros.nyomtatás ("…");
Ez a kódrészletet közzéteszi teljesítmény értékeket a teljesítmény takarmány
if (! Power.publish (watt1)) { Serial.println (F ("sikertelen")); } else { Serial.println (F ("OK!")); }
Ez közzéteszi a villanyszámlát a számlacsatornában .
if (! bill.publish (bill_amount)) { Soros.println (F ("Nem sikerült")); } else { Serial.println (F ("OK!")); }
Számlánk összege gyorsan változhat, de az IFTTT-nek időbe telik az applet elindítása, így ezek a sorok időt adnak az aktiválásra, hogy küszöbértékű e-maileket kaphassunk.
Módosítsa a bill_amount értéket, amelyre e-mailt szeretne kapni. Ezenkívül módosítsa az IFTTT AdaFruit IO beállításait.
if (számla_összeg == 4) { for (int i = 0; i <= 2; i ++) { bill.publish (számla_összeg); késés (5000); } számla_összeg = 6; }
Az Arduino és a NodeMCU ESP12 teljes kódja az oktatóanyag végén található.
Most töltse fel a kódokat mindkét táblára. Csatlakoztassa a hardvert az áramköri ábra szerint, és nyissa meg az io.adafruit.com oldalt. Nyissa meg az imént létrehozott irányítópultot. Látni fogja, hogy az Energiafogyasztás és az áramszámla frissül.
Ha a számlát ért INR 4 , akkor kapsz egy e-mailt, mint ez.
Android-alkalmazás a villamosenergia-fogyasztás ellenőrzésére:
Az értékek figyeléséhez használhatja az Android App alkalmazást. Ehhez töltse le az MQTT Dashboard android alkalmazást a Play áruházból vagy erről a linkről.
Az io.adafruit.com céggel való kapcsolat létrehozásához kövesse az alábbi lépéseket:
1. lépés: Nyissa meg az alkalmazást, és kattintson a „+” jelre. Töltse ki a kliens azonosítóját, amit csak akar. A kiszolgáló és a port ugyanaz marad, mint a képernyőképen látható. Az AdaFruit IO irányítópultról megkapja a felhasználónevet és a jelszót (aktív kulcs) az alábbiak szerint.
Az Aktív kulcs az Ön jelszava.
2. lépés: Válassza az Árammérő elemet, majd válassza a Feliratkozás lehetőséget. Az előfizetésnél adja meg a barátságos nevet és a témát. A témakör formátuma a " felhasználóneved" / hírcsatornák / "hírneve", és kattints a létrehozás gombra.
3. lépés: Ugyanígy iratkozzon fel a számlázási hírcsatornára.
4. lépés: Mivel készülékei energiát fogyasztanak, a frissített értékek megjelennek a Teljesítmény és a Számla alatt .
Így hozhat létre intelligens villamosenergia-fogyasztásmérőt, amelyet nemcsak a világ bármely pontjáról figyelhetünk, de az e-mail is kiváltható, ha magas a villamosenergia-fogyasztásunk.
Ellenőrizze az összes IoT-projektet is.