TEHNOLOGII AUDIO-VIDEO ȘI TELECOMUNICAȚII [304328]

[anonimizat]

Ș.l.dr.ing. Ioan Gavriluț

ABSOLVENT

Sámsoni László

ORADEA

2018

[anonimizat] a energiei electrice consumate prin IoT

COORDONATORȘTIINȚIFIC

Ș.l.dr.ing. Ioan Gavriluț

ABSOLVENT

Sámsoni László

ORADEA

2018

Cuprins

Pagina

Introducere…………………………………………………………………………………………… 3

Capitolul I .Noțiuni teoretice…………………………………………………………………………….. 4

I.1. Clasificarea tipurilor de rețele IoT…………………………………………………… 4

I.2. Aplicații IoT. Blynk,Thingspeak………………………………………………………. 5

I.2.1. Aplicația Blynk…………………………………………………………. 5

I.2.2. Aplicația Thingspeak………………………………………………………………. 7

I.3. Dispozitive IoT. Placa de dezvoltare NodeMCU…………………………………… 9

I.4. Contorul de energie electrică monofazat Peacefair ……………………………… 10

Capitolul II. Realizarea unui contor de energie electrică IoT……………………….. 14

II.1. Realizarea hardware……………………………………………………….. 14

II.2. Realizarea software……………………………………………………………………………. 17

II.2.1. Realizarea programului în limbaj C utilizând mediul de………….. 17

dezvoltare ARDUINO IDE

II.2.2. Instalarea și configurarea aplicației Blynk………………………. 25

II.2.3. Configurarea platformei Thingspeak……………………………… 30

Concluzii………………………………………………………………………… 34

Bibliografie………………………………………………………………………. 35

Anexa 1………………………………………………………………………….. 36

Introducere

Internet of Things (IoT), [anonimizat]? Se poate traduce “internetul tuturor lucrurilor”, [anonimizat], [anonimizat], [anonimizat], pot comunica între ele prin intermediul internetului. [anonimizat], [anonimizat]. De aici următorul pas și anume ca aceste dispozitive să comunice între ele și să inițieze ele conexiuni și transmisii de date folosind internetul. [anonimizat], automobile, sisteme de încălzire/climatizare, iar prin dezvoltarea tehnologiilor MEMS apar senzori tot mai diverși și mai performanți. [anonimizat], automatizărilor. Contoare, senzori, procese citite și comandate de la distanță cuceresc domeniul industrial și energetic simplificând activitatea și reducând costurile.

[anonimizat], cea mai optimistă fiind până la proiecția lui McKinsey Global Institute www.mckinsey.com care spune că potențialul economic al IoT s-a eliberat din anul 2015 și va fi o dezvoltare continuă a industriei IoT, ce poate ajunge la 11 miliarde $ până în 2025. [1]

Proiectul de față are ca scop realizarea și prezentarea unui astfel de dispozitiv ce măsoară și înregistrează parametrii energiei electrice consumate, fiind accesibil prin internet și permițând totodată acționare de la distanță asupra consumatorilor, cu posibilitatea de dezvoltare pe viitor ca dispozitiv de control inteligent al locuinței (control încălzire/climatizare, acces, comenzi de la distanță diferite dispozitive, etc).

IoT folosește infrastructura internetului pentru a comunica atât pe rețele fixe cât și folosind rețele mobile, conexiunile locale utilizând diverse tehnologii: WIFI, UMTSLTE, LPWAN (low power WAN). În proiectul de față se va utiliza un dispozitiv ce se conectează prin WiFi utilizând banda de 2.4GHz, rezultând astfel costuri reduse cu limitările aferente (necesitatea existenței unei rețele locale wireless).

Capitolul I

Noțiuni teoretice

I.1. Clasificarea tipurilor de rețele IoT

Fig. 1. O lume dominată de IoT (sursa: google.com).

Dispozitivele smart penetrează toate domeniile vieții, tehnologiile IoT oferă comunicarea între acestea, astfel v-a exista o lume semi-automatizată, dominată de IoT.

Domeniul IoT se află în plină dezvoltare, noi tehnologii se elaborează în domeniul comunicațiilor pentru a sprijini acest domeniu. Pe când primele dispozitive IoT au folosit infrastructura “clasică“ a internetului (ethernet, wifi…), actualmente se pune accent mare pe mobilitate, diverși dezvoltatori venind cu diferite soluții. S-a introdus termenul de LPWAN (Low Power Wide Area Network), ce permite conexiunea dispozitivelor cu consum mic de energie, cu acoperirea cât mai mare. Cele mai importante tehnologii LPWAN sunt următoarele:

Sigfox , o tehnologie ce realizează o rețea complet separată pentru dispozitivele IoT, folosește semnale de mică putere ultra-înguste în banda liberă ISM de 868MHz, poate acoperi suprafețe mari și poate lucra și subteran, dar necesită o rețea de telefonie mobilă.

