Sunteți pe pagina 1din 8

REALIZAREA UNEI STAŢII METEO CU AFIŞAREA DATEI ŞI A

TIMPULUI CU ARDUINO UNO

AUTOR: ŞERBAN BIANCA IOANA

COORDONATOR: CONF. DR. ING. POPA GABRIEL NICOLAE

AFILIERE AUTOR: UNIVERSITATEA POLITEHNICA TIMIŞOARA,


FACULTATEA DE INGINERIE HUNEDOARA

REZUMAT
În lucrare se prezintă o staţie meteo care măsoară într-o zonă temperatura şi umiditatea cu un senzor
digital inteligent, care se conectează la un sistem (tip DHT11) cu Arduino Uno. La acelaşi sistem se conectează
şi ceasul de timp real (tip DS3231) care afişează data şi timpul. Pentru afişarea informaţiilor se utilizează un
shield cu display LCD 2x16 caractere care se conectează direct pe placa cu Arduino Uno. Umiditatea şi
temperatura sunt măsurate şi afişate în fiecare secundă (delay 1000).

CUVINTE CHEIE: Arduino, DHT11, DS3231.

1. INTRODUCERE
Microcontrolerele constituie în această perioadă un domeniu deosebit de dinamic.
Acestea se impun din ce în ce mai mult în aplicaţiile industriale. Un microcontroler poate fi
considerat a fi un microcalculator care pe lângă procesor şi memorie este completat cu
circuite şi funcţii speciale care îi permit să interacţioneze uşor cu mediul exterior.
Microcontrolerele sunt mici „creiere” electronice care, dacă au primit „educaţia
necesară” (prin firmware), pot înlocui cu succes foarte multe tipuri de circuite electrice şi
electronice. În acest mod, microcontrolerele ne permit să obţinem aparate mai mici, mai
ieftine şi mai performante. [1]

Figura 1: Schema simplificată a unui microcontroler

Arduino este un instrument prin care poţi realiza sisteme informatice capabile să
perceapă, şi să controleze lumea înconjurătoare. Acest instrument este open-source şi este
compus dintr-un mediu de dezvoltare şi o placă de dezvoltare cu microcontroler AVR.
Arduino poate fi folosit pentru dezvoltarea de obiecte interactive. Informaţia este
preluată de la o gamă variată de senzori şi comutatoare, se procesează în interiorul
microcontrolerului AVR, şi este transmisă către o gamă la fel de variată de lumini, motoare,
actuatoare, etc.

2. MICROCONTROLERE AVR
Microcontrolerul AVR are la bază un procesor RISC cu o arhitectură Harvard, adică
unitatea centrală de procesare are memorie de program şi memorie de date separate.
Aceste microcontrolere sunt destinate aplicațiilor simple cum ar fi: controlul
motoarelor, controlul fluxului de informație pe portul USB, controlul accesului de la distanţă
(Remote Access Control), ş.a. Ele folosesc folosesc o arhitectură RISC care permite execuția
celor mai multe instrucțiuni într-un singur ciclu de tact, ceea ce duce la îmbunătățirea
performanței de 10 ori față de procesoarele convenționale (de exemplu, Intel 8051) care
operează la aceiași frecvență. [2]

Figura 2: Exemple de microcontrolere Atmel

Specific arhitecturii Harvard, procesoarele folosesc spații de memorie și magistrale de


acces separate pentru coduri și pentru date. Programarea se poate face în două moduri: serial
și paralel. Procesoarele au memorie de date integrată de tip RAM pentru variabile și memorie
de tip EEPROM pentru stocarea constantelor.
Numărul mare de registre interne (32 de registre de 8 biți), specific procesoarelor
RISC, permite stocarea variabilelor în interiorul procesorului, reducând astfel timpul de acces.
În acest fel crește viteză de execuție a programelor.

Figura 3: Caracteristica unui microcontroler AVR pe 8 biţi

Instrucțiunile acestei familii de microcontrolere au fost proiectate pentru a reduce


