Turinys:

Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“: 5 žingsniai
Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“: 5 žingsniai

Video: Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“: 5 žingsniai

Video: Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“: 5 žingsniai
Video: Lietuva spekuliantų voratinklyje: nuo elektros ir dujų iki euro | Klausimai, nuo kurių bėga Kreivys 2024, Lapkritis
Anonim
Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“
Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“
Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“
Perskaitykite elektros ir dujų skaitiklį (belgų/olandų) ir įkelkite į „Thingspeak“

Jei nerimaujate dėl savo energijos suvartojimo ar tiesiog esate šiek tiek neklaužada, tikriausiai norite savo išmaniajame telefone pamatyti duomenis iš savo išgalvoto naujo skaitmeninio skaitiklio.

Šiame projekte mes gausime dabartinius duomenis iš Belgijos ar Nyderlandų skaitmeninio elektros ir dujų skaitiklio ir įkelsime juos į „Thingspeak“. Į šiuos duomenis įeina dabartinis ir paros energijos suvartojimas ir įpurškimas (jei turite saulės kolektorių), įtampa ir srovė bei dujų suvartojimas (jei prie elektros skaitiklio prijungtas skaitmeninis dujų skaitiklis). Naudodami programą, šias vertes realiuoju laiku galite nuskaityti savo išmaniajame telefone.

Jis tinka Belgijos ar Nyderlandų skaitmeniniam skaitikliui, kuris atitinka DSMR (Olandijos išmaniųjų skaitiklių reikalavimų) protokolą, kuris turėtų būti visi naujausi skaitikliai. Jei gyvenate kitur, deja, jūsų skaitiklis greičiausiai naudos kitą protokolą. Taigi bijau, kad šis „Instructable“yra šiek tiek apribotas regioniniu mastu.

Mes naudosime skaitiklio P1 prievadą, kuris priima RJ11/RJ12 kabelį, šnekamojoje kalboje vadinamą telefono kabeliu. Įsitikinkite, kad skaitiklio montuotojas suaktyvino P1 prievadą. Pavyzdžiui, „Fluvius“Belgijoje vadovaukitės šiomis instrukcijomis.

Norėdami apdoroti duomenis ir įkelti į internetą, naudojame ESP8266, tai yra pigi mikroschema su įmontuotu „Wi-Fi“. Tai kainuoja tik 2 USD. Be to, jį galima užprogramuoti naudojant „Arduino IDE“. Duomenis saugome „Thingspeak“debesyje, kuris yra nemokamas daugiausia keturiems kanalams. Šiam projektui naudojame tik vieną kanalą. Tada duomenys gali būti rodomi jūsų išmaniajame telefone naudojant tokią programą kaip „IoT ThingSpeak“.

Dalys:

  • Vienas ESP8266, kaip „nodemcu v2“. Atminkite, kad „nodemcu v3“yra per platus standartinei duonos lentai, todėl man labiau patinka v2.
  • Kabelis iš mikro USB į USB.
  • USB įkroviklis.
  • Vienas BC547b NPN tranzistorius.
  • Du 10k rezistoriai ir vienas 1k rezistorius.
  • Viena RJ12 varžto gnybtų jungtis.
  • Duonos lenta.
  • Jumperio laidai.
  • Neprivaloma: vienas 1 nF kondensatorius.

Iš viso tai kainuoja maždaug 15 EUR „AliExpress“ar panašiai. Apskaičiuojant atsižvelgiama į tai, kad kai kurių komponentų, tokių kaip rezistoriai, tranzistoriai ir laidai, yra daug daugiau nei jums reikia šiam projektui. Taigi, jei jau turite komponentų rinkinį, jis bus pigesnis.

1 žingsnis: Susipažinkite su ESP8266

Aš pasirinkau „NodeMCU v2“, nes nereikia lituoti ir jis turi „micro USB“jungtį, leidžiančią lengvai programuoti. „NodeMCU v2“pranašumas prieš „NodeMCU v3“yra tas, kad jis yra pakankamai mažas, kad tilptų ant duonos lentos ir paliktų laisvų skylių šone, kad būtų galima prijungti. Taigi geriau vengti „NodeMCU v3“. Tačiau, jei norite kitos ESP8266 plokštės, tai taip pat gerai.

