You are on page 1of 42

Cap 3.

3.1. Descrierea sistemului

Acest sistem a fost creat pentru a demonstra în mod practic, funcționarea dispozitivelor
automatizate de către utilizator, după preferințele de confort ale acestuia și dorinta de a preveni
situațiile neplăcute, chiar catastrofale, care pot avea loc într-o locuință. Sistemul este format
din 3 module, fiecare funcționând pentru camera destinată. Se consideră 3 camere care
reprezintă cele mai importante incăperi și anume: dormitor, bucatarie si incăperea centralei
termice. Pentru aceste module independente se proiectează câte o placa de dezvoltare pentru
fiecare cameră. Aceste module s-au programat pentru pune în evidentă situațiile critice posibile
într-o locuință: incendiu, prezența gazelor inflamabile și a fumui și de asemenea factorii de
discomfort cum ar fi : umiditatea și temperatura ridicată. Dormitorul, unde utilizatorul
sistemului îsi petrece o mare parte din timp, atribuie modulului aferent să fie de complexitatea
cea mai mare pentru a asigura confortul dorit. Modulul bucătariei este conectat la un SBC(
Single Board Computer) și anume, Raspberry PI (Model B+), cu ajutorul căruia se va face
achizitia de date prin comunicația serială GPIO, stocate ulterior pe un server creat pe acelasi
dispozitiv Raspberry. Server-ul necesita configurații ulterioare. De asemenea s-a construit o
macheta care prezintă interactiv funcționarea independentă a fiecărui modul. Pentru a creea
modulele acestui sistem, după cum s-a propus, s-au utilizat următoarele componente:

Pentru bucătarie:

-placă de teste
- microcontroler ATMEGA 328 ,
-un rezonator de quartz la frecventă de 16 Mhz folosit ca oscilator extern
-senzor de temperatură Brick LM50, senzor de fum și gaze inflamabile MQ2
- regulator de tensiune LM7805, necesar pentru a obține un curent de 5V în urma
alimentarii modulului cu baterie de 9V
-2 leduri pentru a semnala evenimentele de confort și apariția unui incendiu, unul de
culoare verde si unul de culoare rosie
- baterie Varta Industrial de 9V

1
Pentru încaperea centralei termice:

-placă de teste
- microcontroler ATMEGA 328 ,
-un rezonator de quartz la frecventă de 16 Mhz folosit ca oscilator extern
- senzor de fum și gaze inflamabile MQ2
- servomotor SO3N STD,
- regulator de tensiune LM7805, necesar pentru a obține un curent de 5V în urma
alimentarii modulului cu baterie de 9V
-2 leduri pentru a semnala atunci când cantitatea de gaz din încapere este în parametrii
optimi(verde) și atunci cand există posibile scurgeri de gaze(rosu)
- baterie Varta Industrial de 9V

Pentru dormitor:

-placă de teste
- microcontroler ATMEGA 328 ,
-un rezonator de quartz la frecventă de 16Mhz folosit ca oscilator extern
-senzor de temperatura Brick LM50, senzor de umiditate Brick SYH-2R
- regulator de tensiune LM7805, necesar pentru a obține un curent de 5V în urma
alimentarii modulului cu baterie de 9V
- driver de motor Driver TB6612FNG Dual 1A necesar pentru comandarea
ventilatorului din încăpere
- un microventilator 12V
- un senzor de lumină format dintr-un fotorezistor și o rezistentă de 1kΩ( folosită ca
divizor de tensiune)
- 1 led de culoare albastră care va lumina în fucție de intensitatea luminoasă din
țncapere
De asemenea pentru realizarea conexiunii dintre microcontrolere cu restul componentelor
prezentate s-au utilizat conectori. Trebuie menționat că pe langă aceste componente este
prezentă și un dispozitiv deosebit de important și anume, SBC-ul Raspberry PI MODEL B+,
însoțit de un card microSD de clasă 10, cu capacitate de stocare 8GB necesară pentru instalarea
si operarea sistemului de operare Raspbian (Release date:2015-05-05, Kernel Version: 3.18)
oferit gratuit de dezvoltătorii acestuia. S-a ales să se utilizeze acest sistem de operare deoarece

2
este des întalnit în rândul utilizatorilor care dețin dispozitive Raspberry și totodată, usurând
eventualele depanări software și hardware ulterioare. De asemenea dispozitivul achizitionat
dispune de adaptor USB Wi-Fi numit WI-PI care este destinat în special dispozitivelor
Raspberry. Dispunând de comunicația wireless, se va putea accesa de la un calculator sau
smartphone serverul unde sunt păstrate valorile achizitionate de la sensori și care vor evidenția
caracteristica de monitorizare a sistemului.

FIGURA MACHETĂ

3.2. Proiectarea modulelor sistemului

Modulele sistemului proiectate au toate la bază câte un microcontroler ATmega328,


fiecare programat cu ajutorul programatorului Arduino Uno. Fiecare microcontroler are atașat
un oscilator extern și piesele aferente modulului respectiv.În continuare se va prezenta în detaliu
fiecare placă de dezvoltare realizată și care sunt piesele conectate la acestea.

Modulul bucătariei este prezentat în figura de mai jos în care se se remarcă prezența
unui regulator de tensiune.

3
FIGURA MODUL 3.2.1

Alimentarea de 9V este conectată înaintea regulatorului la VCC respectiv GND. Pentru


a ușura alimentarea circuitului s-a folosit o mufă pentru bateria de 9V. În continuare, regulatorul
va rezulta un curent de 5V necesar funcționării microcontrolerului . Microcontrolerul este situat
în soclul acestuia care este lipit pe placă pentru a nu-l deteriora și a putea fi utilizat pentru
proiectele ulterioare. Pe lânga acest fapt, s-au lipit pinii adiționali VCC respectiv GND pentru
pentru a putea conecta toate componentele corespunzător. Oscilatorul extern, rezonatorul de
quartz la 16Mhz este prezent pe toate plăcile de dezvoltare și este conectat la pinii X1 si X2 al
microcontrolerului. La microcontroler se mai întâlnesc două dispozitive conectate și anume: un
senzor de temperatură Brick , LM50 , cu pinul OUT legat la pinul A0 al microcontrolerului iar
VCC-ul si GND-ul senzorului este legat la pinii adiționali la ieșirea din regulator și un senzoru
de gaz MQ-2. Cele doua LED-uri sunt legate astfel : pinii LED-ului verde sunt legați la pinul
D5 al microcontrolerul respectiv GND iar cei il LED-ului roșu la pinul D6 al microcontrolerului
respectiv GND.

4
Fig.3.2.2. Implementarea circuitului cu senzorul LM50 în Proteus

Funcționarea acestui modul presupune ca atunci când senzorul de temperatură


detectează o valoare foarte ridicată sau atunci când senzorul de fum detectează apariția unui
gaz inflamabil sau fum, se presupune că este un pericol de incendiu. În acest caz vor fi luate
măsurile de precauție necesare prin pornirea sistemului de alarmă pentru a inștiința pe cei aflați
în interiorul locuinței. Demonstrând acest fapt, LED-ul roșu va semnala apariția unui incendiu
iar LED-ul verde va arăta că parametrii senzorului înregistrează valori optime și că cei din
incintă nu sunt in pericol.
Modulul centralei termice prezintă o importanță deosebită în prevenirea posibilelor
incendii din incintă. Acesta are la fel în componența sa un regulator de tensiune.

Fig.3.2.3 Modulul centralei termice

Alimentarea de 9V este conectată înaintea regulatorului la VCC respectiv GND. Pentru