dimensiunea unui program scris în limbaj C sau în limbaj de asamblare. Posibilitatea
programării memoriei FLASH și a memoriei EEPROM, face că aceste microcontrolere să
aibă o largă utilizare datorată costului mic de dezvoltare a unei aplicații prin reducerea
timpului de proiectare. [3]
O altă calitate remarcabilă a acestor microcontrolere este consumul redus de energie.
Domeniul tensiunilor de alimentare este cuprins între 1,8 și 5 V. Procesoarele folosesc 6
moduri diferite de funcționare cu consum redus ceea ce asigură reducerea consumului când
microcontrolerul nu este activ. La frecvență de tact de 1 MHz și la o tensiune de alimentare de
3 V procesorul activ consumă 1,1 mA, iar în regim Power-down consumul se reduce la <1μA.
Microcontrolerul folosit de plăcuța Arduino UNO este Atmega328-P, încadrat în
chenarul mov (fig. 3). Aceste microcontrolere se programează în mod inițial cu ajutorul unor
dispozitive hardware adiționale numite programatoare (microcontrolerele pot fi programate
inclusiv pe linia de producție) prin pinii ICSP (In-Circuit Serial Programming).
ATmega328 este un microcontroler CMOS cu putere redusă pe 8 biți bazat pe
arhitectura RISC îmbunătățită AVR. Prin execuţia de instrucțiuni puternice într-un singur
ciclu de ceas, ATmega328 / P realizează transferuri apropiate de 1 MIPS pe MHz. Acest lucru
ajută sistemul designer pentru a optimiza dispozitivul pentru consumul de energie versus
procesare viteză.
Microcontroler-ul ATmega328p-PU este unul dintre cele mai folosite microcontrolere,
dovadă și faptul că este folosit pentru placuța de dezvoltare Arduino Uno. Acesta poate
înlocui microcontroller-ul de pe placa dumneavoastră de dezvoltare, în cazul în care acesta s-a
defectat.
Azi, ATmega328 este frecvent utilizat în mai multe proiecte și sisteme autonome unde
un este folosit un microprocesor simplu de consum redus şi cost scăzut. Poate cea mai
comună implementare a acestui chip este populara platformă pentru Arduino, modelele Uno și
Nano. [6]

Figura 4: Plasarea unui Atmega328 pe placa Arduino Uno

Pentru a elimina nevoia unui astfel de dispozitiv, pe aceste microcontrolere se scrie un


bootloader – un mic program software ce preia instrucțiunile (codul programului) prin
interfața serială și le scrie într-o zonă de memorie nevolatilă (FLASH), de unde
microcontrolerul le va interpreta și rula. Astfel, microcontrolerul nostru poate interpreta acum
instrucțiuni sosite pe interfață serială. Mai avem nevoie doar de o metodă de a face conversia
de la USB la serial pentru a putea programa Atmega328-P prin portul USB al PC-ului.
Această responsabilitate îi revine unui alt microcontroler (circuitul din chenarul verde, fig. 3).
Acesta are interfață ICSP prin care poate fi reprogramat. Microcontrolerul responsabil
cu conversia USB-Serial din chenarul verde poate fi înlocuit cu cipuri precum cele folosite de
convertorul USB-Serial prezentat anterior. În acest mod, au apărut clone Arduino mai ieftine,
dar cu aceleași funcționalități.[6]
Dacă zona de memorie a microcontroler-ului Atmega328-P în care este scris
bootloaderul este coruptă, nu veți mai putea programa plăcuța prin intermediul portului USB.
Această problemă este ușor de remediat – puteți folosi un programator (dispozitiv de
programare) pentru a rescrie bootloaderul. De asemenea, este important să știți că se poate
folosi orice altă plăcuță Arduino pe post de programator: Există deja un exemplu de program
ce transformă plăcuța Arduino într-un programator ICSP – File->Examples- >ArduinoISP
(vezi cartea "Introducere în Arduino"). [4]

3. PROIECTAREA UNUI MODEL EXPERIMENTAL


Proiectarea staţiei meteo s-a făcut folosind urmatoarele componente: placa de
dezvoltare Arduino Uno, ceasul de timp real DS3231, un display LCD 2x16 caractere cu șase
butoane, un senzor de umiditate și temperatură DHT11 și o placă experimentală.

Figura 5: Stația meteo experimentală

Arduino este o placă de dezvoltare cu microcontroler care în funcţie de mărimile


determinate de senzori poate controla elemente de execuţie. Acest instrument este open-
source şi este compus dintr-un mediu de dezvoltare (o varianta de Wiring – platforma folosită
pentru procesare multimedia) şi o placă de dezvoltare cu microcontroler AVR.
Arduino poate fi folosit pentru dezvoltarea de obiecte interactive. Informaţia este
preluată de la o gamă variată de senzori şi comutatoare, se procesează în interiorul
microcontrolerului AVR, şi este transmisă către o gamă la fel de variată de lumini, motoare,
actuatoare.

