Specializarea: Tehnologii și Sisteme de Telecomunicații [620397]

Universitatea Tehnică “Gheorghe Asachi” din Iași
Facultatea de Electronică, Telecomunicații și Tehnologia Informației
Specializarea: Tehnologii și Sisteme de Telecomunicații

Sistem de monitorizare a
temperaturii și a umidității

Coordonator,

Prof. dr. ing. Tărniceriu Daniela

Absolvent: [anonimizat]
2020

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
2

Cuprins
1. Memoriu Justificativ ………………………….. ………………………….. ………………………….. ………………………… 4
2. Limbaje de dezvoltare ………………………….. ………………………….. ………………………….. ………………………….. . 5
2.1 Introducere ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. . 5
2.3 Arduino ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. ……. 5
3. Descrierea generala a componentel or hardware utilizate ………………………….. ………………………….. ……. 6
3.1 Senzori ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. …….. 6
3.1.1 Introducere ………………………….. ………………………….. ………………………….. ………………………….. ………… 6
3.1.2 Senzor ul de temperatură și umiditate DHT11 ………………………….. ………………………….. ………………… 7
3.2 Buzzer piezoelectric ………………………….. ………………………….. ………………………….. ………………………….. ……………… 11
3.2.1 Introducere ………………………….. ………………………….. ………………………….. ………………………….. ………. 11
3.2.2 Funcționarea buzzer -ului ………………………….. ………………………….. ………………………….. ……………….. 13
3.3 LCD 1602A ………………………….. ………………………….. ………………………….. ………………………….. …………………………. 14
3.4 Potențiometru 3296 ………………………….. ………………………….. ………………………….. ………………………….. ……………… 16
3.5 Sisteme înglobate (sisteme embedded) ………………………….. ………………………….. ………………………….. ………………… 18
3.5.1 Introducere ………………………….. ………………………….. ………………………….. ………………………….. ………. 18
3.5.2 Familii de Microcontrolere reprezen tative ………………………….. ………………………….. …………………….. 23
3.5.3 Placa de dezvoltare Arduino Uno R3 ………………………….. ………………………….. ………………………….. .. 25
3.5.4 Microcontrolerul ATMEL ATMega 328P ………………………….. ………………………….. …………………….. 27

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
3
3.6 Protocoale de comunicare ………………………….. ………………………….. ………………………….. ………………………….. …….. 29
3.6.1 Comunicarea serială UART ………………………….. ………………………….. ………………………….. ……………. 29
4. Descrierea sistemului Hardware ………………………….. ………………………….. ………………………….. ………….. 30
4.1 Descrierea componentei Arduino ………………………….. ………………………….. ………………………….. ………………………. 30
4.2 Modul de asamblare ………………………….. ………………………….. ………………………….. ………………………….. …………….. 31
5. Prez entarea componentelor software ………………………….. ………………………….. ………………………….. …… 35
5.1 Programul Arduino ………………………….. ………………………….. ………………………….. ………………………….. ……………… 35
6. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ………………… 43
7. Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. …………….. 44
8. Rezumat ………………………….. ………………………….. ………………………….. ………………………….. …………………. 45
9. Anexe ………………………….. ………………………….. ………………………….. ………………………….. …………………….. 46
9.1 Cod sursă Arduin o ………………………….. ………………………….. ………………………….. ………………………….. ………………. 46

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
4
1. Memoriu Justificativ

Adesea, climatul interior este considerat un moft neimportant, o fiță. Dar situația nu e chiar
așa, deoarece ne afectează calitatea vieții și bunăstarea zilnică. Mai mult, un climat interior
nepo trivit poate duce chiar la probleme de sănătate grave. Cei mai importanți factori pentru
determinare calității climatului interior sunt temperatura și umiditatea. Dacă temperatura se simte
la nivelul pielii imediat, umiditatea se resimte doar în situații e xtreme.

Temperatura camerei se poate schimba atunci când temperatura exterioară crește sau scade.
Dar lumina directă a soarelui sau soluțiile de control a temperaturii pot influența, de asemenea,
temperatura din cameră. E ste adevărat că putem acționa acti v și asupra umidității, însă asta se
întâmplă mai rar, deoarece, neputând percepe nivelul de umiditate din încăpere, avem nevoie de
aparate de măsurare a umidității (de exemplu, un termostat cu higrometru). Dacă umiditatea nu
este evaluată și umiditatea di n cameră este prea mică, ne simțim inconfortabil. Dacă umiditatea
din cameră este prea mare, începem să transpirăm mai mult. Așadar, pentru a petrece ziua într -un
climat interior sănătos și plăcut, cel mai bine este să monitorizăm zilnic atât temperatura, cât și
umiditatea.

Cu ajutorul sistemelor de masurare inteligente, umiditatea și temperatura sunt monitorizate
constant, iar odată depășite valorile optime setate individual pentru fiecare încăpere, avertizează
utilizatorul că trebuie să ia măsurile neces are pentru creșterea sau scăderea umidității și/sau
temperaturii.

Am ales să abordez tema ,,Sistem de monitorizare a temperaturii și umiditaț ii‟‟ deoarece am
vrut să am co ntrol asupra ambientului locuinței ș i pentru a pastra o valoare optima potrivită și
care să mă facă să mă simt confortabil. Ca toate lucrurile din viața noastră, moderația este cea
mai sănătoasă, este idealului în climatul interior, cu efect pozitiv asupra bunăstării și sănătății
noastre. Extremele, cum ar fi o umiditate/temperatura deose bit de ridicată sau o
umiditate/temperatura deosebit de scăzută, ne afectează negativ sănătatea și ne fac șederea în
cameră neplăcută. Tot în aceeași măsura mi -am dorit să invăț și să stăpânesc să lucrez cu limbajul
de programare C/C++ pentru Arduino.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
5

2. Limbaje de dezvoltare
2.1 Introducere

Arduino este o platformă electronică open -source bazată pe hardware și software ușor de
utilizat. Plăcile Arduino sunt capabile sa citească intrări – lumina pe un senzor, un deget pe un
buton sau un mesaj Twitter – și să le transforme într -o ieșire – activarea unui motor, comutarea
unui LED, publicarea a ceva online. Puteți spune echipei dvs. ce să facă prin trimiterea unui set
de instrucțiuni către microcontrolerul de pe placă. Pentru a face acest lucru, utilizați limbajul de
programare Arduino (bazat pe cablare) și software -ul Arduino (IDE), bazat pe procesare.

În timp, Arduino a fost creierul a mii de proiecte, de la obiecte de zi cu zi la instrumente
științifice complexe. O comunitate mondială de producători – studenți, pasionați, artiști,
programatori și profesioniști – s-au adunat în jurul acestei platforme open source, contribuțiile lor
adăugându -se la o cantitate incredibilă de cunoștințe accesibile, care pot fi de mare ajutor atât
pentru începători, cât și pentru experți.

Arduino s -a născut la Ivrea Interaction Design Institute ca un instrument ușor de prototipare
rapidă, destinat studenților fără un background în electronică și programare. De îndată ce a ajuns
la o comunitate mai largă, placa Arduino a înc eput să se schimbe pentru a se adapta la noile nevoi
și provocări, diferențiind oferta sa de la plăcile simple pe 8 biți până la produsele pentru aplicații
IoT, portabile, imprimare 3D și medii încorporate. Toate plăcile Arduino sunt complet deschise,
oferind utilizatorilor posibilitatea de a le construi în mod independent și, eventual, de a le adapta
la nevoile lor specifice. Software -ul, de asemenea, este open -source, și este în creștere, prin
contribuțiile utilizatorilor din întreaga lume.

2.3 Arduino