LoRa este este tot o tehnologie ce profită de avantajele benzii libere de 434 și 868MHz. La aceste frecvențe semnalele pot pătrunde prin și după obstacole, sunt mai puține interferențe decât în banda de 2,4GHz, se poate comunica pe distanțe mai lungi cu consum mic de putere.

NB-IoT (Narrowband IoT), LTE-M, sunt tehnologii elaborate de grupul 3GPP (grup de lucru ce elaborează standardele în domeniul telefoniei mobile). Permite conectarea simplă a dispozitivelor, utilizând rețeaua de telefonie mobilă, oferă consum de energie redus prin utilizare de canale înguste, acoperire foarte mare. LTE-M este parte a standardului 3GPP Release 13, iar generația nouă de standarde 5G va aduce noi soluții în domeniu, se poate spune astfel că viitorul rețelelor IoT va fi dominat de soluțiile 3GPP. [1]

I.2. Aplicații IoT. Blynk,Thingspeak

Odată cu răspândirea dispozitivelor smart capabile IoT au apărut și aplicațiile de tip cloud, platforme ce oferă suport sau sunt specializate pe IoT. O simplă căutare cu google ne oferă zeci și sute de platforme IoT multe dintre ele fiind gratuite și/sau opensource.

În proiectul de față se va prezenta și utiliza două dintre acestea și anume Blynk, fiind cea mai răspândită platformă pentru dispozitive Android și Thingspeak platforma ce folosește protocol http și permite și analiza Matlab a datelor încărcate, fiind astfel una dintre cele mai cunoscute din domeniu.

I.2.1. Aplicația Blynk

Aplicația Blynk destinată dispozitivelor IoS și Android se găsește la pagina www.blynk.cc și se poate descărca cu titlu gratuit, fiind o platformă ce permite stocarea datelor încărcate de diferite dispozitive precum și comanda în timp real a acestora. Suportă un număr mare de dispozitive bazate pe: Raspberry și clone, ESP8266, Arduino, etc. În proiect se va folosi o placă de dezvoltare NodeMCU bazată pe chipul ESP8266 produs de Espressif.

Fig. 2. Arhitectura Blynk (sursa: www.blynk.cc).

În figura 2 se poate vedea arhitectura unei aplicații Blynk, compusă din dispozitiv IoT, server Blynk și terminal Android sau IoS. Programul încărcat în dispozitivul IoT (în cazul de față va fi NodeMCU) cu ajutorul bibliotecilor pentru comunicare cu serverul Blynk va urca datele în cloud de unde ele sunt accesibile de oriunde, cu ajutorul unui terminal ce rulează Android sau IoS și aplicația Blynk, de oriunde în lume cu condiția existenței conexiunii la internet. Comunicarea este bidirecțională fiind posibilă și trimiterea unei comenzi de la terminal la dispozitivul IoT. Bibliotecile aplicației conțin comenzile cele mai utilizate cum ar fi buton on/off, led RGB, nefiind necesară scrierea unor linii de program în acest scop.

Se creează interfața aplicației sub forma unui proiect adaugând și configurând butoanele și indicatoarele dintr-o listă. Ele nu sunt gratuite, la instalarea aplicației se primește un credit gratuit ce rămâne constant (scade la utilizarea unui widget și se redobândește valoarea la ștergerea ei), dar se și pot cumpăra credite dacă se dorește utilizarea mai multor widgeturi.

La crearea unui proiect, serverul Blynk va trimite prin email o cheie de autentificare ce identifică și permite comunicarea canalului respectiv cu serverul, ea fiind obligatoriu inclusă în programul dispozitivului IoT.

Utilizarea platformei este minuțios prezentată cu exemple la secțiunea “Getting Started” pe siteul aplicației la adresa: https://www.blynk.cc/getting-started/.

Fig. 3. Terminal cu aplicația Blynk (sursa: www.blynk.cc).

I.2.2. Aplicația Thingspeak

este o platformă tip cloud (www.thingspeak.com), open source de colectare și analiză a datelor, se poate utiliza gratuit în alte scopuri decât cele comerciale. Afișează diagrame configurabile, poate lucra cu orice dispozitiv ce comunică pe internet prin protocoale http. Datele încărcate pot fi analizate cu Matlab fără a deține licență separată pentru acesta. După crearea unui cont și logare se pot crea canale publice sau private pentru încărcarea datelor. Pentru comunicare este nevoie de cheile de identificare de scriere respectiv citire (upload/download) și de numărul canalului. Accesarea cloud-ului se poate face de pe calculator sau alt dispozitiv cu web browser sau cu ajutorul unor aplicații terțe de pe dispozitive android.

Fig. 4. Arhitectura Thingspeak.