a ușura alimentarea circuitului s-a folosit de asemenea o mufa pentru bateria de 9V. În
continuare, din regulator va rezulta un curent de 5V necesar alimentarii microcontrolerului.
Microcontrolerul este in soclul acestuia care este lipit pe placă pentru a nu-l deteriora și pentru
a-l putea deatasă cu ușurință pentru un uz ulterior. Pe lânga acest fapt, s-au lipit pini aditionali
VCC respectiv GND pentru pentru a putea conecta toate componentele modulului. Oscilatorul
extern, rezonatorul de quartz la 16Mhz este prezent pe toate plăcile de dezvoltare si este
conectat la pinii X1 si X2 ai microcontrolerulul. Microcontrolerul are conectat la pinii acestuia
două dispozitive adiționale: un senzor gaz MQ2 și un servomotor SO3N STD. Senzorul de gaz
este conectat la pinul A0 al microcontroler-ului respectiv GND iar servomotorul la pinul cu
semnal PWM, ~D9. Cele doua LED-uri sunt conectate astfel : pinii LED-ului verde la pinul D5

5
al microcontrolerul respectiv GND iar cei al LED-ului roșu la pinul D6 al microcontrolerului
respectiv GND.

Fig.3.2.4 Simularea circuitului cu servomotorul SO3N STD în Proteus

●Modulul dormitorului

Daca pana acum, cele doua module prezentate au fost construite pentru a oferii siguranta
proprietarului acest modul va oferi confortul acestuia. Deseori ne confruntam cu temperaturi
ridicate si umezeala din camera, de aceea, prin realizarea acestui modul am incercat ca aceste
griji sa dispara. Acest modul este alimentat in acelasi fel ca si modulele prezentate dinainte si
are de asemenea un oscilator extern de 16 Mhz. Acesta contine 2 senzori (unul de temperatura
si unul de umiditate), in functie de care se va asigura confortul temperaturii ambientale a
camerei prin actionarea unui ventilator. Microventilatorul este legat corespunzator la driver-ul
de motor TB6612FNG si microcontroler prin pinii: bornele microventilatorului la pinul AO1

6
respectiv pinul AO2 al driverului, pinii D9, D10 ai microcontrolerului la pinii AIN2, AIN1 al
driverului de motor. Pinul VMOT al driverului este legat inaintea regulatorului, cu un curent
de 9V. Trebuie remarcat faptul ca modulul dormitorului are in componenta sa un senzor de
lumina format dintr-o fotorezistenta si o rezistenta de 1kΩ necesara functionarii. Fotorezistenta
va capta razele luminoase si in functie de acestea microcontrolerul va emite semnal pe pin-ul
D6. Astfel LED-ul se va aprinde asemnea unui sistem de iliminat inteligent. Atunci cand
intesitatea luminoasa este scazuta , iluminatul va avea o intensitate ridicata si invers in caz
contrar. In acest mod resursele energiei electrice se folosesc eficient si costurile sunt mai reduse.

Fig. 3.2.5. Modulul dormitorului

3.2.1. Microcontrolerul ATmega328P

7
Pentru realizarea acestui proiect s-au utilizat 4 microcontrolere ATmega328P , cipurile fiind
creeate de compania Atmel. Acest tip de microcontroler pe 8 biți, de înaltă performanță,
aparține seriei AVR cu 4 pana la 32 biți programabili. Niciun alt microcontroler nu oferă mai
multa performantă de calcul cu eficiență energetică mai bună. Optimizat pentru fi lansat rapid
în dispozitivele de pe piață, aceste cip-uri se bazează pe cele mai eficiente arhitecturi create
pentru limbajele de programare C și Assembler. Nucleul AVR combină o instrucțiune bogată
cu un set de 32 registre de uz general. Toate 32 de registre sunt conectate direct la Unitatea
Aritmetică și Logică (ALU), permițând ca două registre independende sa fie accesate într-o
singură instructiune executată într-un singur ciclu de ceas. Arhitectura rezultată este mult mai
eficientă pentru programare realizând o viteză de calcul de 10 ori mari mare decât
convenționalele microcontrolere CISC.

3.2.a Diagrama Bloc a microcontrolerului ATmega328 R

Caracteristici legate de ATMEGA328p:

