Cuprins:

Citiți Contorul de electricitate și gaz (belgian / olandez) și încărcați pe Thingspeak: 5 pași
Citiți Contorul de electricitate și gaz (belgian / olandez) și încărcați pe Thingspeak: 5 pași

Video: Citiți Contorul de electricitate și gaz (belgian / olandez) și încărcați pe Thingspeak: 5 pași

Video: Citiți Contorul de electricitate și gaz (belgian / olandez) și încărcați pe Thingspeak: 5 pași
Video: Ariană Mtz Îi Face Vrăji Lui Mitzuu ! 2024, Noiembrie
Anonim
Citiți Electricity and Gas Meter (Belgian / Dutch) și încărcați pe Thingspeak
Citiți Electricity and Gas Meter (Belgian / Dutch) și încărcați pe Thingspeak
Citiți Electricity and Gas Meter (Belgian / Dutch) și încărcați pe Thingspeak
Citiți Electricity and Gas Meter (Belgian / Dutch) și încărcați pe Thingspeak

Dacă sunteți îngrijorat de consumul dvs. de energie sau doar un pic de tocilar, probabil că doriți să vedeți datele de pe noul dvs. contor digital de lux pe smartphone.

În acest proiect vom obține datele actuale de la un contor digital de energie electrică și gaz belgian sau olandez și le vom încărca pe Thingspeak. Aceste date includ consumul curent și zilnic de energie și injecția (dacă aveți panouri solare), tensiunile și curenții și consumul de gaz (dacă un contor digital de gaz este conectat la contorul de energie electrică). Prin intermediul unei aplicații, aceste valori pot fi apoi citite în timp real pe telefonul smartphone.

Funcționează pentru un contor digital belgian sau olandez care urmează protocolul DSMR (Dutch Smart Meter Requirements), care ar trebui să fie toate contoare recente. Dacă locuiți în altă parte, din păcate, contorul dvs. va folosi probabil un alt protocol. Deci, mă tem că acest Instructable este puțin restricționat regional.

Vom folosi portul P1 al contorului, care acceptă un cablu RJ11 / RJ12, cunoscut colocvial ca un cablu telefonic. Asigurați-vă că instalatorul contorului a activat portul P1. De exemplu, pentru Fluvius în Belgia, urmați aceste instrucțiuni.

Pentru a procesa datele și a le încărca pe internet, folosim un ESP8266, care este un microcip ieftin cu WiFi încorporat. Costă doar ceva de genul 2 dolari. Mai mult, poate fi programat folosind Arduino IDE. Stocăm datele în cloud pe Thingspeak, care este gratuit pentru maximum patru canale. Pentru acest proiect folosim un singur canal. Datele pot fi apoi afișate pe smartphone folosind o aplicație precum IoT ThingSpeak.

Părți:

  • Un ESP8266, ca un nodemcu v2. Rețineți că nodemcu v3 este prea larg pentru un panou standard, așa că prefer v2.
  • Un cablu micro USB la USB.
  • Un încărcător USB.
  • Un tranzistor NPN BC547b.
  • Două rezistențe de 10k și un rezistor de 1k.
  • Un conector terminal cu șurub RJ12.
  • O placă de măsurare.
  • Sârme de jumper.
  • Opțional: un condensator 1nF.

În total, acest lucru costă ceva de genul 15 EUR pe AliExpress sau similar. Estimarea ia în considerare faptul că unele componente, cum ar fi rezistențele, tranzistoarele și firele, vin în cantități mult mai mari decât aveți nevoie pentru acest proiect. Deci, dacă aveți deja un kit de componente, va fi mai ieftin.

Pasul 1: Cunoașterea ESP8266

Am ales NodeMCU v2, deoarece nu este necesară lipirea și are o conexiune micro USB care permite o programare ușoară. Avantajul NodeMCU v2 față de NodeMCU v3 este că este suficient de mic pentru a se potrivi pe un panou și pentru a lăsa găuri libere în lateral pentru a face conexiuni. Deci, este mai bine să evitați NodeMCU v3. Cu toate acestea, dacă preferați o altă placă ESP8266, este bine.