Cel mai frecvent (setarea implicită) se folosește afișarea datelor sub forma unor grafice ca în figura 5. (datele provenite de la o stație meteo), dar este posibilă și folosirea unor indicatoare realizate în javascript, editabile de către utilizator.

Fig. 5. Exemplu de grafice afișate pe Thingspeak.

I.3. Dispozitive IoT. Placa de dezvoltare NodeMCU

Dispozitivele IoT sunt realizate în cele mai multe cazuri cu ajutorul unui microcontroler, cele mai răspăndite fiind cele cu Atmel/Arduino, Microchip/PIC, ESP8266 etc. și SBC (Single Board Computer) ca Raspberry și clone ce rulează în general Linux. În acest proiect se va opta pentru versiunea ESP8266 datorită următoarelor avantaje:

– conexiune wifi în banda 2.4GHz, programabil în limbaj C redus din Arduino IDE, biblioteci disponibile în număr mare și open source, cost redus, dimensiune redusă.

Microcontrolerul ESP8266 (bazat pe RISC Tensilica Xtensa 32biti) este produs de firma Espressif Systems Ltd., firmă care a vândut în lume deja 100 de milioane de chipuri IoT (sursa: www.espressif.com).

Cel mai des se poate întâlni acest controler montat pe o placă împreună cu memoria externă pentru stocarea programului, oscilatorul pentru tact de 80/160MHz și antena wireless de obicei realizată sub forma unui traseu de cablaj imprimat (vezi fig.6.).

Fig. 6. Placă cu microcontroller ESP8266 și parametrii tehnici.

Fiind vorba de un proiect ce presupune realizarea unui prototip, dezvoltabil pe viitor, se v-a opta pentru utilizarea unei plăci de dezvoltare cu ESP8266 și anume NodeMCU (există o gamă variată de plăci de dezvoltare cu ESP8266: NodeMCU, Wemos, Adafruit Huzzah etc.), din următoarele motive: toate intrările/ieșirile controllerului sunt accesibile, programare mai ușoară deoarece există convertor USB-serial pe placă, placa are stabilizator de tensiune de 3,3V necesară controlerului.

Fig. 7. Placa de dezvoltare NodeMCU și conexiuni (sursa: www.instructables.com).

În proiectul de față se va utiliza portul serial UART pentru a comunica cu senzorul de energie și un port intrare-ieșire pentru a comanda un releu. Conexiunea la internet se va realiza prin rețeaua wireless disponibilă.

I.4. Contorul de energie electrică monofazat Peacefair

PZEM-004T cu transformator de curent toroidal

În acest proiect, pentru măsurarea energiei electrice consumate, precum și a altor parametri electrici (tensiune electrică, curent) se va utiliza un circuit specializat produs în China sub marca Peacefair. Există pe piață mai multe versiuni ale acestui instrument, atât pentru curent continuu, cât și pentru curent alternativ, cu afișaj sau fără, cu șunt sau transformator de curent. Modelul ales de noi va fi PZEM-004T o versiune pentru curent alternativ fără afișaj, cu transformator de curent pentru măsurarea curentului consumat (vezi figura 8). Contorul este realizat cu chipul specializat SD3004 produs de SDIC Microelectronics Co.Ltd. (datele de catalog se pot obține la [3]), pe placă se mai poate distinge un circuit EEPROM serial pentru stocarea valorilor, două optocuploare pentru realizarea separării galvanice ale portului serial și butonul pentru resetarea valorilor memorate. Circuitul se alimentează direct din rețeaua electrică de curent alternativ, de aceea este necesară o separare galvanică între pzem-004T și circuitele conectate la el pe portul serial.

Fig. 8. Contorul de energie electrică PZEM-004T cu transformator de curent toroidal.

În manualul de utilizare[2] se pot găsi atât valorile limită de funcționare cât și comenzile pe portul serial necesare implementării prelucrării cu microcontroler. Din fericire există bibliotecă open source pe github ce ne scutește de acest efort.

Fig. 9. Comenzile pe portul serial și valorile returnate conform manualului PZEM-004T.

Din figura 9 se poate vedea că pe portul serial TTL se pot citi valorile electrice interesate și anume: tensiunea electrică, curentul electric prin consumator, puterea electrică consumată instantanee, energia electrică consumată de la ultima resetare și se poate seta o valoare prag de alarmare în cazul că energia electrică consumată atinge această valoare.

Fig. 10. Caracteristici electrice PZEM-004T.

De menționat, conform manualului, că instrumentul va afișa cifra de 0.001KWh pentru valorile mici de până 1Wh. O descriere mai amănunțită a comunicației pe portul serial se găsește la [4], unde există și un link pentru a descărca un software ce afișează valorile măsurate și citite pe portul serial.

http://wiki.bernardino.org/index.php/Ficheiro:PZEM-004Tsoftware.zip

Fig. 10. Aplicație tipică cu circuitul specializat SD3004 conform datelor din catalog.

(sursa:http://www.sdicmicro.com)

În figura 10 se vede aplicația tipică pentru circuitul SD3004 conform datelor din catalog. PZEM-004T a fost realizat în baza acestei scheme, mai având în plus cele două optocuploare PC817 pentru izolarea galvanică a portului serial TTL, și nu conține optocuplorul pe care se poate citi semnalul CF pentru calibrare. În EEPROM-ul 24C02 se stochează printre altele valoarea energiei electrice consumate, valoare ce se poate reseta cu pushbutonul de pe placă.

Metoda de resetare este următoarea: se ține apăsat butonul 5 secunde după care se apasă scurt o singură dată. OBS: resetarea nu funcționează în timpul utilizării portului serial.

Capitolul II

Realizarea unui contor de energie electrică IoT

ce comunică pe Blynk și Thingspeak

II.1. Realizarea hardware

Contorul de energie a fost realizat folosind o placă de dezvoltare NodeMCU, instrumentul pt măsurarea energiei PZEM-004T și un modul cu releu. Cu ajutorul releului se poate cupla sau decupla consumatorul de la distanță, consumator care în cazul de față va fi un bec electric. Toate măsurătorile vor fi efectuate de placa specializată PZEM-004T care va fi conectată la NodeMCU pe portul hardware serial TX/RX ca în figura 11.

Placa NodeMCU rulează programul scris în C, comandă și citește valorile măsurate de PZEM, se conectează la rețeaua wireless și prin internet încarcă valorile pe platformele Blynk și Thingspeak. Din aplicația Blynk se poate comanda de oriunde de la distanță releul ce comută consumatorul.

Fig. 11. Schema electrică a contorului de energie electrică IoT.

ATENȚIE!!! PZEM SE AFLĂ LA POTENȚIALUL REȚELEI ELECTRICE.

PERICOL DE ELECTROCUTARE

Întregul circuit va fi alimentat de la o sursă de tensiune continuă de 5V, consumul fiind de ordinul a câteva sute de miliamperi. Placa PZEM va necesita o modificare deoarece controlerul SD3004 lucrează cu nivele logice de 5v, iar NodeMCU are controler ce lucrează la nivele logice de 3.3V. Deci portul serial va trebui modificat, ori este nevoie de un convertor de niveluri logice. Din fericire există două optocuploare pentru izolare galvanică ce vor fi alimentate la 3.3V în loc de 5V direct de la stabilizatorul de tensiune inclus în NodeMCU. Deci semnalul TX ce vine de la PZEM va avea nivel de 3.3V (colectorul tranzistorului din optocuplor este conectat la 3.3V printr-un rezistor la 5V) iar semnalul RX ce vine de la NodeMCU intră în fotodioda optocuplorului 2 și pentru a produce același curent ca și la 5v se reduce valoarea rezistorului de limitare R17 de la 1Kohm la 510Ω. Semnalul Tx ce provine de la PZEM trebuie conectat la portul de recepție Rx al NodeMCU, respectiv Rx de la PZEM la Tx-ul modulului NodeMCU pentru ca cele două plăci să comunice între ele pe portul TTL serial.

PZEM este alimentat direct din rețeaua de curent alternativ, iar prin transformatorul de curent toroidal trebuie să treacă unul din conductorii ce alimentează consumatorul (pentru măsurarea curentului prin sarcină).

Comanda releului se face din portul GPIO D1, dar se poate folosi oricare alt port al NodeMcu cu condiția configurării în software. Placa cu releu conține tranzistorul ce comandă releul (portul GPIO nu poate debita curent suficient necesar anclanșării), dioda antiparalel de protecție și un led ce indică starea comenzii.

Fig. 12. Contorul de energie electrică IoT în teste pe masa de lucru.

În figura 12 se poate vedea cum arată circuitul asamblat sub formă de prototip, sarcina electrică, un bec electric de 60w, fiind comutată de la distanță cu ajutorul releului de 5V. Pe ecranul telefonului mobil se poate vedea interfața Blynk și datele citite din PZEM.

Fig.13. Schema electrică a circuitului de sarcina cu variator de putere pentru realizarea testelor

La realizarea testelor se va conecta un bec electric ca și consumator printr-un variator de putere cu triac și prin releul de comandă. Astfel se pot face teste la puteri diferite, putând cupla și decupla de la distanță consumatorul. Se constată că funcționarea variatorului, deși produce interferențe electromagnetice, nu perturbă în nici un fel funcționarea circuitului.

II.2.Realizarea software

II.2.1. Realizarea programului în limbaj C utilizând mediul de

dezvoltare ARDUINO IDE

Pentru a funcționa, NodeMCU trebuie programat, existând mai multe metode de programare. Se va alege cea mai răspăndită metodă, cea a limbajului de programare C redus folosind mediul de dezvoltare Arduino IDE. Placa fiind compatibilă cu Arduino există plug-inuri și biblioteci ce se pot instala în ARDUINO IDE pentru a putea fi folosită și la plăci bazate pe ESP8266 (și nu numai). Mai întâi se instalează aplicația Arduino IDE utilizând linkul de mai jos:

https://www.arduino.cc/en/Main/Software și din meniul Tools>Boards manager se instalează pachetul esp8266 pentru ca mediul de dezvoltare să fie utilizabil și cu plăci Esp8266.

La prima conectare a plăcii NodeMcu se instalează automat driverul pentru circuitul convertor serial-USB, dacă nu, va trebui descărcat și instalat manual. Driverele se pot descărca direct de pe site-ul producătorilor (Silabs în cazul CP2101 și în cazul CH340 de producție chinezească este pe linkul de mai jos de github.com)

https://github.com/HobbyComponents/CH340-Drivers/tree/master/CH341SER

Instrucțiuni privind instalarea driverului se găsește la adresa de mai jos:

https://cityos-air.readme.io/docs/1-usb-drivers-for-nodemcu-v10

Fig. 14. Placa Nodemcu și localizarea convertorului USB-serial.

După ce s-a configurat Arduino IDE să poată fi folosit și cu ESP8266, se selectează opțiunile de placă respectiv port serial și se poate trece la realizarea programului propriu-zis. Pentru o mai ușoară înțelegere se marchează setările necesare în figura 15. Limbajul folosit în Arduino IDE este un limbaj C redus, un C din care lipsesc anumite instrucțiuni.

Fig. 15. Setările pentru NodeMCU în Arduino IDE.

Programele în Arduino IDE se numesc “sketch”. La deschiderea unui nou sketch apar automat cele două bucle ale programului C, setup și loop, se poate edita sau șterge după preferințe.

Întregul program se poate găsi în Anexa nr. 1 a prezentei lucrări, mai jos se vor trata pe rând aspectele principale.

Programul începe cu includerea bibliotecilor utilizate. Arduino IDE este un mediu open source, se pot găsi biblioteci cu zecile și sutele, efortul unor oameni entuziaști scutesc de multă muncă.

Multitudinea de biblioteci existente a avut un aport incontestabil în succesul și răspândirea Arduino. Aceste biblioteci trebuie instalate în IDE ori utilizând meniul Sketch>Include Library>Manage Libraries ori manual prin descărcarea lor de pe github.com, decomprimarea și copierea lor în directorul unde Arduino IDE stochează bibliotecile (de obicei MyDocuments /Arduino/Libraries). Atenție aplicația citește și încarcă o singură dată lista bibliotecilor, la pornire, deci orice modificare impune oprirea și redeschiderea Arduino IDE.

Biblioteci utilizate:

<ESP8266WiFi.h>//bibliotecă ce gestionează comunicarea pe wi-fi a modulului

Esp8266, nativ Arduino IDE , Autor Ivan Grokhotkov.

<PZEM004T.h>// estebiblioteca ce ne scutește de tot efortul gestionării modulului

PZEM , conține toate comenzile necesare folosirii acestui

instrument. Creată de Oleg Sokolov, ea se găsește pe github

la adresa de mai jos: https://github.com/olehs/PZEM004T

<BlynkSimpleEsp8266.h>// biblioteca pentru aplicația Blynk, conține comenzile și

protocoalele necesare conectării și comunicării cu platforma

Blynk, varianta pentru modulele bazate pe ESP8266. Autor

Volodymyr Shymanskyy, se găsește spre descărcare pe github.com

la adresa https://github.com/blynkkk/blynk-library

<ThingspeakClient.h>// biblioteca ce conține protocoalele de comunicare cu platforma

Thingspeak, creată de Daniel Eichorn, se instalează din meniul

“manage libraries”.

<SoftwareSerial.h>// bibliotecă necesară comunicației pe portul serial al

NodeMCU. Mare atenție este diferită de biblioteca SoftwareSerial cu același nume, nativă din Arduino IDE necesară plăcilor Arduino cu arhitectură AVR/ATMEL. Este biblioteca ce o vom găsi sub denumirea de ESPSoftwareserial.

Autor Peter Lerup https://github.com/plerup/espsoftwareserial

<JsonListener.h>// bibliotecă necesară la împachetarea șirurilor de date (streams) în

format JSON (JavaScript Object Notation). Autor Daniel Eichorn

https://github.com/squix78/json-streaming-parser

<EEPROM.h>// bibliotecă necesară manipulării EEPROM (scriere, citire etc.). Este

bibliotecă nativă Arduino IDE.

Următorul pas este definirea anumitor parametri și porturi:

Conform manualului de utilizare al PZEM trebuie setat adresa IP 192.168.1.1, ceea ce se poate realiza sub forma comenzii de mai jos:

IPAddress ip(192, 168, 1, 1);

Tot prin folosirea bibliotecii <PZEM004T>stabilim că se va găsi o comunicare serială hardware, utilizând portul implementat hardware în NodeMCU

PZEM004T pzem(&Serial);// mai există posibilitatea de a folosi metoda software de comunicare serială dar s-a dovedit a fi una instabilă (vezi [5])

// PZEM004T pzem(4, 5); // RX, TX d2, d1 comunicare serială software utilizând pinii D1 și D2

Declararea contantelor și variabilelor :

const char* ssid = "xxxxxx"; declararea rețelei wireless sub formă de cosntantă tip char

const char* password = "xxxxxxx"; declararea parolei pentru conectare la rețeaua wireless

char auth[] = "xxxxxxxxxxxxxxxxx"; cheia de autorizare pentru platforma Blynk

const char* host = "api.thingspeak.com";

const String THINGSPEAK_CHANNEL_ID = "xxxxx";

const String THINGSPEAK_API_READ_KEY = "xxxxxxx"; //read key

const char* api = "xxxxxxxxxx"; //write key

Constantele scrise bolduit sunt specifice fiecărui utilizator și ca atare trebuiesc completate în cadrul programului.

Variabilele de tip float v, i ,p.e se vor utiliza pentru manipularea valorilor tensiunii, curentului, puterii și energiei consumate.

Mai jos este prezentat bucla setup caracteristică limbajului C. Ea se efectuează o singură dată la pornirea dispozitivului, setează adresa pzem, conectează NodeMCU la serverul Blynk prin wireless, citește valoarea stocată în Eeprom pentru valoarea energiei electrice consumate.

Cealaltă buclă a programului C , loop, rulează ciclic odată pornită. Incrementarea counterului, transmiterea datelor spre și dinspre serverul Blynk, citire din pzem, funcția SetBlynk declarată mai jos.

Resetarea valorii puterii instantanee și energiei consumate se face la apăsarea butonului reset în Blynk, se citește portul virtual V8 și se înscriu valorile 0.0 pentru p și e.

Programul se continuă cu declararea unor funcții pentru simplificare. Astfel crează, funcția ReadPzem pentru citirea datelor (tensiune și curent) din pzem utilizând comenzile din biblioteca pzem004T și calculul puterii și energiei electrice consumate.

Funcția ScrieBlynk pentru încărcarea datelor pe serverul Blynk:

Funcția UpdateThingspeak pentru încărcarea ciclică a datelor pe serverul Thingspeak

Declararea variabilelor de tip flotant getVoltage și getCurrent utilizate în funcția Readpzem și a valorilor inițiale 0.0. Se utilizează comenzile pze.voltage și pzem.current din biblioteca PZEM004T.

II.2.2. Instalarea și configurarea aplicației Blynk

Pentru a putea urmări pe telefonul mobil parametrii măsurați de circuitul respectiv și ca să se poată acționa de la distanță asupra consumatorului, trebuie mai întăi instalată aplicația Blynk și creat un proiect în cadrul aplicației. Blynk se poate descărca gratuit de la adresa

www.blynk.cc atât pentru terminale Apple cât și pentru Android.

La crearea unui proiect nou, trebuie să fie selectat neapărat modelul dispozitivului cu care se comunică și implicit felul conexiunii (fixă sau wireless). În cazul de față el va fi ESP8266. Blynk poate comunica cu o varietate mare de dispozitive, de la Raspberry la Arduino. În exemple pe siteul aplicației se găsesc chiar exemple de realizare a proiectului pentru dispozitivele mai răspândite.

După crearea proiectului nou, aplicația trimite automat cheia de autorizare a canalului (authorization token) prin email la adresa declarată cu ocazia creării contului. Token-urile se mai găsesc și la meniul Project Settings (vezi figura 16).

Fig. 16. Meniuri Blynk.Meniul adăugare widgeturi, meniu cumpărare credite.

Următorul pas în realizarea proiectului este adăugarea elementelor cum sunt butoane, afișaj valori etc. (în Blynk ele se numesc widget-uri) pe ecranul proiectului. Adăugarea se face din meniul Widget Box cu observația că fiecare dintre ele are o valoare. Ele nu sunt gratuite, odată cu crearea contului obținem un credit cu titlu gratuit ce ne ajunge cam la un proiect mediu (la ștergerea vreunui widget primim înapoi valoarea lui, creditul fiind afișat tot timpul la rubrica “Your Energy Balance“ (vezi figura 16).

Nu se va intra în detalii privind toate etapele realizării proiectului Blynk, deoarece există un tutorial ce explică pas cu pas crearea și setarea tuturor widget-urilor. Instrucțiunile se găsesc la adresa http://docs.blynk.cc/.

În proiectul de față se vor folosi 3 widget-uri tip Gauge pentru afișarea tensiunii electrice, al curentului prin sarcină și puterii instantanee epuizând 3×300=900 puncte din credit. Se va mai utiliza un widget de tip “Value Display” pentru afișarea energiei electrice consumate la valoarea de 200 de puncte, un buton on/off “Styled Button” la un cost de 300 de puncte pentru comutarea de la distanță a releului și o diagramă pentru afișarea evoluției în timp a valorilor de tip ”Superchart”la un cost de 900 de puncte. În total toate widget-urile însumează 2300 de puncte. În cazul în care se va epuiza creditul , se pot cumpăra widget-uri la prețul modic afișat în figura 16. De exemplu, un credit de 2400 de puncte necesare acestui proiect ar costa 9,49 Ron.

După includerea widget-urilor, ele trebuie configurate, ce pin virtual sau digital/analogic citesc sau scriu, cu câte zecimale să fie afișată valoarea, culoarea, cât de des să facă refresh, etc.

Fig. 17. Configurarea widgetului de tip Gauge pentru monitorizarea tensiunii și curentului.

În figura 17 se pot vedea ferestrele de configurare în cazul widget-ului de tensiune și curent. Tensiunea va fi citită pe canalul/portul virtual V0 și va fi afișată cu o singură zecimală cu unitatea de măsură V (/pin.#/V), excursia valorilor va fi între 0 – 300, culoarea afișată va fi verde. Setarea afișajului pentru curent se face similar, culoarea va fi roșie și se va folosi canalul virtual V1.

Fig. 18.Configurarea widgetului de tip Button pentru comutarea de la distanță a releului.

În figura 18 se observă, că în cazul widget-ului de tip buton se folosește pinul digital și se poate alege din listă direct portul GPIO dorit al NodeMCU (în cazul de față GPIO5, adică pinul D1 al plăcii). Tot în figura18 sunt marcate unde se trec marcajele text ale butonului. În cazul widget-ului Button nu necesită introducerea unei linii de program speciale, blynk comandă direct portul digital GPIO selectat al controlerului NodeMCU (sau cel selectat).

Blynk vine în ajutor și la realizarea programului, deoarece are generator de sketch care oferă codul gata făcut pentru exemplele de widget-uri. Se selectează tipul de controler folosit (ESP8266), tipul conexiunii și exemplul dorit, în cazul de față Get Data, citirea valorilor urcate pe canalul virtual V1, și în dreapta aplicația va genera liniile de program corespunzătoare, rămâne doar de introdus string-urile personalizate (parola, wifi, cod autentificare Blynk) și să le copieze în program.

În figura de mai jos se poate vedea cum arată exemplul menționat. Adresa generatorului de sketch-uri este următoarea:

https://examples.blynk.cc/?board=ESP8266&shield=ESP8266%20WiFi&example=

GettingStarted%2FBlynkBlink

Fig. 19. Blynk.Exemplu de generator de sketch pentru comunicare pe canal virtual V1 în cazul unui modul ESP8266, conexiune WiFi.

În final, iată și proiectul de față realizat, interfața Blynk pentru monitorizarea și comanda contorului de energie electrică IoT. Se pot vedea cele trei widget-uri: cu verde tensiunea, cu roșu curentul, portocaliu puterea instantanee și cu albastru energia electrică consumată. Aplicația conține un buton ce se face roșu, dacă se cuplează releul de la consumator și un grafic ce arată evoluția în timp a tensiunii, curentului și a puterii instantanee, folosind culorile corespunzătoare widget-urilor.

Fig. 20. Interfața Blynk a proiectului, forma finală (captură realizată în timpul funcționării).

II.2.2. Configurarea platformei Thingspeak

După ce s-a făcut un cont, se logează pe platforma Thingspeak la www.thingspeak.com și se va crea un nou canal utilizând meniul Channels>My Channels>New Channel, se va numi “energy monitor “. La parametrii canalului trebuie setat câte diagrame se utilizează (dacă se greșește nu e nicio problemă, se pot modifica oricând). Din meniul API Keys (vezi figura 21) se va genera cheile de citire și scriere pe platformă, chei ce trebuie introduse în program împreună cu numărul canalului (Channel ID).

Fig. 21. Generarea cheilor de scriere/citire pe platforma Thingspeak.

Diagramele în care se încarcă automat, au multe opțiuni (editabile, se pot crea altele în Javascript, export valori în Matlab și analiză fără a fi nevoie de licență etc.), cel mai important, se setează denumirea, unitatea de măsură, excursia valorilor ca în figura 22.

Fig. 22. Setarea parametrilor diagramelor(ex: tensiune).

După pornire, circuitul va încărca pe platforma Thingspeak parametrii măsurați de PZEM în mod automat și continuu cu o rată stabilită de utilizator în cadrul programului. Se menționează că, cheile de acces asigură confidențialitatea canalului de comunicație, adică să nu fie făcut public, deoarece acest lucru ar permite altor persoane să aibă acces la acest canal de comunicații (din această cauză ele sunt șterse în imagine și notate cu xxxx în cadrul programului).

Fig. 23. Diagramele realizate cu Thingspeak în cadrul lucrării (captură de imagine).

În figură sunt prezentate cele patru diagrame cu cei patru parametri electrici măsurați și încărcați (tensiune electrică rețea, curentul electric prin consumator, puterea electrică instantanee și energia electrică consumată). Fiecare punct din grafic corespunde unei valori încărcate la un moment dat, dacă se poziționează cu cursorul pe careva dintre ele se va afișa valoarea și data și ora încărcării (vezi figura 23.). Capturile au fost efectuate utilizând circuitul realizat sub formă de prototip din figura12, având conectat ca, consumator un bec electric de 60W printr-un regulator de putere cu triac. Astfel se poate observa în graficele cu puterea instantanee și curent, modificările apărute datorită reglajului de putere. Momentele când tensiunea are valoarea zero corespund perioadelor când circuitul nu era alimentat, iar momentele când curentul și puterea erau zero (ele bineînțeles coincid), corespund momentelor când circuitul era oprit sau consumatorul a fost decuplat de la rețea prin releul acționat de la distanță.

Concluzii

Proiectul de față și-a propus realizarea unui circuit care monitorizează energía electrică consumată și încarcă parametrii electrici măsurați pe serverele Blynk și Thingspeak, ce pot fi accesate de oriunde printr-o conexiune la internet. Circuitul a fost realizat și practic sub forma unui prototip, capturile de imagine și pozele în timpul funcționării fiind prezentate în cadrul proiectului.

Programul scris în limbaj C se află în ANEXA 1 a proiectului, bibliotecile necesare fiind accesibile pe github.com, linkurile fiind indicate împreună cu autorii acestor biblioteci. Fiecare bibliotecă la descărcare conține declarații de copyright, ele sunt utilizabile, editabile în scopuri necomerciale.

Acest circuit se poate dezvolta ulterior în cadrul unui proiect mai amplu, se poate ajunge la un circuit ce automatizează întreaga locuință. Se pot adăuga comenzi de la distanță prin Blynk a diferitelor circuite, termostate ce reglează încălzirea respectiv răcirea diferitelor camere, cu posibilitatea intervenției de la distanță precum și setarea temperaturilor. Există servere gratuite prin care se pot trimite mesaje pe telefon cu diferite alarme sau stări atinse (de exemplu atingerea unui prag setat pentru energia electrică consumată).

Tot prin Blynk se pot adăuga diferiți senzori cum ar fi de lumină pentru comutarea automată inteligentă a iluminatului, adăugarea sistemului de acces prin identificator (de exemplu deschiderea ușii de garaj). Practic, se poate obține o locuință “IoT Home”.

Bibliografie

http://electronica-azi.ro/2017/04/05/tendinta-spre-simplitate-a-iot/ [18.06.2018]

http://pdacontroles.com/wp-content/uploads/2018/02/Manual_PZEM004.pdf [18.06.2018]

http://www.sdicmicro.com/DataSheet/SD3004%20datasheet%20v0.2c.pdf [18.06.2018]

http://wiki.bernardino.org/index.php/Electric_monitoring_and_communication_module_power_energy_meter [18.06.2018]

http://pdacontrolen.com/electricity-consumption-meter-peacefair-pzem-004-esp8266-arduino-nano/ [18.06.2018]

http://docs.blynk.cc/[18.06.2018]

https://www.arduino.cc/en/Guide/HomePage [18.06.2018]

https://community.thingspeak.com/tutorials/ [18.06.2018]

https://examples.blynk.cc/?board=ESP8266&shield=ESP8266%20WiFi&example= GettingStarted%2FBlynkBlink [18.06.2018]

ANEXA 1

DECLARAȚIE DE AUTENTICITATE A

LUCRĂRII DE FINALIZARE A STUDIILOR

Titlul lucrării ____Sistem de monitorizare a energiei electrice consumate prin IoT

Autorul lucrării Sámsoni László

Lucrarea de finalizare a studiilor este elaborată în vederea susținerii examenului de finalizare a studiilor organizat de către Facultatea de Inginerie Electrică și Tehnologia Informației din cadrul Universității din Oradea, sesiunea___iulie ___________ a anului universitar 2017-2018

Prin prezenta, subsemnatul (nume, prenume, CNP)

Sámsoni László CNP _ 1710517054650______________________,

declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără nici un ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate de alți autori.

Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau alte surse folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de autor.

Oradea,

18.06.2016 Semnătura

Similar Posts