Figura 6: Placa Arduino folosită în proiect

DHT11 este un senzor digital de temperatură și umiditate, care are încorporat un


senzor de umiditate capacitiv și un termistor, pentru a măsura aerul din jur și dă un semnal
digital pe pinul de date. Senzorul DHT11 oferă o calibrare extrem de precisă a camerei de
calibrare.
Temperatura este măsurată de un NTC, iar umiditatea relativă este măsurată folosind
un senzor capacitiv. Aceste elemente sunt pre-calibrate, iar ieșirea este oferită ca semnal
digital. Acest senzor este compatibil cu cele mai populare plăcuțe de dezvoltare, precum
Arduino. Senzorul de temperatură și umiditate DHT11 este foarte convenabil, oferind precizie
bună, simplitate în utilizare și dimensiuni reduse la un preț mic.
Senzorul poate măsura umiditatea în intervalul 20% - 90% cu o precizie de 5% și
temperatura în intervalul 0 – 50 ˚C cu o precizie de 2 ˚C.
Acesta măsoară umiditatea relativă analizând vaporii de apă prin măsurarea rezistenței
electrice dintre doi electrozi. Componenta de detectare a umidității este un substrat de
menținere a umidității cu electrozii aplicați pe suprafață. Când vaporii de apă sunt absorbiți de
substrat, ionii sunt eliberați de substrat, ceea ce mărește conductivitatea dintre electrozi.
Schimbarea rezistenței dintre cei doi electrozi este proporțională cu umiditatea relativă.
Umiditatea relativă mai mare scade rezistența dintre electrozi, în timp ce umiditatea relativă
mai mică crește rezistența dintre electrozii. a umidității. [5]
Umiditatea relativă are următoarea expresie:
𝜌
𝑅𝐻 = ( 𝜌𝜔 ) 𝑥 100% (1)
𝑠

Figura 7: Ecranul LCD al stației meteo în diferite momente de timp

Ecranul LCD pe care îl vom utiliza este dedicat afișării textului. Ca și capabilități, el
poate afișa un text format din 32 de caractere, câte 16 pe fiecare dintre cele două rânduri
disponibile. Fiecare caracter este de fapt o matrice de 5x8 puncte. Deasupra ecranului este o
rezistentă semireglabilă ce are rolul setării contrastului pentru ecranul LCD. Sub ecran se
găsesc 6 butoane, primul pentru selecție, următoarele 4 pentru a indică o direcție
(sus/jos/stânga/dreaptă) conectate la intrarea analogică A0 și ultimul pentru a reseta Arduino-
ul (este acelaşi buton de reset de pe placa Arduino).
Ecranul se poate monta direct şi uşor pe placa Arduino, dupa cum se vede in fig. 7.

Figura 8: Montarea ecranului LCD pe placa Arduino

DS3231 este un ceas de timp real, cu o precizie foarte mare, care poate afișa ora,
minutele și secundele, precum și informații de zi, lună și an. De asemenea, are o compensație
automată pentru ani și pentru luni cu mai puțin de 31 de zile. Modulul poate funcționa fie la
3.3, fie la 5 V, ceea ce îl face potrivit pentru multe platforme de dezvoltare sau
microcontrolere. Intrarea bateriei este de 3 V, iar o baterie tipică CR2032, 3V, poate alimenta
modulul și poate menține informațiile mai mult de un an. [8]
Dispozitivul încorporează o intrare de baterie, în cazul în care deconectați sursa de
alimentare principală îşi menține datele exacte, secunde, minute, ore, ziua, data, luna și
informații despre an. Dacă luna are mai puțin de 31 de zile, data finală va fi reglată automat,
inclusiv corecțiile pentru anul bisect. Ceasul funcționează în oricare dintre cele doua moduri:
24 de ore sau AM / PM al formatului de 12 ore. Are dimensiunea de 38 mm (lungime), 22
mm (lăţime) şi 14 mm (înălțime), tensiunea de operare este 3,3-5 0,5 V, cipul ceasului de
înaltă precizie este DS3231, senzorul de temperatură cip vine cu o precizie de ± 3 %, cipuri de
memorie: AT24C32 (capacitate de stocare) 32KB. Interfață IIC, viteza maximă de transmisie
de 400 KHz (tensiune de 5 V de lucru). Poate fi folosit în cascadă cu un alt dispozitiv IIC. [9]