ESP8266 poate fi programat cu ușurință folosind Arduino IDE. Există alte instrumente explicabile care explică acest lucru în detaliu, așa că voi fi foarte scurt aici.

  • Mai întâi descărcați Arduino IDE.
  • A doua instalare de asistență pentru placa ESP8266. În meniul Fișier - Preferințe - Setări adăugați adresa URL https://arduino.esp8266.com/stable/package_esp8266com_index.json la adresele URL suplimentare ale administratorului de bord. Apoi în meniul Instrumente - Board - Boards Manager instalați comunitatea esp8266 de către esp8266.
  • În al treilea rând, selectați placa cea mai apropiată de ESP8266. În cazul meu am ales NodeMCU v1.0 (ESP 12-E Module).
  • În cele din urmă, selectați sub Instrumente - Dimensiune bliț, o dimensiune care include SPIFFS, cum ar fi 4M (1M SPIFFS). În acest proiect folosim SPIFFS (SPI Flash File System) pentru a stoca valorile energetice zilnice, astfel încât acestea să nu se piardă dacă ESP8266 își pierde puterea și chiar și atunci când este reprogramat.

Acum avem totul la dispoziție pentru a programa ESP8266! Vom discuta codul real într-un pas ulterior. Mai întâi vom crea un cont Thingspeak.

Pasul 2: Creați un cont și un canal Thingspeak

Accesați https://thingspeak.com/ și creați un cont. Odată conectat, faceți clic pe butonul Canal nou pentru a crea un canal. În Setările canalului, completați numele și descrierea după cum doriți. Apoi numim câmpurile canalului și le activăm dând clic pe casetele de selectare din dreapta. Dacă utilizați codul meu neschimbat, câmpurile sunt următoarele:

  • Câmpul 1: consum de vârf astăzi (kWh)
  • Câmpul 2: consumul de vârf astăzi (kWh)
  • Câmpul 3: vârf de injecție astăzi (kWh)
  • Câmpul 4: injecție de vârf astăzi (kWh)
  • Câmpul 5: consum curent (W)
  • Câmpul 6: injecție de curent (W)
  • Câmpul 7: consumul de gaz astăzi (m3)

Aici, vârf și vârf se referă la tariful pentru energie electrică. În câmpurile 1 și 2 consumul se referă la consumul net de energie electrică de astăzi: consumul de energie electrică astăzi în perioada tarifară de la miezul nopții minus injecția de energie electrică (produsă de panourile solare) astăzi în perioada tarifară de la miezul nopții cu un minim de zero. Acesta din urmă înseamnă că, dacă a existat mai multă injecție decât consumul astăzi, valoarea este zero. La fel, injecția în câmpurile 3 și 4 se referă la injecția netă de electricitate. Câmpurile 5 și 6 indică consumul net și injecția în momentul curent. În cele din urmă câmpul 7 este consumul de gaz de la miezul nopții.

Pentru referințe viitoare, notați ID-ul canalului, Citirea cheii API și Scrierea cheii API, care pot fi găsite în meniul API chei.

Pasul 3: Construirea circuitului electronic

Construirea circuitului electronic
Construirea circuitului electronic
Construirea circuitului electronic
Construirea circuitului electronic

Citim contorul de energie electrică folosind portul P1, care are un cablu RJ11 sau RJ12. Diferența este că cablul RJ12 are 6 fire, în timp ce RJ11 are doar 4. În acest proiect, nu alimentăm ESP8266 din portul P1, deci de fapt avem nevoie doar de 4 fire, așa că ar avea un RJ11.

Am folosit breakout-ul RJ12 prezentat în imagine. Este un pic lat și nu există prea mult spațiu în jurul portului P1 în contorul meu. Se potrivește, dar este strâns. Alternativ, puteți utiliza doar un cablu RJ11 sau RJ12 și puteți scoate antetul la un capăt.