8
Are o arhitectură avansată RISC( Reduced Inscruction Set Computing), cu 131 de instrucțiuni
puternice, o singură execuție cu ciclu de ceas, 32 x 8 registre funcționale în uzul general de
lucru, până la 20 de MIMP (Milioane de instrucțiuni pe secundă. Are în componență 3 timere,
2 timere pe 8 biți cu scalator și comparator separat și un timer/counter pe 16 biți cu prescalator,
comparator separat și mod de captură. Dispune de asemenea de comunicația USART, Interfață
serială , port serial SPI , ADC cu 6 canale pe 10 biți, Watchdog Timer programabil cu oscilator
intern și 5 moduri selectabile din soft pentru diminuarea consumului de energie. Tensiunea de
operare este între 1.8 V – 5.5 V iar intervalul de temperatură: de la 40 °C pana la 85 °C. Are
1Kb EEPROM R

Dispozitivul este fabricat folosind tehnologia Atmel cu memorie nevolatilă.


Atmega328P este un microcontroler puternic care oferă o soluție eficientă extrem de flexibilă
și de cost redus pentru multe aplicații de control embedded. ATmega328 este sustinut cu o
suită completă de programe și cu instrumente de dezvoltare a sistemului inclusiv: compilatoare
C, asamblori Macro, Programe Debugger / Simulare. Microcontrolerele ATmega difera doar
in dimensiunea memoriei , suportul de boot loader si dimensiunea vectorului de intrerupere.
Am utilizat acest microcontroler deoarece ofera performante ridicate si in acelasi timp si
rezultate mai bune circuitului din acest proiect. Motivul pentru care am ales 3 microcontrolere
si nu doar unul a fost deoarece am vrut sa creez un sistem modular care contine dispozitive
programate si independente pentru fiecare modul in parte.Tabelul de mai jos sintetizeaza
memoria si dismensiunea vectorului de intrerupere pentru cele 3 dispozitive.

3.2.b Compararea performantelor celor 3 microconctrolere cu ATmega328P R

9
3.2.2. Regulatoare de tensiune

Dupa cum s-a menționat, fiecare din plăcile de dezvoltare au în componența lor un
regulator de tensiune L7805CV necesar pentru a obține un curent de 5V în urma alimentării
circuitului cu o baterie de 9V. Seria L78 de regulatoare de tensiune fixă sunt proiectate cu
protecție termică care inchide circuitul atunci când este supus la o stare excesivă de suprasarcină
de putere. În multe aplicații cu curenți mici, condensatoarele de compensare nu sunt necesare.
Cu toate acestea, se recomandă ca intrarea regulatorului să fie însoțită de un condensator dacă
regulatorul este conectat la o sursă de alimentare de la mare distanță. Un condensator de intrare
ar trebui să fie utilizat pentru a oferi caracteristici satisfăcătoare de înaltă frecvență pentru a
asigura funcționarea stabilă în toate condițiile de alimentare. Se recomandă utilizarea unui
condensator de 0,33 µF sau mai mare având impedanța internă scazută la frecvențe înalte.
Condensatorul trebuie conectat cu cele mai scurte legaturi posibile direct la bornele de intrare
ale regulatorului. Tehnicile de construcție sunt folosite pentru a minimiza cicluri de ground și
ghidarea căderii de tensiune deoarece regulatorul, nu are niciun ghidaj extern. Adăugarea unui
amplificator operațional permite ajustarea la valori mai ridicate sau intermediare păstrând în
același timp caracteristicile de reglementare.

Fig. 3.2.c Schema de functionare a regulatoarelor serie L78

Regulatoarele din seriaa L78 pot reglementa curentul pe cip, eliminând problemele de
distribuție asociate cu fiecare punct de reglare. Fiecare tip de regulator are încorporat o limită

10
de curent, inchidere termică internă și o protecție în zona sigură facandu-l în esență
indestructibil. Daca se furnizează o caldură adecvată acestea pot obține un curent de peste 1A.
Deși au fost destinate în primul rand ca regulatoare de tensiune, aceste dispozitive pot fi utilizate
cu componente externe pentru a obține un curent ajustabil.

Fig. 3.2.d Regulatorul de tensiune pentru modulele sistemului

3.3. Echipamente utilizate pentru proiectarea sistemului

În acest subcapitol se prezentă detaliat echipamentele necesare proiectării sistemului


de monitorizare si control. Printre aceste se numară:
- Senzorul de temperatură Brick LM50
- Senzorul de umiditate Brick SYH-2R
- Senzorul de fum și gaze inflamabile MQ2
- Senzorul de lumină
- Servomotorul SO3N STD
- Microventilator SUNON DC12V
- Driver-ul de motor TB6612FNG Dual 1A

11
Senzorul de temperatură Brick LM50 este un circuit integrat, un senzor precis care poate
citi temperaturi în intervalul -40°C până la + 125°C folosind o singură alimentare pozitivă.
Tensiunea de iesire LM50 este proportională în grade Celsius (+10 mV / ° C) cu tensiunea de
prag de 500mV. Aceasta permite citirea negativă a temperaturii fara a fi nevoie de o alimentare
negativa. Tensiunea ideală a senzorului LM50 variază de la 100 mV la +1.75V pentru un
interval de temperatură începând de la -40°C pana la + 125°C. Senzorul LM50 nu are nevoie
de o calibrare externă pentru a furniza o precizie de ± 3 ° C la temperatura camerei și ± 4°C la
temperatura totala cu valori între −40°C si 125°C. Ieșirea liniara, tensiunea de prag de +500mV
și calibrarea din fabrică simplifică circuitele necesare intr-un mediu cu o singură alimentere în
cazul în care citirea
temperaturii
negative este necasara.

Fig. 3.3.1. LM50 cu o singura alimentare

LM50 poate fi atașat cu ușurință în același mod ca și alți senzori de temperatură. Poate fi lipit
pe o suprafață și temperatura acestuia va fi 0.2°C din temperatura suprafeței. Aceasta presupune
ca temperatura aerului ambiant este aproape aceeași ca temperatura suprafeței. În cazul în care
temperatura aerului este mult mai mare sau mult mai mica decât temperatura suprafeței,
temperatura actuală a senzorului LM50 ar fi la o temperatură intermediară între temperatura
suprafeței și temperatura aerului. Liniile de circuit ale senzorului vor fi desigur parte a plăcii de
circuit imprimat, care este obiectul a cărei temperatură se masoară. Aceste zone de pe placa de
circuit imprimat nu vor cauza ca temperatura senzorului să se abată de la temperatura dorită.
Alternativ LM50 poate fi montat în interiorul unui tub metalic etanș și poate fi inșurubat într-o
gaură înfiletată într-un rezervor. Ca orice circuit integrat, senzorul LM50 cu firele și circuitele

12
aferente trebuie păstrat izolat și uscat pentru a evita coroziunea și defectarea acestuia. Acest
lucru este valabil mai ales în cazul în care circuitul poate funcționa la temperaturi scăzute unde
poate apărea fenomenul de condens. Vopselele epoxidice sunt adesea folosite pentru a se
asigura că umezeala nu poate coroda senzorul sau conexiunile sale. LM50 este foarte eficient
când vine vorba de încărcare capacitivă. Fără măsuri speciale de precauție, senzorul poate
conduce orice sarcină capacitivă. Are o impedanță de ieșire nominală de 2 kΩ. Impedanța de
ieșire a senzorului LM50 nu trebuie să depăsească 4 kΩ.

Senzorul de umiditate Brick SYH-2R

Specificațiile senzorului SYH-2R :

tensiune nominală : AC 1VRMS (1KHz)

putere nominală : AC 0.22 mW

temperatură de funcționare : 0~66°C

umiditate de operare : 20~95%RH

caracteristici standard : 33KQ (la 25°C, 60%RH)

temperatura de depozitare : -30°C --- 85°C

umiditate de depozitare : 95%RH

precizia umiditatii : ±5%RH(la 25°C, 60%RH)

timpul de raspuns al umiditatii : <60sec.(40↔80%RH)

histerezis : ±2%RH(40↔80%RH)

Umiditatea este un factor important în confortul personal și în calitatea de control a


materialelor, mașinăriilor și a altor dispozitive. Senzorul de umiditate este o componentă care
sesizează nivelul de umiditate al mediului. Într-o camera obisnuită, valoarea citită pe portul
analogic variaza între 900 (mediu saturat cu vapori de apă) și 300 (foarte uscat). Pinul de semnal
se conecteaza la un pin analogic al microcontrolerului. Acest senzor nu este calibrat din fabrică,
în sensul că nu se obține o valoare a umidității relative exprimată în procente. Conform

13
datasheet-ului asociat senzorului SYH-2R s-au interpretat datele citite și s-a realizat calibrarea.
Valoarea citită indică gradul de umiditate din mediu, în sensul că valoarea citită în aer are
întotdeauna aceași cantitate de umiditate, indiferent de momemntul citirii.

Fig. 3.3.2. Caracteristica standard și caracteristica liniară a senzorului de umiditate SYH-2R

Senzorul de fum și gaze inflamabile MQ2

Materialul sensibil al senzorilor de fum si gaze inflamabile este SnO2 care are o
conductivitate scăzută în aerul curat. Cand o sursa de gaz există, conductivitatea senzorului este
mult mai mare, împreună cu concentrația de gaz aflată în creștere. Se recomandă folosirea unui
electro-circuit simplu și realizarea conversiei schimbării conductivitătii pentru a corespunde
semnalului de ieșire al concentrării de gaze. Senzorul MQ-2 are sensitivitate mare la propan și
hidrogen și se pot folosi de asemenea și pentru citirea concentrației de metan și ai altor
combustibili. Acest senzor este potrivit pentru punerea în aplicare a diferitelor aplicații.

Principalele caracteristici ale acestui senzor sunt :

- sensitivitate bună la gaze imflamabile,


- senzitivitate ridicată la LPG, propan si hidrogen,
- circuit simplu.
Este des utilizat in diferite proiecte cum ar fi :
- detectarea scurgerilor de gaze dintr-o locuiță,

14
- detector de gaze al combustibililor industriali - detector de gaze portabil
Fig.3.3.3 Senzor de gaz MQ-2

Fig. 3.3.4.
Caracteristica senzorului MQ-2 R
Ordonata graficului reprezintă raportul de rezistență al senzorului (Rs /Ro), unde rezistența
senzorului (Rs) este cunoscută sub forma Rs=(Vc/VRL-1)×RL iar abscisa graficului este
concentrația de gaze. Rs reprezintă rezistența în diferite gaze iar Ro rezistența senzorului în
1000ppm de hidrogen. Toate testele au fost realizate sub conditii standard.

Fig.3.3.5.Influenta temperaturii in raport cu umiditatea R

15
Graficul arată temperatura și umiditatea caracteristică. Ordonata acestuia reprezintă raportul de
rezistentă (Rs /Ro),unde Rs reprezintă rezistența senzorului în 1000ppm de butan sub diferite
valorii ale umidității și temperaturii. Ro reprezintă rezistența senzorului într-un mediu cu
1000ppm de metan.

Dacă senzorii sunt expuși la o concentrație mare de gaz coroziv ( cum ar fi H2Sz, SOx Cl2,
HCl etc) nu va duce doar la coroziunea structurii senzorilor ci de asemenea provoacă atenuare
a sensibilității. Performanța senzorilor va fi grav schimbată dacă se pulverizează pe acestea
metale alcaline. De asemenea sensibilitatea va fi redusă dacă senzorii se stropesc sau înmoaie
în apa.

Senzorul de lumina inclus in modulul dormitorului este alcatuit dintr-un fotorezistor și


un divizor de tensiune de 1kΩ. Fotorezistorii sunt componente electronice pasive care iși
modifică rezistența electrică țn funcție de intensitatea radiației luminoase incidente pe suprafața
fotosensibilă.

Fotorezistentele se pot utiliza atât în curent continuu cât și în curent alternativ.


Rezistența ohmica a fotorezistenței scade cu creșterea iluminării. Coeficientul de modificare a
rezistenței cu temperatura este scăzut și se micșoreazaă cu cresterea iluminarii. Timpul de
raspuns este de ordinul zecilor și sutelor de milisecunde, și anume aproximativ 10 ms pentru
fotorezistențele din Cd Se și 100 ms pentru cele din Cd S. De altfel viteza mică de răspuns
reprezintă un dezavantaj al fotorezistentelor. Parametrii cei mai importanți ai fotorezistențelor
sunt: rezistența de întuneric Rp definită ca rezistență electrică a fotorezistentei neiluminate;
sensibilitatea specifică definită ca raportul IL / Φ U, unde IL reprezintă curentul prin
fotorezistentă atunci cand este alimentata la o tensiune U si iluminata cu fluxul Φ. R

16
Fig.3.3.6.Schema de circuit al senzorului de lumină

Servomotorul standard GWS S03N are doi rulmenti pe arborele de iesire. Acesti rulmenti reduc
frecarea interna si pentru a permite un cuplu usor crescut fata de modelul S03N. Servomotoarele
GWS servo digitale sunt toate programabile cu cele mai avanasate tehnologii ASIC (Aplicatia
circuitelor integrate specifice), circuitul integrat procesand semnalele de intrare, toate la cel mai
bun timp de raspuns si cea mai buna rezolutie in mai mult de 12 biti sau mai mult de 4096
trepte. Performantele sunt mult mai bune decat servomotoarele digitale ale altor brand-uri , cele
care au doar microcontroler. Acelea au un timp de raspuns mai mic si rezolutie mai mica (10
biti sau 1024 trepte).

Specificatii:

- 4.8V 3.4 kilograme / cm 0.2S / 60 grade

- 6.0V 4.0 kilograme / cm 0.18S / 60 grade

- Viteza: (sec/60deg): 0,23

- Cuplu: (Kg-cm /Oz-in): 2.40 / 35

- Dimensiune (mm): 39.5x20x39.6mm

- Greutate (g /oz): 41g

17
Modelul a fost conceput pentru sisteme cu feed-back inchis, deoarece iesirea motorului este
cuplata la un circuit de control. In pasul urmator, cel care-l programeaza poate controla perfect
pozitia motorului.

Fig. 3.3.7 Servomotorul GWS S03N STD

Microventilatorul SUNON DC12V


Microventilator, utilizat in diferite aplicatii cum ar fi cele de ventilatie sau de racire. In cadrul
proiectului meu acesta are rolul de functiona cat timp umiditatea sau temperatura cresc peste o
anumita valoare maxima admisibila.
Avand elice si carcasa din termoplast, microventilatorul este caracterizat de urmatorul set de
specificatii :

Fig. 3.3.8. Microventilatorul SUNON DC12V


Tensiune alimentare: 12V DC
Dimensiune ventilator: 40x40x10mm
Randament ventilatoare: 11.9m3/h

18
Nivel zgomot: 27dBA
Consum curent: 1.08W
Tensiune de lucru: 6...13.8V
Viteza de rotaţie: 5800 (±15%)rot./min
Masă: 17g
Curent nominal: 0.09A
Clasă izolaţie: E
Temperatura de lucru: -10...70°C
Clasă inflamabilitate: UL94V-0
Acţionare ventilator: motor DC fără perii
Lungime cablu: 300mm
Dimensiune conductor: 26AWG

● Driver-ul de motor TB6612FNG Dual 1A

Driver-ul de motor TB6612FNG poate controla pana la doua motoare de curent


continuu, la un curent constant de 1.2A (3.2A max). Cele doua semnale de intrare, IN1 si IN2
pot fi utilizate pentru a controla motorul intr-una dintre cele patru moduri de functionare : in
sensul acelor de ceas si invers, scurt de frana si oprit . Cele doua iesiri (A si B) pot fi controlate
separat, viteza fiecarui motor este controlata printr-un semna lde intrare PWM cu o frecventa
de pana la kHz. PIN-ul STBY trebuie conectat la microcontroler pentru a iesi din modul
standby. Tensiunea de alimentare (VCC) poate fi in intervalul de 2.7V-5.5V, in timp ce
alimentarea maxima a motorului este de 15V. Curentul de iesire poate fi pana la 1.2A pe canal
sau pana la 3.2A pentru un singur impuls.
In proiectul meu de diploma, am folosit acest driver de motor pentru a comanda
microventilatorul mentionat anterior, elicele acestuia invartindu-se in sensul acelor de ceas.

19
Fig. 3.3.9 Pinii driver-ului de motor TB6612FNG

3.4. Raspberry PI – SBC (Single-Board-Computer)

Data Februarie 2012 ;


lansarii

Preț 35 $ SUA;

Sisteme Linux (e.g. Raspbian), RISC


de OS,FreeBSD, NetBSD, Plan
operare 9, Inferno, Aros;

CPU 700 MHz single-core


ARM1176JZF-S;

Memorie 512 MB RAM;

Depozita Slot MicroSDHC;


re

Grafică Broadcom VideoCore IV;

Putere 3.0 W;

20
Figura 3.4.1 Raspberry Pi 2 Modelul
B+

Raspberry Pi este un SBC (Single-Board Computer) de dimensiunile unui card de credit,


produs în Marea Britanie de către Raspberry Pi Foundation cu scopul de a promova învățarea
noțiunilor de bază din domeniul informaticii în școli.

Raspberry Pi este bazat pe Broadcom BCM2835 SoC(system on a chip), care include


un procesor ARM1176JZF-S de 700 MHz, un GPU(graphics processor unit) VideoCore IV, și
a fost inițial livrat cu 256 MB de memorie RAM ,iar mai târziu a fost modernizat (modele B și
B +) la 512 MB . Raspberry Pi are un slot de MicroSD pentru sistemul de operare si pentru
stocarea de date si aplicatii. Fundația oferă Debian și Arch Linux ARM pentru de descărcare.
Unelte sunt disponibile pentru Python care este principalul limbaj de programare, cu suport
pentru BBC BASIC(RISC OS sau Brandy Basic pentru linux) , C , C ++ , Java , Perl și Ruby .

● Overclocking

Prima generație Raspberry Pi a cărei cip operează la 700 MHz nu a devenit suficient de fierbinte
pentru a avea nevoie de un radiator sau răcire specială, cu excepția cazului în care chip-ul a fost
overclockat. A doua generație ruleaza la 900 MHz în mod implicit, și de asemenea, nu devine
suficient de fierbinte pentru a avea nevoie de un radiator sau de răcire specială. Overclocking-
ul poate încălzi SoC-ul mai mult decât de obicei.

Majoritatea chip-urilor de Raspberry PI pot fi overclockate la 800 MHz iar unele trec chiar de
1000 MHz. Există rapoarte din a doua generație care pot fi overclockate in mod similar, pentru
cazuri extreme, chiar la 1500 MHz (dezactivează toate caracteristicile de siguranță și trece peste
limitele de tensiune). În Raspbian Linux distro opțiunile de overclocking se pot face printr-o
comandă software "sudo raspi-config" fără anularea garanției. În aceste cazuri de overclocking,

21
Raspberry Pi se oprește automat în cazul în care chip-ul ajunge la 85 ° C (185 ° F). În acest caz,
se poate pune un radiator pentru a menține chip-ul să nu treacă peste 85 ° C.

Versiunile mai noi ale firmware-ului conțin 5 opțiuni de overclockare ("turbo"), acestea
sunt presetate pentru a putea obține cea mai mare performanță din SoC, fără a afecta durata de
viață a Rsp PI. Acest lucru se face prin monitorizarea temperaturii chip-ului, sarcina
procesorului, și ajustarea dinamică a vitezei clock-ului și a tensiunii de bază. În cazul în
procesorul este prea cald performanța scade, iar în cazul în care procesorul are multe de făcut,
iar temperatura chip este acceptabil, performanța este crescută temporar, cu viteză de clock de
până la 1 GHz , în funcție de setările individuale, precum și a setărilor turbo care sunt
utilizate. Cele cinci setări sunt:

 none; 700 MHz ARM, 250 MHz core, 400 MHz SDRAM, 0 overvolt,

 modest; 800 MHz ARM, 250 MHz core, 400 MHz SDRAM, 0 overvolt,

 medium; 900 MHz ARM, 250 MHz core, 450 MHz SDRAM, 2 overvolt,

 high; 950 MHz ARM, 250 MHz core, 450 MHz SDRAM, 6 overvolt,

 turbo; 1000 MHz ARM, 500 MHz core, 600 MHz SDRAM, 6 overvolt.

Pentru starea turbo, clock-ul SDRAM a fost inițial de 500 MHz, dar mai târziu a fost schimbat
la 600 MHz pentru că la 500 MHz provoca anumite problem la cardul SD. Din cauza aceluiași
lucru la starea high viteza clock core-ului a fost scăzută de la 450 MHz la 250 Mhz, iar la starea
medium de la 333 Mhz la 250 MHz.

●Ram
Pentru modelul B cu 512 MB RAM initial a fost un nou standard de memorie împărțit pe fișiere
(arm256_start.elf, arm384_start.elf, arm496_start.elf) pentru 256 MB, 384 de MB și 496 MB
RAM CPU (și 256 MB, 128 MB și 16 MB memorie video). Dar peste o săptămână, RPF a
lansat o nouă versiune a start.elf care putea citi o noile intrari în config.txt (gpu_mem = xx) și
putea atribui dinamic o cantitate de memorie RAM (16-256 MB pe pași de 8 MB) la GPU,
astfel metoda mai veche a devenit inutilă, iar un singur start.elf funcționa pe Rsp Pi de 256 și
512 MB. A doua generație are 1 GB de RAM.

● Rețea
Portul de Ethernet este asigurată de un adaptor integrat USB Ethernet.
In cadrul proiectului meu am atasat un WI-PI pe post de antena pentru conexiune wireless.

22
●Perifericele care sunt compatibile si pot fi conectate la un Raspberry PI sunt mouse-ul și
tastatura care au interfață USB, sistem audio și nu in ultimul rând monitorul sau televizorul
care este conectat prin interfața HDMI.

● Video
Controlerul video este capabil să afișeze rezoluții standard pentru televizoarele moderne, cum
ar fi HD și Full HD, precum și rezoluții mai mari sau mai mici pentru monitoare standard CRT
TV; Acesta este capabil de afișarea următoarele rezolutii: 640×350 EGA; 640×480 VGA;
800×600 SVGA;1024×768 XGA;1280×720 720p HDTV;1280×768 WXGA variant;
1280×800 WXGA variant;1280×1024 SXGA;1366×768 WXGA variant;
1400×1050 SXGA+; 1600×1200 UXGA; 1680×1050 WXGA+; 1920×1080 1080p HDTV;
1920×1200 WUXGA. Se pot genera si semnale video de 576i și 480i pentru PAL-
BGHID , PAL-M , PAL-N , NTSC și NTSC-J .
● Ceas in timp real

Raspberry Pi nu vine cu un ceas de timp real , ceea ce înseamnă că nu poate ține cont de ora
din zi atâta timp cat acesta nu este alimentat. Ca alternative , există un program care rulează pe
Rsp PI , iar acesta poate lua timpul de la un network time server sau pot fi introduse de utilizator
la pornire.

Poate fi adăugat un ceas de timp real (de exemplu DS1307) cu baterie de rezervă .
● Conectori

Figura 3.4.1: Locația conectorilor și a pricipalelor


circuite integrate ale Raspberry PI Model B+

GPIO # A doua func pin # pin # A doua func GPIO #

- + 3V3 1 2 + 5V -

23
GPIO2 Sda1 (I2C) 3 4 + 5V -

GPIO3 SCL1 (I2C) 5 6 GND -

GPIO4 GCLK 7 8 TXD0 (UART) GPIO14

- GND 9 10 RXD0 (UART) GPIO15

GPIO17 GEN0 11 12 Gen1 GPIO18

GPIO27 GEN2 13 14 GND -

GPIO22 Gen3 15 16 GEN4 GPIO23

- + 3V3 17 18 GEN5 GPIO24

GPIO10 Mosi (SPI) 19 20 GND -

GPIO9 MISO (SPI) 21 22 GEN6 GPIO25

GPIO11 SCLK (SPI) 23 24 CE0_N (SPI) GPIO8

- GND 25 26 CE1_N (SPI) GPIO7

EEPROM ID_SD 27 28 ID_SC EEPROM

GPIO5 - 29 30 GND -

GPIO6 - 31 32 - GPIO12

GPIO13 - 33 34 GND -

GPIO19 - 35 36 - GPIO16

GPIO26 - 37 38 - GPIO20

- GND 39 40 - GPIO21

Fig. 3.4.2. Pinii modelului Raspberry PI B+

● Accesorii

Camera - La 14 mai 2013, fundația și distribuitorii RS Components & Premier Farnell


/ Element 14 au lansat camera foto pentru Raspberry Pi cu un update de firmware. Camera este
livrată cu un cablu flexibil plat care se introduce in unul dintre porturile HDMI sau Ethernet.
Pe Raspbian, pentru a recunoaste camera este nevoie pentru ultima versiune la OS iar apoi se
rulează Raspi-config si apar setările pentru cameră. Costul unei astfel de camera este de 20€ în
Europa (09 septembrie 2013). Poate afisa video-uri de 1080p , 720p , 640x480p. Dimensiunile
sunt de 25 mm x 20 mm x 9 mm.

24
Gertboard – Este un dispozitiv conceput pentru scopuri didactice care extinde pini GPIO
la Raspberry Pi și permite pentru interfață controlul de LED-uri, switch-uri, semnale analogice,
senzori și alte dispozitive. De asemenea, include un controler Arduino compatibil să
interacționeze cu RSP Pi.
Camera infraroșu - În octombrie 2013, fundația a anunțat că vor începe producerea unui
camere foto fără un filtru infraroșu, numit Pi Noir. HAT (Hardware Attached on Top) placi de
extensie - Împreună cu modelul B +, care a fost inspirat de un scut Arduino, iar interfața pentru
plăci HAT a fost concepută de Fundația Raspberry PI. Fiecare placă HAT are un EEPROM mic
(de obicei un CAT24C32WI-GT3) care conține detaliile relevante despre placă, astfel încât
sistemul de operare al Raspberry Pi este informat cu privire la HAT.
● Sistemul de operare
În primul rând Raspberry Pi folosește kernel Linux ca și sistem de operare. Cipul
ARM11 este “inima SBC-uluisi si se bazează pe versiunea 6 ARM . Noile versiuni de Linux
inclusiv Ubuntu nu vor putea rula pe ARM11. Încă nu este posibil pentru a rula Windows pe
un Raspberry Pi original, deși noul Raspberry Pi 2 va fi capabil să ruleze Windows 10 in
curând. Până în present Raspberry Pi 2 , suportă numai Ubuntu Snappy
Core , Raspbian , OpenELEC și RISC OS

Sistemul de operare pe care l-am ales sa-l instalez este Raspbian, versiunea acestuia
fiind lansata pe 05/05/2015 cu versiunea kernel 3.18.

Pentru a asigura functionarea optima a sistemului de operare a trebuit sa urmez urmatorii pasi:

- sa inserez cardul SD intr-un cititor de carduri SD

- sa descarc si instalez soft-ul Win32DiskImager pe


computerul personal

- ruland aplicatia sub drepturi de administrator, sa selectez


imaginea fisierului al sistemului de operare si sa folosesc
comanda Write pentru a-l scrie pe cardul SD

- sa atasez dispozitivului Raspberry cardul tocmai scris cu


sistemul de operare dorit

25
Pentru functionarea comunicatiei GPIO a placii Raspberry cu microcrocontrolerul
modulului dorit si evitarea defectarii uneia dintre cele doua dispozitive este necesara realizarea
unui divizor de tensiune. Acest lucru este necesar deoarece totii pini GPIO ai placii Raspberry
opereaza la 3.3V iar cei ai microcontrolerului la 5V. Acest lucru se realizeaza prin adaugarea
a doua rezistente, una de 3,3kΩ si una de 1kΩ in felul urmator.

26
Cap 4. PROIECTAREA SOFTWARE-ULUI

Pentru a programa microcontrolerele din seria AVR de pe fiecare modul al locuintei am


folosit dispozitivul Arduino Uno pe post de programator ISP ( In Circuit Programming).
Alimentand dispozitivul prin USB la 5V am selectat si incarcat din libraria programului sketch-
ul ArduinoISP pe dispozitiv. Pe urma a fost necesara scrierea bootloader-ului pe
microcontroler.

Fig. 4.a Sketch-ul ArduinoISP

Am ales aceasta optiune pentru a evita consturile suplimentare prin achizitionarea unui
dispozitiv special, destinat in special programarii microcontrolerelor (ex. Programatorul
Arduino ISP ) . Pasul cel mai important il reprezinta conectarea pinilor programatorului, in
cazul acesta Arduino Uno, la micrcontrolerul dorit ce urmeaza a fi programat. Am realizat
conexiunele in felul urmator:

-Pinul 10 al programatorului la pinul Reset (RST) al microcontrolerului

-Pinii 11,12,13 la pinii 11,12,13 ai microcontrolerului

-Alimentarea (VCC 5 V) din programator la VCC-ul microcontrolerului

-GND la GND

27
Circuitul care urmeaza a fi programat se poate alimenta si cu o sursa externa, in afara
de cea venind de la programatorul Arduino Uno. In cadrul proiectului meu, prin alimentarea
modulului la o baterie de 9 V si prin prezenta regulatorului de tensiune, care va obtine un curent
de 5 V la iesire ofera optiunea utilizatorului de a alege de unde se va face alimentarea circuitului,
ambele avand aceasi tensiune. Pentru a testa codul care urmeaza a fi incarcat pe modulul
propriu-zis al camerelor, pe langa cele 3 module am realizat un modul de teste.

Fig. 4.b Conectarea pinilor programatorului la modulul de teste

28
4.1. Prezentarea mediului de programare

Placile de dezvoltare ARDUINO pot fi folosite pentru a dezvolta obiecte de sine


statatoare interactive sau pot fi conectate la un calculator pentru a prelua sau pentru a trimite
date si apoi sa actioneze pe baza acelor date (exemplu: poti trimite datele obtinute de un senzor
pe internet).
Pentru programare se va utiliza ARDUINO IDE (Integrated Development
Environment), care este un soft oferit gratuit de ARDUINO pentru a permite programarea
microcontrolerului in limba pe care ARDUINO o “intelege”.
Limbajul de programare ARDUINO se bazeaza pe “Wiring”, o platforma de calcul fizic
similara, care se bazeaza pe mediul de programare de procesare multimedia. Pe scurt, limbajul
pe care ARDUINO il foloseste este C.
ARDUINO IDE permite scrierea programului pe calculator, care este format dintr-un
set de instructiuni pas cu pas pe care le incarci apoi in ARDUINO. Dupa incarcarea programului
propriu-zis pe placa de dezvoltare, ARDUINO va efectua instructiunile date si va interactiona
cu mediul. ARDUINO numeste aceste programe “Sketches” (schite). Un mediu de
dezvoltare (en: Integrated Development Environment) este un set de programe care ajută
programatorul în scrierea programelor. Un mediu de dezvoltare combină toţi paşii necesari
creării unui program (editarea codului sursă, compilarea, depanarea, testarea, generarea de
documentaţie) într-un singur soft care, de regulă, oferă o interfaţă grafică prietenoasă.
Principalele componente ale unui mediu de dezvoltare sunt editorul de cod sursă şi debugger-
ul. Pentru a incepe se deschide fisierul arduino.exe din directorul:\arduino\arduino.exe
Exista mai multe variante de placi de dezvoltare ARDUINO, cum ar fi: Mega, Diecimila,
Duemilanove, Mini, Nano si chiar Bluetooth ARDUINO, cele mai noi produse
fiind ARDUINO UNO si ARDUINO MEGA 2560.
Codul creat se afla in prima etapa în editorul IDE-ului dar nu şi în controler. Pasul următor
va necesita compilarea codului şi scrierea lui în Arduino.
▪ Compilarea este procesul prin care mediul de dezvoltare transformă codul C într-un cod
pe care Arduino îl poate executa.
▪ Scrierea codului în controler se face prin funcţia de upload şi presupune urcarea codului
compilat din calculator în flash-ul microcontrolerului.

29
Pentru a realiza aceşti doi paşi trebuie precizat IDE-ului ce port serial a fost utilizat, din meniul
Tools>Serial Port (ex: COM3) si care este modelul placii conectate din meniul Tools>Boards
(ex: Arduino Uno). Pasul final consta in incarcarea programului pe placa: File>Upload.
In cazul in care s-a folosit dispozitivul pe post de programator se utilizeaza comanda Upload as
Programmer. Daca incarcarea a reusit si nu s-a intampinat nicio eroare inseamna ca
programarea microcontrolerului a avut succes.
/*
Blink
Aprinde un LED pentru o secunda ,apoi se stinge o secunda, repetitiv.
Codul este disponibil in domeniile publice
*/
//Pin-ul 13 are un LED conectat pe majoritatea placilor Arduino
//se initializaeaza variabila:
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH); // aprinde LED-ul (HIGH)
delay(1000); // asteapta o secunda
digitalWrite(led, LOW); // stinge LED-ul (Low)
delay(1000); // asteapta o secunda
}
Fig. 4.1.1 Exemplu de cod Blink din Arduino