ESP8266 galima lengvai užprogramuoti naudojant „Arduino IDE“. Yra ir kitų instrukcijų, kurios tai išsamiai paaiškina, todėl čia aš būsiu labai trumpas.

  • Pirmiausia atsisiųskite „Arduino IDE“.
  • Antrasis ESP8266 plokštės diegimo palaikymas. Meniu Failas - Nuostatos - Nustatymai pridėkite URL https://arduino.esp8266.com/stable/package_esp8266com_index.json prie papildomų valdytojo URL. Kitas meniu Įrankiai - Lenta - Lentų tvarkytuvė įdiegti bendruomenės esp8266 by esp8266.
  • Trečia, pasirinkite plokštę, arčiausiai jūsų ESP8266. Mano atveju pasirinkau „NodeMCU v1.0“(ESP 12-E modulis).
  • Galiausiai pasirinkite skiltyje Įrankiai - „Flash Size“, dydį, į kurį įeina SPIFFS, pvz., 4M (1M SPIFFS). Šiame projekte mes naudojame SPIFFS (SPI Flash File System) kasdienėms energijos vertėms saugoti, kad jos nebūtų prarastos, jei ESP8266 prarastų galią ir net perprogramavus.

Dabar mes turime viską, kad užprogramuotume ESP8266! Tikrąjį kodą aptarsime vėliau. Pirmiausia sukursime „Thingspeak“paskyrą.

2 veiksmas: sukurkite „Thingspeak“paskyrą ir kanalą

Eikite į https://thingspeak.com/ ir sukurkite paskyrą. Prisijungę spustelėkite mygtuką Naujas kanalas, kad sukurtumėte kanalą. Kanalo nustatymuose įveskite pavadinimą ir aprašymą, kaip jums patinka. Toliau mes pavadiname kanalo laukus ir suaktyviname juos spustelėdami žymimuosius laukelius dešinėje. Jei naudojate mano kodą nepakeistą, laukai yra tokie:

  • 1 laukas: didžiausias suvartojimas šiandien (kWh)
  • 2 laukas: suvartojimas ne piko metu (kWh)
  • 3 laukas: didžiausias įpurškimas šiandien (kWh)
  • 4 laukas: įpurškimas ne piko metu (kWh)
  • 5 laukas: srovės suvartojimas (W)
  • 6 laukas: srovės įpurškimas (W)
  • 7 laukas: dujų suvartojimas šiandien (m3)

Čia pikas ir ne piko laikas nurodo elektros tarifą. 1 ir 2 laukuose vartojimas reiškia grynąjį elektros energijos suvartojimą šiandien: elektros energijos suvartojimas šiandien tarifiniu laikotarpiu nuo vidurnakčio, atėmus elektros įpurškimą (pagamintą iš saulės kolektorių) šiandien per tarifinį laikotarpį nuo vidurnakčio, mažiausiai nuliui. Pastarasis reiškia, kad jei šiandien buvo daugiau injekcijų nei suvartojama, vertė yra lygi nuliui. Panašiai įpurškimas 3 ir 4 laukuose reiškia grynąjį elektros įpurškimą. 5 ir 6 laukuose nurodomas grynasis suvartojimas ir įpurškimas šiuo metu. Galiausiai 7 laukas yra dujų suvartojimas nuo vidurnakčio.

Ateityje užsirašykite kanalo ID, „Read API Key“ir „Write API Key“, kuriuos rasite meniu API raktuose.

3 žingsnis: sukurkite elektroninę grandinę

Elektroninės grandinės kūrimas
Elektroninės grandinės kūrimas
Elektroninės grandinės kūrimas
Elektroninės grandinės kūrimas

Mes skaitome elektros skaitiklį naudodami P1 prievadą, kuris turi RJ11 arba RJ12 kabelį. Skirtumas tas, kad RJ12 kabelis turi 6 laidus, o RJ11 - tik 4. Šiame projekte ESP8266 neįjungiame maitinimo iš P1 prievado, todėl mums iš tikrųjų reikia tik 4 laidų, taigi RJ11 tai darytų.

Aš naudoju RJ12 pertrauką, parodytą paveikslėlyje. Jis yra šiek tiek platus ir mano matuoklyje nėra daug vietos aplink P1 prievadą. Tinka, bet tvirtai. Arba galite tiesiog naudoti RJ11 arba RJ12 kabelį ir nuimti antraštę viename gale.

Jei išlaikysite pertrauką, kaip parodyta paveikslėlyje, kaiščiai sunumeruoti iš dešinės į kairę ir turi tokią reikšmę:

  • 1 kaištis: 5 V maitinimo šaltinis
  • 2 kaištis: duomenų užklausa
  • 3 kaištis: duomenų pagrindas
  • 4 kaištis: neprijungtas
  • 5 smeigtukas: duomenų eilutė
  • 6 kaištis: maitinimo įžeminimas