Dacă țineți pauza ca în imagine, pinii sunt numerotați de la dreapta la stânga și au următorul sens:

  • Pin 1: sursă de alimentare 5V
  • Pinul 2: cerere de date
  • Pinul 3: Masă de date
  • Pinul 4: nu este conectat
  • Pinul 5: Linia de date
  • Pinul 6: Masă electrică

Pinul 1 și Pinul 6 ar putea fi utilizate pentru a alimenta ESP8266, dar nu am testat acest lucru. Trebuie să conectați Pinul 1 la Vinul ESP8266, astfel încât regulatorul de tensiune intern al plăcii este utilizat pentru a reduce tensiunea de la 5V la 3,3V pe care ESP8266 o acceptă. Deci, nu-l conectați la pinul de 3,3 V, deoarece ar putea deteriora ESP8266. De asemenea, alimentarea de la portul P1 ar scurge în timp bateria contorului digital.

Setarea pinului 2 mare semnalizează contorul să trimită telegrame de date în fiecare secundă. Datele reale sunt trimise prin pinul 5 cu o rată de transmisie de 115200 pentru un contor digital modern (DSMR 4 și 5). Semnalul este inversat (scăzut este 1 și înalt este 0). Pentru un tip mai vechi (DSMR 3 și mai jos), rata este de 9600 baud. Pentru un astfel de contor trebuie să modificați rata de transmisie în codul firmware al pasului următor: schimbați linia Serial.begin (115200); în configurare ().

Rolul tranzistorului NPN este dublu:

  • Pentru a inversa semnalul, astfel încât ESP8266 să îl poată înțelege.
  • Pentru a schimba nivelul logic de la 5V al portului P1 la 3,3V așteptat de portul RX al ESP8266.

Deci, creați circuitul electronic pe panoul de măsurare ca în diagramă. Condensatorul crește stabilitatea, dar funcționează și fără.

Opriți conectarea pinului RX până când ați programat ESP8266 în pasul următor. Într-adevăr, pinul RX este, de asemenea, necesar pentru a comunica prin USB între ESP8266 și computer.

Pasul 4: încărcați codul

Am pus codul la dispoziție pe GitHub, este doar un fișier: P1-Meter-Reader.ino. Doar descărcați-l și deschideți-l în ID-ul Arduino. Sau puteți selecta Fișier - Nou și doar copiați / lipiți codul.

Există câteva informații pe care trebuie să le completați la începutul fișierului: numele și parola WLAN de utilizat și ID-ul canalului și cheia API de scriere a canalului ThingSpeak.

Codul face următoarele:

  • Citește o telegramă de date de la contor la fiecare UPDATE_INTERVAL (în milisecunde). Valoarea implicită este la fiecare 10 secunde. În mod normal, există o telegramă de date de la contor în fiecare secundă, dar setarea frecvenței la mare va suprasolicita ESP8266, astfel încât să nu mai poată rula serverul web.
  • Încarcă datele de energie electrică pe canalul Thingspeak la fiecare SEND_INTERVAL (în milisecunde). Valoarea implicită este în fiecare minut. Pentru a decide despre această frecvență, luați în considerare faptul că trimiterea datelor durează ceva timp (de obicei câteva secunde) și că există o limită a frecvenței de actualizare pe Thingspeak pentru un cont gratuit. Este vorba despre 8200 de mesaje pe zi, deci frecvența maximă ar fi de aproximativ o dată la 10 secunde dacă nu utilizați Thingspeak pentru altceva.
  • Încarcă datele privind gazul atunci când se modifică. De obicei, contorul actualizează datele de consum de gaz doar la fiecare 4 minute sau cam așa ceva.
  • Contorul ține evidența consumului total și a valorilor injecției de la început. Deci, pentru a obține consumul zilnic și injecția, codul salvează valorile totale la miezul nopții în fiecare zi. Apoi, aceste valori sunt scăzute din valorile totale curente. Valorile la miezul nopții sunt stocate în SPIFFS (SPI Flash File System), care persistă dacă ESP8266 își pierde puterea sau chiar și atunci când este reprogramat.
  • ESP8266 rulează un mini server web. Dacă îi deschideți adresa IP în browser, veți obține o prezentare generală a tuturor valorilor curente ale energiei electrice și gazelor. Acestea sunt din cea mai recentă telegramă și includ informații care nu sunt încărcate pe Thingspeak, cum ar fi tensiunile și curenții pe fază. Setarea implicită este că adresa IP este determinată dinamic de router. Dar este mai convenabil să folosiți o adresă IP statică, care este întotdeauna aceeași. În acest caz, trebuie să completați staticIP, gateway, dns și subrețea în cod și să decomentați linia WiFi.config (staticIP, dns, gateway, subrețea); în funcția connectWifi ().