Datorită experienței sale simple și accesibile de utilizare, Arduino a fost utilizat în mii de
proiecte și aplicații diverse. Software -ul Arduino este ușor de utilizat pentru începători, dar
suficient de flexibil pentru utilizatorii avansați. Acesta ruleaz ă pe Mac, Windows și Linux.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
6
Profesorii și elevii îl folosesc pentru a construi instrumente științifice ieftine, pentru a dovedi
principiile chimiei, fizicii sau a începe cu programarea și robotica. Designeri și arhitecți
construiesc prototipuri interactive , muzicieni și artiști îl folosesc pentru instalații și pentru a
experimenta noi instrumente muzicale. Producătorii, desigur, îl folosesc pentru a construi multe
dintre proiectele expuse la Maker Faire, de exemplu. Arduino este un instrument cheie pentru a
învăța lucruri noi. Oricine – copii, pasionați, artiști, programatori – poate începe să meșterească
doar urmând instrucțiunile pas cu pas ale unui kit, sau să împărtășească idei online cu alți membri
ai comunității Arduino .

3. Descrierea generala a compo nentelor hardware utilizate

3.1 Senzori
3.1.1 Introducere
Senzorul este un dispozitiv tehnic care reacționează calitativ sau cantitativ prin proprii
mărimi măsurabile, la anumite proprietăți fizice sau chimice ale mediului din preajma lui. Ca
parte compon entă a unui aparat sau sistem tehnic detector poate măsura/înregistra de exemplu
presiunea, umiditatea, câmpul magnetic, accelerația, forța, intensitatea sonoră, radiații ș.a.
Provine din latină: sensus = simț.

Senzorul este un dispozitiv care măsoară o m ărime fizică (masă, presiune, temperatură,
umiditate etc.) și o transformă într -un semnal care poate fi citit de către un observator printr -un
instrument sau poate fi prelucrat.

Exista mai multe clasificări; una dintre ele se referă la senzori de tip:
Activ: consumator de energie, de exemplu radar (măsurarea distanțelor prin emitere de
radiații electromagnetice)
Pasiv: de exemplu fotorezistența cu care se poate măsura intensitatea luminii incidente.
În automatizare, informația calitativă/cantitativa măsura bilă livrată de senzori, dupa o eventuală
amplificare și prelucrare servește la controlul și reglarea sistemelor tehnice automate.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
7

3.1.2 Senzorul de temperatură și umiditate DHT11

Umiditatea este cantitatea de vapori de apă conținută într -un volum de aer. Există trei moduri
de a exprima umiditatea:
 miditatea absolută care este cantitatea de vapori de apă (în grame) conținută intr -un volum
de aer egal cu unitatea;
 umiditatea relativă (abreviat RH) care este raportul dintre presiunea parțială a vaporilo r de
apă în condițiile date și presiunea parțială a vaporilor in condiții de echilibru, la aceeași
temperatură. Umiditatea relativă depinde de temperatură și presiune;
 umiditatea specifică;
DHT11 masoara umiditatea relativa. Umiditatea relativă este cantit atea de vapori de apă din
aer față de punctul de saturație al vaporilor de apă din aer. La punctul de saturație, vaporii de apă
încep să se condenseze și se acumulează pe suprafețe formand roua.
Punctul de saturație se modifică odată cu temperatura aerului . Aerul rece poate ține mai puțin
vapori de apă înainte ca acesta să devină saturat, iar aerul cald poate menține mai multă vapori de
apă înainte ca acesta să se satureze.
Cantitatea de vapori de apă ce poate fi reținută în aer este în funcție de temperatu ra acestuia.
Cu cât temperatura aerului este mai mică, cu atât acesta poate reține o cantitate mai mică de
vapori de apă. Surplusul de vapori care nu se poate absorbi și reține în aerul locuinței se depune
pe elementele interioare mai reci, sub formă de pi cături numite condens.

HARDWARE SI PRINCIPII DE FUNCTIONARE A SENZORULUI DHT11

Senzorul de umiditate și temperatură DHT11 este alcătuit din 3 componente principale. Un
senzor de umiditate tip rezistiv, un termistor NTC (temperatură negativă) pentru măsur area
temperaturii și un microcontroler pe 8 biți, care convertește semnalele analogice de la ambii
senzori și transmite la iesire un semnal digital unic.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
8

Figura 1. Senzorul DHT11

Caracteristici tehnice:
-Tensiune de alimentare: 3.3V – 5V;
-Curent: 2 .5mA (maxim);
-Gama de măsurare a umidității: 20% – 95% RH;
-Acuratețea măsurării umidității: ±5% RH;
-Gama de măsurare a temperaturii: 0 °C – 60 °C;
-Acuratetea măsurării temperaturii: ±2 oC;
-Nu funcționează sub 0°C.

DHT11 măsoară umiditatea relativă di n aer prin determinarea rezistenței electrice dintre doi
electrozi aplicați pe un substrat care menține umiditatea, formând împreună componenta de
detectare a umidității. Când sunt absorbiți vaporii de apă, condesați pe substrat, acesta eliberează
ioni, ce ea ce mărește conductivitatea dintre electrozi. Schimbarea rezistenței dintre cei doi
electrozi este invers proporțională cu umiditatea relativă. Umiditatea relativă mai mare scade

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
9
rezistența dintre electrozi, în timp ce umiditatea relativă mai mică crește rezistența dintre
electrozi.
DHT11 măsoară temperatura cu un senzor de temperatură NTC (termistor) montat pe
suprafață, si integrat în unitate.
Un termistor este un rezistor variabil care își modifică rezistența în funcție de temperatură.
Termistorul este construit din materiale semiconductoare (ceramică sau polimeri) pentru a
asigura o variație mare a rezistenței la o modificare mică a temperaturii. Termenul "NTC" vine de
la “Negative Temperature Coefficient” care înseamnă ca rezistența scade cu creșterea
temperaturii.

TRANSMITEREA DATELOR DE LA SENZORUL DHT11

Figura 2. Componentele senzoriale ale DHT11

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
10

Figura 3. Microcontrolerul din interiorul DHT11

DHT11 utilizeaza un singur fir pentru a transmite date catre un microcontroler. Este
necesara conec tarea unui rezistor de 10K Ohm intre linia de date si cea de alimentare cu 5V
Toți senzorii DHT11 sunt calibrați cu exactitate în laborator și rezultatele sunt stocate în
memorie. O comunicație cu o singură fire poate fi stabilită între orice microcontrole r precum
Arduino și senzorul DHT11.
De asemenea, lungimea cablului poate fi de 20 metri. Datele din senzor constau din părți
integrale și zecimale atât pentru umiditatea relativă (RH) cât și pentru temperatura.
Datele din senzorul DHT11 sunt compuse din 40 biți și formatul este după cum urmează:
 8 biti de date pentru valoarea RH integrala;
 8 biti de date pentru valoarea RH zecimala;;
 8 biti de date pentru valoarea integrala a temperaturii;
 8 biti de date pentru valoarea zecimala a temperaturii;
 8 biti de da te pentru suma de control.

Mai întâi, A rduino trimite un semnal de început de la DHT11 cu un timp de întârziere de
18μs pentru a asigura detectarea DHT -ului. Apoi arduino trage linia de date și așteaptă 20 -40μs

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
11
pentru răspunsul DHT. Odată ce detectează DH T începe semnal, acesta va trimite un semnal de
răspuns de nivel scăzut de ten siune la A rduino de întârziere de timp aproximativ 80μs. Apoi,
controlerul DHT trage linia de date și o păstrează timp de 80μ s pentru organizarea trimiterii de
date de către DHT.
Când magistrala de date este la nivel de tensiune scăzută, înseamnă că DHT11 trimite semnal
de răspuns. Odată ce aceasta este terminată, DHT face din nou o linie de date pentru 80μs pentru
pregătirea transmisiei de date.
Formatul de date care este trimis de DHT către arduino pentru fiecare bit începe cu un nivel de
tensiune scăzut de 50μ și lungimea semnalului de înaltă tensiune determină dacă bitul de date
este "0" sau "1".

3.2 Buzzer piezoelectric
3.2.1 Introducere

Buzzer este un fel de receptor de sunet electronic cu structură integrată. Este utilizat pe
scară largă ca dispozitiv vocal în produse electronice, cum ar fi calculatoare, imprimante, aparate
de copiat, aparate de alarmă, jucării electronice, dispozitive electronice auto, telefoane etc.
Buzzer este un fel de dispozitiv vocal. Este realizat din dispozitiv de vibrații și rezonanță.
Conform diferenței de metodă de control, putem împărți soneria în tip activ și tip pasiv.

Figura 4. Buzzer piezoelectric

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
12
Iată principiul de funcționare al buzz erului activ: Deoarece buzzerul activ are un circuit de
eșantionare amplificată și un sistem de rezonanță integrat, atunci când intrarea de alimentare DC
trece prin buzzerul activ, acesta va face ca dispozitivul de rezonanță să genereze semnal sonor.
Putem vedea diagrama schematică de mai jos pentru principiul de funcționare al buzzerului activ:

Figura 5. Principiul de functionare al buzzerului

Principiul de lucru al soneriei pasive este: Când semnalul de undă pătrată trece prin sonerie,
dispozitivul s ău de rezonanță va transforma intrarea semnalului de undă pătrată în ieșire a
semnalului sonor. Mai jos este diagrama schematică pentru principiul de funcționare al soneriei
pasive:

Figura 6. Principiul de functionare al soneriei

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
13
3.2.2 Funcționarea bu zzer-ului

Buzzer -ul piezoelectric este un element care supus unei tensiuni generează un semnal sonor
de un anume frecvență. Comanda unui astfel de element se face prin generarea unui
semnal dreptunghiular de comandă. O astfel de comandă se poate genera prin intermediul
comenzii PWM dar lucrarea de față nu va apela la nici una din facilitățile PWM (software sau
hardware) puse la dispoziție de placa Arduino. Se va utiliza un pin de ieșire digitală oarecare care
va genera un semnal logic ” 1” pentru o anumită durată de timp influențând astfel frecvența
semnalului sonor emis de buzzer. Pentru a putea implementa o comandă suficient de rafinată
(redarea unor note muzicale de exemplu) trebuie să cunoaștem durata semnalului logic ”1” care
va constitui comanda generată de placa Arduino.

Noțiuni generale de teorie muzicală

Notele muzicale Fiecare notă de pe portativ are numele ei. Astfel muzicienii știu ce
notă să cânte. Primele 7 litere din alfabet (A, B, C, D , E, F, G) sunt folosite (în notația
internațională) pentru numirea notelor. Mai jos este un tabel cu frecvențele pr incipalelor
note muzicale și cu durata comenzii necesare .

Figura 7. Frecventa si durata notelor muzicale

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
14
3.3 LCD 1602A

Aceste LCD -uri sunt ideale pentru afișarea numai a textului / caracterelor, de unde și
denumirea „LCD cu caractere”. Afișajul are o lumină de fundal cu LED și poate afișa 32 de
caractere ASCII în două rânduri cu 16 caractere pe fiecare rând.
Se pot v edea micile dreptunghiuri pentru fiecare caracter de pe ecran și pixelii care alcătuiesc
un caracter. Fiecare dintre aceste dreptunghiuri este o grilă de 5 × 8 pixeli.Deși afișează doar text,
ele vin în multe dimensiuni și culori: de exemplu, 16 × 1, 16 × 4, 20 × 4, cu text alb pe fundal
albastru, cu text negru pe verde și multe altele.Toate aceste afișaje sunt „schimbabile” – se poate
deconecta și utiliza o altă dimensiune / culoare LCD la alegere.

Figura 8. LCD 1602A

 GND ar trebui să fie conectat la ma sa Arduino.
 VCC este sursa de alimentare pentru LCD pe care o conectăm pinul de 5 volți de pe
Arduino.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
15
 Vo (LCD Contrast) controlează contrastul și luminozitatea ecranului LCD. Folosind un
divizor simplu de tensiune cu un potențiometru, putem face ajustări fine la contrast.
 Pinul RS (Register Select) permite Arduino să spună ecranului LCD dacă trimite comenzi
sau date. Practic, acest pin este utilizat pentru a diferenția comenzile de date.
 De exemplu, când pinul RS este setat la LOW, atunci trimitem comenzi pe ecranul LCD
(cum ar fi setarea cursorului la o anumită locație, ștergeți afișajul, derulați afișajul spre
dreapta și așa mai departe). Și când pinul RS este setat pe HIGH, trimitem date / caractere
pe LCD.
 PIN-ul R / W (Citire / Scriere) de pe LCD este pentru a controla dacă citiți sau nu date de
pe LCD sau scrieți date pe LCD. Întrucât doar folosim acest LCD ca dispozitiv OUTPUT,
vom lega acest pin LOW. Acest lucru îl forțează în modul WRITE.
 Pinul E (Enable) este utilizat pentru a activa afișajul. Adic ă, atunci când acest pin este
setat la LOW, LCD -ului nu îi pasă de ceea ce se întâmplă cu R / W, RS și liniile
magistralei de date; când acest pin este setat la HIGH, LCD -ul procesează datele primite.
 D0-D7 (Data Bus) sunt pinii care transportă datele pe 8 biți pe care le trimitem pe afișaj.
De exemplu, dacă vrem să vedem caracterul majuscul „A” pe afișaj, vom seta acești pini
la 0100 0001 (conform tabelului ASCII) pe ecranul LCD.
 Pinii A -K (anod și catod) sunt utilizați pentru a controla lumina de fundal a ecranului
LCD.
Ecranul LCD are o mulțime de pini (16 pini în total) pe care vă vom arăta cum să le conectați.
Dar, vestea bună este că nu toate aceste pini sunt necesare pentru a ne conecta la Arduino.
Știm că există 8 linii de date care transportă date b rute pe afișaj. Dar, LCD -urile HD44780 sunt
concepute într -un mod în care putem vorbi cu ecranul LCD folosind doar 4 pini de date (modul 4
biți) în loc de 8 (modul 8 biți). Vom interfața LCD folosind modul pe 4 biți și, prin urmare, avem
nevoie de doar 6 p ini: RS, EN, D7, D6, D5 și D4 pentru a vorbi cu LCD -ul.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
16
3.4 Potenț iometru 3296

Figura 9. Potențiometru 3296

Un potențiometru este un rezistor cu trei terminale, cu un contact glisant sau rotativ, care
formează un divizor de tensiune regla bil. Dacă sunt utilizate doar două te rminale, un capăt și
cursorul , acesta acționează ca un rezistor variabil sau reostat.

Specificaț ii tehnice
– Gama standard de rezistență: 10 ohmi până la 2 megaohmi
– Toleranță la rezistență: ± 10%
– Rezistență la izolație: 500Vdc
– Rezistență dielectrică: 350 până la 900Vca
– 25 de ture
– Temperatura de funcționare: -55 ℃ la + 125 ℃

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
17
Potențiometrele presetate sau trimmere sunt potențiometre mici tip "set -and-forget"
care permit efectuarea unor reglaje foar te fine sau ocazionale la un circuit (de exemplu,
pentru calibrare). Potențiometrele presetate cu o singură rotire sunt versiuni miniaturale
ale rezistorului variabil standard, concepute pentru a fi montate direct pe o placă de
circuite imprimate și sunt r eglate cu ajutorul unei șurubelnițe mici sau a unui instrument
similar din plastic. În general, aceste pot -uri presetate liniare cu carbon sunt de tip schelet
deschis sau de formă pătrată închisă, care, odată ce circuitul este reglat și setat din fabrică,
sunt lăsate la această setare, fiind reglate din nou numai dacă apar modificări ale setărilor
circuitului.
Pentru a utiliza un potențiometru se conecteaza terminalele CCW și CW cu sursă
pozitivă și res pectiv borna de masă și obținem tensiune variabilă de ieșir e de la borna
cursorului . Pentru a modi fica tensiunea de ieșire, rotim șurubul din partea superioară .
Acest șurub rotește cursorul plasat în interiorul vasului, ceea ce variază rezistența.

Figura 10. Utilizarea potențiometrului

Aplicații

-Circuite de control al tensiunii și curentului
-Folosit ca butoane de control al volumului în aparate de radio
-Reglarea sau controlul circuitelor
-Butoane de control al intrării analogice

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
18
3.5 Sisteme înglobate (sisteme embedded)
3.5.1 Introducere

Un sis tem embedded (sistem “încorporat” sau “înglobat”) este un microsistem care face
parte dintr -un sistem mai mare, cu componente mecanice sau electromecanice, constituind
“inteligența” acestuia.Sistemele embedded comandă și controlează multe aparate și dispoz itive
funcționale (ex: ceasuri digitale, aparate electrocasnice, televizoare, computerul de bord al
automobilelor, roboți, etc).

Caracteristile principale ale sistemelor embedded sunt:
– abilitatea de a executa o singură sarcină specifică ;
– rulare repeta tă un program ;
– reacție la evenimente în timp real ;
– siguranța în funcționare ;
– miniaturizarea ;
– viteza ;
– cost mic, consum redus ;

Microprocesorul

Microprocesorul este un sistem microprogramabil compus din două automate interconectate
astfel încât să comunice bidirecțional:
 Automatul de Comandă (AC) ;
 Automatul de Prelucrare (AP) .
La acestea se adaugă și o serie de mecanisme specifice:
– mecanismul registrului PC (Program Counter sau Instruction Pointer) – pentru adresarea și
preluarea (fetch) a inst rucțiunilor de executat ;
– mecanismul registrului SP pentru adresarea stivei și rezolvarea apelului, respectiv revenirilor
din subrutine ;
– mecanismul de întreruperi pentru preluarea și tratarea evenimentelor prioritare ce apar pe
parcursul execuției progr amelor ;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
19
– mecanismul de reset sau inițializare (ce include circuite de tip POR – power on reset, PBOD –
Programmable Brown Out Detector, watchdog, etc) ;
– mecanismul de management al memoriei prin care se extinde capacitatea de adresare ;
– mecanismul memor iei cache prin care se obținere o reducere timpului de obținere a a datelor
din memorie de către procesor ;
– mecanismul semnalului de ceas ;
Prin interconectarea celor două automate se obține un sistem microprogramat care
funcționează astfel:
1. Automatul d e comandă generează o secvență de comenzi (prin execuția unor
microinstrucțiuni) către automatul de prelucrare.
2. Automatul de prelucrare procesează datele de intrare în funcție de comenzile primite și
transmite indicatori despre natura rezultatelor obțin ute care influențează evoluția ulterioară a
automatului de comandă.

Figura 11 . Unitatea Aritmetico -Logica cu Registre si Unitatea de Comanda

Criterii de clasificare a microprocesoarelor
– după numărul de biți; exprimă dimensiunea operanzilor (în biți) c e pot fi procesați printr -o
singură instrucțiune, de obicei reprezentând și mărimea magistralei de date; conform acestui
criteriu cu cât un procesor este organizat pe un număr mai mare de biți, cu atât este mai puternic;
– după arhitectură; pot fi procesoa re Von Neumann (Princeton) sau Harvard;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
20
– după setul de instrucțiuni; pot fi procesoare CISC (complex instruction set computer) sau RISC
(reduced instruction set computer); setul de instrucțiuni diferă de la procesor la procesor
reprezentând un element de individualizare a acestora;
– după numărul de instrucțiuni executate simultan; pot fi procesoare scalare (o singură
instrucțiune executată la un moment dat) sau superscalare (mai multe instrucțiuni executate la un
moment dat, eventual în stadii diferite);
– după modul, locul utilizării și al accesabilității pentru mai mulți utilizatorii; sunt pro cesoare
pentru laptop, desktop, workstation, server, mainframe, supercalculator;
– după clasificarea lui Michael Flynn:
1.SISD (Single Instruction Single Data – o singură instrucțiune, o singură dată de prelucrat); sunt
microprocesoarele clasice Von Neumann;
2.SIMD (Single Instruction Multiple Data – o singură instrucțiune, mai multe date); sunt
procesoarele matriceale (vectoriale);
3.MISD (Multiple Instruction Single Data – mai multe instrucțiuni, o singură dată); sunt
procesoare le care utilizează conceptul de pipe-line (execuții de mai multe instrucțiunisimultan,
dar în stadii diferite);
4.MIMD (Multiple Instruction Multiple Data – mai multe instrucțiuni, mai multe d ate); sunt
procesoare dedicate pentru supercalculatoare, folosind arhitecturi paralele de calcul.

Modelul Harvard

Figura 12 . Modelul Harvard

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
21

Modelul (arhitectura) Harvard se caracterizează prin separarea căii de transfer pentru datele
de intrare/ieșir e față de cea a instrucțiunilor (liniile de transfer ale datelor sunt separate de cele
pentru transferul instrucțiunilor).
Prin acest paralelism (separație) a căilor de comunicație de date și instrucțiuni se asigură o viteză
de transfer și (implicit) o vit eză de procesare mai mare.

Modelul Von Neumann

Figura 13 . Modelul Von Neumann

Dacă se unesc, pentru reducerea numărului total de linii de semnal, liniile de date de intrare,
de date de ieșire și instrucțiuni într -o singură magistrală bidirecțională (b us de date și
instrucțiuni) se obține modelul von Neumann (sau Princeton).

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
22
Funcționarea microprocesorului RISC și CISC

RISC – Reduced Instruction Set Computer
• Set mai mic (număr mai mic) și mai simplu (programare mai ușoară, de exe mplu în cazul
lungimii fixe) de instrucțiuni;
• Toate instrucțiunile au aceeași durată de timp la execuție și se execută la fel in diferent de
regiștrii cărora li se aplică.
CISC – Complex Instruction Set Computer
• O instrucțiune poate executa mai multe operații de nivel in ferior: de exemp lu o singură
instrucțiune poate face operațiuni de încărcare a memoriei, operații aritmetice și de stocare a
rezultatului în memorie;
• Instrucțiunile au o durată diferită de timp la execuție și se pot aplica doar asupra unor regiștri.
Arhitectura cea mai potrivită pentru un procesor rapid:
• este dependentă de aplicațiile ce vor fi executate;
• foarte puține instrucțiuni;
• multe registre;
• acces simplificat la încărcarea și depozitarea datelor în memoria principală;
• posibilitatea ca maj oritatea instrucțiunilor să fie executate într -o singură perioadă de ceas.

Diferența între Microprocesor și Microcontroler

Microcontrolerul (MCU – microcontroller unit) este de regulă un circuit complex obținut
prin adăugarea unor dispozitive (circuite) suplimentare la un microprocesor, totul fiind integrat
pe același chip. Un microprocesor (MPU – micro proceesor unit) conține pe același cip: – unitatea
centrală de procesare – UCP (registre, ALU, indicatori, magistrale); -unitatea de gestionare a
întrerup erilor interne și externe; – circuite pentru generarea și gestionarea impulsurilor ceasului
(modificări ale frecvenței, reducerea radiației, etc); circuite de alimentare cu tensiuni de valori
diferite, etc; unitatea de management a memoriei. Un microcontro ler cuprinde pe același chip un
microprocesor și, în plus, o serie de circuite necesare unui sistem de calcul (practic, poate fi un
microcalculator complet): – memorii (RAM, ROM, EPROM/EEPROM, FLASH); – periferice de
comunicație a datelor paralelă și seria lă – (porturi paralele, porturi seriale asincrone și sincrone –
UART, USART, SCI, SPI, I 2C); – periferice de gestionarea timpului (timere pentru generarea

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
23
întârzierilor de timp, circuite pentru captură de timp/ măsurarea și compararea timpului); –
circuit e antiblocare de tip watchdog; – circuite de securitate pentru protecția softwarelui înscris în
memoria ROM; – circuite pentru numărarea impulsurilor sau generarea de impulsuri PWM (pulse
width modulation – impulsuri modulate în durată); – convertoare anal og-digitale și digital –
analogice;

Figura 14 . Microprocesorul si Microcontrolerul

3.5.2 Familii de Microcontrolere reprezentative

 8051 (Intel MCS -51 și mulți alții: Atmel, Philips)
A doua generație de microcontrolere de 8 biți a firmei Intel care, deși apărută acum 20 de ani,
încă ocupă un segment semnificativ de piață. Cu o arhitectură destul de ciudată, este suficient de
puternic și ușor de programat. Arhitectura sa are spații de memorie separate pentru program și
date. Poate adresa 64KBytes memorie de program, din care primii 4(8..32)KBytes locali (ROM).
Poate adresa 64KBytes memorie de date externă, adresabilă doar indirect. Are 128 (256) octeți de
RAM local, plus u n număr de registre speciale pentru lucrul cu periferia locală. Are facilități de
prelucrare la nivel de bit (un procesor boolean, adresare pe bit). Intel a dezvoltat si un “super
8051” numit generic 80151. Actualmente există zeci de variante produse de di verși fabricanți
(Philips, Infineon, Atmel, Dallas, Temic, etc.) precum și cantități impresionante de soft comercial
sau din categoria freeware/shareware. Au apărut și dezvoltări ale acestei familii în sensul trecerii
la o arhitectură similară (în mare), d ar pe organizată pe 16 biți, cu performanțe îmbunătățite ca

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
24
viteză de prelucrare: familia XA51 eXtended Arhitecture de la Philips și familia 80C251 (Intel).
Din păcate aceste noi variante nu s -au bucurat nici pe departe de succesul „bătrânului” 8051.

 80C196 (Intel MCS -96)
Este un microcontroler pe 16 biți făcând parte din generația treia de microcontrolere a firmei
Intel. Destinat inițial unor aplicații din industria de automobile, are o arhitectură von Neumann,
cu un spațiu de adresare de 64KBytes, o un itate de intrări/ieșiri numerice de mare viteză
(destinată inițial controlului injecției la un motor cu ardere internă), ieșiri PWM, convertor analog
numeric, timer watchdog. Există multe variante, ultimele cronologic apărute, fiind mult
superioare variant ei inițiale. Există și o dezvoltare recentă sub forma familiei MCS -296
(80C296).

 80C186, 80C188 (Intel, AMD)
Derivate din clasicele 8086/88 prin includerea pe același microcircuit a 2 canale DMA, 2
numărătoare/timere, un sistem de întreruperi și un contr oler pentru DRAM. Marele avantaj al
acestor cvasi(aproape) microcontrolere (ele nu au memorie integrată!) este legat de utilizarea ca
mediu de dezvoltare a unor platforme de calcul tip IBM -PC, compatibile 80×86, cu tot softul
aferent.

 68HC05 (Freescale)
Un microcontroler de 8 biți derivat din microprocesorul M6800 și care prezintă multe asemănări
cu un alt microprocesor răspândit, la timpul său, 6502. Are un spațiu de memorie unic
(64Kbytes) în care sunt plasate și registrele perifericelor (I/O, timere) c u un indicator de stivă
(SP) hard pe 5biți (stivă de maxim 32 octeți !). Există variante cu memorie EEPROM, CAN, port
serial, etc. Este unul din cele mai răspândite microcontrolere (comparabil cu 8051). Varianta
evoluată a acestei familii este seria 68HC08 bazată pe o nouă unitate centrală de 8 biți numită
CPU08, cu cea mai recentă dezvoltare sub forma seriei 68HCS08 destinată în mod special unor
aplicații din industria automobilului.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
25

3.5.3 Placa de dezvoltare Arduino Uno R3

Arduino este o companie open -source care produce atât plăcuțe de dezvoltare bazate pe
microcontrolere, cât și partea de software destinată funcționării și programării acestora. Pe lângă
acestea include și o comunitate uriașă care se ocupă cu creația și distribuirea de proiecte care a u
ca scop crearea de dispozitive care pot sesiza și controla diverse activități sau procese în lumea
reală.

Proiectul este bazat pe designul plăcilor cu microcontroler produse de câțiva furnizori,
folosind diverse tipuri de microcontrolere. Aceste plăci p un la dispoziția utilizatorului pini I/O,
digitali și analogici, care pot fi interfațați cu o gamă largă de plăcuțe numite scuturi (shield -uri)
și/sau cu alte circuite. Plăcile au interfețe de comunicații seriale, inclusiv USB pe unele modele,
pentru a înc ărca programe din calculatorele personale. Pentru programarea microcontrolerelor,
Arduino vine cu un mediu de dezvoltare integrat (IDE) bazat pe proiectul Processing, care
include suport pentru limbaje de programare ca C și C++.

O plăcuță Arduino este com pusă dintr -un microcontroler Atmel AVR de 8 -, 16- sau 32 -biți
(deși începând cu 2015 s -au folosit microcontrolere de la alți producători) cu componente
complementare care facilitează programarea și încorporarea în alte circuite. Un aspect important
la Ardu ino este că acesta dispune de conectori standard, care permit utilizatorului să conecteze
plăcuța cu procesorul la diferite module interschimbabile numite shield -uri. Unele shield -uri
comunică cu Arduino direct prin pinii digitali sau analogici, dar altele sunt adresabile individual
prin magistrala serială I²C permițând utilizarea mai multor module în paralel.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
26

Figura 15 . Placa de dezvoltare Arduino UNO R3

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
27
Asamblorul/Compilatorul este un program care acceptă la intrare un text numit “program
sursă”, scri s în limbaj de asamblare sau C și produce la ieșire un program executabil. Un
asamblor, spre deosebire de un compilator, face să corespundă, de regulă, în mod direct unei linii
sursă, un cod binar executabil.

Descriere pini:
Pini de alimentare: Vin, 3.3V, 5V, GND.
 Vin: Tensiune de intrare la Arduino când utilizam o sursă de alimentare externă;
 5V: Alimentare reglată folosită pentru alimentarea microcontrolerului și a altor
componente de pe placă;
 3.3V: alimentare de 3,3 V generată de regulatorul de tensi une la bord;
 GND: pini de masă.
Pin de Reset: Resetează microcontrolerul
Pini analogici A0 -A5: Folosiți pentru intrările analogice între 0V si 5V
Pini Intrare/Iesire: Pini digitali 0 -13
Pini pentru transmitere serială 0(RX) , 1(TX): recepție și transmiter e serială
Pini de întrerupere externă 2,3 : Produc o întrerupere

3.5.4 Microcontrolerul ATMEL ATMega 328P