1 ir 6 kaiščiai gali būti naudojami ESP8266 maitinti, bet aš to neišbandžiau. Turėtumėte prijungti 1 kaištį prie ESP8266 „Vin“, todėl vidinis plokštės įtampos reguliatorius naudojamas įtampai sumažinti nuo 5 V iki 3,3 V, kurią priima ESP8266. Taigi neprijunkite jo prie 3,3 V kaiščio, nes tai gali sugadinti ESP8266. Be to, maitinimas iš P1 prievado laikui bėgant ištuštins skaitmeninio skaitiklio bateriją.

2 kaiščio aukštas nustatymas signalizuoja matuokliui siųsti duomenų telegramas kas sekundę. Faktiniai duomenys siunčiami per 5 kaištį, kurio perdavimo sparta yra 115200 šiuolaikiniam skaitmeniniam skaitikliui (DSMR 4 ir 5). Signalas yra atvirkštinis (žemas yra 1, o aukštas - 0). Senesnio tipo (DSMR 3 ir senesnės) greitis yra 9600 baudų. Tokiam matuokliui kito žingsnio programinės įrangos kode turite pakeisti duomenų perdavimo spartą: pakeiskite eilutę Serial.begin (115200); sąrankoje ().

NPN tranzistoriaus vaidmuo yra dvejopas:

  • Norėdami pakeisti signalą, kad ESP8266 jį suprastų.
  • Pakeisti loginį lygį nuo 5 V P1 prievado iki 3,3 V, kurio tikimasi ESP8266 RX prievado.

Taigi sukurkite elektroninę grandinę ant duonos lentos, kaip parodyta diagramoje. Kondensatorius padidina stabilumą, tačiau jis veikia ir be jo.

Nustokite jungti RX kaiščio, kol kitame žingsnyje užprogramuosite ESP8266. Iš tikrųjų RX kaištis taip pat reikalingas norint bendrauti per USB tarp ESP8266 ir jūsų kompiuterio.

4 veiksmas: įkelkite kodą

Aš padariau kodą prieinamą „GitHub“, tai tik vienas failas: P1-Meter-Reader.ino. Tiesiog atsisiųskite jį ir atidarykite „Arduino IDE“. Arba galite pasirinkti Failas - Naujas ir tiesiog nukopijuokite/įklijuokite kodą.

Yra tam tikra informacija, kurią turite užpildyti failo pradžioje: naudojamo WLAN pavadinimas ir slaptažodis, „ThingSpeak“kanalo kanalo ID ir „Write API Key“.

Kodas atlieka šiuos veiksmus:

  • Skaito duomenų telegramą iš skaitiklio kas UPDATE_INTERVAL (milisekundėmis). Numatytoji vertė yra kas 10 sekundžių. Paprastai kas sekundę iš skaitiklio siunčiama duomenų telegrama, tačiau nustačius aukštą dažnį, ESP8266 bus perkrauta, todėl jis nebegali paleisti žiniatinklio serverio.
  • Įkelia elektros energijos duomenis į „Thingspeak“kanalą kas SEND_INTERVAL (milisekundėmis). Numatytoji vertė yra kiekviena minutė. Norėdami nuspręsti dėl šio dažnumo, atsižvelkite į tai, kad duomenų siuntimas užtrunka šiek tiek laiko (paprastai kelias sekundes) ir kad „Thingspeak“nemokamos paskyros atnaujinimo dažnis yra ribotas. Tai yra apie 8200 pranešimų per dieną, todėl maksimalus dažnis būtų maždaug kartą per 10 sekundžių, jei nenaudosite „Thingspeak“niekam kitam.
  • Pakeičia dujų duomenis. Paprastai skaitiklis atnaujina dujų suvartojimo duomenis tik kas 4 minutes.
  • Skaitiklis stebi bendrą suvartojimą ir įpurškimo vertes nuo pat pradžių. Taigi, norint gauti kasdienį suvartojimą ir injekciją, kodas išsaugo bendrąsias vertes kiekvieną vidurnaktį kiekvieną dieną. Tada šios vertės atimamos iš dabartinių bendrųjų verčių. Vidurnakčio vertės išsaugomos SPIFFS (SPI Flash File System) sistemoje, kuri išlieka, jei ESP8266 dingsta arba net perprogramavus.
  • ESP8266 valdo mini žiniatinklio serverį. Jei naršyklėje atidarysite jo IP adresą, gausite visų dabartinių elektros ir dujų verčių apžvalgą. Tai yra iš naujausios telegramos ir apima informaciją, kuri nėra įkelta į „Thingspeak“, pvz., Įtampą ir srovę kiekvienoje fazėje. Numatytasis nustatymas yra tas, kad maršrutizatorius dinamiškai nustato IP adresą. Bet patogiau naudoti statinį IP adresą, kuris visada yra tas pats. Tokiu atveju turite įvesti kodą staticIP, šliuzą, dns ir potinklį ir atšaukti eilutę WiFi.config (staticIP, dns, gateway, potinklis); funkcijoje connectWifi ().

