Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
MONITORIZARE A TEMPERATURII
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
1.1 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.
Caracteristici tehnice:
3
Figure 2 Modulul XBee
Specificații tehnice:
4
1.3 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
1.4 Arduino
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).
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
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
9
Blocul de afisare primeste datele de la blocul de stocare si preocesare date Master si le
afiseaza.
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 masurare temp 2 masoara temp si trimite datele la blocul de procesare Slave.
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.
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.
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