Funcţia void setup este o funcţie apelată automat la pornirea programului şi este folosită pentru
definirea de variabile, încărcarea bibliotecilor etc.

Funcţia pinMode defineşte pinul 13 ca fiind un pin digital de ieşire. Pinul 13 are la majoritatea
plăcilor Arduino conectat un led.
Funcţia loop este funcţia principală ce va fi rulată de controler la infinit. Aici se pune codul C
principal.
Funcţia digitalWrite va scrie pe portul 13 valoarea High, ceea ce va determina controlerul să
aplice acelui pin tensiunea de 5 volţi şi în consecinţă aprinderea ledului integrat.
Funcţia delay, forţează controlerul să facă o pauză de 1000 milisecunde, adică de o secundă,
timp suficient pentru a observa ledul aprins. În acest caz controlerul va scoate pe pinul 13
valoarea de 0 volţi, stingând ledul. După o nouă pauza de o secundă, codul programului nostru
se va termina, iar controlerul va apela din nou funcţia loop.

30
4.2. Setul de instrucțiuni

In continuare voi prezenta setul de instructiuni incarcat pe microcontrolerele modulelor.


Dupa ce am declarat variabilele pentru intrarea analogica a senzorului de fum si al LED-urilor
●Setul de instructiuni specific modulului bucatariei:
int analog_in = 1
int led_verde = 5;
int led_rosu = 6;
int valoare_analog_fum = 0;
int fum = 0;

In partea de inceput a programului, cea a initializarii variabilelor, am setat ca pinul A1


sa fie cel care primeste valori de la senzorul de fum iar pinii A5 si A6 pentru cele doua LED-
uri, verde respectiv rosu. Variabila „valoare_analog_fum” este variabila in care se va citi
valoarea analogica neprocesata de la senzorul de fum .

valoare_analog_fum = analogRead(analog_in);
fum=map(valoare_analog_fum, 0, 1023, 0, 100)
float temperatura = readTempInCelsius(5,0);

In partea de loop a programului variabila „valoare_analog_fum” citeste valoarea


bruta/analogica de la senzorul de fum iar variabila „fum” va converii valoarea citita de la
senzorul de fum in procente. Apoi se apeleza functia care citeste valoarea temperaturii si o
transforma in grade Celsius si se memeoreaza ceea ce se returneaza in variabila „temperatura”
declarata local in functia loop.

if(temperatura>40 || fum>70)
{
digitalWrite(led_verde,LOW);
digitalWrite(led_rosu,HIGH);
Serial.flush();
Serial.println("Atentie INCENDIU !!! ");
}
else
{
digitalWrite(led_verde,HIGH);
digitalWrite(led_rosu,LOW);
}
delay(1000) ;
}

31
Conditia daca temperatura sau fumul depasesc valorile 40 de grade respectiv 70%
concenctratie de fum. In cazul in care conditia va fi validata, prezenta unui percol de incendiu
se va semnala prin aprinderea LED-ului rosu. Cand parametrii vor reveni la conditii normale,
LED-ul rosu se va stinge si se va reaprinde cel verde.

●Setul de instructiuni specific modulului centralei termice:


int analog_in = 1;
int led_verde = 5
int led_rosu = 6;
int valoare_analog_gaz = 0;
int gaz = 0;
Servo servo_motor;
int pos;
bool flag_de_control=false;

In partea de initializare , am setat ca pinul A1 sa fie cel care primeste valori de la


senzorul de gaz iar pinii A5 si A6 pentru cele doua LED-uri, verde respectiv rosu. Variabila
„valoare_analog_gaz” este variabila in care se va citi valoarea analogica neprocesata de la
senzorul de gaz. Am initializat variabilele „servo_motor” si „pos” pentru a deplasa
servomotorul la un anumit unghi de grade. In final flag-ul de control setat initial „false”.

pinMode(led_verde, OUTPUT);
pinMode(led_rosu, OUTPUT);
Serial.begin(9600);
servo_motor.attach(9);

In partea de setup am setat LED-urile ca iesiri si am pornit comunicatia seriala. De


asemenea am atasat variabilei „servo_motor” pinul D9 de pe microcontroler, fiind conectat la
acesta si actionandu-l prin semnal PWM.

valoare_analog_gaz = analogRead(analog_in);
gaz=map(valoare_analog_gaz, 0, 1023, 0, 100);

n partea de loop a programului variabila „valoare_analog_gaz” citeste valoarea


bruta/analogica de la senzorul de gaz iar variabila „gaz” va converii valoarea citita de la
senzorul de gaz in procente.

32
if(gaz>70)
{
digitalWrite(led_verde,LOW);
digitalWrite(led_rosu,HIGH);
if(flag_de_control==false)
{flag_de_control=true;Open();}
Serial.flush();
Serial.println("Atentie GAZ in incinta !!! ");
}
else
{
digitalWrite(led_verde,HIGH);
digitalWrite(led_rosu,LOW);
if(flag_de_control==true)
{flag_de_control=false;Close();}
}
delay(1000);

Aceasta secventa de instructiuni va seta flag-ul de control ca „true” si va actiona


servomotorul in cazul in care concentratia de gaz trece de 70%. In aceste conditii, pe seriala se
va transmite mesajul „Atentie GAZ in incinta!!!” si se va aprinde LED-ul rosu pentru
evidentierea evenimentului care a avut loc in locuinta. Dupa ce concentratia de gaz va scadea
sub 70% servomotrul se reintoarce in pozitia initiala iar flag-ul va redeveni din nou „false” iar
LED-ul verde se va aprinde evidentiand lipsa oricarui pericol de incendiu.
void Open ()
{
for(pos = 20; pos < 130; pos += 1)
{
servo_motor.write(pos);
delay(3);
}
Serial.println("Opened");
}
void Close ()
{
for(pos = 130; pos > 20; pos -= 1)
{
servo_motor.write(pos);
delay(3);
}
Serial.println("Closed"); }
Codul de mai sus reprezinta functiile servomotorului pentru inchiderea-deschiderea
electrovalvei unei surse de gaz.

33
●Setul de instructiuni specific modulului dormitorului:

int analog_in = 1;
int valoare_analog_umiditate = 0;
int umiditate = 0;
int led_albastru =6
int pin_senzor_lumina=2
int analog_lumina=0;
int intensitate_led=0

Am initializat variabila analog_in si am setat-o pe pinul A1 ca fiind cel pentru iesirea


senzorului de umiditate. In continuare, variabila in care va fi citita valoarea analogica
neprocesata a senzorului de umiditate si variabila „umiditate” in care se va scrie in procente
umiditatea din camera. Variabila „pin_senzor_lumina” reprezinta pinul pentru fotorezistor
(A2). In continuare, variabila „analog_lumina” va memora valoarea bruta de la fotorezistor.
Apoi se va memora va stoca valoarea mapata de la fororezistor necesare ulterior semnalului de
PWM in variabila intensitate_led.

{ pinMode(led_albastru, OUTPUT);
Serial.begin(9600);
pinMode(STBY, OUTPUT);
pinMode(PWMA, OUTPUT);
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
}

In aceasta secventa de cod se seteaza pinii de iesire al LED-ului si al servomotorului si


se deschide comunicatia seriala la 9600 biti pe secunda.

34
void porneste_ventilator(int motor, int speed, int direction)
{
digitalWrite(STBY, HIGH); //disable standby
boolean inPin1 = LOW;
boolean inPin2 = HIGH;
if(direction == 1){
inPin1 = HIGH;
inPin2 = LOW;
}
if(motor == 1){
digitalWrite(AIN1, inPin1);
digitalWrite(AIN2, inPin2);
analogWrite(PWMA, speed);
}
}
void stop_ventilator()
{
digitalWrite(STBY, LOW);
}

Functia care face ca microventialtorul sa intre in starea de functionare si este apelata atunci
cand procentul de umiditate si gradele de emperatura din locuinta trec limita maxima acceptata
(23 de grade Celsius respectiv 70% umiditate).

float readTempInCelsius(int count, int pin)


{
float temperaturaMediata = 0;
float sumaTemperatura;
for (int i =0; i < count; i++) {
int reading = analogRead(pin);
float voltage = reading * 5.0;
voltage /= 1024.0;
float temperatureCelsius = (voltage - 0.5) * 100 ;
sumaTemperatura = sumaTemperatura + temperatureCelsius;
}
return sumaTemperatura / (float)count;
}

Codul de mai sus reprezinta scalarea temperaturii atunci cand alimentarea se face cu 5V.

35
4.3. Server utilizand libraria Tornado din limbajul de programare Python

Pentru a opera mai usor pe dispozitivul RaspberryPI si a obtine mai rapid fisierele
necesare ,avand la dispozitie un alt calculator si un monitor, am utilizat programul open-source
PuTTY, cu ajutorul caruia am accesat Raspberry-ul prin SSH(Secure Shell). Calulatorul si
dispozitivul Raspberry sunt conectate la aceeasi retea .Determinand IP-ul prin comanda
„hostname –I” in terminalul dispozitivului, IP-ul rezultat a fost introdus in programul PuTTY
pentru a-l putea accesa de pe calculator.

Fig. 4.3.1 Configurarea conexiunii in programul PuTTY

Conexiunea mi-a dat acces la terminalul emulat si creat de PuTTY, pentru


dispozitivul RaspberryPI. Avand aceasta posibilitate, am dorit de asemenea sa obtin interfata
grafica a dispozitivului, fapt realizat prin instalarea software-ului gratuit TightVNC Java
Viewer pe calculatorul pe care am operat. Placa Raspberry va avea de asemenea nevoie de acest
soft pe care l-am instalat cu comanda

sudo apt-get install tightvncserver

Executand programul, s-a deschis automat sesiunea nr.1 pe placa Raspberry pe


care o voi accesa cu programul TightVNC, inserand in ferestra programului, IP-ul placii si
portul(5901). Cu toate aceste setari am reusit sa obtin interfata grafica a placii Raspberry si sa
operez in continuare mult mai usor pe ambele dispozitive.

36
Fig. 4.3.2. Obtinerea interfetei grafice a placii Raspberry prin retea la un PC

In continuare pentru a putea utiliza comunicatia I2C a placii Raspberry cu modulul


dorit al locuintei, am accesat fisierul de configurare al comunicatiei I2C prin comanda :”sudo
nano /etc/modprobe.d/raspi-blacklist.conf” si „sudo nano /etc/modules” facand modificarile
necesare. In final, se poate instala I2C-Tools inserand o serie de comenzi in linia de comanda a
placii Raspberry:

sudo apt-get install i2c-tools


sudo apt-get update
sudo adduser pi i2c
sudo shutdown –r now
sudo i2cdetect –y 0
sudo i2cdetect –y 1
sudo apt-get install python-smbus

Secventa de comenzi efectuaza update-uri necesare software-ului si adauga


utilizator nou in grupul I2C dupa care se va reseta dispozitivul pentru ca modificarile facuta sa
aiba loc. De asemenea se va instala modulul pentru comunicatia seriala I2C cu Python.

Tornado este un web framework si o librarie asincrona de retea, dezvoltat initial de FriendFeed
Tornado se poate utiliza la un numar mare de conexiuni si este ideal pentru aplicatii care
necesita o conexiune de lunga durata pentru fiecare user.

37
Web-socketul Tornado cu managerii pachetelor acestora si un alt un pachet necesar
comunicatiei seriale cu Python, contribuind la realizarea serverului, vor fi instalate cu
comenzile:

Sudo apt-get update


Sudo apt-get upgrade
Sudo apt-get install python-pip python2.7-dev
Sudo easy_install –U distrubute
Sudo pip install tornado
Sudo pip install Rpi.GPIO
Sudo apt-get install python-serial python3-serial

Avand activata comunicatia I2C pe placa Raspberry si toate pachetele necesare


comunicatiei seriale GPIO, am testat functionabilitatea modificarilor efectuate folosind un
exemplu de server oferit de Tornado.

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Acesta este serverul locuintei")

application = tornado.web.Application([
(r"/", MainHandler),
])

if __name__ == "__main__":
application.listen(8080)
tornado.ioloop.IOLoop.instance().start()

Afirmand functionarea setarilor si a seriilor de comenzi prin rularea acestui cod, se poate
trece la urmatorul pas, acela de a obtine datele prin comunicatia seriala GPIO de pe
microcontrolerul modulului dorit al locuintei, prin creearea unui soft in limbajul de programare
Python.

38
Cap 5. CONCLUZII

5.1. Conculuzii generale

Sistemele de monitorizare și control al unei locuințe înglobează nevoia oamenilor de a


avea control, cu o mai mare usurință și cu o configurabilitate ridicată, asupra spațiului în care
își desfașoară activitățile zilnice. Aceste sisteme vor deveni din ce în ce mai des utilizate
datorită eficienței lor și dorinței oamenilor de a avea o viață mai modernă și confortabilă. Odata
cu dezvoltarea tehnologiei, eficiența acestor sisteme va creste cu fiecare generație, iar costul de
achiziție va deveni din ce în ce mai accesibil.
Principalul motiv pentru care atenția este îndreptata spre un sistem de monitorizare și
control este că energia este gestionată mult mai util evitând pierderile mari de gaze și
electricitate economisind energie. Pe lângă faptul că instalarea acestor sisteme nu necesită
modificarea instalatiilor existente, acestea oferă un grad ridicat de siguranță și în același timp o
atmosfera placuta în interiorul locuinței.
Sistemele de monitorizare și control pot fi implementate cu un buget accesibil având
cunoștiințe în domeniul domoticii. Având aceste doua resurse, sistemul se poate instala și
configura după dorința utilizatorului. Investiția în aceste sisteme este fiabilă deoarece prezintă
o chestiune de viitor care deja ia amploare în anumite țări de pe glob.
Confortul si economicitatea lor este mult superioara fata de locuintele
actuale,conventionale.
Se consideră că scopul acestui proiect a fost atins, realizând un sistem modular
fragmentat independent de monitorizare și control, care se poate implementa într-o locuință.
Fiind un sistem modular, instalațiile defecte nu influențează restul echipamentelor. În felul
acesta nu este necesară reachiziționarea echipamentelor pentru întreg sistemul ci doar
echipamentele pentru modulul defect al locuinței.
Sistemul de monitorizare și control propus poate urmări noi forme de cercetare din
domeniu.

39
5.2 Direcții de dezvoltare

Sistemul de monitorizare și control poate fi îmbunătățit prin:-


- Adăugarea dispozitivelor la modulele sistemului sau adăugarea noilor module
pentru alte incăperi sau exteriorul locuinței
- Dezvoltarea unei aplicații în Python pentru achizitia de date în timp real a
tuturor modulelor din locuință pe RaspberryPI
- Montarea panourilor fotovoltaice pentru conservarea energiei
- Crearea unui sistem de recunoaștere facială sau vocală

Toate aceste posibilități de îmbunătățire necesită costuri suplimentare, însă urmăresc


modernizarea și optimizarea sistemului obținând performanțe mai mari decât cele obținute în
prezent.
În viitor, aceste sisteme vor fi treptat implementate pe tot globul și se așteaptă
utilizarea resurselor regenerabile al acestora pentru a evita poluarea și costurile.

40
BIBLIOGRAFIE
[1] James Gerthart "Home Automation & Wiring", Paperback, 1999.
[2] Richard Harper "Inside the Smart Home",Springer Science & Business Media, 2003.
[3] D. Greaves. "Control Software for Home Automation, Design Aspects and Position Paper”.
International Conference on Distributed Computing Systems Workshops (ICDCSW '02), 2002
[4] P.Rigole, Y. Berbers, T. Holvoet. “A UPnP software gateway towards EIB home
automation”, May 2003, IASTED International Conference on Computer Science and
Technology - CST 2003 (Cancun, Mexico)
[5] Robofun, „Raspberry PI”,2014
[6] Othmar Kyas, „How to smart home ”,2013
[7] Hyde Richard, „Bioclimatic Housing: Innovative Designs for Warm
Climates”,Routhledge,2012.
[8] Tesla Nikola, „U.S. Patent 613809: Method of and apparatus for controlling mechanism of
moving vessels and vehicles”, United States Patent and Trademark Office, 1898
[9] Berger, Lars T., Schwager, Andreas; Schneider, Daniel M. „Smart Grid Applications,
Communications, and Security”,CRC Press, 2014.
[10]***"Raspberry Pi and Arduino Connected Using I2C”,2015.[Online]. Available:
http://blog.oscarliang.net/raspberry-pi-arduino-connected-i2c/
[11]***“Arduino”, 2014. [Online]. Available: http://arduino.cc/en/Main/ArduinoBoardUno
[12]***”Home seer”,2015.[Online]. Available:http://home-automation-systems-
review.toptenreviews.com/homeseer-review.html
[13]*** ”The integration of technology and services in the home enviroment”,2015.[Online].
Available http://www.smart-homes.nl/Domotica.aspx?lang=en-US

41
[14]*** " Home Automation Made Easy",2014.[Online]. Available:
http://ptgmedia.pearsoncmg.com/images/9780789751249/samplepages/0789751240.pdf
[15]*** "Raspbery Pi",2015. [Online]. Available: http://www.adafruit.com/category/105
[16]***“Domotics”,2015.[Online].Available http://en.wikipedia.org/wiki/Domotics
[17]***”Raspberry Pi and Arduino Connected Over Serial GPIO”.2015.[Online].Available:
http://blog.oscarliang.net/raspberry-pi-and-arduino-connected-serial-gpio/
[18]***”Raspberry Pi + Arduino + Tornado”,2015.[Online].Available
http://niltoid.com/blog/raspberry-pi-arduino-tornado/
[19]***”ATmega328”,2015.[Online].Available:http://www.atmel.com/devices/atmega328.as
px
[20]***https://www.sparkfun.com/datasheets/Robotics/TB6612FNG.pdf

42

You might also like