Atlikę šiuos pakeitimus, esate pasiruošę įkelti programinę -aparatinę įrangą į ESP8266. Prijunkite ESP8266 per USB kabelį prie kompiuterio ir paspauskite piktogramą su rodykle „Arduino IDE“. Jei nepavyksta prisijungti prie ESP8266, pabandykite pakeisti COM prievadą meniu Tools - Port. Jei tai vis tiek neveikia, galite rankiniu būdu įdiegti USB virtualiojo COM prievado tvarkyklę.

5 žingsnis: bandymas

Įkėlę programinę įrangą, atjunkite USB ir prijunkite ESP8266 RX laidą. Atminkite, kad norint įkelti programinę -aparatinę įrangą, mums reikėjo ESP8266 RX kanalo, kad anksčiau jo neprijungtume. Dabar prijunkite skaitmeninio skaitiklio RJ12 pertrauką ir vėl prijunkite ESP8266 prie kompiuterio.

„Arduino IDE“meniu „Įrankiai“atidarykite serijinį monitorių ir įsitikinkite, kad jis nustatytas į 115200 baudų. Jei turite pakeisti duomenų perdavimo spartą, galbūt prieš uždarydami serijinį monitorių, turite jį uždaryti ir vėl atidaryti.

Dabar serijos monitoriuje turėtumėte pamatyti kodo išvestį. Turėtumėte patikrinti, ar nėra klaidų pranešimų. Be to, turėtumėte matyti telegramas. Man jie atrodo taip:

/FLU5 / xxxxxxxxx_x

0-0: 96.1.4 (50213) 0-0: 96.1.1 (3153414733313030313434363235) // Šešiasdešimtainis serijos numeris 0-0: 1.0.0 (200831181442S) // Laiko žyma S: vasaros laikas (vasara), W: ne vasaros laikas (žiemą) 1-0: 1.8.1 (000016.308*kWh) // Bendras didžiausias grynasis suvartojimas 1-0: 1.8.2 (000029,666*kWh) // Bendras grynasis ne piko laikas 1-0: 2.8.1 (000138.634*kWh) // Bendras didžiausias grynasis įpurškimas 1-0: 2.8.2 (000042.415*kWh) // Bendras grynasis įpurškimas ne piko metu 0-0: 96.14.0 (0001) // 1 tarifas: pikas, 2: ne piko metu 1-0: 1.7.0 (00.000*kW) // Srovės suvartojimas 1-0: 2.7.0 (00.553*kW) // Srovės įpurškimas 1-0: 32.7.0 (235.8*V) // Fazė 1 įtampa 1-0: 52.7.0 (237.0*V) // 2 fazės įtampa 1-0: 72.7.0 (237.8*V) // 3 fazės įtampa 1-0: 31.7.0 (001*A) // 1 fazės srovė 1-0: 51.7.0 (000*A) // 2 fazės srovė 1-0: 71.7.0 (004*A) // 3 fazės srovė 0-0: 96.3.10 (1) 0-0: 17.0.0 (999.9*kW) // Didžiausia galia 1-0: 31.4.0 (999*A) // Maksimali srovė 0-0: 96.13.0 () // Pranešimas 0-1: 24.1.0 (003) // kiti M-magistralės 0-1 įrenginiai: 96.1.1 (37464C4F32313230313037393338) // Serijos numeris dujų mete r šešioliktainis 0-1: 24.4.0 (1) 0-1: 24.2.3 (200831181002S) (00005.615*m3) // Bendras dujų laiko žymos suvartojimas! E461 // CRC16 kontrolinė suma

Jei kažkas negerai, galite patikrinti, ar turite tas pačias žymas, ir galbūt turėsite pakeisti telegramų analizavimo kodą funkcijoje readTelegram.

Jei viskas veikia, dabar galite įkrauti esp8266 iš USB įkroviklio.

Įdiekite „IoT ThingSpeak Monitor“programą savo išmaniajame telefone, užpildykite kanalo ID ir „Read API Key“ir viskas!

Rekomenduojamas: