Professional Documents
Culture Documents
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Ă
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
4
Fig.3.2.2. Implementarea circuitului cu senzorul LM50 în Proteus
5
al microcontrolerul respectiv GND iar cei al LED-ului roșu la pinul D6 al microcontrolerului
respectiv GND.
●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.
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.
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
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.
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.
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.
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Ω.
histerezis : ±2%RH(40↔80%RH)
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.
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.
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.
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.
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:
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.
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
19
Fig. 3.3.9 Pinii driver-ului de motor TB6612FNG
Preț 35 $ SUA;
Putere 3.0 W;
20
Figura 3.4.1 Raspberry Pi 2 Modelul
B+
● 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
- + 3V3 1 2 + 5V -
23
GPIO2 Sda1 (I2C) 3 4 + 5V -
GPIO5 - 29 30 GND -
GPIO6 - 31 32 - GPIO12
GPIO13 - 33 34 GND -
GPIO19 - 35 36 - GPIO16
GPIO26 - 37 38 - GPIO20
- GND 39 40 - GPIO21
● Accesorii
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:
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
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:
-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.
28
4.1. Prezentarea mediului de programare
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
valoare_analog_fum = analogRead(analog_in);
fum=map(valoare_analog_fum, 0, 1023, 0, 100)
float temperatura = readTempInCelsius(5,0);
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.
pinMode(led_verde, OUTPUT);
pinMode(led_rosu, OUTPUT);
Serial.begin(9600);
servo_motor.attach(9);
valoare_analog_gaz = analogRead(analog_in);
gaz=map(valoare_analog_gaz, 0, 1023, 0, 100);
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);
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
{ pinMode(led_albastru, OUTPUT);
Serial.begin(9600);
pinMode(STBY, OUTPUT);
pinMode(PWMA, OUTPUT);
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
}
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).
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.
36
Fig. 4.3.2. Obtinerea interfetei grafice a placii Raspberry prin retea la un PC
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:
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
39
5.2 Direcții de dezvoltare
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