Arhitectura inițială a microcontrolerului a fost proiectată la începutul anilor „90 de 2
studenți, Alf -Egil Bogen și Vergard Wollan, de la Norwegia n Institute of Technology, pe când
lucrau la o societate de realizare a circuitelor integrate în Trondheim. Ulterior, proiectul l -au
vândut companiei Atmel din USA, unde ei lucrează în prezent.
Conține:
– procesor RISC pe 8 biți, 131 instrucțiuni ;
– arhitectură Harvard modificată ;
– 32 regiștri de uz general pentru CPU ;
– 64 regiștri pentru programarea circuitelor I/O – 32k x 8 memorie ROM flash (10.000 cicluri
ștergere) ;
– 2k x 8 memorie SRAM ;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
28
– 1k x 8 memorie EEPROM (100.000 cicluri ștergere) ;
– 3 canale timer (1 pe 16 biți, 2 pe 8 biți) ;
– 6 canale PWM ;
– 6 canale cu 10 biți ADC ;
– 1 canal UART ;
– interfață serială 2 wire (TWI – I2C);
– interfață serială SPI ;
– 23 pini programabili I/O (tip port paralel) ;
– surse de întreruperi interne și exte rne;
– facilități automate de reset (Power on reset – POR, Programmable Brown Out Detector – PBOD,
watchdog) ;
– operare cu semnal de ceas de până la 20MHz, 20 MIPS ;
– programare In Circuit Self Programming (ICSP) pentru memoria flash ;
– consum < 15 mA / 5V;

Figura 16 . Microcontrolerul ATMEL ATMega 328P

Memoria internă este formată din 3 componente:
– Memoria ROM – flash – în care se păstrează Programele executate de CPU (Code Segment) și
Bootloader -ul;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
29
– Memoria SRAM – folosită pentru formarea și păs trarea celor 32 regiștri de uz general CPU și
cei 64 regiștri ai circuitelor I/O, dar și pentru păstrarea și actualizarea variabilelor din programele
executate de CPU (Data Segment) ;
– Memoria EEPROM – folosită pentru păstrarea de informații necesare progr amelor după
reaplicarea tensiunii de alimentare (EEPROM Segment) .

3.6 Protocoale de comunicare

3.6.1 Comunicarea serială UART
UART pentru Arduino Uno

Pentru ca două dispozitive să comunice cu UART, trei fire trebuie să le conecteze. Primele
două sunt f ire de comunicare. Transmiterea (TX) a plăcii Arduino trebuie să se conecteze la
recepția (RX) a PC -ului iar TX -ul PC -ului trebuie sa se conecteze la RX -ul plăcii de dezvoltare.
Al treilea fir este masa. Dispozitivele trebuie să aibă o masă comună, pentru a exista impulsuri
între 0V și 5V între cele două dispozitive.

Pinii TX și RX ai unei plăci Arduino sunt pinii D0 și D1. Ei sunt conectați la UART -USB –
ul plăcii Arduino. Prin urmare atunci când placa este conectată la computer prin USB, UART -ul
plăcii Ard uino este deja conectat la un port serial virtual al computerului (de exemplu COM4).
Acest lucru permite plăcii să trimită și să primească date seriale cu PC -ul.

Când un dispozitiv transmite, acesta trimite date într -o serie de impulsuri. Fiecare impuls
reprezintă un bit de date, astfel încât un octet (8 biți) de date este trimis ca opt impulsuri pe fir.
Aceste impulsuri sunt trimise cu o anumită temporizare predefinită, numită rată de transfer care
trebuie înțeleasă de ambele dispozitive. Configurația im plicită este SERIAL_8N1, adică are 8 biți
de date fără paritate și 1 bit de stop.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
30
4. Descrierea sistemului Hardware

În acest capitol mă voi axa în principal pentru prezentarea relației de funcționare între
dispozitivele folosite cât și pentru descrie rea în mare pentru asamblarea acestora.

4.1 D escriere a componentei Arduino

Pentru sistemul de comandă și preluare a informației am folosit o placă Arduino Uno R3, un
senzor temperatura si umiditate digital DHT11, un breadboard, un Display LCD 1602A, un
Buzzer piezoelectric, un potentiometru 3296 si 21 fire de legatura.

Figura 17 . Montarea componentelor pe placa Arduino

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
31
4.2 Modul de asamblare
Pasul 1:
Conectarea LCD -ului pe breadboard cu Arduino

Figura 18. Montare LCD
In această etapa am conec tat LCD -ul pe breadboard cu Ardu ino după cum urmează :
-pinul K al LCD -ului la GND Arduino ;
-pinul A al LCD -ului la pinul 3.3V la Arduino ;
-pinul D7 al LCD -ului la pinul digital 2 Arduino ;
-pinul D6 al LCD -ului la pinul digital 3 Arduino ;
-pinul D5 al LCD -ului la pinul digital 4 Arduino ;
-pinul D4 al LCD -ului la pinul digital 5 Arduino ;
-pinul E al LCD -ului la pinul digital 11 Arduino ;
-pinul RW al LCD -ului la GND ;
-pinul RS al LCD -ului la pinul digital 12 Arduino ;
-pinul VDD al LCD -ului la 5V ;
-pinul VSS al LCD -ului la GND ;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
32
Pasul 2:
Conectarea potentiometrului

Figura 19. Montare potențiometru

Am adăugat si potenț iometru pe breadboard:
-pinul CCW la 5V Arduino;
-pinul CW la GND Arduino;
-pinul WIPER la pinul V0 Arduino;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
33

Pasul 3:
Conectarea senzorul ui DHT11

Figura 20. Montare senzor DHT11

Am conectat senzorul DHT11 după cum urmează :
-pinul OUT senzorului la pinul digital 7 Arduino;
-pinul + al senzorului la 5V Arduino;
-pinul – al senzorului la GND Arduino;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
34

Pasul 4:
Conectarea buzzer -ului

Figura 21. Montare buzzer

Conectarea buzzer -ului:
-pinul + la pinul digital 8 Arduino;
-pinul – la GND Arduino;

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
35
5. Prezentarea componentelor software

5.1 Programul Arduino
Schema logică:

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
36

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
37
Schema logică anterioară ne prezintă în ansamblu funcț ionalitatea buclei infinile void
loop(). Se poate observa o bifurcație începând cu verificarea condiției de temperatură și umditate
măsurată a senzorului DHT11 (if((DHT.temperature>32) && (DHT.humidity>90))), ramura cu
DA din schema logică având scopul de a avertiza utilizatorul prin semnalul sonor cu privire la
temperatura și umiditatea foarte crescută a ambelor mărimi în același timp, în timp ce ramura NU
din schemă va juca rolul de luare a unei de cizii verificând individual dacă doar
temperatura(if (DHT.t emperature>32) ) sau doar umiditatea (if (DHT.humidity>90) ) au valori
mari, avertizând utilizatorul prin semnale sonore diferite. În cele ce urmează voi face o
prezentare a codului de co ntrol și achiziție de la senzor, buzzer si display pentru afișarea
infor mațiilor la un interval prestabilit de timp . Acest prog ram are scopul de a prelua cele două
unități de măsură (temperatură și umiditate) și a le afișa pe LCD, totodată avertizând sonor
utilizatorul dacă este cazul . Deciziile sunt luate de către placa Ardui no Uno ce va transmite datele
de afișare către LCD și totodată va activa buzzerul la validarea condițiilor impuse .

Pasul 1: Includerea librăriilor și declararea pinilor

Pentru preluarea temperaturii și umidității, programul va avea nevoie de o librărie special
concepută pentru senzorul DHT11 (#include <dht.h> ). Aceasta conține funcții speciale pentru
traducerea rezultatelor. În cazul în care apare o eroare(senzorul nu este conectat sau are un fir
întrerupt ce comunică cu placa Arduino), acesta v a afișa pe LCD valorile -999 pentru ambele
marimi. El poate citi și traduce o temperatură între 0 și 60 de grade Celsius și umiditatea între
20% și 95%. #include <dht.h>
#include <LiquidCrystal.h>
int buzzer = 8;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

dht DHT;

#define DHT11_PIN 7

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
38
Pentru folosirea LCD -ului, programul va mai avea nevoie de librăria standard (#include
<LiquidCrystal.h >) în realizarea afișării rezultatelor transmise de către placa Arduino.
Linia de comandă LiquidCrystal lcd(12, 11, 5, 4, 3, 2); este folosită pentru inițializarea librăriei
cu pinii de interfațare a plăcii pentru a putea transmite datele de afișare.
Aceșt ea au următoarele funcții :
 Pinul 12 – pin de selectare a registrului (RS) care controlează locul în care scrieți
datele din memoria LCD
 Pinul 11 – Un pin de activare (E) care permite scrierea în registre
 Pinii 5,4,3,2 -stările acestor pini (HIGH sau LOW) sun t biții pe care sunt scriși sau
citiți într -un registru, pentru citirea și scrierea pe display
Pinul de date al senzorului DHT11 este declarat pe pinul 7 digital al placii prin instrucțiunea
#define DHT11_PIN 7 iar buzzerul este alocat la pinul 8 digital p rin linia int buzzer = 8; .

Pasul 2 : Inițializarea programului

Această funcție void setup() este folosită pentru setările de inițializare a dispozitivelor folosite
conectate la placă. Aceasta va fi executată doar o singură dată la rularea progr amului/la pornirea
dispozitivului.
 lcd.begin(16, 2); setează numărul de coloane (16) și numărul de linii (2) de pe LCD ;
 pinMode(buzzer, OUTPUT); setează pinul 8 al buzzerului ca ieșire
 noTone(buzzer); va dezactiva temporar buzzerul.

void setup()
{
lcd.begin(16, 2);
pinMode(buzzer, OUTPUT);
noTone(buzzer);
delay(1000);
}

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
39

Pasul 3 : Bucla inf inită de luare a deciziilor

Această funcție void loop() respectă și verifică la infinit următorul model :

Figura 22. Principiul de funcționare al buclei infinite

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
40

Vom diviza acest cod în 3 mari părți :

A. Temperatură și umiditate mare

Dacă temperatura este peste 32 de grade(33 -60C) și umiditatea peste 90% ( 91 -95%) acesta
va intra în bucla while și va avertiza sonor până când valorile vor scădea sub 31 grade și 81%
umiditate (se va opri în intervalul 0 -30 grade C și 20 -80%).
Instrucțiunile lcd.setCursor(0,0 ); (prima coloană și prima linie) respectiv
lcd.setCursor(0,1); (prima coloană și a doua linie) mută cursorul de pe o linie pe alta începând
din capătul stânga(coloana 0) pentru a scrie și afișa textul împreună cu rezultatele c itite de
senzor.
Instrucțiunile tone(buzzer, 300 ,200); delay(200); noTone(buzzer); delay(2400); vor activa
buzzerul pe frecvența 300Hz timp de 200 milisecunde, ca mai apoi sunetele de durată totală de if((DHT.temperature>32) && (DHT.humidity>90))
{
while((DHT.temperature>30) && (DHT.humidity>80))
{
chk = DHT.read11(DHT11_PIN);
lcd.setCu rsor(0,0);
lcd.print("Temper: "); lcd.print(DHT.temperature); lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umiditate:"); lcd.print(DHT.humidity); lcd.print("%");
tone(buzzer, 200,200); delay(200); tone (buzzer, 300,200); delay(200);
tone(buzzer, 200,200); delay(200); noTone(buzzer); delay(2400);
} }

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
41
600ms impreună cu timpul de așteptare până la următoa rea citire de 2400ms să formeze un total
de 3000ms (3 secunde până la următoarea citire).

B. Temperatură mare

Dacă temperatura va fi mai mare decât 32 de grade(33 -60 grade C) va intra și va ramâne în
buclă cât timp temperatura este pest e 30 grade(31 -60 grade C) și umiditatea sub 90% (20 -89%). if(DHT.temperature>32)
{
while((DHT.temperature>30)&&(DHT.humidity<90))
{
chk = DHT.read11(DHT11_PIN );
lcd.setCursor(0,0);
lcd.print("Temper: "); lcd.print(DHT.temperature); lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umiditate:"); lcd.print(DHT.humidity); lcd .print("%");
tone(buzzer, 261,100); delay(100);
tone(buzzer, 294,100); delay(100);
tone(buzzer, 329,100); delay(100);
tone(buzzer, 349,100); delay(100);
tone(buzzer, 392, 100); delay(100);
tone(buzzer, 440,100); delay(100);
tone(buzzer, 493,100); delay(100);
tone(buzzer, 523,100); delay(100);
noTone(buzzer);
delay(2200);
}
}

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
42
În buclă se va face afișarea pe LCD și va activa buzerul crescător pe frecvența notelor DO
RE MI FA SOL LA SI DO , pe o durată de 800ms, fiind completate cu timpul de așteptare de
2200ms până la urmă toarea verificare (total 800ms+2200ms=3000ms=3s).

C. Umiditate mare

Dacă umiditatea va fi peste 90% (91 -95%) acesta va sta în bucla while până când umiditatea
va fi peste 80% (81 -95%) și temperatura sub 32 grade( 0 -31 grade C). if(DHT.humidity>90)
{
while((DHT.humidity>80)&&(DHT.temperature<32))
{
chk = DHT.read11(DHT11_PIN);
lcd.setCursor(0,0);
lcd.print("Temper: ");lcd.print(DHT.temperature); lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umiditate:"); lcd.print(DHT.humidity); lcd.print("%");
tone(bu zzer, 523,100); delay(100);
tone(buzzer, 493,100); delay(100);
tone(buzzer, 440,100); delay(100);
tone(buzzer, 392,100); delay(100);
tone(buzzer, 349,100); delay(100);
tone(buzzer, 329,100); delay(100);
tone(buzzer, 294,100); delay(100);
tone(buzzer, 261,100); delay(100);
noTone(buzzer);
delay(2200);
}
}

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
43
În buclă se vor afișa de asemenea pe LCD valorile măsurate iar semnalul sonor al buzzerului va
merge descrescător pe frecvența notelor muzicale DO SI LA SOL FA MI RE DO , pe o durată
de 800ms completat de o așteptare de 2200ms, timpul total fiind de asemenea de 300 0ms, adică
3s până la următoarea verificare.

6. Concluzii
Scopul meu a fost de a monitoriza temperatura și umiditatea prin intermediul unei plăci
Arduino UNO R3 ce preia datele cu ajutorul unui senzor specific și avertizează sonor utilizatorul
în funcț ie de parametrii care s -au modificat . Lucrarea de față prezintă modul în care poate fi
detectată temper atura și umiditatea intr-un anumit spaț iu(frigidere și aparate de ră cit, sere,
farmacii ș i laboratoare, centre comerciale, școli ș i spatii publice, etc.) , cu avertizare sonoră de
încalcare a parametrilor stabiliț i. Problemele identificate m -au dus la concluzia că pe viitor ar
trebui realizate aplicații specifice acestui mod de interpretare a datelor care să fie capabile să
ofere accesul la mult mai multe o pțiuni ale aplicațiilor doar prin folosirea click -urilor pe ntru a
reveni la valoarea optimă .
Scopul propus inițial, de a monitoriza temperatura și umiditatea, respectiv de a alarma atunci
cand s -au modificat una sau ambele valori , a fost atins cu succes.
În viitor îmi propun să îmbunătățesc sistemul prin posibilitatea de a înlocui
LCD -ul actual cu o componentă wireless (Bluetooth) ,care să transmită datele direct catre
utilizator ș i adaugarea unui sistem de ventilație/dezumidificator pentru a ț ine s ituația s ub control
și pentru a reveni la valorile implicite. Prin această abordare, cu certitudine
performanțele sistemului v or crește; de exemplu, va scădea timpul pentru a reveni și a se menț ine
la setarile fă cute de utilizator.
În concluzie, pot spune că prin i mplementările practice realizate în cadrul acestei teze mi am
consolidat abilitățile de programare prin dezvoltarea de coduri în limbajul C și C++ pentru
Arduino.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
44

7. Bibliografie
1. https://sites.google.com/site/arduinoelectronicasiprogramare/ accesat la 13.08.2020
2. https://ro.wikipedia.org/wiki/Senzor / accesat la 19.08.2020
3 .https://robodomit.blogspot.com/2019/10/dhtxx -senzori -de-temperatura -si.html accesat la
20.08.2020
4. https://ix23.com/dht11 -digital -temperature -and-humidity -sensor/ accesat la 22.08.2020
5. https://www.elecfreaks.com/learn -en/microbitKit/Starter_Kit/starter_kit_case_09.html accesat
la 24.08.2020
6. https://www.studocu.com/ro/document/universitatea -politehni ca-din-bucuresti/sisteme -cu-
microprocesoare/practic/smi -lab9-comanda -unui-buzzer -piezoelectric/6409104/view accesat la
25.08.2020
7. https://howtomechatronics .com/wp -content/uploads/2015/07/LCD -Display -Tutorial.png
accesat la 25.08.2020
8. https://lastminuteengineers.com/arduino -1602 -character -lcd-tutorial/ accesat la 26.08.20 20
9. https://ro.wikipedia.org/wiki/Microcontroler accesat la 27.08.2020
10. https://www.upit.ro/_docum ent/23460/curs_2_partea_2_robosmart_11.11.2017.pdf accesat la
27.08.2020
11. https://ro.wikipedia.org/wiki/Arduino accesat la 28.08.2020
12. https://sites.google.com/site/bazeleelectronicii/home/rezistoare/12 -potentiometers accesat la
29.08.2020
13. https://compo nents101.com/resistors/3296 -trimmer -potentiometer -pinout -datasheet accesat la
30.08.2020
14. https://www.optimusdigital.ro/r o/senzori -senzori -de-temperatura/99 -senzor -de-temperatura –
si-si-umiditate -dht11.html accesat la 30.08.2020

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
45

8. Rezumat
Lucrarea “Sistem de monitorizare a temperaturii și a umidității” se împarte în nouă capitole
și descrie informațiile utile în r ealizarea acesteia. Primele trei capitole conțin informații teoretice
despre limbajele de programare folosit e, despre senzori și componente și sisteme înglobate, în
timp ce capitolele patru și cinci vor descrie informații orientative despre asamblarea și
programarea componentelor fizice, pentru buna funcționare a acestora. În cel de -al doilea capi tol
se vorbește despre limbajul de programare și descrie pe scurt mediul de dezvoltare Arduino .

Capitolul trei descrie în mare parte componentele hardware folo site: senzorul de
temperatură și umiditate, LCD -ul pentru afișarea valorilor, potențiometrul pentru a regla
contrastul afișajului, un buzzer pentru avertizare sonoră dar și placa de dezvoltare folosită pentru
comandă și control. În capitolul patru este descr isă schema bloc pentru partea hardware a plăcii
Arduino cu toate componentele aferente , urmând ca mai apoi să fie prezentate legăturile fizice de
asamblare ale acestora. Pentru Arduino se va descrie montajul pin cu pin ,insoțite de imagini .

Capitolul ci nci este destinat pentru co mponentele software, unde se va descrie , pe pași,
codul sursă din mediul folosit de dezvoltare. Înaintea pașilor de de scriere, acesta va fi precedat de
câte o schema logică pseudocod pentru a vedea în an samblu funcționalitatea ac estuia . Capitolele
șase, șapte și nouă sunt rezervate pentru expunerea unei concluzii personale și eventual a unui
mod de îmbunătățire a performanțelor proiectului. Bibliografia are rolul de a lipi sursele de
inspirație în realizarea proiectului iar anexel e sunt fol osite pentru a prezenta codul programului
software folosit, complet funcțional alături de mici comentarii și observații.

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
46

9. Anexe

9.1 Cod sursă Arduino

#include <dht.h>
#include <LiquidCrystal.h>
int buzzer = 8;
LiquidCrystal lcd(12, 11 , 5, 4, 3, 2);

dht DHT;

#define DHT11_PIN 7

void setup()
{
lcd.begin(16, 2);
pinMode(buzzer, OUTPUT);
noTone(buzzer);
delay(1000);
}

void loop()
{
noTone(buzzer);
int chk = DHT.read11(DHT11_PIN);
lcd.setCursor(0,0);
lcd.print("Temp er: ");
lcd.print(DHT.temperature);

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
47
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umiditate:");
lcd.print(DHT.humidity);
lcd.print("%");
delay(2000);
if((DHT.temperature>32) && (DHT.humidity>90))
{
while(( DHT.temperature>30) && (DHT.humidity>80))
{
chk = DHT.read11(DHT11_PIN);
lcd.setCursor(0,0);
lcd.print("Temper: ");
lcd.print(DHT.temperature);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umiditate:");
lcd.print(DHT.humidity);
lcd.print("%");
tone(buzzer, 200,200);
delay(200);
tone(buzzer, 300,200);
delay(200);
tone(buzzer, 200,200);
delay(200);
noTone(buzzer);
delay(2400);

}
}

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
48
else
{
if(DHT.temperature>32)
{
while((DHT.temperature>30)&&(DHT.humidity<90))
{
chk = DHT .read11(DHT11_PIN);
lcd.setCursor(0,0);
lcd.print("Temper: ");
lcd.print(DHT.temperature);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.prin t("Umiditate:");
lcd.print(DHT.humidity);
lcd.print("%");
tone(buzzer, 261,100);
delay(100);
tone(buzzer, 294,100);
delay(100);
tone(buzzer, 329,100);
delay(100);
tone(buzzer, 349,100);
delay(100);
tone(buzzer, 392,100);
delay(100);
tone(buzzer, 440,100);
delay(100);
tone(buzzer, 493,100);
delay(100);
tone(buzzer, 523,100);
delay(100);

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
49
noTone(buzzer);
delay(2200);
}
}
else
{
if(DHT.humidity>90)
{
while((DHT.humidity>80)&&(DHT.temperature<32))
{
chk = DHT.read11(DHT11_PIN);
lcd.setCursor(0,0);
lcd.print("Temper: ");
lcd.pr int(DHT.temperature);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umiditate:");
lcd.print(DHT.humidity);
lcd.print("%");
tone(buzzer, 523,100);
delay(100);
tone(buzzer, 493,100);
delay(100);
tone(buzzer, 440,100);
delay(100);
tone(buzzer, 392,100);
delay(100);
tone(buzzer, 349,100);
delay(100);
tone(buzzer, 329,100);
delay(100);

Sistem de monitorizare a temperaturii și a umidității Chițu Daniel -Sebastian
50
tone(buzzer, 294,100);
delay(100);
tone(buzzer, 261,100);
delay(100);
noTone(buzzer);
delay(22 00);
}
}
}
}
}

Similar Posts