Aplicaţii pentru sistemul de viziune compact [303721]
[anonimizat], [anonimizat] 17, 2019
SUPERVIZATĂ DE
Șl.dr.ing. GABRIEL PREDUȘCĂ
Reproducerea se poate face doar cu permisiune din partea autorului
APOSTOL Florin Giorgian
AUTOR LUCRARE / AUTHOR OF THESIS
Inginer (B.Sc.)
GRAD / DEGREE
Inginerie Electronică și Telecomunicații
DOMENIU / DOMAINE
Sistem de control al ventilației utilizând microcontroler
TITLUL LUCRĂRII / TITLE OF THESIS
Gabriel PREDUȘCĂ
COORDONATOR LUCRARE / [anonimizat] / [anonimizat] / [anonimizat] – George COANDĂ
DECAN FACULTATEA DE INGINERIE ELECTRICĂ / DEAN OF ELECTRICAL ENGINEERING FACULTY
Reproducerea se poate face doar cu permisiune din partea autorului
Sistem de control al ventilației utilizând microcontroler
Florin Giorgian APOSTOL
[anonimizat]
Rezumat (max. 300 cuvinte)
[anonimizat] a seta parametrii de funcționare. Proiectul permite realizarea unui control automat și manual al unui anumit număr de ventilatoare controlate PWM (Pulse Wave Modulation) [anonimizat] (stabilite tot de utilizator în cadrul interfeței). Sistemul a fost proiectat cu următoarele opțiuni: [anonimizat], procentajului PWM, a [anonimizat]-uri 16×2, [anonimizat]. Ca funcții suplimentare trebuie menționate posibilitatea de setare a [anonimizat] o funcție de reglare a culorilor după sunet (referitor la o piesă muzicală). Modul de funcționare este bazată pe codul sursă scris în softul Arduino IDE 1.6.3 și 1.8.8 cu ajutorul librăriilor având drept rol controlul circuitelor bazate pe microcontrolere.
Cuvinte cheie: [anonimizat], [anonimizat], Arduino.
Ventilation controller using microcontreller
Abstract
The work aims to create a monitoring and control system in a desktop or a complex industrial system with the possibility to set the operating parameters. The project allows automatic and manual control of a certain number of PWM controlled fans by a user or automatically by the system monitoring thresholds of minimum and maximum temperatures (also set by the user under the code). The system has been designed with the following options: [anonimizat], [anonimizat], all displayed on 16×2 LCDs, [anonimizat] a website. Additional features include the ability to set a [anonimizat] color range as well as a color change function by sound (for a musical piece). The mode of operation is based on the source code written in the Arduino IDE 1.6.3 and 1.8.8 software, using various libraries having the role of controlling the microcontroller based circuits.
Keywords: temperature monitoring, fan control, LCD display, microcontroller, Arduino.
Thesis Supervisor: GABRIEL PREDUȘCĂ
Associate professor, Ph.D. Eng.,
Electronic, Telecommunication and Power Energy Department
Faculty of Electrical Engineering, Electronics and Information Technology
University VALAHIA of Târgoviște
Anexa 1
UNIVERSITATEA “VALAHIA” DIN TÂRGOVIȘTE
FACULTATEA DE INGINERIE ELECTRICĂ, ELECTRONICĂ ȘI TEHNOLOGIA INFORMAȚIEI Specializarea: Tehnologii și Sisteme de Telecomunicații Anul universitar 2018 – 2019
TEMA
proiectului de diplomă al absolventului
APOSTOL Florin Giorgian
Tipul proiectului:
Aplicativ
Domeniul: Inginerie electronică și telecomunicații
Implementabil in cadrul unei (unor) lucrări didactice
Domeniul: Inginerie electronică și telecomunicații
Fundamental
Domeniul: Inginerie electronică și telecomunicații
Tema proiectului:
Sistem de control al ventilației utilizând microcontroler
Conținutul proiectului:
3.0 Introducere (motivația proiectului, rezumat capitole);
Noțiuni teoretice;
Descrierea echipamentelor utilizate în realizarea practică;
Monitorizarea temperaturii și controlul ventilatoarelor precum și a altor parametrii;
Rezultate și concluzii.
Locul unde va fi implementat proiectul:
Laborator Bazele Sistemelor de Achiziții de Date – A307;
Bibliografie:
Luchian Zaharia, Sisteme de măsurare computerizate pentru achiziția de date, Editura Iași, 2005;
Byron Francis, Arduino: The Complete Beginner's Guide, Editura CreateSpace Independent Publishing Platform, 2016;
Traian Anghel, Programarea Plăcii Arduino, Editura Paralela 45, 2016;
Vasile Surducan, Wouter van Ooijen, Microcontrolere pentru toți, Editura Mâna Autorului, 2006.
DECAN, DIRECTOR DEPARTAMENT,
Conf.dr.ing. Henri-George COANDĂ Conf.dr.ing. Nicoleta ANGELESCU
CONDUCĂTOR ȘTIINȚIFIC,
Ș.l. dr. ing. Gabriel PREDUȘCĂ
Tema a fost dată spre împlinire la data 20.10.2018
NUMELE și SEMNĂTURA STUDENTULUI
APOSTOL Florin Giorgian
Listă figuri
Figură 1.1 Sistem de achiziții de date 10
Figură 1.2 Tensiuni la diferite semnale PWM 10
Figură 1.3 Amplificarea semnalului PWM de la 5V la 12V 11
Figură 1.4 Spațiul de culoare RGB 11
Figură 1.5 Culoarea Galbenă obținută din spectrul RGB 12
Figură 1.6 Principiu de funcționare RFID 13
Figură 1.7 Trimiterea unui mesaj pe Dweet.io 14
Figura 2.1 Platforma Arduino Mega varianta R3 16
Figura 2.2 Descrierea detaliată a platformei Arduino Mega 2560 16
Figură 2.3 Microcontrolerul Atmega 1284p 18
Figură 2.4 Microcontrolerul Atmega 328p 19
Figura 2.5 Modul WiFi ESP8266 20
Figura 2.6 TFT LCD Touch de 3.2 inch 20
Figura 2.7 Modul I2C 21
Figură 2.8 Vedere față și spate al senzorului DS18B20 22
Figură 2.9 Vedere față și spate al modulului DS1307 22
Figură 2.10 Senzorul FC-04 23
Figura 2.11 Tranzistor inițial în cutie de metal 24
Figura 2.12 Tranzistorul actual în cutie din plastic 24
Figura 2.13 LCD 25
Figura 2.14 Construcția potențiometrului rotativ 25
Figura 2.15 Simbolizarea LED-urilor 26
Figura 2.16 Simbolurile rezistenței electrice 27
Figura 2.17 Osciloscop DSO138 28
Figura 2.18 Sursă de alimentare 29
Figura 2.19 Tranzistor de putere NPN TIP31C 30
Figura 2.20 Modul Cititor MFRC522 RFID 30
Figura 2.21 FT232RL FTDI USB To TTL Serial Converter 31
Figura 3.1 Proiectarea schemei în Proteus Design Suite 34
Figura 3.2 Cablajul finit în Proteus 8 35
Figura 3.3 Vizualizare frontală a circuitului în 3D 35
Figura 3.4 Cablajul printat cu laser pe o coală lucioasă transparentă 35
Figura 3.5 Repararea greșelilor 36
Figura 3.6 Denivelarea locurilor pentru găurit 36
Figura 3.7 Procesul de decapare a cuprului 36
Figura 3.8 Procesul de găurire a cablajului 37
Figura 3.9 Cablajul finalizat 37
Figura 3.10 Modificarea pinilor A0, A1, A2 la PCF8574 duce la modificarea adresei 38
Figura 3.11 Sistemul montat pe plexiglas 40
Figura 3.12 Alimentarea circuitului 40
Figura 3.13 Mesajul afișat de sistem în repaus. 41
Figura 3.14 Accesul pe bază de RFID. 41
Figura 3.15 Procesul de inițializare ESP8266, cu modul conectat. 42
Figura 3.16 Meniul Sistemului. 42
Figura 3.17 Afișarea celor trei temperaturi. 43
Figura 3.18 Subsistemul Parametrii. 43
Figura 3.19 Potențiometrele pentru controlul Manual. 44
Figura 3.20 Subsistemul Parametrii. 44
Figura 3.21 Afișarea turației ventilatoarelor. 44
Figura 3.22 Alertă prag maxim de temperatură depășit. 45
Figura 3.23 Semnalul PWM reprezentat pe Osciloscop al ventilatorului 2 – la o valoare de 67%. 45
Figura 3.24 Meniul RGB Control. 46
Figura 3.25 Setarea culorii prin meniul RGB Control. 46
Figura 3.26 Opțiunea M pentru controlul RGB. 47
Figura 3.27 Opțiunea S pentru generarea mai multor culori utilizând RGB. 47
Figura 3.28 Timpul și Data. 48
Figura 3.29 Submeniul Stare Sistem. 48
Figura 3.30 Comunicare Arduino Mega și ESP8266. 49
Figura 3.31 Trimitere mesaj AT și primire răspunsul primit. 49
Figura 3.32 Formatul mesajului trimis pe Dweet.io 50
Figura 3.33 Afișarea valorilor online pe freeboard.io 50
Figura 4.1 Eroare de 0.250C la senzorul T3 51
Listă tabele
Tabelul 1. Proprietățile LED-urilor în funcție de culoarea emisă 26
Tabelul 2. Caracteristici tehnice ale rezistentelor utilizate 27
Tabelul 3. Codul de culori al rezistorilor 28
Tabelul 4. Stabilirea conexiunilor USB – UART 33
Simboluri și abrevieri
PWM Pulse Width Modulation
LCD Liquid Crystal Display
WLAN Wireless Local Area Network
HTTP HyperText Transfer Protocol
LED Light Emitting Diode
BSAD Bazele Sistemelor de Achiziții de Date
IDE Integrated Development Environment
DAC Digital to Analog Converter
RFID Radio Frequency Identification
ADC Analog to Digital Converter
IoT Internet of Things
TFT Thin Film Transistor
SPI Serial Peripheral Interface
I2C Inter Integrated Circuit
USB Universal Serial Bus
RGB Red Blue Green
CAN Controlled Area Network
Cuprins
Cuprins 7
Introducere 8
Capitolul 1 – Noțiuni teoretice 9
1.1 Noțiuni generale 9
1.1.1 Disiparea de căldură 9
1.1.2 Sisteme de achiziții de date 9
1.1.3 Pulse Width Modulation (PWM) 10
1.1.4 Controlul culorii RGB 11
1.1.5 RFID – Identificare prin Radio-Frecvență 12
1.2 Sisteme unde poate fi implementat controlul temperaturii 13
1.3 Trimiterea datelor pe internet prin intermediul serviciilor IoT 13
1.3.1 Internet of Things (IoT) 13
1.3.2 Serviciul Dweet.io 14
Capitolul 2 – Descrierea echipamentelor utilizate în realizarea practică 15
2.1 Aspecte generale 15
2.2 Arduino Mega 2560 16
2.3 Atmega 1284p 17
2.4 Atmega 328p 19
2.5 Modulul WiFi ESP8266 19
2.6 TFT LCD Touch de 3.2 inch 20
2.7 Modul I2C 21
2.8 Senzorul de temperatură DS18B20 21
2.9 Ceas de Timp Real DS1307 22
2.10 Senzorul de sunet FC-04 23
2.11 Tranzistor 2N2222 23
2.12 LCD (Liquid Crystal Display) 24
2.13 Semireglabile/potențiometre 25
2.14 LED – Light-Emitting Diode (Diodă Emițătoare de Lumină) 25
2.15 Rezistența electrică 27
2.16 Osciloscopul DSO138 28
2.17 Sursa de alimentare AC BEL PC9051 29
2.18 Tranzistor TIP31C 29
2.19 Cititor MFRC522 RFID 30
2.20 Convertor Serial FT232RL FTDI USB la TTL 31
Capitolul 3 – Sistem de control al ventilației utilizând microcontroler 32
3.1 Configurarea aplicațiilor 32
3.1.1 Programarea Microcontrolerului și transmisia UART 32
3.1.2 Proiectarea și crearea cablajului 33
3.1.3 Configurarea modulelor și modul lor de funcționare 37
3.2 Descrierea funcționării sistemului 39
3.3 Interfața grafică pentru monitorizarea parametrilor online 48
Capitolul 4 – Rezultate și concluzii 51
Bibliografie 52
Anexa 1 – Cod sursă Arduino 53
Anexa 2 – Cod sursă Dweet 56
Introducere
Această lucrare prezintă modul de funcționare, atât teoretic cât și practic, al unui sistem de monitorizare și control manual sau automat al unor ventilatoare, prin monitorizarea diferitelor temperaturi și parametrii, cât și principalele avantaje pe care le constituie ca sistem automatizat, atât în industrie cât și în viața de zi cu zi.
Ideea proiectului a luat naștere odată cu pasiunea pentru computere și din nevoia de a avea răcire personalizată pe anumite componente cu un raport ridicat de încălzire într-un desktop, însă nu a văzut lumina zilei până acum un an, în urma unui proiect în cadrul cursului de Bazele Sistemelor de Achiziții de Date, unde am putut duce ideea la următorul nivel. Astfel, cu îndrumarea profesorilor, am participat la sesiunea studențească desfășurată în cadrul Facultății de Inginerie electrică, electronică și tehnologia informației – Zilele Academice ale Științei și Tehnicii Târgoviștene pe 25 mai 2018 unde am luat locul II și la Sesiunea de Comunicări a Cercurilor Științifice Studențești pe 13 iulie 2018. Având la bază un proiect deja funcțional am decis extinderea acestuia ca lucrare de diplomă.
După cum bine știm aparatele electronice se încălzesc unele mai mult față de altele și găsirea celei mai bune soluții de răcire este o temă de actualitate; puțină lume își pune întrebarea de ce electronicele se încălzesc atât de mult, în primul rând. De aceea trebuie să înțelegem una din legile fundamentale ale universului care cauzează apariția căldurii și nu doar în computere, ci de la motoarele mașinilor până la becuri. Este vorba de a doua lege a Termodinamicii care spune, mai pe scurt, că oricând este folosită energia o parte din ea devine căldură disipată și cum microprocesorul sau placa grafică, de exemplu, sunt făcute din miliarde de tranzistori care comută, deschis sau închis, pentru a rula programe iar microprocesoarele moderne trec prin foarte multe cicluri pe secundă, acești tranzistori pot genera multă căldură datorită surplusului de curent de care au nevoie când aceștia sunt utilizați. Eliminarea acestei călduri suplimentare poate fi realizată cu ajutorul radiatoarelor metalice de dimensiuni mari și a ventilatoarelor.
Conținutul lucrării este structurat pe patru capitole după cum urmează:
în primul capitol, intitulat Noțiuni teoretice, voi descrie câteva noțiuni teoretice de bază;
în cel de-al doilea capitol, Descrierea echipamentelor utilizate în realizarea practică, am analizat fiecare componentă utilizată, relatând pe scurt principalele caracteristici și proprietăți ale acestora;
al treilea capitol, Sistem de monitorizare și control al temperaturii prin ventilatoare, prezintă modul de funcționare al sistemului, unde poate fi utilizată aplicația, avantajele și dezavantajele utilizării acesteia în practică;
în capitolul patru, Rezultate și concluzii, am prezentat principale concluzii și perspective de dezvoltare ale sistemului.
Capitolul 1 – Noțiuni teoretice
1.1 Noțiuni generale
1.1.1 Disiparea de căldură
Ineficiența conductorilor de electricitate a componentelor utilizate în interiorul unui dispozitiv electronic duc la producerea de căldură. Acest lucru este cauzat de rezistența metalelor folosite în industrie ceea ce înseamnă că o parte din energie este căldură disipată. În timp, căldura se acumulează, făcând ca respectivul dispozitiv electronic să se încălzească [A1].
Toți conductorii care sunt parcurși de curent electric au electroni care se deplasează prin metal. O baterie, de exemplu, transformă energia chimică în energie electrică potențială. Această energie potențială electrică este dată electronilor și, din moment ce electronii încearcă să reducă la minimum potențialul lor electric, electronii convertesc această energie electrică potențială în energie cinetică. Datorită firelor care au rezistență electrică, ceea ce înseamnă că rezistă mișcării electronilor, electronii se ciocnesc în atomi din exteriorul conductorului și o parte din energia lor cinetică este dată atomilor ca energie termică. Această energie termică determină încălzirea conductorului. Dispozitivul poate fi apoi răcit în diferite moduri. O metodă simplă de răcire este de a folosi un ventilator pentru ,,a arunca,, aerul fierbinte, permițând componentelor electronice să disperseze continuu căldura în aerul din jur.
1.1.2 Sisteme de achiziții de date
Mărimile fizice pot fi monitorizate de către un sistem/circuit de supraveghere complex de achiziție a datelor. Aceste date și semnale trec prin diferite convertoare (DAC – Digital-to-Analogic Converter sau CNA – Convertor Numeric Analogic, ADC – Analog-to-Digital Converter sau CAN – Convertor Analog Numeric, etc) și sunt stocate pentru a fi mai departe prelucrate, afișate sau transmise în funcție de natura sistemului.
Senzorii (traductorii), fac conversia fenomenului măsurat în semnale de tensiune sau curent ce pot fi utilizate în intrarea ADC-ului. ADC este un dispozitiv ce preia date din mediul înconjurător și le convertește în nivele ce pot fi interpretate de un procesor. Acestea pot fi de diferite rezoluții (12 biți, 16 biți, 18 biți etc.) și pot duce la o detectare mult mai precisă a fenomenului măsurat. De asemenea se mai pot găsi și circuite de condiționare a semnalului ce au ca rol îmbunătățirea semnalului prin filtrare, amplificare, atenuare, liniarizare, etc. [A2].
Cei mai importanți factori care influențează un Sistem de Achiziție de Date (SAD) sunt:
Rezoluția și precizia pentru CAN;
Frecvența de eșantionare;
Capacitatea sistemului de prelucrare;
Precizia.
Datele de achiziție pot fi:
Analogice – curenți, tensiuni;
Numerice – digitale, biți.
În figura următoare este prezentată o schema a unui astfel de sistem (figura 1.1).
Figură 1.1 Sistem de achiziții de date
1.1.3 Pulse Width Modulation (PWM)
Modulația impulsurilor în durată (MID sau PWM) înseamnă că avem un semnal modulat în lățime a impulsurilor de comandă. Principiul fundamental al PWM-ului este: factorul de umplere crește, puterea și tensiunea medie furnizate de PWM cresc în mod liniar [A3].
Într-un sistem în care ne dorim să modificăm turația unor ventilatoare sau intensitatea unor led-uri, fără posibilitatea de a modifica tensiunea direct, ne putem folosi de semnalul PWM. În figura 1.2, este reprezentat un semnal PWM cu o valoare maximă de 5V (tensiunea obișnuită pentru un microcontroler).
Figură 1.2 Tensiuni la diferite semnale PWM
Așadar la factorul de umplere 50% acei 5V pe o durată de timp de 1s vor sta 0.5s pe 5V și 0.5s pe 0V, adică vom vedea de fapt o tensiune de 2.5V. La un factor de umplere de 25% vom vedea 0.25s pentru 5V și 0.75s 0V, adică 1.25V, etc.
În cazul unui led, el va sta la factorul de umplere de 50% jumătate aprins și jumătate stins, însă la o frecvență destul de mare ochiul uman nu va putea vedea acest lucru ci în schimb vede doar că led-ul merge la jumătate din putere sa sau la un sfert în cazul de 25%.
Însă, datorită cerinței de 12V a unui ventilator obișnuit de răcire, cei 5V oferiți de microcontroler sunt îndeajuns, motiv pentru care vom folosi un tranzistor ce va putea închide și deschide circuitul destul de repede încât vom avea același efect dar la o tensiune nu de 5V ci de 12V (figura 1.3).
Figură 1.3 Amplificarea semnalului PWM de la 5V la 12V
1.1.4 Controlul culorii RGB
Datorită celulelor conice sau fotoreceptoarelor, oamenii sunt capabili să perceapă culoare. RGB (Red Green Blue) este un sistem de culori aditiv, deoarece combinațiile de lumină roșie, verde și albastră creează culorile pe care le percepem prin stimularea simultană a diferitelor tipuri de celule conice [A4].
Acest control face posibilă afișarea unei varietate destul de mare de culori folosind numai un amestec de trei culori: Roșu, Verde și Albastru. Fiecare dintre aceste culori are o valoare de intensitate de la 0 la 255. Așadar vom avea roșu pur când avem celelalte două valori setate pe 0 și roșu pe 255, verde pur când avem celelalte două valori setate pe 0 și verde pe 255, albastru pur când avem celelalte două valori setate pe 0 și albastru pe 255 (figura 1.4).
Figură 1.4 Spațiul de culoare RGB
Ca exemplu (figura 1.5), pentru o culoare intensă de Galben avem nevoi de Roșu și Verde.
Figură 1.5 Culoarea Galbenă obținută din spectrul RGB
Având deci un led RGB sau o bandă de led-uri RGB putem afișa o varietate de culori în interiorul sistemului. Intensitatea fiecărei culori este stabilită prin aceeași metoda ca în cazul ventilatoare cu ajutorul unui semnal PWM amplificat de către un tranzistor în cazul în care led-urile sunt de consum mare.
1.1.5 RFID – Identificare prin Radio-Frecvență
RFID înseamnă identificarea prin radiofrecvență. Aceasta utilizează câmpuri electromagnetice pentru a transfera date pe distanțe scurte. Ea este utilă, de exemplu, pentru identificarea persoanelor (numai persoana cu informațiile corecte de pe cardul său este autorizată să acționeze sistemul). Sistemul de identificare de tip RFID constă din două componente principale: un transponder/ etichetă atașat la un obiect care urmează să fie identificat și un transceiver cunoscut și ca interogator/cititor. Un astfel de sistem utilizează tag-uri atașate la un breloc și o cartelă electromagnetică. Fiecare etichetă are propria identificare (UID).
Un cititor constă dintr-un modul de frecvență radio și o antenă care generează câmp electromagnetic de înaltă frecvență. Pe de altă parte, eticheta este de obicei un dispozitiv pasiv, adică nu conține o baterie. În schimb, acesta conține un microcip care stochează și procesează informații și o antenă care recepționează și transmite un semnal.
Pentru a citi informația codată pe o etichetă, aceasta este plasată în imediata vecinătate a cititorului (nu trebuie să fie în linie directă a cititorului). Un cititor generează un câmp electromagnetic care determină ca electronii să se deplaseze prin antena tagului și apoi să alimenteze cipul. Cipul alimentat în interiorul etichetei răspunde prin trimiterea informațiilor stocate înapoi la cititor sub forma unui alt semnal radio. Aceasta se numește backscatter. Acest backscatter sau schimbarea undei electromagnetice sunt detectate și interpretate de către cititor, care apoi trimit datele către un calculator sau microcontroler.
În figura 1.6 este prezentată schema unui astfel de sistem.
Figură 1.6 Principiu de funcționare RFID
1.2 Sisteme unde poate fi implementat controlul temperaturii
Câteva soluții de control a temperaturii utilizate la ora actuală sunt descrise în continuare:
Computerele precum Desktop-urile, Laptop-urile, Tabletele, etc. necesită răcire datorită componentelor mecanice și electrice din care sunt alcătuite: tranzistorii din microprocesor și placa grafică ce permit sau blochează trecerea semnalelor electrice, căldura generată de către componentele pasive ce au rezistență la trecerea curentului prin ele găsite în sursele de alimentare, forțele de frecare ce se formează la componentele aflate în mișcare din interiorul unui Hard Disk Drive, precum și căldura generată de memorii, stabilizatoare, și alte componente.
Motorul cu combustie internă al unui autovehicul ce folosește aer și lichid pentru a disipa căldura produsă de arderile interne din interiorul motorului.
Clima din interiorul unui autovehicul ce folosește senzori de temperatură cât și parametrii dați de utilizator pentru a menține o anumită temperatură.
Sisteme de control ale temperaturii în cadrul unei locuințe unde senzori de temperatură pot acționa automat la pornirea centralei sau sistemelor de aer condiționat.
Menținerea temperaturii, luminii și a factorilor necesari într-o seră pentru creșterea și producția diferitelor plante, legume și fructe.
Monitorizarea temperaturilor într-o centrală de producere a energiei electrice prin diferite tehnologii unde sunt necesare sisteme de monitorizare, de apropiere și la distanță, controlul temperaturii, alarmă și oprire automată de siguranță pot acționa pentru o bună funcționare și automatizare a procesului de producere a energiei electrice.
1.3 Trimiterea datelor pe internet prin intermediul serviciilor IoT
1.3.1 Internet of Things (IoT)
Internetul lucrurilor (IoT) este un concept care descrie ideea ca miliardele de dispozitive fizice de zi cu zi din întreaga lume să fie conectate la internet, să se poată identifica cu alte dispozitive, și să poată colecta și partaja date cu acestea. Datorită multitudinilor de rețele wireless și avansarea tehnologiei, dispozitivele IoT devin din ce în ce mai numeroase. Acest lucru adaugă un nivel de inteligență digitală la dispozitivele care altfel ar fi incapabile să realizeze sarcini dificile, permițându-le să comunice și să acționeze fără nevoia omului [A5].
1.3.2 Serviciul Dweet.io
Dweet.io este o simplă pagină de transmitere și recuperare a informației pentru mașini, senzori, dispozitive, roboți și gadgeturi (numite doar „things”). [C4]
Acest serviciu permite ca datele dispozitivului și ale senzorilor să devină ușor accesibile printr-un API RESTful pe bază de web, ceea ce face posibilă trimiterea și extragerea datelor sau doar publicarea acestora pe internet [A6].
Trimiterea unui singur mesaj se poate face foarte ușor doar prin apelarea unui URL precum „https://dweet.io/dweet/for/BSAD?hello=world” ce va avea ca rezultat mesajul din figura 1.6.
Figură 1.7 Trimiterea unui mesaj pe Dweet.io
Capitolul 2 – Descrierea echipamentelor utilizate în realizarea practică
2.1 Aspecte generale
Sistemul propus este format din mai multe module (circuite) conectate între ele prin protocolul de comunicare UART. Primul circuit are rolul de acces a sistemului printr-o cartelă RFID ce conține un cod unic de identificare a utilizatorului și face posibil accesul la controlul parametrilor de funcționare. Setările sistemului se pot citi odată prin LCD-urile 16×2 sau se pot regăsi în meniul LCD-ului color cu touchscreen. Informațiile și setările se pot modifica prin potențiometre sau direct prin touchscreen. Transmiterea informațiilor pe site se face automat de către sistem, userul fiind nevoit doar să acceseze adresa URL și să interpreteze datele.
În implementarea sistemului am folosit următoarele echipamentele:
platforma Arduino Mega 2560 R3;
microcontroler Atmega 1284p;
microcontroler Atmega 328p;
adaptor TFT 3.2 inch
TFT 3.2 inch LCD Touch;
modul WiFi ESP8266;
modul interfață I2C;
tranzistor 2N222;
tranzistor TIP30C;
senzori de temperatură DS18B20;
senzor de sunet FC-04;
cititor MFRC522 RFID
sursă de calculator;
ventilatoare 12V;
osciloscop DSO138;
modul RTC (ceas în timp real) DS1307;
FT232RL FTDI USB la TTL Convertor Serial;
LCD 1602A 16×2 pe care se va afișa: temperatura, turația, ora și data;
potențiometre semireglabile ce vor regla turația ventilatoarelor și setarea culorilor RGB;
Led-ul RGB sau după caz banda de leduri RGB ce pot compune o culoare la alegere, iar aprinderea intermitentă a culorii roșu semnifică temperatură mărită;
Comutatoare alimentare.
2.2 Arduino Mega 2560
Platforma Arduino Mega 2560R3 este reprezentată în figura 2.1 [A7].
a) Platforma văzută din față b) Platforma văzută din spate
Figura 2.1 Platforma Arduino Mega varianta R3
Arduino este o companie de hardware și software de comunicații open source, care proiectează și produce microcontrolere și platforme pentru construirea de dispozitive digitale și obiecte interactive. Acestea pot sesiza și controla dispozitive fizice și digitale, precum senzori analogi și digitali, module, motorașe și alte componente.
Platforma Arduino Mega 2560 poate fi cu 50% mai mare decât Uno, dar are de aproape patru ori mai multe intrări și ieșiri. Este ca o versiune mărită a unui Uno. Pinii sunt grupați prin funcție specială – PWM, Comunicare Digitală sau Analogică, alimentare. De precizat este faptul că echipa Arduino sa străduit să păstreze pinii în același loc, astfel încât scuturile făcute pentru plăcile mai mici să funcționeze în continuare pe Mega.
Platforma este formată din următoarele componente, conform figurii 2.2: un microcontroler Atmega 2560, 54 pini digitali, atât de intrare cât și de ieșire, dintre care 14 dinte aceștia pot fi folosiți și ca ieșire PWM; 16 intrări analogice și 4 porturi seriale cu cate 2 pini fiecare, unul TX iar altul RX; 2 pini pentru magistrala I2C; buton de reset; conector USB, protecție pentru USB, responsabil pentru comunicare USB; stabilizator de 5 V; sursă de la 7 la 12 V; stabilizator de 3.3V.
Figura 2.2 Descrierea detaliată a platformei Arduino Mega 2560
Arduino Mega dispune de o memorie flash pentru stocarea codului de 256 kB, dintre care 8 kB sunt utilizați de bootloader. Memoria SRAM de 8 kB și memoria EEPROM de 4 kB pot fi citite și scrise doar cu ajutorul librăriei EEPROM.
Specificații tehnice:
Tensiunea de lucru: 5 V;
Tensiunea de intrare (limite): 6-20 V;
Curent de ieșire: 40 mA;
Curent de ieșire 3.3V: 50 mA;
Clock: 16 MHz.
Poate fi alimentată atât prin cablu USB, cât și de la o sursă externă. În cazul proiectului am folosit o sursă de calculator ce îi poate oferi 5V.
Am ales Arduino Mega deoarece îmi oferă un simplu mod de interfață om-mașină prin folosirea unui simplu scut și modul LCD TFT Touch și pentru existența a patru porturi seriale.
Avantaje:
O mulțime de intrări și ieșiri pentru proiectele ce necesită multe dispozitive;
Memorie – mult mai mare decât Uno;
Aspect similar – multe scuturi făcute pentru plăcile mai mici vor funcționa în continuare pe Mega;
Foarte organizat, intrările și ieșirile grupate după funcție.
Dezavantaje:
Dimensiuni fizice mult mai mari față de versiunile anterioare;
Prețul – dublu față de prețul Uno.
2.3 Atmega 1284p
Microcontroler-ul Atmega de înaltă performanță, bazat pe AVR RISC de 8 biți, combină memoria flash ISK de 128 kB cu capabilități de scriere în timp real, are următoarele caracteristici: 4kB EEPROM, 16kB SRAM, 32 de linii I / O de uz general, 32 de registre de lucru cu scop general, trei timere flexibile/contoare cu moduri de comparare și PWM, două USART-uri, o interfață serială orientată pe 2 fire, un convertor A/D de 8 canale pe 10 biți cu stație de intrare diferențială opțională cu câștig programabil, temporizator programabil cu oscilator intern, Port Serial SPI, interfață de test JTAG (compatibilă cu IEEE 1149.1) pentru depanare și programare on-chip și șase moduri de economisire a energiei selectabile (figura 2.3). Dispozitivul funcționează între 1,8 și 5,5 volți.
Figură 2.3 Microcontrolerul Atmega 1284p
Motivele principale pentru alegerea microcontrolerului Atmega 1284P au fost: în primul rând numărul ridicat de pini (40 pini) cu 32 de I/O (figura 2.3); în al doilea rând capacitatea mare a memorie Flash 128kB necesară pentru actualul cod și cu posibilitatea de update în cazul implementării mai multor funcții.
Specificații tehnice:
arhitectura RISC;
ceas de până la 20 MHz;
128kB Flash 10.000 scrieri și citiri;
4kB EEPROM 10.000 scrieri și citiri;
186kB SRAM;
RTC cu oscilator separat;
6 canale PWM;
Convertor Analog Digital cu 8 canale pe 10 biți;
2 UART;
SPI;
Timer Watchdog;
Oscilator intern;
întreruperi interne și externe;
6 moduri de repaus ce pot pune microcontrolerul într-o formă de consum redus: Idle, ADC Noise Reduction, Power-Save, Standby, Extended Standby;
1.8V-5.5V domenii de operare
trei moduri de viteză în funcție de frecvența ceasului: 0-4 MHz, 0-10 MHz, 0-20 MHz [A8].
Principalele dezavantaje:
trebuie asigurat bootloader pentru comunicarea cu Arduino IDE;
dimensiunile fizice mari;
lipsa mai multor pini PWM, analogici, digitali și module de comunicare;
nu se poate folosi încă cu Arduino IDE peste versiunea 1.6.3;
lipsa suportului și a comunității.
2.4 Atmega 328p
Microcontroller Atmega de înaltă performanță, bazat pe AVR RISC de 8 biți, combină memoria flash ISP cu memorie 32kB cu capabilități de scriere în timp real, are următoarele caracteristici: EEPROM 1024B, SRAM 2kB, 23 pini I/O de uz general, 32 registre de lucru cu scop general, contoare cu moduri de comparare, întreruperi interne și externe, USART serial programabil, interfață serială orientată pe două fire, port serial SPI, convertor A/D cu 6 canale de 10 biți, cronometru programabil de supraveghere cu oscilator intern și cinci moduri de economisire a energiei selectabile (figura 2.4). Dispozitivul funcționează între 1,8 și 5,5 volți.
Figură 2.4 Microcontrolerul Atmega 328p
Specificații tehnice:
microcontroler AVR cu 28 Pini;
timeri: doi de 8-biți, unul de 16-biți;
PWM cu 6 canale;
Ceas de Timp Real cu oscilator extern;
Suport MSSP, SPI și I²C Master și Slave;
Oscilator extern până la 20MHz [A9].
2.5 Modulul WiFi ESP8266
Modulul WiFi ESP8266 are structura din figura 2.5, folosește protocolul TCP/IP integrat și poate furniza acces la rețeaua WiFi oricărui tip de microcontroler, acesta venind cu firmware pentru a putea accepta diferite comenzi. Acest modul este impresionant, cu costuri reduse, potrivit pentru adăugarea de funcții WiFi la un proiect cu microcontroler existent printr-o conexiune serială UART. Modulul poate fi chiar reprogramat pentru a acționa ca un dispozitiv conectat WiFi autonom.
Capacitatea modului de procesare și stocare este suficient de puternică, și poate fi conectat cu senzori sau alte dispozitive prin intermediul conectorilor GPIO. ESP8266 suportă economisire de energie automată; de asemenea poate fi folosit pentru softuri Voce prin Ip (Voice over Ip) și interfețe cu Bluetooth. Modulul este un SoC (Sistem pe un Chip) autonom, care nu are nevoie neapărat de un microcontroler pentru a comanda intrările și ieșirile, deoarece acționează ca un mic computer. Astfel, putem oferi un acces WiFi la microcontroler, unui Arduino, sau putem programa pentru a avea nu numai acces la o rețea Wi-Fi, ci și pentru a acționa ca un microcontroler, ceea ce face ESP8266 foarte versatil.
a) Partea de sus b) Partea de dedesubt
Figura 2.5 Modul WiFi ESP8266
Caracteristici tehnice:
Are standardele 802 b/g/n;
Wi-Fi direct, soft Acces Point;
Putere de ieșire 19.5dBm în banda b;
1MB Memorie Flash;
Microprocesor pe 32 de biți integrat cu consum redus de energie ce poate fi folosit ca procesor pentru aplicații;
Transmiterea pachetelor se face în mai puțin de 2 ms;
Poate comunica prin SPI, UART, SDIO 1.1 sau 2.0;
Tensiune de alimentare prin convertor logic de 5V [A10].
2.6 TFT LCD Touch de 3.2 inch
Modulul LCD TFT Touchscreen cu diagonală de 3.2 inch (figura 2.6) oferă o interfață grafică sistemului și este unul din modurile prin care se poate modifica parametrii sistemului. Acesta se poate conecta printr-un adaptor direct la Arduino Mega 2560 și poate fi programat cu acesta. Modulul mai deține și un adaptor de card unde se pot pune diverse imagini sau informații ce pot fi accesate la afișare.
a) Partea din față b) Partea din spate
Figura 2.6 TFT LCD Touch de 3.2 inch
Caracteristici tehnice:
Rezoluție Display: 320 x 240;
Touch Screen;
Controler display: ILI9341;
Interfață display: paralelă de 16-biți;
Mărime display: 2.9" x 2";
Tensiune alimentare 3.3/5V;
Compatibil librărie UTFT [A11].
Adaptor TFT Mega [A12]
Compatibil Arduino MEGA;
Suport pentru LCD de 2.4 și 3.2 inchi;
Suport pentru 8 biți și 16 biți;
Suportă Touch Screen și Adaptor SD Card.
2.7 Modul I2C
Interfața I2C este un tip de comunicare serială inventată de PHLIPS. Este o magistrală care are o funcție de comandă și o funcție de sincronizare a dispozitivului. Potențiometrul albastru de pe ecranul I2C LCD1602 (figura 2.7) este utilizat pentru reglarea luminii de fundal pentru o afișare mai bună. I2C folosește numai două linii de comunicare bidirecționale, linia serială de date (SDA) și linia serie de ceasuri (SCL). Tensiunile tipice utilizate sunt +5 V sau +3.3 V, deși sunt permise sisteme cu alte tensiuni.
Adaptorul LCD I2C ajută la conectarea ecranului LCD de 16 caractere x 2 linii cu microcontrolerul formând astfel un ecran LCD I2C. Interfața utilizează un cip PCF8574 care servește ca adaptor pentru ieșirile și intrările LCD-ului care comunică cu Arduino sau orice alt microcontroler utilizând protocolul I2C. Un total de 8 afișaje LCD pot fi conectate la același bus I2C cu două fire, fiecare placă având o altă adresă. Adresa implicită I2C este 0X27 și poate fi modificată prin intermediul pinilor A0, A1 și A2.
a) Partea din față b) Partea din spate
Figura 2.7 Modul I2C
Caracteristici tehnice:
convertor de la 16×2 LCD la 2 fire.
ușor de folosit prin platforma Arduino;
iluminarea de fundal a LCD-ului poate fi oprită prin jumper [A12].
2.8 Senzorul de temperatură DS18B20
Motivul folosirii acestor senzori de temperatură (în număr de patru) a fost posibilitatea măsurării unei temperaturi cuprinse între -55C și +125C, temperatură necesară având în vedere că un procesor grafic poate ajunge la peste 100C, o temperatură deja critică de funcționare (figura 2.8).
Figură 2.8 Vedere față și spate al senzorului DS18B20
Un alt aspect foarte important a fost posibilitatea comunicării pe un singur bus de date a mai multor senzori simultan, cu ajutorul adreselor unice de 64 biți stocate în ROM-ul propriu, ocupând așadar mai puțini pini ai microcontrolerului, dând posibilitatea de o proiectare a PCB-ului mai ușoară și simplă, cu mai puține componente și spațiu economisit.
Caracteristici tehnice:
comunicare One-Wire (un singur fir/bus de comunicație);
adresă unică pentru fiecare senzor;
nu necesită componente externe, exceptând un rezistor de 4.7kΩ;
alimentare cuprinsă între 3V și 5.5V;
acuratețe de 0.5C de la -10C și +85C;
rezoluție definită de utilizator și cuprinsă între 9 – 12 biți;
face conversie a temperaturii în Word de 12 biți în 750ms;
setare de alarmă [A13].
2.9 Ceas de Timp Real DS1307
Modulul bazat pe DS1307, ceasul serial în timp real DS1307 (RTC), este un ceas/calendar zecimal cu codificare binară completă, plus 56 de octeți de NV SRAM. Adresa și datele sunt transferate în serie printr-un bus bidirecțional I2C (figura 2.9). Ceasul/calendarul oferă informațiile: secunde, minute, ore, zi, dată, lună și an. Data sfârșitului lunii este ajustată automat pentru luni cu mai puțin de 31 de zile, inclusiv corecțiile pentru anul bisect. Ceasul funcționează în format 24 de ore sau 12 ore cu indicatorul AM/PM. Dispozitivul DS1307 are un circuit integrat, care detectează defecțiunile de alimentare și trece automat la sursa de rezervă. Operația de menținere a timpului continuă în timp ce partea funcționează din sursa de rezervă.
Figură 2.9 Vedere față și spate al modulului DS1307
Modulul a fost ales deoarece are ca principalele funcții comunicarea prin I2C, alimentare separată proprie și este necesar în momentul în care vrem să vedem când a fost detectată o anumită temperatură sau stare a circuitului.
Specificații tehnice:
comunicarea prin I2C cu propria adresă;
alimentare proprie separată 3V;
posibilitatea integrării a unui DS18B20;
se poate alimenta și prin alimentarea circuitului [A14].
Dezavantaje:
trebuie reprogramat de fiecare dată daca pierde datele;
dimensiunile fizice considerabile;
au mai fost plângeri pe forumuri de întârzieri.
2.10 Senzorul de sunet FC-04
Senzorul de sunet FC-04 (figura 2.10) recunoaște undele sonore cu ajutorul unui comparator între microfon și o tensiune de referință (provenită de la potențiometru) și dă o tensiune mai mare sau mai mică (0 sau 1) în concordanță cu sunetele sesizate.
Figură 2.10 Senzorul FC-04
Caracteristici tehnice:
alimentare la 3,3V -5V
Output 0 sau 1, High sau Low;
PCB 3.4cm x 1.6cm [A15].
Dezavantaje:
nu se pot diferenția frecvențele și sunetele între ele;
nu se poate face recunoaștere de voce sau alte funcții.
2.11 Tranzistor 2N2222
2N2222 este cel mai frecvent utilizat Tranzistor negativ-pozitiv-negativ (NPN) cu Joncțiune Bipolară (BJT). Datorită costului redus și a mărimii mici este cel mai utilizat. Una dintre trăsăturile sale cheie este capacitatea sa de a gestiona valorile ridicate ale curenților în comparație cu alte tranzistoare similare. În mod normal, este capabil de a comuta un curent de sarcină de 800 mA, care este cu adevărat o specificație ridicată în comparație cu alte tranzistoare similare. Este fabricat fie din material de siliciu sau germaniu, dopat cu material încărcat pozitiv sau negativ. Aplicațiile sale pot include amplificarea semnalelor analogice, precum și a aplicațiilor de comutare. În timp ce execută aplicații de amplificare, acesta primește un semnal analogic prin colector și un alt semnal este aplicat la baza sa. Semnalul analogic ar putea fi semnalul vocal care are frecvența analogică de aproape 4 kHz (voce umană). La lansare acesta a fost împachetat într-o capsulă metalică ca în figura 2.11, după care s-a ajuns la aspectul de astăzi, cu capsulă TO-18 din plastic (figura 2.12).
Figura 2.11 Tranzistor inițial în cutie de metal
Figura 2.12 Tranzistorul actual în cutie din plastic
Detaliile tehnice ale acestui tranzistor sunt:
polaritatea tranzistorului: NPN;
tensiunea colector-bază: 60 V;
tensiunea colector-emitor: 30 V;
tensiunea emitor-bază: 5 V;
curent colector continuu: 800 mA;
putere disipată: 500 mW;
temperatura de conectare și de depozitare: -65 la +200°C;
rezistența termică: 350°C/ W [A16].
2.12 LCD (Liquid Crystal Display)
Afișajul LCD (Liquid Crystal Display) prezentat în figura 2.13 și este un dispozitiv utilizat pentru afișarea unor cifre, litere și imagini. Sunt disponibile în mai multe dimensiuni: 8×1, 8×2, 10×2, 16×1, 16×2, 16×4, 20×2, 20×4, 24×2, 30×2, 32×2, 40×2 etc. Multe companii multinaționale, cum ar fi Philips, Hitachi, Panasonic, își fac propriile lcd-uri personalizate pentru a fi utilizate în produsele lor. Programarea lor este, de asemenea, aceeași și toate au un număr de 14 pini (0-13) sau 16 pini (0 la 15). Acționează sub influența unui curent sau câmp magnetic prin schimbarea culorii celulelor lichide din care este formată matricea. Acesta este folosit pentru a afișa temperatura ambientală, timpul, data, alerte cât și procentajul PWM-ului.
Într-un LCD de mxn, m reprezintă numărul de coloane și n reprezintă numărul de linii. Dacă LCD-ul este notat cu 16×2 înseamnă că are 16 coloane și 2 linii.
Figura 2.13 LCD
Caracteristici tehnice:
tensiunea de alimentare: 5 V;
curent: 1,1 mA;
tensiunea de alimentare backlight: 4,2 V;
curent backlight: 100 mA [A17].
2.13 Semireglabile/potențiometre
Potențiometrul este un rezistor variabil cu 3 terminale. Două terminale sunt conectate la ambele capete ale unui element rezistiv, iar cel de-al treilea terminal se conectează la un contact de alunecare, care se deplasează peste elementul rezistiv ca în figura 2.14. Comportamentul potențiometrului poate fi văzut ca un divizor de tensiune reglabil conform formulei:
Ux = R2/(P*U)
unde
P=(R1+R2).
Figura 2.14 Construcția potențiometrului rotativ
2.14 LED – Light-Emitting Diode (Diodă Emițătoare de Lumină)
Dioda emițătoare de lumină (LED) este un dispozitiv semiconductor care emite lumină atunci când un curent electric trece prin el. Lumina este produsă atunci când particulele care poartă curentul se combină împreună în materialul semiconductor. De asemenea se mai remarcă și LED-ul RGB care este de fapt, o combinație de trei LED-uri într-un singur pachet. Culoarea produsă de LED-ul RGB este o combinație a culorilor fiecăruia dintre aceste trei LED-uri, roșu, verde sau albastru. LED-ul este simbolizat în figura 2.15, având un anod și un catod, anodul fiind plusul LED-ului, iar catodul minusul.
Figura 2.15 Simbolizarea LED-urilor
Când o tensiune este aplicată atunci electronii și golurile se mișcă repede peste joncțiune și se combină constant, îndepărtându-se unii de alții. Curând după ce electronii se deplasează de la tipul n la siliciul de tip p, acesta se combină cu golurile, apoi dispar. Prin urmare, el face atomul complet și mai stabil și dă o mică explozie de energie sub forma unui fascicol mic sau foton de lumină. Culoarea emisă de led-uri depinde de compoziția și materialului semiconductor. Led-urile pot fi simple, bicolore sau RGB.
Am folosit în proiect led-uri simple pentru a indica existența energiei de alimentare, starea circuitului cât și transmiterea diferitelor informații: ca de exemplu led-ul RGB folosit la circuitul RFID, unde fiecare culoare indică dacă accesul la circuit este aprobat sau refuzat.
În funcție de culoare acesta are anumite proprietăți ca în tabelul de mai jos (Tabelul 1):
Tabelul 1. Proprietățile LED-urilor în funcție de culoarea emisă
Un timp de 50000 de ore reprezintă o durată medie de viață a unui LED dacă funcționează la curenți reduși și temperaturi scăzute. Principalele pericole pe care le poate întâmpina un led și poate reduce durata sa de viață este curentul ridicat și supraîncălzirea. Curentul ce trece prin joncțiunea trebuie să fie limitat cu ajutorul unui rezistor extern sau prin utilizarea unei surse de curent constant.
În funcție de culoarea LED-ului el poate avea diferite tensiuni de deschidere:
– pentru LED-ul ce emite culoarea Roșie și Portocalie avem 2,4 V;
– pentru LED-ul ce emite culoarea Albastru, Alb și Verde avem 3,8 V [A18].
2.15 Rezistența electrică
Simbolurile diferitelor rezistențe utilizate pot fi găsite în figura 2.16:
Figura 2.16 Simbolurile rezistenței electrice
Rezistența este o cantitate electrică (sau mărime fizică) care măsoară modul în care dispozitivul sau materialul reduce fluxul de curent electric prin acesta.
Specificațiile tehnice ale rezistențelor folosite în simularea practică sunt date în tabelul 2:
Tabelul 2. Caracteristici tehnice ale rezistentelor utilizate
Valorile rezistenței, toleranței și puterii sunt în general tipărite pe corpul rezistorului ca numere sau litere atunci când corpul rezistoarelor este suficient de mare pentru a citi scrisul, cum ar fi rezistoarele de putere mari. Dar atunci când rezistorul este mic, cum ar fi un tip de carbon de 1/4 watt sau film, aceste specificații trebuie să fie arătate într-o altă manieră, deoarece imprimarea ar fi prea mică pentru a fi posibilă citirea valorii. Rezistoarele mici utilizează benzi colorate vopsite pentru a indica atât valoarea lor rezistivă, cât și toleranța lor la dimensiunea fizică a rezistorului indicând puterea nominală. Aceste benzi colorate produc un sistem de identificare, cunoscut în general sub denumirea de cod de culoare a rezistoarelor (tabelul 3):
Tabelul 3. Codul de culori al rezistorilor
2.16 Osciloscopul DSO138
DSO138 a fost proiectat ca un kit de osciloscop (figura 2.17). Conține numai funcțiile de bază ale osciloscopului fără caracteristici avansate. Simplitatea în structură și ușurința în asamblare/operare sunt printre obiectivele principale ale designului. ,,Inima,, DSO138 este un procesor ARM Cortex-M3 (STM32F103C8). Are un ecran LCD TFT de 2,4 inch (320 x 240 dotmatrix, 262K culori) ca element de afișare și afișează forme de undă și semnale măsurate cu cele două probe de tip crocodil.
Osciloscopul este folosit pentru a măsura valoarea PWM furnizată de la microcontroler sau direct de la tranzistor după amplificarea semnalului de comandă la baza tranzistorului (5V). Astfel se pot vedea: tensiunile, forma semnalului, zgomotul, timpul sau frecvența semnalului.
Figura 2.17 Osciloscop DSO138
Câteva caracteristici tehnice ale acestui osciloscop sunt:
Acuratețe: 12 biți;
Buffer pentru eșantionare de: 1024 octeți;
Lățime de bandă analogică: 0 – 200kHz;
Poziție și prag de declanșare reglabil;
Se poate observa forma de undă de declanșare anterioară (întârziere negativă);
Poate îngheța în orice moment afișarea formei de undă (funcția HOLD);
Moduri de cuplare: DC/AC/GND [A19].
2.17 Sursa de alimentare AC BEL PC9051
Sursa de alimentare este un dispozitiv hardware utilizat pentru a face conversia energiei furnizată de la priză în energie utilizabilă pentru multe părți din interiorul carcasei computerului sau în cazul de față a sistemului realizat. Acestea convertesc curentul alternativ (AC) într-o formă continuă de energie numită curent continuu (DC) de care componentele circuitului au nevoie pentru a funcționa în mod normal. De asemenea, acestea reglează supraîncălzirea prin controlul tensiunii, care se poate schimba automat sau manual, în funcție de sursa de alimentare. Unitățile de alimentare sunt evaluate în funcție de putere. Deoarece fiecare parte a circuitului necesită o anumită cantitate de energie pentru a funcționa corect, este important ca valorile necesare să nu fluctueze. Printre cerințele necesare se enumeră tensiune de 3.3, 5 și respectiv 12V dar și curenți de peste 0.8A la ventilatoare cât și alte componente. Ea este de dimensiuni reduse față de o sursă de computer normală după cum se poate vedea în figura 2.18.
Figura 2.18 Sursă de alimentare
Câteva caracteristici tehnice ale acestei surse sunt:
Poate furniza tensiuni de 12V, 5V și 3.3V;
Curenți între 3A și 12A;
Poate fi pornită prin punerea unui pin în scurt cu GND;
Are eficiență 80 Plus Bronze [A20].
2.18 Tranzistor TIP31C
TIP31C un tranzistor de putere NPN ce poate fi utilizat ca putere liniară în audio și aplicațiile ce necesită comutare. Acesta este împachetat cu capsulă TO-220 cu spate metalic de care se poate atașa și un radiator (figura 2.19). Am ales acest tranzistor deoarece poate suporta curenți mai mari decât 2N2222 fiind mai fiabil și suportând o gama mai mare de ventilatoare ce se pot atașa în sistem.
Figura 2.19 Tranzistor de putere NPN TIP31C
Câteva date de catalog ale acestui circuit sunt:
Tensiunea maximă pe Colector și Emitor de 100V;
Tensiunea maximă de la Bază și Emitor de 5 V;
Cu câștig hfe (h-hibrid, f-forward, e-emitor comun) până la 50 ce reprezintă raportul de transfer al curentului invers la semnal mic;
Curentul maxim permis prin Baza tranzistorului: 1A;
Tensiunea maximă pe Colector și Bază de 100V;
Temperatura maximă de funcționare: 150șC;
Curentul maxim permis de Tranzistor pe colector: 3A[A21].
2.19 Cititor MFRC522 RFID
Modulul RC522 RFID bazat pe MFRC522 IC produs de NXP vine cu un tag RFID și cu tag-ul breloc cu memorie de 1kB. Acesta poate scrie o etichetă, astfel încât să se poată stoca un mesaj secret în ea. Modulul RFID este conceput pentru a crea un câmp electromagnetic de 13,56 MHz pe care îl utilizează pentru a comunica cu etichetele RFID (etichetele standard ISO 14443A). Cititorul poate comunica cu un microcontroler prin intermediul unei interfețe seriale (SPI – Serial Peripheral Interface) cu 4 pini, cu o rată maximă de transfer de 10 Mbps. De asemenea, suportă comunicarea prin protocoalele I2C și UART.
Modulul vine cu un pin de întrerupere acesta fiind util pentru modul de avertizare când o etichetă intră în vecinătatea sa fără ca un microcontroler să interogheze modulul constant. Tensiunile de funcționare ale modulului sunt de la 2,5 la 3.3V, dar pinii logici sunt toleranți la 5 V, astfel încât se poate conecta cu ușurință la un microcontroler Arduino sau la orice microcontroler de 5V, fără a folosi un convertor de nivel logic (figura 2.20).
Figura 2.20 Modul Cititor MFRC522 RFID
Câteva date de catalog ale acestui circuit sunt:
Frecvența de operare: 13,56 MHz;
Curent: 13-26 mA;
Intervalul de citire: aproximativ 3 cm cu cardul furnizat și breloc;
Rata de transfer de date maximă: 10Mbit/s;
Dimensiuni: 60mm × 39mm [A22].
2.20 Convertor Serial FT232RL FTDI USB la TTL
Modulul oferă posibilitatea de a conecta dispozitive la interfața serială (de exemplu, Arduino Pro, LilyPad, Arduino Pro Mini sau ESP8266 sau HC-06 sau HC-05 pe PC) prin portul USB. Poate fi folosit și pentru aplicații seriale generale. Diferența majoră la această placă este că ea are implementat pinul DTR ce permite ca Arduino să fie resetat automat atunci când se descarcă o nouă schiță (un nou program). Acest modul va reinițializa automat orice microcontroler care are DTR pus pe pinul de resetare. Modulul dispune de LED-uri TX și RX care o fac mai ușor de utilizat. De fapt, se poate vedea traficul pe serială pe LED-uri pentru a verifica dacă placa funcționează.
Figura 2.21 FT232RL FTDI USB To TTL Serial Converter
Caracteristicile tehnice ale acestui circuit sunt:
Suport pentru DTR, DCD, RTS, CTS;
Poate fi configurat pentru funcționarea 3,3 V sau 5 V prin setarea jumper-ului;
Include protecția împotriva curentului, folosind o siguranță de 500 de mii de auto-restaurare;
Dimensiune: 43x17mm [A23].
Capitolul 3 – Sistem de control al ventilației utilizând microcontroler
3.1 Configurarea aplicațiilor
3.1.1 Programarea Microcontrolerului și transmisia UART
Pentru programarea circuitelor am folosit software-ul Arduino IDE (mediul de dezvoltare integrat), versiunea 1.6.3 și 1.8.8. Folosirea unei versiuni mai vechi este datorată faptului că microcontrolerul Atmega 1284p necesită o versiune mai veche a programului. Acest aspect vine de la popularitatea redusă a microcontrolerului, bootloaderul nefiind actualizat pentru versiunea nouă a aplicației.
Am ales acest software deoarece are o interfață foarte prietenoasă și ușor de utilizat. Datorită popularității ridicate a platformelor Arduino se pot găsi numeroase forumuri, tutoriale și librării pentru circuitele, microcontrolere și modulele folosite. Această aplicație rulează pe platforme precum Windows, Mac și sisteme Linux, ea fiind scrisă în limbajul de programare Java.
Aplicația este formată dintr-un editor de cod, compilator și un convertor al codului într-o formă pe care microcontrolerul o poate interpreta. Arduino mai are în structura sa și un Serial Monitor care este capabil să afișeze mesajele din transmisia UART a microcontrolerului. Transmisia UART mai poate fi citită și de programe precum Putty, UART Terminal, etc. Proiectele Arduino sunt denumite "schițe" iar codul este asemănător cu limbajul de programare C și C++.
O schiță Arduino este formată din două funcții principale:
1. setup () – parte din cod care rulează numai o singură data din momentul în care placa este alimentată;
2. loop () – parte de cod scrisă în acest loc rulează atâta timp cât placa este alimentată.
Funcțiile principale pentru declarare, citire, scriere și afișare a datelor pe sau după pinii microcontrolerului sunt:
pinMode – setează un pin ori ca INTRARE sau IEȘIRE
analogRead – citește tensiunea recepționată la un pin Analogic.
analogWrite – creează o tensiune la pinul Analogic.
digitalRead – citește o valoare digitală recepționată la un pin Digital.
digitalWrite – creează o valoare de 1 logic sau 0 logic (High sau Low) pe un pin Digital.
Serial.print – transmite date pe portul serial al microcontrolerului [C2].
Programarea microcontroalerelor este ușor de realizat: pentru aceasta se conectează un programator ce are în circuitul său un convertor UART RS232 între USB-ul computerului și pinii UART ai microcontrolerului. Conexiunile se fac astfel (tabelul 4): [C3]
Tabelul 4. Stabilirea conexiunilor USB – UART
După realizarea conexiunii, trebuie să stabilim parametrii de comunicare, pe care îi obținem pentru evitarea semnalului de ceas extern. Aceștia sunt:
Biții de date – sunt cei care poartă mesajul, datele ce vor fi transferate pe serială,
Biții de sincronizare – sunt doi sau trei biți speciali, transferați cu fiecare pachet în parte; aceștia sunt: bitul de pornire și biții de oprire ce marchează începutul și sfârșitul unui pachet.
Biții de paritate – sunt o formă de verificare a erorilor foarte simplă. Are două moduri de reprezentare: impară și pară. Pentru a produce bitul de paritate, toți cei 5-9 biți ai octetului de date sunt adăugați și uniformitatea sumei decide dacă bitul este setat sau nu.
Rata de Baud – specifică cât de repede sunt transmise datele pe o linie serială. Este de obicei exprimată în unități de biți pe secundă (bps), iar în proiectul de față comunicarea serială se face pe 250000 și 115000 bps.
3.1.2 Proiectarea și crearea cablajului
Pentru crearea cablajului și circuitului s-a folosit softul de la Labtronics denumit Proteus Design Suite versiunea 8.8 licențiată. Proteus Design Suite este o suită de instrumente software de proprietate folosită în principal pentru automatizarea schemelor electronice. Software-ul este folosit în principal de către inginerii și tehnicienii de proiectare electronică pentru a crea și simula scheme și cablaje electronice pentru printare și fabricație. Software-ul este format din mai multe părți:
Schematic Capture – este utilizată atât pentru simularea proiectelor, cât și pentru faza de proiectare a unui proiect PCB; este o componentă de bază și este inclusă în toate configurațiile produsului.
Simularea microcontrolerului – funcționează prin aplicarea unui fișier hex la opțiunile microcontrolerului. Apoi se co-simulează împreună cu orice componentă electronică analogică și digitală conectată la ea. Acest lucru permite utilizarea acestuia într-un spectru larg de prototiparea oricărui circuit.
PCB Design – Modulul PCB Layout este dat automat informației de conectivitate sub forma unei liste de neturi din modulul de captură schematică. Aplică aceste informații, împreună cu regulile de proiectare specificate de utilizator și diferitele instrumente de automatizare a designului, pentru a ajuta la proiectarea plăcii fără erori. PCB-urile cu până la 16 straturi de cupru pot fi produse cu dimensiuni de proiectare limitate de configurația produsului.
3D Verification – Modulul 3D Viewer permite afișarea plăcii în curs de dezvoltare în 3D, împreună cu un plan de înălțime semi-transparent care reprezintă carcasa plăcilor. Ieșirea STEP poate fi apoi utilizată pentru a transfera software-ul CAD mecanic, cum ar fi Solidworks sau Autodesk, pentru montarea și poziționarea corectă a plăcii.
Am ales Proteus Design Suite deoarece este ușor de utilizat, conține majoritatea componentelor folosite în proiectul meu, circuitele se pot simula în timp real înainte de conectarea lor în viața reală, iar softul permite și proiectarea cablajului cât și vizualizarea sa în 3D.
Am început prin plasarea componentelor principale și vitale pentru funcționarea microcontrolerului precum cuarțul, schema de Reset cât și alimentările sale. Am continuat cu plasarea modulelor, interconectarea lor în modul corespunzător și a headerelor în același timp cu gândul de a-mi fi de folos atunci când voi proiecta cablajul nefiind nevoit sa lipesc modulele și senzorii direct de cablaj, ci printr-un conector. Rezultatul este vizibil în figura 3.1.
Figura 3.1 Proiectarea schemei în Proteus Design Suite
Pasul următor a fost de a crea un cablaj ținând cont de materialele și componentele pe care le-am avut la dispoziție în momentul respectiv.
Am început prin stabilirea parametrilor. Cablajul va avea o parte de componente pe zona numită „Top”, pe care vor fi plasați senzorii, microcontrolerul, componentele pasive cât și restul conectorilor necesari funcționării și o parte de cupru ce va conține trace-urile cât și pad-urile pe care vor fi lipite componentele numită „Bottom”.
După stabilirea acestor specificații am dimensionat fereastra de proiectare în care am trasat conexiunile și pus componentele. Primele componente pe care le amplasez sunt microcontrolerele; aleg să trasez la granița cablajului alimentările cât și masa deoarece acestea îmi sunt necesare tuturor componentelor. După acest pas am pus headerele de conectare pentru fiecare senzor, le alimentez corespunzător și le asigur conexiunea prin care acestea comunică. Deoarece cablajul meu are o singură parte de cupru, pentru realizarea conexiunilor ce se pot suprapune, voi folosii o bucată de fir pe partea cu componente pentru a asigura trecerea peste suprapuneri notată cu roșu în figura 3.2.
Figura 3.2 Cablajul finit în Proteus 8
Următorul pas este de a vizualiza schema finală în 3D, software-ul fiind capabil să genereze automat o astfel de versiune a circuitului, cu pachetele de încapsulare a fiecărei componente corespunzătoare, ca în figura 3.3.
Figura 3.3 Vizualizare frontală a circuitului în 3D
A urmat printarea și realizarea circuitului pe cablaj. Pentru acest lucru am folosit o coală lucioasă transparentă pe care am printat cu ajutorul unei imprimante laser, cablajul rezultat din Proteus PCB design (figura 3.4).
Figura 3.4 Cablajul printat cu laser pe o coală lucioasă transparentă
Mai departe din placa mare de cupru se taie un dreptunghi cu o dimensiune de aproximativ 15% mai mare decât cea printată. Aceasta se șlefuiește pentru eliminarea impurităților și se șterge cu diluant. Se pune coala lucioasă cu partea printată pe partea de cupru a plăcii tăiate. Se fixează de o parte și de alta cu doi clești puternici. Se aplică pe întreaga suprafață a foii transparente o sursă de căldură fiind presată pe placă. Temperatura ridicată are ca efect desprinderea printului de pe coala transparentă pe cuprul încins. După câteva minute, se ia cablajul și se bagă în apă ce provoacă desprinderea cu ușurință a plăcii de cupru de coala transparentă. Greșelile se repară cu un marker permanent (figura 3.5) iar cu un cilindru ascuțit se provoacă denivelări în locurile pentru gaură reprezentat în figura 3.6.
Figura 3.5 Repararea greșelilor
Figura 3.6 Denivelarea locurilor pentru găurit
După terminarea acestor pași, cablajul poate fi considerat gata pentru baia de decapare. Pentru acest pas într-un vas de plastic se pune o soluție corozivă pentru cupru; în cazul de față am folosit Clorură Ferică, și se lasă un timp de 30-50 minute la decapare, timpul fiind influențat de mărimea cablajului și grosimea cuprului (figura 3.7).
Figura 3.7 Procesul de decapare a cuprului
Următoarele operații sunt de curățare cu apă, inspectarea și repararea greșelilor, după care se trece la operația de găurire (figura 3.8).
Figura 3.8 Procesul de găurire a cablajului
Finisarea cablajului constă în aplicarea unui strat de sacâz peste conexiunile cablajului, urmând să fixez componentele cu fludor utilizând diverse metode de lipire precum pistolul de lipit sau aer cald. Rezultatul final este dat în figura 3.9. [C1]
Figura 3.9 Cablajul finalizat
3.1.3 Configurarea modulelor și modul lor de funcționare
Ideea acestui sistem a venit din nevoia de a avea un circuit prin care pot monitoriza și schimba valoarea de turație a unor ventilatoare, de a avea o alertă în caz de temperaturi peste nivelele admise ale componentelor cunoscute, pentru temperaturi și cerințe de răcire, cât și o transmisie la distanță prin intermediul internetului.
Dezvoltarea sistemului începe prin încercări ale codului ce presupunea un simplu program Arduino care afișează turația unui ventilator cuplat la un L293D, controlat de un potențiometru, și afișarea rezultatelor pe un Display LCD în format 16×2. Acest prim pas mi-a fost necesar pentru familiarizarea cu PWM-ul platformei Arduino, reglarea turației la ventilatoare cât și lucrul cu LCD-ul pe I2C și librăria acestuia. PWM-ul în Arduino este creat pe anumiți pini specializați ce pot realiza o formă de semnal PWM cuprinsă între 0 și 255 (adică 0%-100% factor de umplere). De asemenea librăria I2C pentru LCD permite cuplarea nu unui singur LCD cu acest modul, ci a mai multor LCD-uri datorită existenței adreselor ce se pot stabilii pe modulul I2C prin conectarea sau deconectarea pinilor de adresa. Acești pini sunt fizic pe modul, iar conectarea sau deconectarea acestora are ca efect schimbarea adresei de identificare pe busul I2C vizibil în figura 3.10. Controlul inițial l-am făcut prin citirea tensiunii provenită de la un potențiometru, ce reprezintă de fapt un divizor de tensiune, căruia i se poate regla valoarea rezistivă modificând astfel tensiunea pe care acesta o transmite către un port analogic al microcontrolerului. Această tensiune este citită între valorile 0-1024 iar cu ajutorul regulii de trei simple se poate face conversie către o valoare PWM.
Figura 3.10 Modificarea pinilor A0, A1, A2 la PCF8574 duce la modificarea adresei
Următorul pas îl reprezintă implementarea senzorilor de temperatură DS18B20. Am folosit acești senzori deoarece pe 3 conexiuni (GND,VCC și Data) pot conecta o mulțime de senzori. Lucrul acesta este datorat faptului că fiecare senzor de temperatură are propria sa adresă de identificare, așadar pentru 3 senzori am nevoie de 3 conexiuni, pentru 9 senzori am nevoie tot de 3 conexiuni etc.
Pornirea circuitului se face printr-un comutator ce pune în scurt două conexiuni de pe sursa de alimentare, PS-ON și GND ce semnalează sursei semnalul de pornire.
Accesul se face în mod obișnuit printr-o cartelă RFID unică dar se poate realiza și prin atașarea unor jumperi pe 2 pini lângă microcontrolerul Atmega 1284p. La un interval de timp Atmega 328p interoghează modulul MFRC522 dacă există o nouă cartelă în câmpul său de citire. Dacă există o cartelă microcontrolerul întreabă modulul ce mesaj a fost citit după cartelă, iar pe busul SPI modulul va trimite datele de identificare de la cartela citită. Datele acestea vor fi interpretate în două moduri:
dacă cartela este recunoscută, led-ul verde se va aprinde intermitent și accesul este permis, iar microcontrolerul trimite un mesaj prin UART lui Arduino Mega; acesta trimite la rândul său mai departe mesaj lui Atmega 1284. Acest mesaj semnalează pornirea sistemelor.
în cazul în care cartela nu este recunoscută, led-ul albastru se va aprinde intermitent după care va trece înapoi în starea roșu, caz în care microcontrolerul nu va trimite mai departe mesajul de pornire.
Ventilatoarele de 12V sunt alimentate direct prin semnal PWM de 12V de la tranzistori, ce sunt comandați la rândul lor din microcontrolerul Atmega 1284p. Ventilatoarele nu pot fi legate direct la semnalul PWM de la microcontroler deoarece acesta nu poate oferi o tensiune mai mare decât 5V; așadar semnalul este amplificat la 12V prin aplicarea semnalului PWM de 5V la baza tranzistorului TIP31C și ,,netezit,, cu ajutorul unor condensatoare.
Banda RGB funcționează similar ventilatoarelor de 12V, diferența fiind că acestea nu utilizează un curent așa de mare ca ventilatoarele. Rolul acestora este de aspect cât și de avertizare. Culoarea roșu va începe să pulseze din moment ce o valoare mare de temperatură este atinsă. În același timp un Buzzer va fi acționat la o frecvență de 1kHz pentru atenționare sonoră. Buzzerul are propriul său jumper și poate fi activat sau dezactivat.
Senzorul de sunet va fi activat în cazul în care modul de muzică va fi activat pe Interfața LCD. Acesta trimite un semnal HIGH sau LOW pe pinul său. Acest pin este citit de Atmega328p pe un pin digital și va genera un PWM pe o culoare. Acest proces se întâmplă repede așa că fiecare culoare se aprinde la un moment dat cu o anumită intensitate.
Ceasul de timp real furnizează data și ora curentă pentru sistem. Acestea sunt afișate pe LCD către utilizator prin busul I2C. Aceasta nu pierde datele deoarece alimentarea sa este realizată de o baterie de 3.3V.
Arduino Mega conține un shield de conversie pentru semnalele provenite de la un TFT LCD ce are în compoziția sa și un touchscreen. Acesta are ca rol interfațarea sistemului, precum și comanda acestuia. Prin el se pot accesa meniuri pentru vizualizarea și setarea datelor, diferite funcții și moduri ale sistemului. Aceste date vor fi partajate cu microcontrolerele prin UART. De asemenea, tot Arduino mega are rolul de a realiza conexiunea cu serverul web și transmiterea datelor sale mai departe prin modulul ESP8266.
Modulul ESP8266 primește comenzi pe una din intrările seriale ale Arduino Mega. Aceste mesaje sunt Comenzi AT. Fiecare comandă AT reprezintă o funcție sau un proces pe care acesta îl poate realiza. Printre comenzile sale principale putem enumera: conectarea la o rețea WiFi, formarea unei conexiuni TCP cu serverul dorit și transmiterea datelor după care conexiunea se întrerupe iar procesul de reconectarea cu serverul intră în vigoare.
3.2 Descrierea funcționării sistemului
Sistemul de față utilizează un Arduino Mega ca interfață și transmisie de date și două microcontrolere Atmega 1284p și 328p. Microcontrolerele sunt de obicei programate printr-un programator, cu excepția cazului în care pe microcontroler există un firmware care permite scrierea unui nou cod fără a avea nevoie de un programator ci doar de un modul ce poate comunica pe UART cu softul Arduino IDE. Pentru aceasta pe Atmega 1284p cât și pe 328p cu ajutorul unui Arduino Uno prescris dinainte cu un cod ISP (In-System-Programmer) se poate scrie bootloaderul pe cele două. Datorită popularității scăzute și lipsa de implementare mare a microcontrolerului Atmega 1284p de către fabricanții platformelor Arduino, bootloaderul acestuia este valabil doar pentru Arduino IDE versiunea 1.6.3. Programarea acestora se face pe rând prin plasarea lor pe un breadbord, cuplarea pinilor necesari la alimentare și masă cât și asigurarea ceasului extern. Ceasul extern este format dintr-un cuarț de 16MHz cuplat cu doi condensatori de o valoare de 22pF la masă, fiecare microcontroler având propriul său ceas de tact. Funcția de Reset a microcontrolerelor este garantată de un rezistor cu o valoare de 10kΩ conectat la VCC, ce poate fi declanșată prin apăsarea unui buton legat la masă. De asemenea un condensator ceramic de 0.1uF legat la masă asigură pe pinul AREFF a microcontrolerului o citire pe pinii analogici, fără zgomot.
Întregul sistem cu componentele sale este montat pe un geam Plexiglas. Sursa și cablajul sunt montate sub geamul plexiglas iar pe partea de sus se află display-ele, potențiometrele, senzorii, LED-urile și ventilatoarele (figura 3.11).
Figura 3.11 Sistemul montat pe plexiglas
Alimentarea tuturor componentelor este asigurată de către o sursă de calculator AIO (All In One) AC BEL PC9051 (figura 3.12) ce va putea furniza tensiunile de 3.3V, 5V și 12V la un curent cuprins între 2A și 11A. Tensiunea de 3.3V fiind necesară la modulul ESP 8266 și MFRC522 iar tensiunea de 12V pentru ventilatoare, 5V fiind necesară restului componentelor din circuit. Protecția la scurtcircuit este asigurată de două siguranțe fuzibile montate în serie cu tensiunile de 5V și 12V care sunt cele mai probabile la defecțiuni și erori umane. Comunicările principale folosite sunt UART, I2C, OneWire și SPI. Protocolul de comunicare principal fiind I2C și UART prin care LCD-urile 16×2 prin modulul I2C atașat vor afișa date de la Atmega1284p precum: Temperatură, Turație, Data și Oră. UART este folosit pentru programarea microcontrolerelor prin modulul FT232RL FTDI și pentru comunicarea între Arduino Mega și ESP8266, Atmega 1284p și Atmega328.
Figura 3.12 Alimentarea circuitului
Circuitul așteaptă confirmarea accesului prin cardul corespunzător, iar până atunci va afișa cu ajutorul TFT LCD și LCD 16×2 mesajul de a scana cardul precum este afișat în figura 3.13.
Figura 3.13 Mesajul afișat de sistem în repaus.
Sistemul este pornit de către un comutator, după care modulul MFRC522 va emite un semnal radio-frecvență de distanță scurtă, în momentul în care Atmega 328p îl interoghează. Acest semnal este recepționat de un card, în momentul în care cardul este la distanță scurtă de către emițător. Cardul are în compoziția sa o antenă din cupru înfășurată în formă ovală, în interiorul cardului, ce va capta semnalul trimis de emițător și va alimenta un integrat conectat la antenă, ce va transmite automat la rândul ei un semnal cu un cod de identificare. Codul de identificare recepționat va fi trimis către microcontrolerul Atmega 328p. Când microcontrolerul va detecta mesajul, el va decide dacă persoana respectivă are acces la sistem sau nu. Dacă persoana nu are acces microcontrolerul nu va trimite nici o comandă de pornire a sistemului iar un led RGB va porni culoarea albastru intermitent, de câteva ori, după care va trece înapoi în culoarea roșie. În cazul în care codul de identificare coincide cu unul din codurile scrise în cod, acesta va trimite un mesaj tuturor celorlalte microcontrolere de actualizare și pornire a sistemului, iar ledul RGB va pulsa culoarea verde pentru câteva secunde și va sta așa până la detectarea unui card fără acces sau până la resetarea sistemului (proces reprezentat în figura 3.14).
Figura 3.14 Accesul pe bază de RFID.
Îndată ce acest mesaj este recepționat de către Arduino Mega, acesta va trimite un mesaj de pornire și microcontrolerului Atmega 1284p, după care începe inițializarea modulului ESP8266. În acest timp pe LCD-ul TFT de 3.2 inch va fi afișat un mesaj în care utilizatorul este informat de procesul care se întâmplă (figura 3.15). Dacă modulul este conectat, iar comunicarea are loc fără erori, numărătoarea va deveni de culoare verde și își va continua cursul. În caz contrar, numărătoarea se va bloca sau se va reseta, va deveni de culoare roșie iar la 5 încercări nereușite sistemul va porni fără modul setat.
Figura 3.15 Procesul de inițializare ESP8266, cu modul conectat.
Modulul ESP8266 are înscris în memoria sa flash un firmware de recunoaștere a codurilor AT. Aceste coduri AT sunt mesaje ce pot fi recepționate pe UART și declanșează o serie de funcții. Arduino Mega va trimite inițial un mesaj de confirmare a existenței modulului pe serială, după care va aștepta un răspuns. Dacă răspunsul nu este recepționat un mesaj de eroare va fi trimis către utilizator prin LCD și o nouă încercare va avea loc. Dacă modulul răspunde și își confirmă existența, Arduino Mega va trimite inițial o cerere de resetare, apoi va seta modulul pe funcția client și va trimite comanda de conectare la rețeaua WiFi prestabilită. Dacă toți acești pași sunt îndepliniți LCD-ul va trece la meniul interfeței (figura 3.16) și ESP-ul va demara un proces repetitiv de conectare TCP către serverul dweet.io, pentru trimiterea de date și terminarea conexiunii.
Figura 3.16 Meniul Sistemului.
În acest timp Atmega 1284p va începe inițializarea proprie. Acesta va seta rezoluția senzorilor de temperatură și va trimite o cerere de temperatură către toți senzorii DS18B20 pe bus-ul OneWire. Senzorii vor primii mesajul de cerere împreună cu o adresă. Fiecare senzor conține o adresă proprie setată de fabricant de felul 8 biți CRC/ 48 biți număr de serie/ 8 biți cod de familie. În cazul în care senzorul își recunoaște adresa acesta va ieși din repaus, va citii temperatura și va trimite un mesaj înapoi la solicitant, ca răspuns, împreună cu adresa senzorului care a făcut citirea. Acest mesaj este afișat apoi pe un LCD 16×2, conectat la un modul I2C, cu o adresă proprie și afișată pe tot parcursul rulării (figura 3.17). Mesajul este apoi trimis mai departe către Arduino Mega prin UART împreună cu turația ventilatoarelor, starea de comandă în care se află și în acest caz, o detectare de temperatură ridicată. În acest moment Atmega se poate afla în trei stări: control al turației ventilatoarelor manual, la distanță sau automat. Acest control este stabilit de utilizator pe interfața care rulează pe Arduino Mega.
Figura 3.17 Afișarea celor trei temperaturi.
O opțiune a interfeței este setarea parametrilor. În acest submeniu se află trei slide-uri și cinci butoane (figura 3.18).
Figura 3.18 Subsistemul Parametrii.
Slide-urile se pot acționa de la valoarea 0% până la valoarea 100%, de către utilizator, prin intermediul touch-ului. Această valoare este trimisă mai departe microcontrolerului Atmega 1284p la apăsarea butonului R (Remote) unde valorile vor fi interpretate și generate ca semnal PWM către ventilatoare. Acest control reprezintă controlul la distanță al ventilatoarelor. În acest mod turația ventilatoarelor se poate face de către utilizator de la o turație mică la una mare. Turația lor se poate stabilii odată prin interfață sau la acționarea unui buton din interfață cu numele M (Manual) ce va declanșa o comandă de comutare de la setarea pe interfață a valorii turației la citirea a trei potențiometre legate la Atmega 1284p (figura 3.19) ce vor genera o tensiune între 0 și 5V, citită ca o valoare între 0 și 1023, valoare ce este convertită într-un semnal PWM cuprins între 0 și 255 (factor de umplere 0% și 100%).
Figura 3.19 Potențiometrele pentru controlul Manual.
Modul automat poate fi acționat la apăsarea unui buton în interiorul interfeței Parametrii cu numele Control (ce poate fi A sau M). La acționarea acelui buton, interfața va trece într-o altă afișare, unde se pot seta două valori prin două slide-uri; similar se poate face controlul la distanță al ventilatoarelor (figura 3.20).
Figura 3.20 Subsistemul Parametrii.
Turația va fi afișată mereu, în orice stare în care se află sistemul, pe LCD 16×2 ca în figura 3.21.
Figura 3.21 Afișarea turației ventilatoarelor.
După un anumit prag minim și prag maxim de temperatură se poate apăsa butonul A (Auto) iar un mesaj este transmis către Atmega 1284p ce va declanșa trecerea la modificarea automata a turației ventilatoarelor. În modul automat, Atmega 1284p decide, în funcție de acele praguri maxim și minim de temperatură, turația ventilatoarelor. În modul automat pe interfață vor apărea două slide-uri, unul fiind pragul maxim și unul minim (pragul maxim fiind cel de culoare roșie, iar cel minim de culoare albastră). În tot acest timp pe Atmega 1284p va rula un cod de constatare a temperaturii ridicate. În cazul în care temperatura depășește un grad ridicat de temperatură, utilizatorul va fi alertat prin LCD-ul 16×2 după care va trimite un semnal de alarmă către Arduino Mega și Atmega 328p cât și declanșarea unui buzzer cu un semnal intermitent de 1kHz. Primirea mesajului de alarmă va declanșa aprinderea intermitentă a culorii roșie pe banda RGB și ledul RGB controlată PWM de către Atmega 328p (figura 3.22) și trimiterea alertei prin Arduino Mega, odată pe internet prin dweet dar și pe LCD-ul 16×2. De îndată ce temperature scade sub pragul maxim admis, alerta va fi anulată, iar sistemul va anula măsurile de atenționare provocate.
Figura 3.22 Alertă prag maxim de temperatură depășit.
Controlul electric al ventilatoarelor cât și al benzii RGB este făcut cu ajutorul amplificării tranzistorilor. Pentru banda RGB, datorită consumului scăzut necesar sunt folosiți 3 tranzistori 2N2222 ce primesc la baza lor semnalul PWM ce vor provoca deschiderea și închiderea conexiunii către masa, banda RGB fiind conectată la +12V. În aceeași măsură sunt controlate și ventilatoarele cu mențiunea că datorită unui consum mai ridicat de curent, tranzistorii folosiți sunt TIP31C. Acest PWM poate fi vizualizat cu Osciloscopul DSO138 (figura 3.23), deoarece are o frecvență cuprinsă între 490 Hz și 1kHz fiind cu mult sub specificațiile Osciloscopului ce poate ajunge la o citire de 200kHz.
Figura 3.23 Semnalul PWM reprezentat pe Osciloscop al ventilatorului 2 – la o valoare de 67%.
Banda RGB, se poate seta prin interfață, la meniul RGB control, unde se află trei slide-uri, fiecare slide controlează o culoare roșu, verde și respectiv albastru și 5 butoane (C, O, M, S) (figura 3.24).
Figura 3.24 Meniul RGB Control.
Buton O (Off) setează toate culorile la 0 (adică stinse), în momentul acela nici un PWM nu mai este dat pe baza tranzistorului iar led-urile nu mai sunt alimentate.
Fiecare culoare poate fi setată prin slide-ul R, G sau B (Red, Green sau Blue), iar după setarea valorii la apăsarea butonului C (Color) sistemul va prelua culoarea setată (figura 3.25) și va rămâne în sistem, cât timp utilizatorul nu schimbă pe o altă opțiune; când un mesaj de temperatură ridicată este primit acesta are prioritate față de celelalte funcții și va începe pulsarea culorii roșu.
Figura 3.25 Setarea culorii prin meniul RGB Control.
În continuarea există butonul M (Music), ce utilizează senzorul de sunet FC-04 ce are rol de a aprinde și stinge led-urile la diferite valori de sunet. Senzorul de sunet are în circuitul său un potențiometru care reprezintă un reglaj al sensibilității. Acest potențiometru este, de fapt, un divizor de tensiune ce ridică sau coboară tensiunea ce pică pe un comparator. Acest circuit compară tensiunea provenită din sunetul captat de microfon și tensiunea de la potențiometru și va genera o tensiune, mare sau mică, ce reprezintă un 1 sau 0 văzut de Atmega328p. Această interogare este făcută de Atemga 1284p de 1000 de ori pentru fiecare culoare, iar cu cât rezultatul va fi 0 cu atât sistemul va genera un PWM mai mare ce va aprinde culoarea respectivă mai mult. Așa este generat efectul în care o anumită culoare se aprinde mai intens la un volum mai ridicat. Această rulare se poate vedea în figura 3.26, unde difuzorul din stanga emite sunete iar banda RGB reacționează după datele transmise de senzorul de sunet și prelucrate de microcontroler.
Figura 3.26 Opțiunea M pentru controlul RGB.
Ultima opțiune, care se poate regăsi în acest submeniu, este S (Spectrum). Această opțiune vrea să simuleze trecerea tuturor culorilor prin spectrul posibil RGB. Efectul nu este realizat atât de bine deoarece distanța dintre led-uri pe banda RGB este prea mare încât ochiul să fie păcălit în a crede că în loc de roșu și verde el de fapt ar vedea galben pur. Trecerea de la o culoare la alta se poate vedea în figura 3.27.
Figura 3.27 Opțiunea S pentru generarea mai multor culori utilizând RGB.
O altă informație pe care utilizatorul o poate solicita este timpul și data. Aceste date sunt citite de către Atmega 1284p prin intermediul modulului de Ceas în timp real DS1307. Ceasul/calendarul oferă informații cu privire la secunde, minute, ore, zi, dată, lună și an. El poate funcționa în format de 24 ore sau 12 ore cu indicatorul AM/PM. Modulul încorporează o intrare a bateriei și menține o întreținere precisă a timpului atunci când alimentarea principală a aparatului este întreruptă. Circuitul integrat de detectare-alimentare monitorizează continuu starea VCC pentru detectarea defecțiunilor de alimentare și trece automat la sursa de rezervă. La prima inițializare a modulului, un cod exemplu poate fi scris pe Arduino ce va seta data și timpul cu cel al calculatorului. După scrierea codului, modulul deja va menține automat datele cât timp acesta este alimentat de o sursă de energie. Datele primite după solicitarea microcontrolerului sunt citite din bus-ul I2C și transmise mai departe către un LCD 16×2 ce va afișa informația pe display (figura 3.28). Aceste date sunt în același timp trimise de Arduino Mega către site-ul Web Dweet.io.
Figura 3.28 Timpul și Data.
Ultimul submeniu este Stare Sistem, și în el se pot vedea de asemenea, temperaturile și turația ventilatoarelor. Pentru ca aceste informații să fie recepționate, Atmega 1284p trimite la un interval de timp un mesaj cu starea temperaturii (detectare temperatură ridicată), turația celor trei ventilatoare, precum și temperatura celor trei senzori și starea în care este sistemul (M, R, A). Arduino Mega primește aceste informații iar temperaturile și turațiile le afișează în meniul Stare Sistem. Acesta se poate vizualiza în figura 3.29 iar pentru ieșirea, înapoi la meniu există, există un Buton Înapoi.
Figura 3.29 Submeniul Stare Sistem.
Sistemul mai dispune și de trei riglete de conectori ce sunt lăsate la diverși pini ai microcontrolerului pentru implementarea mai multor funcții și dezvoltarea proiectului.
3.3 Interfața grafică pentru monitorizarea parametrilor online
Pentru monitorizarea online am ales serviciul de IoT (Internet of Things) oferit gratuit de către Dweet.io. Acest serviciu este ușor de implementat, rapid și nu necesită nici un fel de server propriu, cunoștințe de web design (HTML, CSS, Java, etc). Datele sunt transmise ca un șir de mesaje scurte ca un fel de tweet (de la twitter). Diferența constă în faptul că un tweet poate conține numai 140 de caractere, în timp ce un dweet poate primii un volum de 2000 de caractere. În afară de aceasta, este un serviciu absolut fără costuri, nu necesită înregistrare și nu este nevoie de chei API și altele pentru a-l utiliza.
Acest șir de caractere este trimis cu ajutorul modulului ESP8266 controlat de Arduino Mega, ce comunică printr-un port UART comenzi AT către modul (figura 3.30).
Figura 3.30 Comunicare Arduino Mega și ESP8266.
Un exemplu de comunicare pentru trimiterea unui mesaj pe dweet se poate vedea în figura 3.31.
Figura 3.31 Trimitere mesaj AT și primire răspunsul primit.
Datele odată ajunse pe site-ul dweet sunt stocate 24h sau până când un număr mare de date le va prescrie pe cele existente.
Pentru crearea unei interfețe mai plăcute am utilizat site-ul freeboard.io. Rolul interfeței Freeboard în toate acestea este de a aduna aceste "dweets" și de a le prezenta în formă de grafice, text și lumini.
Mesajele sunt transmise de ESP8266 și preluate din forma de Dweet (figura 3.32) și atribuite interfeței create în freeboard în figura 3.33.
Figura 3.32 Formatul mesajului trimis pe Dweet.io
În interfața din figura 3.33 avem trei coloane și trei linii dintre care:
prima coloană și primul rând indică dacă accesul sistemului este acordat sau nu, împreună cu timpul și data;
cea de-a doua coloană și al doilea rând ne arată consumul, starea microcontrolerului Atmega 1284p, detectarea de temperatură ridicată și starea microcontrolerului Atmega 328p;
ultima coloană și ultima linie avem datele primite de la senzorii de temperatură, precum și turația ventilatoarelor în format text și grafic.
Figura 3.33 Afișarea valorilor online pe freeboard.io
Aceste valori se actualizează aproape în timp real, fiind influențat de viteza și semnalul rețelei WiFi, și starea sistemului, însă estimativ un dweet se face la 2-3 secunde.
Capitolul 4 – Rezultate și concluzii
Proiectul realizat reprezintă un sistem complex, ușor de utilizat și implementat, datorită popularității Arduino cât și simplității în folosire, dezvoltare și realizare.
Proiectul poate fi dezvoltat, momentan fiind liberi un număr de 23 de pini ce pot fi conectați prin riglete la alți senzori cum ar fi: de lumină, umiditate, gaz, etc.
Utilizarea mai multor procesoare duce la o creștere secvențială a puterii de procesare deoarece unele funcții precum controlul RGB, transmisia datelor pe internet și recunoașterea atingerii de către touch sunt procese ce trebuie rulate în timp real și nu permit întârzieri, motiv pentru care au fost împărțite în mai multe microcontrolere diferite.
Senzorii DS18B20 deși au o acuratețe bună se poate vedea că există o eroare de 0.250C între ei (figura 4.1).
Figura 4.1 Eroare de 0.250C la senzorul T3
Ventilatoarele deși controlate prin tensiune nu pot fi controlate de la 0 la 100% deoarece mecanic nu este posibil ca un ventilator să plece cu o tensiune cuprinsă între 0 și 5V, dacă el este gândit la 12V, însă este posibilă menținerea unei turații în zona de tensiune joasă atunci când acestea sunt deja în mișcare.
Principalele avantaje ale sistemului sunt:
afișarea online foarte ușor de realizat;
controlul și meniul prietenos;
datele sunt afișate în mai multe feluri și cu o acuratețe bună;
sistemul poate suporta ventilatoare de un curent mai mare de 2A și 12V;
plăcut de vizualizat cu diferite efecte luminoase;
controlul ce poate fi personalizat de utilizator.
Bibliografie
Cărți, articole de specialitate, lucrări de licență/disertație
https://www.quora.com/Why-do-electronics-heat-up-when-in-use-How-is-the-heat-managed
https://www.mccdaq.com/Blog/2018/02/01/what-is-data-acquisition/
https://en.wikipedia.org/wiki/Pulse-width_modulation
https://en.wikipedia.org/wiki/RGB_color_model
https://www.zdnet.com/article/what-is-the-internet-of-things-everything-you-need-to-know-about-the-iot-right-now/
https://dweet.io/
https://www.arduino.cc/en/Main/ArduinoBoardMegaADK?from=Main.ArduinoBoardADK
https://ww1.microchip.com/downloads/en/DeviceDoc/doc8059.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
https://cdn.sparkfun.com/datasheets/Wireless/WiFi/ESP8266ModuleV1.pdf
https://www.4project.co.il/documents/doc_6778_5803.pdf
http://www.mantech.co.za/datasheets/products/lcd2004-i2c.pdf
https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
https://datasheets.maximintegrated.com/en/ds/DS1307.pdf
https://www.tek.com/sites/default/files/courseware/Sound_Sensor_Module.pdf
https://www.onsemi.com/pub/Collateral/P2N2222A-D.PDF
https://www.sparkfun.com/datasheets/LCD/ADM1602K-NSW-FBS-3.3v.pdf
http://www.arduinotehniq.com/old/led/led.htm
http://anleitung.joy-it.net/wp-content/uploads/2017/01/DSO-138-English.pdf
https://www.xppower.com/Portals/0/brochures/XP_CAT18-19.pdf
https://www.st.com/resource/en/datasheet/tip31c.pdf
https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf
https://5.imimg.com/data5/XL/VE/MY-1833510/ft232rl-usb-to-ttl-5v-3-3v-convertor.pdf
Arduino
http://www.imperialjournal.com/wp-content/uploads/2017/08/2-3.pdf
Traian Anghel, Programarea Plăcii Arduino, Editura Paralela 45, 2016;
Arduino pentru începători, Editura Robofun.ro;
Rajkumar Buyya, Amir Vahid Dastjerdi, Internet of Things: principles and paradigms, Editura Elsevier, 2016.
Anexa 1 – Cod sursă Arduino
Pentru Atmega328p codul rulează în felul următor în buclă, unde SerialRead(), este funcția în care se citește mesajul venit de la Arduino Mega, RGB_OFF() este funcția care stinge toate led-urile, RGB_Spectrum este funcția în care culorile RGB simulează o trecere prin toate culorile spectrului RGB, funcția Music() aprinde și stinge led-urile după sunet, HighTempWarning() este alarma de temperatură ridicată ce aprinde culoarea roșu intermitend, ReadTheRFID() citește cartela RFID iar Serial_Message() trimite mesaj către Arduino Mega.
void loop() {
//Variabilă pentru întârziere a trimiterii mesajului
Send_Message++;
//Se așteaptă citirea cartelei corecte
if(RFID==0){
//Citirea RFID propriu zisă
ReadTheRFID();
delay(100);
//Funcție de stingere al LED-urilor și benzii de LED
RGB_OFF();
digitalWrite(LED_R, HIGH);
digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW);
//Trimiterea mesajului cu o întârziere foarte mică
if(Send_Message > 20){
SerialMessage();
Send_Message=0;
}
//În cazul citirii carteleo crecte
}else {
//Se citește seriala
SerialRead();
//Se aprinde LED-ul Verde
digitalWrite(LED_R, LOW);
digitalWrite(LED_G, HIGH);
digitalWrite(LED_B, LOW);
//Se detectează starea sistemului, funcția care este provenită din SerialRead
if(Light==0){
//LED-urile sunt stinse
RGB_OFF();
SerialRead();}
else if(Light==1){
//Funcția de Afișare a culorile din spectrumul RGB
RGB_SPRECTRUM();
SerialRead();}
else if(Light==2){
//Funcția pentru aprinderea LED-urilor după muzică
Music();
SerialRead();}
else if(Light==3){
//Detectarea temperaturii mari
HighTempWarning();
SerialRead();}
else if(Light==4){
SerialRead();}
else {
RGB_OFF();
SerialRead();
}
//Se citește din nou modulul RFID și se trimite rezultatul
ReadTheRFID();
if(Send_Message > 90){
SerialMessage();
Send_Message=0;
}
}
}
Pentru cel de-al doilea circuit, Atmega 1284p avem următorul cod în buclă unde are loc pornirea celorlalte două LCD-uri 16×2, primele trei funcții afișează Temperatura, Timpul cu Data și Turația pe fiecare LCD 16×2 în parte. Detectarea de Temperatură mare se face cu HighTempDetect iar messajul către Arduino Mega este trimis cu SerialMessage. Recepția comenzilor și a datelor se face cu ReadSerial. Cele trei funcții cu ManuaFanControl, ManualFanControlRemote și AutomaticFanControl reprezintă cele trei stări de control în care sistemul se poate afla.
void loop() {
//Pornire lcd1 și lcd3
lcd1.backlight();
lcd3.backlight();
//Afișare date pe LCD-uri
AfisareTempLcd();
AfisareTimpLcd();
AfisareVentilatoare();
//Detectare temperatură mare
HighTempDetect();
//Trimitere date către Arduino Mega
SerialMessage();
//Alertă Buzzer în caz de temperatură ridicată
if (HighTemp!=0) AlertBuzzer();
//Se alege Starea sistemului, funcțiile provenite din SerialRead
if (Control==0){
//Controlul prin potențiometre al ventilatoarelor
ManualFanControl();
ReadSerial();
} else if(Control==1){
ReadSerial();
//Controlul prin LCD setat de utilizator
ManualFanControlRemote();
} else if (Control==2) {
ReadSerial();
//Controlul Automat cu praguri de minim și maxim
AutomaticFanControl();
}
}
Pentru Arduino Mega codul în buclă este SerialRead care citește mesajele provenite de la celelalte două microcontrolere, Touch care citește atingerile pe ecranul TFT LCD, AfisareTemp și Afisare Turatie afișează temperatura și turația în submeniul Stare Sistem, ESP_CODE reprezintă transmisia mesajelor pe Dweet și Detectarea de temperatură ridicată. Comenzile precum și afișările pe TFT LCD se fac în void setup și Touch.
void loop() {
//Citire serială
SerialRead();
//Citire Touch
Touch();
//Afișare temperatură și Turație
AfisareTemp();
AfisareTuratie();
//Trimitere date pe Dweet
ESP_CODE();
//Detectare temperatură ridicată și trimitere alertă către Atmega 328p
if(HighTemp1!=0){
Atmega328Light();
ResetLight=0;
} else { ResetLight++; if(ResetLight==1) Atmega328Light();}
}
Anexa 2 – Cod sursă Dweet
Codul pentru transmiterea pe Dweet ESP_CODE().
Structura fișierului HTML conține în primele linii de cod stilul aplicat paginii web. În acest stil am realizat împărțirea paginii web în trei coloane (Date senzori, Consum Apă, Consum Energie), prin împărțirea la 3 și alocând astfel un spațiu egal pentru fiecare dintre acestea. Am aplicat codurile de culoare pentru realizarea interfeței (galben titluri, albastru fundal, alb pentru date).
//Realizare conexiune cu server TCP
String TARGET_ID="0";
String TARGET_TYPE="TCP";
String TARGET_ADDR="www.dweet.io";
String TARGET_PORT="80";
String cmd="AT+CIPSTART=" + TARGET_ID;
cmd += ",\"" + TARGET_TYPE + "\",\"" + TARGET_ADDR + "\"";
cmd += ","+ TARGET_PORT;
Serial.println(cmd);
ESP8266.println(cmd);
//Delaz de 500ms în care va funcționa touchul în continuare
for (Wait=0;Wait<500;Wait++){
delay(1);
Touch();
SerialRead();
}
//Șterge date din Buffer-ul ESP
clearESP8266SerialBuffer();
//Formare messaj pentru trimitere date
String DweetMethod = "GET";
String DweetHost = "/dweet/for/";
String DweetThingName = "BSAD";
String DweetKeyHighTemperature = "HighTemperature";
String DweetKeyTemperature1 = "Temperature1";
String DweetKeyTemperature2 = "Temperature2";
String DweetKeyTemperature3 = "Temperature3";
String DweetKeyFan1 = "Fan1";
String DweetKeyFan2 = "Fan2";
String DweetKeyFan3 = "Fan3";
String DweetKeyAcces = "Acces";
String DweetLight = "Light";
String DweetKeyControl = "Control";
String DweetKeyTimp = "Time";
String DweetKeyData = "Date";
String DweetVal1 = "world";
String DweetHttp = "HTTP/1.1";
String Dweet_2ndLine = "Host: dweet.io:80\r\n\r\n";
String HTTP_RQS = DweetMethod;
HTTP_RQS += " " + DweetHost + DweetThingName;
HTTP_RQS += "?" + DweetKeyHighTemperature + "=" + HighTemp1;
HTTP_RQS += "&" + DweetKeyTemperature1 + "=" + T1;
HTTP_RQS += "&" + DweetKeyTemperature2 + "=" + T2;
HTTP_RQS += "&" + DweetKeyTemperature3 + "=" + T3;
HTTP_RQS += "&" + DweetKeyFan1 + "=" + V1;
HTTP_RQS += "&" + DweetKeyFan2 + "=" + V2;
HTTP_RQS += "&" + DweetKeyFan3 + "=" + V3;
HTTP_RQS += "&" + DweetKeyAcces + "=" + RFID2;
HTTP_RQS += "&" + DweetLight + "=" + Light;
HTTP_RQS += "&" + DweetKeyControl + "=" + Control;
HTTP_RQS += "&" + DweetKeyTimp + "=" + timp;
HTTP_RQS += "&" + DweetKeyData + "=" + data;
HTTP_RQS += " " + DweetHttp + "\r\n";
HTTP_RQS += Dweet_2ndLine;
//Se trimit datele către modul
String cmdSEND_length = "AT+CIPSEND=";
cmdSEND_length += TARGET_ID + "," + HTTP_RQS.length() +"\r\n";
ESP8266.print(cmdSEND_length);
Serial.println(cmdSEND_length);
//Același delay de 500ms
for (Wait=0;Wait<500;Wait++){
Touch();
delay(1);
SerialRead();
}
for (Wait=0;Wait<500;Wait++){
delay(1);
Touch();
SerialRead();
}
//Se închide conexiunea TCP cu server
String cmdCIPCLOSE = "AT+CIPCLOSE=" + TARGET_ID;
ESP8266.println(cmdCIPCLOSE);
for (Wait=0;Wait<500;Wait++){
Touch();
delay(1);
SerialRead();
}
}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicaţii pentru sistemul de viziune compact [303721] (ID: 303721)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