Figura 9: Modul DS3231

Mediul de dezvoltare folosit este ArduinoIDE, un program uşor de folosit. IDE


(Integrated Development Environment) este în esență un software care permite editarea și
compilarea codurilor, acesta rulează pe platforma Java.
Mediul integrat de dezvoltare Arduino este destinat scrierii programelor ce pot fi
încărcate pe platformele fizice Arduino. Interfața este scrisă in Java și mediul de programare
folosește limbaje de programare de tip open source precum Processing, avr-gcc. Interfața este
multiplatformă, putând rula în Windows©, Mac OS X© și Linux. Programul poate fi obținut
atât ca executabil specific platformei de lucru pe care o aveți dar și sub formă de cod sursă pe
care îl puteți compila conform condițiilor specifice pe care le aveți.
El conţine un text editor în care se poate scrie codul, un ecran de mesaje care
informează despre acţiunile curente sau erorile care apar, o consolă text şi desigur un toolbar
cu butoane pentru funcţiuni comune dar şi un compilator pentru codul scris anterior. [7]

Verifică programul pentru erori

Încarcă programul în placa de dezvoltare


Creează un proiect nou

Deschide un proiect

Salvează proiectul curent


Monitorizează serială – acest buton este folosit pentru comunicarea prin portul
serial cu calculatorul [7]
Figura 10: Codul folosit pentru rularea programului

După verificarea programului acesta a fost încărcat pe Arduino Uno și rulat (fig.10).
Figura 11: Rularea programului

După cum se poate observa în figura 9, în partea din stânga sus este afișată umiditatea,
în stânga jos este afișată temperatura în grade Celsius, în dreapta sus se poate vedea data și în
dreapta jos este afișată ora.

4. CONCLUZII
O definiţie, cu un sens foarte larg de cuprindere, ar fi aceea că un microcontroler este
un microcircuit care incorporează o unitate centrală (CPU) şi o memorie împreună cu resurse
care-i permit interacţiunea cu mediul exterior.
Printre multele domenii unde utilizarea lor este practic un standard industrial se pot
menţiona: în industria de automobile (controlul aprinderii/motorului, climatizare, diagnoză,
sisteme de alarmă, etc.), în aşa zisa electronică de consum (sisteme audio, televizoare, camere
video şi videocasetofoane, telefonie mobilă, GPS-uri, jocuri electronice, etc.), în aparatura
electrocasnică (maşini de spălat, frigidere, cuptoare cu microunde, aspiratoare), în controlul
mediului şi climatizare (sere, locuinţe, hale industriale), în industria aerospaţială, în mijloacele
moderne de măsurare - instrumentaţie (aparate de măsură, senzori şi traductoare inteligente),
la realizarea de periferice pentru calculatoare, în medicină.
Prețul unui microcontroler este redus, ceea ce aduce cu sine şi micşorarea preţului
sistemelor de control.
Sistemele cu microcontroler sunt din ce în ce mai mult folosite în procesele de control
automat, atât datorită costurilor mici pe care le oferă această tehnologie în momentul de față,
cât mai ales înaltei flexibilități aplicative.

5. BIBLIOGRAFIE
[1] Viorel-Constantin Petre, Introducere în microcontrolere și automate programabile, Editura Matrixrom
București
[2] http://www.unitbv.ro/faculties/biblio/interfete_specializate/curs.pdf
[3] https://biblioteca.regielive.ro/proiecte/electronica/programator-universal-pentru-microcontrolere-pic-
93762.html
[4] https://electronicgadgets.ro/shield-uri-arduino-raspberry/70-modul-rtc-ceas-ds3231.html
[5 ]https://www.optimusdigital.ro/ro/senzori-senzori-de-temperatura/99-senzor-de-temperatura-si-si-umiditate-
dht11.html
[6] https://www.optimusdigital.ro/ro/componente-electronice-microcontrollere/641-microcontroller-atmega328p-
pu-.html
[7]http://incearca.softwareliber.ro/2008/06/30/arduino-platforma-gratuita-pentru-pasiona%C8%9Bii-de-
electronica/
[8] https://microcontrolere.wordpress.com/arduino/arduino-software/
[9] http://ro.sz-kuongshun.com/uno/uno-board-shield/ds3231-at24c32-iic-module-precision-rtc-module.html

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