După ce ați făcut aceste modificări, sunteți gata să încărcați firmware-ul pe ESP8266. Conectați ESP8266 prin cablul USB la computer și apăsați pictograma cu săgeata din IDE-ul Arduino. Dacă nu reușiți să vă conectați la ESP8266, încercați să schimbați portul COM din meniul Instrumente - Port. Dacă tot nu funcționează, este posibil să instalați manual driverul pentru portul COM virtual USB.

Pasul 5: Testare

După încărcarea firmware-ului, deconectați USB-ul și conectați firul RX al ESP8266. Amintiți-vă, aveam nevoie de canalul RX al ESP8266 pentru încărcarea firmware-ului, așa că nu l-am conectat înainte. Acum conectați dispozitivul RJ12 la contorul digital și reconectați ESP8266 la computer.

În Arduino IDE, deschideți Serial Monitor prin meniul Instrumente și asigurați-vă că este setat la 115200 baud. Dacă trebuie să modificați rata de transmisie, poate că trebuie să închideți și să redeschideți din nou monitorul serial înainte ca acesta să funcționeze.

Acum ar trebui să vedeți ieșirea codului în Serial Monitor. Ar trebui să verificați dacă există mesaje de eroare. De asemenea, ar trebui să puteți vedea telegramele. Pentru mine arată așa:

/ FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Număr de serie contor hexazecimal 0-0: 1.0.0 (200831181442S) // Timestamp S: ora de vară (vară), W: nu economie de vară (iarnă) 1-0: 1.8.1 (000016.308 * kWh) // Consumul net maxim de vârf 1-0: 1.8.2 (000029.666 * kWh) // Consumul net total de vârf 1-0: 2.8.1 (000138,634 * kWh) // Vârful total al injecției nete 1-0: 2,8,2 (000042,415 * kWh) // Totalul vărsat al injecției nete 0-0: 96,14,0 (0001) // Tariful 1: vârf, 2: off-peak 1-0: 1.7.0 (00.000 * kW) // Consum curent 1-0: 2.7.0 (00.553 * kW) // Curent injecție 1-0: 32.7.0 (235.8 * V) // Fază 1 tensiune 1-0: 52,7.0 (237,0 * V) // Faza 2 tensiune 1-0: 72,7,0 (237,8 * V) // Faza 3 tensiune 1-0: 31,7,0 (001 * A) // Faza 1 curent 1-0: 51.7.0 (000 * A) // Faza 2 curent 1-0: 71.7.0 (004 * A) // Faza 3 curent 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9 * kW) // Putere maximă 1-0: 31.4.0 (999 * A) // Curent maxim 0-0: 96.13.0 () // Mesaj 0-1: 24.1.0 (003) // alte dispozitive pe M-bus 0-1: 96.1.1 (37464C4F32313230313037393338) // Număr de serie gaz mete r hexazecimal 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615 * m3) // Consum total de timestamp de gaz! E461 // Suma de control CRC16

Dacă este ceva în neregulă, puteți verifica dacă aveți aceleași etichete și, eventual, trebuie să schimbați codul analizând telegramele din funcția readTelegram.

Dacă totul funcționează, puteți alimenta acum esp8266 de la încărcătorul USB.

Instalați aplicația IoT ThingSpeak Monitor pe smartphone, completați ID-ul canalului și citiți cheia API și ați terminat!

Recomandat: