Sunteți pe pagina 1din 13

SISTEM WIRELESS DE

MONITORIZARE A TEMPERATURII

Profesor Coordonator : Ionel PETRESCU

Student : FLOREA Leonardo Ștefan

2022
Table of Contents

1. Introducere .......................................................................................... 2
1.1 DS18B20...................................................................................... 2
1.2 Modul XBee ................................................................................... 3
1.3 LCD ............................................................................................... 5
1.4 Arduino .......................................................................................... 5
2. SCHEMA ELECTRICĂ A PROIECTULUI....................................... 7
3. SCHEMA BLOC ................................................................................ 9
4. CONFIGURAREA MODULULUI XBEE ....................................... 10
5. CONFIGURAREA MODULELOR ARDUINO ............................... 11

1
1. Introducere

Pentru implementarea proiectului am folosit pe lângă modulul XBee și plăcuța de


dezvoltare specifica , senzorul de temperatură cu circuite integrat, Maxim Integrated DS18B20.
Acesta prezintă un avantaj asupra altor senzori de temperatură din gama sa, având nevoie de un
singur pin pentru a transmite informațiile în vederea stocării și analizării acestora. Precizia acestuia
de ±0.5 °C este mai mult decât suficientă pentru mediul casnic de lucru, ce reprezintă ținta
dezvoltării curente. De asemenea, am utilizat un LCD clasic 16 x 2 pentru prezentarea informațiilor
legate de temperatură. Pentru aceste două componente există deja biblioteci create, ce sunt ușor de
important și utilizat în cadrul dezvoltării cu IDE-ul Arduino. Mai mult decât atât, structura curentă
a proiectului ne permite o dezvoltare ulterioară care să includă senzori pentru mai mulți parametrii
– umiditate, nivel de fum, nivel de gaz etc.

În proiect mi-am propus includerea unei acțiuni separate a microcontrolerului la anumite


temperaturi – pornirea aerului condiționat și configurarea acestuia la o temperatură dorită. Această
acțiune urmează de asemenea să fie implementată în mod wireless, folosindu-mă de protocolul
ZigBee la capacitatea sa maximă.

1.1 DS18B20

Figure 1 Sonda temperatura impermeabila DS18B20

2
Acesta este senzorul de temperatură bazat pe cipul DS18B20, care constă dintr-o sondă
rezistentă la apă și un fir lung de 1m. Modelul DS18B20 furnizează citiri de temperatură de la 9 la
12 biți (configurabile) pe o interfață cu 1 fir, astfel încât să se conecteze un singur fir de la un
microprocesor central.

Având o capacitate puternică de combatere a interferențelor și o precizie ridicată, este acoperită


cu un furtun de cauciuc impermeabil în exterior și capabil să măsoare temperatura în intervalul -
55 ° C ~ + 125° C

Caracteristici tehnice:

 Alimentare: 3.0V până la 5.5V


 Interval de temperatură: -55 °C până la + 125 °C
 Precizie ridicată: ± 0,5 °C (-10 °C până la + 85 °C)
 Tip senzor: DS18B20
 Precizie de conversie 9 ~ 12 biți A / D
 Întârziere scurtă în conversia temperaturii, maxim 750 ms
 Suportă rețelele multi-point
 Reziztent la apă

1.2 Modul XBee

3
Figure 2 Modulul XBee

Modul Bluetooth XBee ce functioneaza in tandem cu un shield compatbil cu aceasta


tehnologie pentru a permite placii Arduino comunicarea cu orice hardware echipat cu tehnologia
Bluetooth

Specificații tehnice:

 Tensiunea de alimentare: 2.8V - 3.4V;


 Curent mediu consumat la 3.3V: 215mA;
 Rata de transfer maximă 250kbps;
 Frecvență: 2.4GHz;
 Ieșire 60mW (+18dBm);
 Rază de transmisie: 1500m;
 Certificat FCC;
 6 pini de intrare ADC ( 10-bit);
 8 pini digitali IO;
 Criptare 128-bit;
 Configurare locală sau wireless;
 Acceptă setul de comandă AT sau API;

4
1.3 LCD

Figure 3 Modul LCD

Acest LCD 16x2 cu lumină de fundal galben-verde a fost special dezvoltat pentru aplicații
cu consum redus. Tensiunea de funcționare standard este de 5 V și are o lumină de fundal galben-
verde și aspect de pixel negru.

Specificații

 Interval de tensiune de intrare: 4,5 V până la 5,5 V


 Curent de alimentare: 1,5 mA
 Tensiune de funcționare pentru LCD: 5 V
 Curent înainte de iluminare de fundal: 120 mA
 Interval de tensiune înainte de iluminare de fundal: 4,1 V până la 4,3 V

1.4 Arduino

Arduino UNO este o platforma de procesare open-source, bazata pe software si hardware


flexibil si simplu de folosit. Consta intr-o platforma de mici dimensiuni (6.8 cm / 5.3 cm – in cea
mai des intalnita varianta) construita in jurul unui procesor de semnal si este capabila de a prelua
date din mediul inconjurator printr-o serie de senzori si de a efectua actiuni asupra mediului prin
intermediul luminilor, motoarelor, servomotoare, si alte tipuri de dispozitive mecanice. Procesorul

5
este capabil sa ruleze cod scris intr-un limbaj de programare care este foarte similar cu limbajul
C++. Placa Arduino UNO se conecteaza la portul USB al calculatorului folosind un cablu de tip
USB A-B, disponibil in varianta de 1.5 metri sau de 3 metri. Poate fi alimentata extern (din priza)
folosind un alimentator extern. Alimentarea externa este necesara in situatia in care consumatorii
conectati la placa necesita un curent mai mare de cateva sute de miliamperi. In caz contrar, placa
se poate alimenta direct din PC, prin cablul USB. Pachetul contine doar placa Arduino, si nu si
cablul USB sau alimentatorul extern (este necesar sa le comanzi separat, daca doresti).

Figure 4 Arduino Uno

Specificatii:

 Microcontroler: ATmega328
 Tensiune de lucru: 5V
 Tensiune de intrare (recomandat): 7-12V
 Tensiune de intrare (limita): 6-20V
 Pini digitali: 14 (6 PWM output)
 Pini analogici: 6
 Curent per pin I/O: 40 mA
 Curent 3.3V: 50 mA
 Memorie Flash: 32 KB (ATmega328) 0.5 KB pentru bootloader
 SRAM: 2 KB (ATmega328)
 EEPROM: 1 KB (ATmega328)

6
 Clock Speed: 16 MHz

2. SCHEMA ELECTRICĂ A PROIECTULUI

După cum se poate observa și în figurile 5și 6 unul dintre senzorii de temperatură a fost
conectat în mod direct la bază, în timp ce un altul este conectat doar wireless la aceasta putând fi
plasat într-o rază de acoperire de aproximativ 35-40 de metri. Am ales să folosesc această
configurație pentru a simplifica demonstrația practică, dar în realitate, ambii senzori puteau fi
conectați doar wireless la bază, unde să se afișeze temperaturile măsurate. Pentru configurarea
bazei, unde se achiziționează și afișează datele, am profitat de faptul că breadboard-ul este format
din 2 părți ce sunt deconectate la mijloc, permițându-mi astfel alimentarea atât a modului XBee
cât și a ecranului LCD pe care am realizat afișarea. Am avut nevoie de acest lucru întrucât modului
XBee trebuie alimentat la 3.3V, în timp ce pentru o bună funcționare a ecranului LCD este
recomandată o tensiune constantă de 5V. Cu ajutorul unui potențiometru la LCD se reglează
intensitatea scrisului ce apare pe LCD, în timp ce cu ajutorul unei rezistențe de 220W ne asigurăm
că tensiune ce alimentează lumina de fundal (backlight) nu este prea mare pentru a arde circuitul
ecranului. Senzorul DS18B20 este conectat la o alimentare de 3.3V, iar pentru pinul său de date
(cel din centru) folosim un divizor de tensiune pentru a suprasolicita placa Arduino Uno,
conducând la probleme tehnice asupra acesteia. Acesta trimite datele către plăcuță, care mai
departe, cu ajutorul pinilor Tx/Rx le trimite către nodul XBee. Datele sunt ulterior plasate în rețea
și trimise către coordonator.

7
Figure 5 Baza sistemului și primul senzor

Configurația senzorilor ce sunt plasați la distanță (remote) este asemănătoare cu cea din
partea de bază, cu excepția faptului că nu vom mai avea si ecranul LCD conectat la Arduino.

Folosirea microcontrolerului în această situație este mai degrabă o restricție dată de modul
în care senzorul de temperatură ales prelucrează datele – mai exact, este nevoie directă de librăria
acestuia pentru a fi interpretate datele.

8
Figure 6 Senzor de la distanță al sistemului

3. SCHEMA BLOC

Figure 7 Schema bloc

9
Blocul de afisare primeste datele de la blocul de stocare si preocesare date Master si le
afiseaza.

Blocul de stocare si procesare date Master: primeste informatii de la blocul de masurare


temperatura 1, primeste informatii de la blocul de receptie, trimite informatii la blocul de afisare.

Blocul de masurare temperatura 1: masoara temperatura si trimite la blocul de stocare si


procesare date Master.

Blocul de receptie date: primeste date de la blocul de emisie date, trimite datele la blocul
de stocare si procesare master

Blocul de emisie date: primeste date de la blocul de stocare si procesare date Slave si le
trimite la blocul de receptie date.

Blocul de stocare si procesare date Slave primeste info de la blocul de masurare


temperatura 2 si trimite info la blocul de emisie date.

Blocul de masurare temp 2 masoara temp si trimite datele la blocul de procesare Slave.

4. CONFIGURAREA MODULULUI XBEE

Din punct de vedere al configurărilor modulelor wireless, mai exact, avem nevoie de
configurare din punct de vedere al adreselor destinație al modulelor ce conțin senzorii de la distanță
– baza nu are nicio responsabilitatea de a trimite date către nimeni din cadrul rețelei, acest punct
reprezentând un data sink – practic avem doar acumulare de date ce trebuie prelucrate și afișate
utilizatorului. În cazul în care am fi folosit senzori care să îndeplinească alte roluri sau un alt senzor
de temperatură, care nu ar fi avut nevoie de o librărie specifică pentru prelucrarea datelor, am fi
putut conecta pinul de date al senzorului de temperatură direct la unul dintre pinii analogici ai
modului XBee.

10
5. CONFIGURAREA MODULELOR ARDUINO

Vom avea nevoie de bibliotecile create pentru o mai simplă interacționare cu ecranul LCD
și cu senzorul de temperatură ales – acestea vor fi importante încă de la început. De asemenea, este
nevoie de inițializare a celor două componente, încă de la începutul programului, pentru a specifica
ce pini vor fi folosiți pentru funcționalitățile aduse – pentru ecranul LCD vom folosi pinii 2, 3, 4,
5, 11, 12, în timp ce pentru senzorul DS18B20, va fi selectat pinul 7 pentru achiziția de date.

În partea de setup() a ambelor părți a proiectelor, inițializăm legătura serială cu


calculatorul, respectiv cu modulul XBee, setând o viteză de transmisie a datelor (baud rate) de
9600 bps si pornim achiziția de date de la senzorul de temperatură, respectiv inițializăm LCD-ul.

Atât în cazul senzorului plasat la distanță, cât și în cazul bazei, unde se achiziționează
datele, prefer stocarea, transmisia și afișarea datelor sub formă de Stringuri – am ales această
abordare pentru a fi mai ușor pe viitor de stocat datele de la alți senzori. De asemenea, a reprezentat
cea mai bună soluție pentru problema întâmpinată în momentul în care trimiteam date numerice
pe legăturile seriale ale Arduino, acesta realizând o conversie implicită în cod ASCII a acestora.
În cadrul ambilor senzori, datele sunt achiziționate în partea de loop() a programului prin apelul
funcției getTempCByIndex() – care returnează valoarea achiziționată la un anumit moment de
timp. La această valoare concatenăm simbolul de grade Celsius, după care rezultatul îl transmitem
către modulul XBee, respectiv le afișăm.

De menționat că în cadrul proiectului , afișarea se face și pe monitorul serial, pentru o mai


bună înțelegere a rezultatelor obținute în ambele puncte. Pentru partea de afișare a datelor, procesul
este următorul – setăm prima linie a ecranului pentru afișare, realizăm achiziția de date de la
senzorul local și afișăm aceste rezultate, după care trecem pe ce de-a doua linie a LCD-ului, și
citim, respectiv afișăm datele ce vin pe legătura serială de la modulul XBee. Pentru a nu deveni o
problemă vizuală pentru utilizator, datele sunt actualizate cu o întârziere de aproximativ 2 secunde.

11
6. Bibliografie

1. https://cleste.ro/placa-de-dezvoltare-arduino-
uno.html?utm_medium=GoogleAds&utm_campaign=&utm_source=&gclid=CjwKCAiA
lrSPBhBaEiwAuLSDUPGSB3QPMp0GQVXVRHYCf_dRcdLUBQcwdQae-
myd6f1THecOI4LmVxoCN0IQAvD_BwE
2. https://ro.mouser.com/new/digi-international/digi-xbee-s2c-rf-modules/
3. https://www.elprocus.com/lcd-16x2-pin-configuration-and-its-working/
4. https://ardushop.ro/ro/home/1300-senzor-sonda-temperatura-impermeabil-ds18b20-
dsb18b20.html?gclid=CjwKCAiAlrSPBhBaEiwAuLSDUP72TCXsvFm3LDSL_1E0Az9
oQ4OneDRHCP3nBlEzH2ISt5q5GKMRBBoCghMQAvD_BwE

12

S-ar putea să vă placă și