Sunteți pe pagina 1din 52

Cuprins

1. Introducere …………………………………………………………….......1
1.1. Scurt istoric al evoluţiei caselor inteligente ………………………1
1.2. Conceptul de casă inteligentă …………………………………….3
1.3. Riscuri și flexibilitate …………………………………………….6
1.4. Despre Arduino …………………………………………………..7
1.5. Identificarea problemei …………………………………………..8
1.6. Scopul lucrării ……………………………………………………8
1.7. Obiective …………………………………………………………9
1.8. Prezentare sistem ………………………………………………....9
2. Implementare hardware ……………………………………………........11
2.1. Arduino Mega 2560 ……………………………………………..11
2.2. Ethernet Shield W5100 ………………………………………….12
2.3. Senzori …………………………………………………………..13
2.3.1.Senzor de temperatură și umiditate DHT11 ……………...15
2.3.2.Senzor ultrasonic HC-SR04 ……………………………...16
2.3.3.Modul PIR - senzor de prezență………………………….17
2.4. Servomotor SG90 ………………………………………………..19
2.5. Tastatură matricială 4x4 ………………………………………....20
2.6. Senzor de flacără infraroșu ……………………………………...21
3. Implementare software …………………………………………………..22
3.1. Arduino IDE ……………………………………………………..22
4. Interfața cu utilizatorul ………………………………………………….23
5. Tehnologii folosite ………………………………………………………..25
5.1. HTML …………………………………………………………...25
5.2. CSS ……………………………………………………………...25
6. Interfața grafică realizată …………………………………………….....26
7. Conectivitate ……………………………………………………………..28
7.1. Arduino Mega 2560 + Ethernet Shield W5100 ………………....28
7.1.1. Program demo Ethernet Shield W5100 ………………….28
7.2. Arduino Mega 2560 + DHT11 ………………………………….29
7.2.1. Program demo DHT11 …………………………………..30
7.3. Arduino Mega 2560 + HC-SR04 ………………………………..31
7.3.1. Program demo HC-SR04 ………………………………...31
7.4. Arduino Mega 2560 + PIR ……………………………………...32
7.4.1. Program demo PIR ………………………………………33
2017
7.5. Arduino Mega 2560 + senzor de flacără infraroșu ……………34
7.5.1. Program demo senzor de flacără infraroșu …………….34
8. Concluzii ………………………………………………………………..36
8.1. Limitări și dezvoltări ulterioare ……………………………….36
Anexa 1 – cod program ……………………………………………….38
9. Bibliografie ……………………………………………………………..49
1. Introducere
Într-o epocă în care tehnologia avanseaza din ce în ce mai repede si mai mult,
microcipurile au făcut un pas imens în revoluția digitală. Telefoanele mobile, vehiculele,
sistemele încorporate devin din ce în ce mai inteligente și mai puternice în fiecare zi, ajutand
oamenii să se confrunte cu provocări și probleme legate de timp, economie, mediu și
comunicare.

Astăzi, tehnologia a reușit să devină unul din principalele ce ajuta oamenii să aibă un stil
de viață mai confortabil. Este o chestiune de timp până când totul va fi suficient de inteligent
și va fi conectat la internet.

Tehnologia are argumente pro și contra, din multe motive s-a susținut că tehnologia nu
ajuta la evolutia rasei umane datorită efectelor negative care include: imobilitatea corpului și a
minții, probleme de securitate etc.

Partea pozitivă este cea mai dominantă, datorită numarului mare de avantaje: mai multă
siguranță în vehiculele noastre de transport, casele inteligente, asistența medicala mai buna,
rezolvarea problemelor de securitate. În plus, tehnologia ne oferă mai mult timp pentru
diferite activități.

O casă inteligentă sau automatizată reprezintă un stil de viață imbunătățit, deservind


nevoilor fundamentale ale omului de confort, funcționalitate și siguranță.

1.1 Scurt istoric al evoluţiei caselor inteligente

Majoritatea realizărilor din domeniul construcţiilor şi amenajării locuinţelor au


transformat de-a lungul timpului caverna preistorică în căminul pe care îl avem astăzi.
Următorul pas spre desăvârşirea acestui cămin îl reprezintă automatizarea lui; aceasta
transformă pasivitatea obişnuită a rezidenţei în interacţiune inteligentă a materiei cu spiritual
uman.

Căminul capătă astfel noi valenţe mai ales prin prisma centrului inteligent (unitatea
centrală) care îi controlează majoritatea atributelor: funcţionalitate – controlează luminile,
jaluzele, temperatura, sistemele hi-fi, şi orice alt dispozitiv electric sau electronic , atât din
interior, cât şi din exterior, fie prin intermediul internetului (din orice colţ al lumii), fie local
utilizând telecomenzi, laptop, touchscreen; management energetic – reduce consumul de

1
energie prin optimizarea funcţionării componentelor electrice, electronice, sanitare şi termice
ale locuinţei; sisteme de securitate – permite simularea prezenţei locatarilor în timpul absenţei
lor, permite detecţia si semnalarea efracţiei către vecini, familie, firmă de pază, cât şi
declanşarea unui scenariu prestabilit pentru îndepărtarea intruşilor.

De asemenea, supravegherea video permite vizualizarea activităţii copiilor, bonelor şi a


întregii reşedinţe în orice moment şi de la orice distanţă, mărind astfel eficienţa sistemului de
securitate; inteligenţă – touchscreen-ul inteligent, exemplu Ipad, poate servi ca panou de
control pentru automatizarea casei, îndeplinind şi funcţia de interfon sau permiţând accesarea
internetului, chiar şi din afara sistemului; confort – scenariile de iluminare presetate pentru
anumite tipuri de activităţi (petrecere, cină, film) care necesită niveluri diferite de intensitate
ale luminii şi multiroom audio-video – care permite prin intermediul unui server audio-video
ascultarea muzicii sau urmărirea unei emisiuni în fiecare încăpere a casei, în concordanţă cu
preferinţele individuale.

În ultimii ani, sistemul de automatizare al caselor a înregistrat progrese uriaşe în materie


de tehnologie, aplicaţii şi design. Permiţând tehnologiei să pătrundă în spaţiul de locuit,
oamenii au îmbunătăţit nivelul de confort făcând ca totul să fie mai funcţional. Descoperirea
avantajelor pe care le imprimă sistemele tehnice şi echipamentele electronice unui spaţiu
locuibil, este posibilă graţie experienţei şi tehnologiei, precum şi know-how-ului specific care
a substituit sistemele electronice naturale (caracteristice insectelor) cu sisteme ale inteligenţei
artificiale (aplicaţii computaţionale).

Dezvoltarea ideii de casă ecologică inteligentă în practică a pornit de la comedia


hollywoodiană ”Smart House”, produsă în 1999, ca adaptare cinematografică a nuvelei „The
Veldt” scrisă de Ray Bradbury. O serie de gadgeturi inteligente transformau viaţa locatarilor
casei într-o serie de scenarii SF aduse la zi, care au avut multă trecere la public. Succesul de
care s-a bucurat pelicula a dat de gândit firmelor de automatizări şi astfel primele elemente
specifice casei inteligente n-au întârziat să apară; deşi la inceput a fost vorba doar de
programarea instalaţiilor de iluminat, udat grădina şi supraveghere video, în scurt timp, lista
lucrurilor pe care putea să le facă o casă inteligentă a crescut considerabil .

Conceptul de „casă inteligentă” relativ nou pentru România a apărut în urmă cu


aproximativ 30 de ani şi a fost implementat în mai toate ţările dezvoltate din Europa.

2
Expansiunea fără precedent a calculatorului în toate sferele, nu putea să nu afecteze şi
domeniul casnic / imobiliar. În acest sens a apărul ca şi domeniu de cercetare de sine stătător
domotica care se ocupă cu aplicaţiile calculatoarelor şi a roboţilor în domeniul casnic.

1.2 Conceptul de casă inteligentă

Conceptul de “casă inteligentă” este unul de factură relativ recentă şi defineşte un spaţiu
locuibil modern / futurist, care foloseşte tehnologii moderne pentru automatizarea tuturor
sistemelor şi a aparatelor pe bază de energie electric, aflate în interiorul acesteia sau în
imediata apropiere . Totodată, o casă inteligentă sau automatizată reprezintă un stil de viaţă
îmbunătăţit, răspunzând întocmai nevoilor fundamentale ale omului: confort, funcţionalitate şi
siguranţă.

Rolul unei case inteligente este aşadar acela de a îmbunătăţi confortul locatarilor şi a
simplifica atingerea lui printr-o simplă apasare de buton (tastele unei telecomenzi, telefon sau
alt dispozitiv de comunicare); astfel se pot apela o multitudine de funcţii pentru automatizarea
casei şi a exteriorului ei, precum: controlul luminilor din curte, din întreaga casă sau doar din
anumite camere şi climatizarea încăperilor; securitatea familiei şi a bunurilor; gestionarea
sistemului audio multiroom; acţionarea manuală sau programată a storurilor, perdelelor şi
jaluzelelor; acţionarea instalaţiei de udat şi controlarea temperaturii apei din piscină; hrănirea
animalelor de companie etc.

3
Fig 1.1 Casă inteligentă

La baza caselor inteligente pentru asigurarea funcţiilor anterior menţionate stau


echipamente specializate cu ajutorul cărora se pot controla marea majoritate a componentelor
electronice şi electrocasnice existente în locuinţă. În principiu, toate sistemele electrice şi
electronice individuale din casă sunt reunite într-un tot unitar, care face posibilă coordonarea
centralizată a tuturor funcţiilor, fie din interiorul locuinţei, fie de la distanţă prin telefonul
mobil sau prin internet.

Casa inteligentă se mai numeşte şi “casă domotică” (de la lat. “domus”-“casa” şi


informatică). Domotica reprezintă, aşadar, un ansamblu de sisteme şi tehnici electronice,
informatice şi de telecomunicaţii folosite pentru casele inteligente, în scopul asigurării unui
confort maxim, prin gestionarea energiei, optimizarea climatizării şi a iluminării, comanda la
distanţă etc. Domotica are impact şi asupra protejării mediului, prin reducerea consumului
energetic (mai ales dacă avem în vedere că va fi obligatoriu ca atunci când, de exemplu, se
deschide o fereastră, să se întrerupă sistemul de încălzire).

Principiul general de funcţionare al unei case inteligente constă în punerea în reţea a


tuturor aparatelor electrice din locuinţă, controlate în mod constant de o “inteligenţă
centralizată” (o centrală programabilă, un server – în term. informatici) cu interfaţă accesibilă.
Comenzile se pot da cu ajutorul unei telecomenzi universale sau printr-un telefon portabil, un
ecran tactil ş.a.m.d. Toate aceste elemente fac posibile reglajele complexe, adaptate la ritmul
de viaţă al fiecărui locatar, prin realizarea şi urmărirea unor “scenarii” care să fie activate
(repetabil, sub forma unui circuit predefinit) în funcţie de situaţie.

De exemplu, scenariul “Plecarea la serviciu”, printr-un simplu click, va însemna


stingerea luminilor, deschiderea uşilor garajului, trecerea în stare de veghe a centralei de
încălzire şi desigur închiderea în 15 minute a jaluzelelor şi a uşii garajului. În mod similar,
scenariul “Întoarcerea de la serviciu”, accesat de pe telefonul mobil sau de pe calculatorul de
la birou, determină acţiunile în sens invers: jaluzelele se ridică, centrala porneşte, uşile se
deschid etc. Acasă, pentru relaxare, acelaşi simplu clik pe telecomanda micşorează

4
intensitatea luminii, porneşte o muzică în surdină; pentru muzică, sistemul poate fi conectat la
un radio, la un telefon mobil sau la un calculator.

În ceea ce priveşte sistemele de securitate acestea conţin, de regulă, o cameră video,


semnale luminoase şi sonore în caz de intruziune, în timp ce unele sisteme mai performante
pot să contacteze automat numărul de telefon al proprietarului sau pe al unei firme de
securitate, ori de câte ori ar putea fi o scurgere de gaze, o inundaţie, fum sau “vizite nedorite”.

Realizarea unei case inteligente presupune, printre altele un sistem informatic (kit
integrat) specific, care să facă totul funcţional, asociat unui design modern inspirat de la
natură (ecologic), ţinându-se seama, în acelaşi timp, de eliminarea riscurilor de incendiu sau
alte daune colaterale.

Domotica este o stiință relativ noua, care are ca principal obiect de interes conducerea
centralizată, asistată de calculator, a tuturor instalatiilor ce deservesc o cladire. Includem aici
instalații sanitare, de ventilare-climatizare, încălzire, antiefracție, iluminat si prize, control
acces, multimedia etc.

Imaginați-vă cât de util va fi să vă puteți activa aparatul de aer condiționat cu zece


minute înainte de a ajunge acasă într-o după-amiază fierbinte de iulie. Ce zici de un sistem de
securitate care va detecta fumul, consumul excesiv de energie electrică, sau incercări de
efractie, și vă va alerta?

Cam despre asta sunt sistemele domotice, iar aplicațiile lor nu se opresc doar aici.

Câteva sarcini îndeplinite de domotică :

 Controlează draperiile, ferestrele dintr-o locație, toata ziua, fără interacțiunea omului.
 Deschide sau blochează și deblochează poarta și intrarea în garaj, cu un control separat
sau global.
 Controlează clima din interiorul caselor. Prin apăsarea unui buton se poate seta încălzirea
pe timp de noapte; lumina când nu ești într-o încăpere; să închidă poarta după plecare...
 Controlează sunetul din orice cameră, utilizând butoane, tablouri sau telecomenzi.
 Asigură lumina potrivită la locul potrivit; sistemele domotice pot asigura și memora
intensitatea luminoasa în funcție de preferințele persoanelor.

5
 Pot pregăti inteligent - grădinile prin pornirea stropitoarelor atunci când solul este prea
uscat;
 Pot aprinde lumina doar atunci când o persoana este prin preajmă(uneori cu rol de
alarmă).

1.3 Riscuri și flexibilitate

Înmulţirea factorilor de stres din mediul în care trăim ne determină să căutăm tot mai
multe soluţii prin care să creăm un echilibru între tensiunea şi solicitarea psihică a fiecărei zile
şi momentele de relaxare/destindere. Datorită acestui fapt casa inteligentă a devenit un spaţiu
din ce în ce mai familiar, asigurând un plus de valoare oricărei construcţii. Suplimentar,
sistemele computaţionale ale casei inteligente au evoluat în aşa măsură încât răspund
aspiraţiilor din ce în ce mai înalte în ceea ce priveşte confortul, siguranţa şi controlul casei.

Sistemele IT care fac trecerea de la casa ecologică la casa ecologică inteligentă extind
conceptul tradiţional de „sisteme electrice” perceput ca simple sisteme de corpuri de iluminat
şi prize. Noul concept înseamnă practic echiparea locuinţei cu sisteme electronice avansate
care sunt concepute să satisfacă nevoi specifice, perfect capabile să ofere aplicaţii utile.
Integrarea tuturor acestor funcţiuni individuale creează un sistem avansat, dar uşor de folosit,
care rezistă în timp şi este extrem de flexibil, putând fi modificat şi extins în orice moment
pentru a satisface noi necesităţi . O casă inteligentă are proprietatea de a asigura acel
sentiment unic de “mă simt bine acasă” în fiecare zi, transformă casa în “acasă” în adevăratul
sens al cuvântului. Instalaţia inteligentă îmbină într-o armonie perfectă, controlul tuturor
luminilor, prizelor, încălzirii, climatizării, echipamentelor de umbrire motorizate,
echipamentelor audio-video, elementelor de securitate, sistemul de irigaţii şi multe altele.
Siguranţa copilului, confortul familiei, economia energiilor, excluderea pericolului de
electrocutare la întrerupătoare, funcţiile de simulare a prezenţei pentru zilele de concediu etc,
toate aceste avantaje sunt cu adevărat importante pentru casele inteligente.

O instalaţie într-adevăr inteligentă va trebui să fie intuitivă şi uşor utilizabilă în viaţa de zi


cu zi tuturor generaţiilor, locatari ai imobilului. De asemenea, trebuie să fie adaptabilă în
timp, pentru a satisface noile cerinţe ale încăperilor cu destinaţie schimbată, nu de puţine ori,
la o anumită vârstă camera copilului devine neîncăpetoare şi va primi o nouă destinaţie, iar o
cameră mai mare va deveni cadoul onomastic. O casă inteligentă va reuşi să asigure toate

6
funcţiile necesare noii camere. Casa inteligentă asigură comanda sau vizualizarea
echipamentelor din orice zonă a imobilului, inclusiv de la distanţă atunci cînd suntem plecaţi .

Un alt aspect demn de menţionat referitor la casa inteligentă este acela că sistemul
domotic central poate integra cu uşurinţă o multitudine de sisteme, precum: sistemul de
climatizare şi controlul luminilor, sistemul de suraveghere audio-video locală şi la distanţă,
sistemul de tip home cinema şi audio multiroom, sistemul electric de prize, sistemul de
detecţie la incendiu, efracţie sau alte incidente, sistemul de automatizare a porţilor de intrare
şi de la garaj etc.

Toate aceste sisteme pot fi controlate oricând, manual sau prin stabilirea unor scenarii
predefinite pentru diverse situaţii zilnice: când pleci sau te întorci de la muncă sau din
vacanţă, când te trezeşti sau te culci, când în casa stă întreaga familie, doar bona cu copilul
etc. De asemenea, flexibilitatea soluţiilor domotice derivă şi din posibilitatea acestora de
implementare şi adaptare la diverse spaţii: apartamente, case, vile, case de vacanţă, hoteluri,
clădiri de birouri etc.

1.4 Despre Arduino

O plăcuță Arduino este compusă dintr-un microcontroler Atmel AVR de 8-, 16- sau 32-
biți (deși începând cu 2015 s-au folosit microcontrolere de la alți producători) cu componente
complementare care facilitează programarea și încorporarea în alte circuite. Un aspect
important la Arduino este că acesta dispune de conectori standard, care permit utilizatorului să
conecteze plăcuța cu procesorul la diferite module interschimbabile numite shield-uri. Unele
shield-uri comunică cu Arduino direct prin pinii digitali sau analogici, dar altele sunt
adresabile individual prin magistrala serială I²C permițând utilizarea mai multor module în
paralel. Până în anul 2015 plăcuțele Arduino oficiale au folosit cipuri Atmel din seria
megaAVR, în special ATmega8, ATmega168, ATmega328, ATmega1280 și ATmega2560,
iar în 2015 au fost adăugate cipuri de la alți producători. O multitudine de alte procesoare au
fost folosite de dispozitive compatibile Arduino. Multe plăcuțe includ un regulator liniar de 5
V și un oscilator cu cuarț de 16 MHz (sau un rezonator ceramic în unele variante), deși
anumite plăcuțe, cum ar fi LilyPad, funcționează la 8 MHz și nu necesită regulator, datorită
restricțiilor de formă. Un microcontroler instalat pe Arduino vine preprogramat cu un
bootloader care simplifică încărcarea programelor pe memoria flash a cipului, în comparație

7
cu alte dispozitive care necesită programatoare externe. Acest aspect face Arduino o soluție
simplă, permițând programarea de pe orice computer ordinar. În prezent, bootloader-ul
optiboot este bootloader-ul implicit instalat pe Arduino UNO.

La nivel conceptual, când se folosește mediul de dezvoltare integrat Arduino, programarea


tuturor plăcuțelor se face prin conexiune serială. Implementarea acesteia diferă în funcție de
versiunea hardware. Unele plăcuțe Arduino au implementate convertoare de nivel logic pentru
a realiza conversia între nivelele logice RS-232 și cele TTL. Plăcuțele Arduino din prezent
sunt programate prin USB, având integrate cipuri de conversie USB-serial, cum ar fi FTDI
FT232. Unele modele UNO, mai noi, folosesc un cip AVR separat programat să funcționeze
ca un convertor USB-serial, care poate fi reprogramat printr-un port ICSP dedicat. Alte
variante, cum ar fi Arduino Mini și versiunea neoficială Boarduino, folosesc adaptoare
detașabile USB-serial, cabluri, Bluetooth sau alte metode.

Plăcuța Arduino are expuși mulți dintre pinii de intrare/ieșire ai microcontrolerului, pentru
ca aceștia să fie folosiți de alte circuite. Diecimila, Duemilanove și UNO oferă 14 pini digitali
de intrare/ieșire, dintre care 6 pot produce semnale PWM și 6 intrări analogice care, de
asemenea, pot fi folosite ca intrări/ieșiri digitale. Acești pini sunt accesibili prin partea
superioară a plăcuței, prin intermediul unor barete mamă cu pasul între pini de 2,54 mm.

1.5 Identificarea problemei

Întrerupatoarele sunt dispozitive foarte simple, doar totusi foarte importante si pot fi
vazute in fiecare zi in jurul nostru. Desi sunt atat de importante, omul nu le mai acorda prea
multa atentie, de foarte multe ori, uitand sa le actioneze.

De foarte multe ori, cand plecăm de acasă, uităm să stingem un bec, sau să scoatem ceva
din priză, acest lucru putând conduce la defectarea aparatelor din case, sau consum inutil de
energie electrică, sau în unele cazuri se poate ajunge la supraîncalzire și incendiu.

O altă problemă, o reprezintă intrările prin efracție. Este foarte important să ne asigurăm
că locuința noastră este protejată de asemenea întâmplări, cât nu suntem acasă. Intotdeauna
există riscul ca o persoană necunoscută să îți intre în casă.

1.6 Scopul lucrării

8
Proiectarea și implementarea unui sistem de automatizare a unei case, care va controla
lumina, va monitoriza în permanență temperatura, umiditatea, va analiza riscul de incendiu,
va controla aerul condiționat și va asigura securitatea locuinței in permanență.

Sistemul de automatizare va procesa comenzile primite de la locatar și datele primite de la


senzori. Acest sistem este constituit din componente hardware si software.

Pentru folosirea acestui sistem, exista doua tipuri de utilizator:

1. Utilizatorul care poate interveni asupra codului și își poate ajusta singur parametrii. Acest
utilizator este administratorul. El are autorizația să acceseze și să modifice codul
programului, sau structura hardware.
2. Al doilea tip de utilizator, este utilizatorul normal. Acest proiect a fost proiectat, special
pentru nevoile lui. El nu poate modifica codul si nici structura hardware.

Folosind aplicația web, utilizatorul poate efectua urmatoarele operațiuni:

 Aprindere/Stingere led-uri.
 Blocare/Deblocare ușa principală.
 Deschidere/Inchidere usa garaj.
 Pornire/Oprire ventilator.
 Vizualizare temperatură și umiditate aer.

1.7 Obiective

Pentru a îndeplini scopul lucrării, trebuie atinse următoarele obiective.

1. Controlul led-urilor.
2. Controlul unui ventilator, pentru menținerea temperaturii constante.
3. Detectarea mișcării în afara locuinței.
4. Alarma, activată in momentul în care este detectată foc în locuință.
5. Accesul in locuință, doar pe baza unui cod.
6. Controlul unui servomotor.

9
1.8 Prezentare sistem

Următorul graf prezintă cum sunt afișate datele de la senzori, pe un laptop, sau un
smartphone, conectat la rețea.

Fig 1.2 Graf afișare date de la senzori

Următorul graf prezintă cum sunt trimise datele din aplicația realizată, la Arduino.

10
Fig 1.3 Graf comenzi Arduino de la aplicație

2. Implementare hardware

Microcontroller

La modul general un controler este o structură electronică destinată controlului unui


proces sau unei interacțiuni caracteristice cu mediul exterior, fără să fie necesară intervenția
operatorului uman.
Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa
ziselor sisteme încapsulate-integrate (“embedded systems”), la care existența unui sistem de
calcul incorporat este (aproape) transparentă pentru utilizator.
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ă.

2.1 Arduino Mega 2560

11
Arduino Mega 2560 este o placă de dezvoltare având drept unitate centrală
microcontrolerul ATmega2560. Acesta este un microcontroler performant Atmel AVR pe 8
biți bazat pe arhitectura RISC (Reduced Instruction Set Computing) și conține 54 de pini, ce
pot fi configurați ca intrări sau ieșiri, dintre care 15 pot furniza semnale PWM (Pulse Width
Modulation), 16 pini de intrare analogică cu o rezoluție de 10 biti (1024 de valori diferite), 4
porturi seriale hardware (UART) și un oscilator intern de 16 MHz.

Fig 2.1 Arduino Mega 2560

2.2 Ethernet Shield W5100


Acest modul este un circuit ce ajută să conectam placa Arduino Mega 2560 la internet, cu
ajutorul unui cablu RJ45.

Se alimentează cu 5V, de pe placa Arduino si are un buffer intern de 16K.

Are viteza de conexiune de 10/100Mbps și comunică cu Arduino Mega 2560 prin


protocolul SPI. Modulul dispune și de un slot pentru card de memorie Micro SD.

Fig 2.2 Ethernet Shield W5100

12
Modulul conține cateva led-uri informative:

 PWR – indică dacă placa și modulul sunt alimentate.

 LINK – indică o conexiune la rețea și clipește când sunt transmise sau primite date.

 FULLD – indică o conexiune full duplex.

 100M – indică o conexiune de 100MB/s.

 RX – clipește când modulul primește date.

 TX – clipește când modulul trimite date.

 COLL – clipește când a fost detectată o coliziune.

2.3 Senzori

Senzorul este un dispozitiv tehnic care reacționează calitativ sau cantitativ prin proprii
mărimi măsurabile, la anumite proprietăți fizice sau chimice ale mediului din preajma lui. Ca
parte componentă a unui aparat sau sistem tehnic detector poate măsura/înregistra de exemplu
presiunea, umiditatea, câmpul magnetic, accelerația, forța, intensitatea sonoră, radiații ș.a.
Provine din latină: sensus = simț.

Senzorul este un dispozitiv care măsoară o mărime fizică (masă, presiune, temperatură,
umiditate etc.) și o transformă într-un semnal care poate fi citit de către un observator printr-
un instrument sau poate fi prelucrat.

Sistemele de control trebuie să fie capabile să identifice, în anumite condiţii şi limite,


parametri mediului ambiant şi să reacţioneze la modificări ale acestora. Extrapolând
consideraţiile despre sistemele senzoriale ale lumii vii la sistemele de control, prin senzor se
va înţelege dispozitivul tehnic destinat înzestrării sistemelor cu simţuri. Are rolul determinării
unei sau unor proprietăţi, şi, în funcţie de nivelul de integrare, poate avea funcţii mai simple
sau mai complexe. Senzorul cuprinde traductorul/traductoarele pentru transformarea mărimii
de intrare într-un semnal electric util, dar şi circuite pentru adaptarea şi conversia semnalelor
şi, eventual, pentru prelucrarea şi evaluarea informaţiilor. Senzorul care include şi unităţile
micromecanice şi microelectronice de prelucrare, realizate prin integrare pe scară largă (LSI)

13
sau foarte largă (VLSI), se întâlneşte în literatura de specialitate şi sub denumirile de "sistem
senzorial" sau "senzor inteligent" (smart-sensor).

Fig 2.3 Structuri ale sistemelor senzoriale

Există astăzi senzori pentru mai mult de 100 de mărimi fizice, iar dacă se iau în
considerare şi senzorii pentru diferite substanţe chimice, numărul lor este de ordinul sutelor.
Se pot pune în evidenţă circa 2000 de tipuri distincte de senzori, oferite în 100.000 de
variante, pe plan mondial

Senzorii pot fi clasificaţi în funcţie de tehnologiile utilizate pentru realizarea lor:

 Tehnologii ale materialelor feromagnetice;

 Tehnologii ale materialelor piezo-ceramice;

 Tehnologii ale microeelectronicii şi microsistemelor;

 Tehnologii ale staturilor subţiri;

 Tehnologii ale staturilor groase;

 Tehnologii pentru materiale sinterizate;

 Tehnologii ale foliilor etc.

În funcţie de tipul mărimii fizice de intrare senzorii pot fi clasificaţi în:

 absoluţi, când semnalul electric de ieşire poate reprezenta toate valorile posibile ale
mărimii fizice de intrare, raportate la o origine (referinţă) aleasă;

14
 incrementali, când nu poate fi stabilită o origine pentru toate punctele din cadrul
domeniului de măsurare, ci fiecare valoare măsurată reprezintă originea pentru cea
următoare.

Foarte importantă este clasificarea în funcţie de tipul mărimii de ieşire, în:


 senzori analogici, pentru care semnalul de ieşire este în permanenţă proporţional cu
mărimea fizică de intrare;
 senzori numerici (digitali), la care semnalul de ieşire poate lua numai un număr limitat de
valori discrete, care permit cuantificarea semnalului fizic de intrare.
Privind problema semnalului de ieşire din punctul de vedere al numărului de valori
posibile, pot fi puse în evidenţă alte două clase distincte:
 senzori binari, care prezintă la ieşire numai două valori distincte;
 senzori cu un număr mare de valori, pentru măsurarea unei mărimi într-o anumită plajă;
pot fi analogici sau numerici.

2.3.1 Senzor de temperatură și umiditate DHT11

DH11 este un senzor digital de temperatură și umiditate, low-cost. Acesta încorporează un


senzor de umiditate capacitiv și un termistor, pentru a măsura aerul din jur si dă un semnal
digital pe pinul de date (nu necesită pini de intrare analogici).

Specificatii

Alimentare si I / O: 3 - 5V
Curent maxim: 2.5mA
Pentru gama de umiditate 20-80% are o precizie de 5%
Pentru gama de temperatură 0-50 ° are o precizie de ± 2 ° C
Rata de eșantionare de 1 Hz (o dată pe secundă)
Dimensiuni: 15.5mm x 12mm x 5.5mm

15
Fig 2.4 Senzor de temperatură DHT11

Cum funcționează?

Pentru a măsura umiditatea, este folosit senzorul de umiditate, ce conține 2 electrozi cu un


strat de menținere a umidității între ele. Când umiditatea se schimbă, se schimbă și rezistența
dintre cei 2 electrozi. Această schimbare în rezistență este măsurată și procesată.

Pentru măsurarea temperaturii, este folosit un termistor. Denumirea de "termistor" este o


combinare a cuvintelor englezești "thermally sensitive resistor" (rezistență sensibilă termic).
Această denumire descrie cu exactitate funcția de bază a dispozitivului și anume aceea de-a
avea o schimbare de rezistență electrică predictibilă în funcție de orice schimbare a
temperaturii sale absolute.

Termistorul NTC (Negative Temperature Coefficient, coeficient negativ de temperatura)


este un dispozitiv semiconductor cu doua terminale relativ simplu, realizat din amestecuri
sinterizate din oxizi ai metalelor de tranziție ca manganul, cobaltul, nichelul, fierul, cuprul.

2.3.2 Senzor ultrasonic HC-SR04


Senzorul HC-SR04 emite o undă ultrasonică pe frecventa 40 000Hz. Când sunetul
întâlnește în calea sa un obstacol, acesta se întoarce și este captat de modulul de recepție al
senzorului. Distanța între senzor și obiectul detectat se calculează luând în considerare timpul
de călătorie al sunetului și viteza sunetului.

Senzorul returnează măsuratori ale distanței destul de precise in gama 2cm – 400cm.
Precizia este undeva la 2mm cu un unghi de generare a undei ultrasonice de 15 grade.

Modulul HC-SR04 are patru pini: “Ground”, “VCC”, “Trig”, si “Echo”. Pinul “Ground”
trebuie conectat la unul din pinii “GND”, iar pinul “VCC” la pinul de 5V al placii Arduino.

16
Pinii “Trig” si “Echo” pot fi conectați la oricare din pinii digitali de intrare/ieșire a plăcii
Arduino.

Fig 2.5 Senzorul ultrasonic HC-SR04

Pentru a genera ultrasunete, TRIG-ul trebuie setat pe HIGH pentru 10 microsecunde. Va


trimite o explozie sonică de 8 cicluri, ce va călători cu viteza sunetului și va fi apoi primită de
pinul ECHO. ECHO va scoate timpul, in microsecunde.

Figura 2.5 Funcționare senzor HC-SR04

2.3.3 Modul PIR - senzor de prezenta


PIR(Passive Infrared Sensor) este un dispozitiv electronic ce măsoară radiația infraroșie
emisă de obiecte aflate în câmpul său vizual.

17
Fig 2.5 Senzorul de prezență
Mișcarea este detectată atunci când un corp cu o anumită temperatură (cum ar fi un om
sau un animal) trece prin fața sursei infraroșu (adică un alt corp, obiect) cu o altă temperatură,
cum ar fi un perete.

Fig 2.6 Funcționalitate PIR

Acest lucru înseamnă că senzorul detectează căldura de la trecerea unui obiect prin câmpul
de acțiune al senzorului și acel obiect rupe câmpul pe care senzorul l-a determinat anterior ca
fiind “normal”. Orice obiect, chiar unul de aceeași temperatură ca și obiectele din jur va activa
senzorul PIR cand corpul se deplasează în câmpul vizual al senzorului.
Senzorul consta de asemenea si intr-un capac special, numit obiectiv Fresnel, care focalizeaza
semnalele infrarosii pe senzor.

18
Fig 2.6 Functionalitate PIR cu obiectiv Fresnel

2.4 Servomotor SG90

Un servo motor permite un control precis al poziției, vitezei și accelerației. Acest control
foarte strict al poziției unghiulare, vitezei și accelerației nu se poate face fără un senzor pentru
feedback-ul de poziție. Acest senzor dă alarma atunci când motorul se rotește. Dar chiar și
așa, exista ceva si mai sofisticat care controleaza toate etapele motorului servo. Este vorba
despre un controller dedicat care face ca micile angrenaje din interiorul servo motorului sa se
miste cu precizie militară.

19
Fig 2.7 Servomotor SG90

Caracteristici tehnice:

 Tensiune de alimentare: 4.8V;


 Consum redus de curent;
 Viteza de funcționare: 0.12 s/60o @ 4.8 V;
 Cuplu în blocare la 4.8V: 1.8 kgf*cm;
 Frecvență PWM: 50Hz

Fig 2.8 Conectivitate Servomotor SG90

2.5 Tastatura matricială 4x4

Tastatură cu 16 butoane (cifrele de la 0 la 9 + încă 6 butoane), tastele fiind conectate in


forma matriceala.

Fig 2.9 Keypad 4x4

Cum functionează?

20
Tastaturile matriciale folosesc o combinație de 4 linii și 4 coloane, pentru a furniza stările
butoanelor, către microcontroller. Sub fiecare tastă, este un buton, cu un capat conectat la o
linie și celălat capăt conectat la o coloană.

Fig 2.10 Circuit keypad 4x4

Din circuitul prezentat in Fig 2.10 se poate vedea că atunci când unul din cele 16 butoane
este apăsat, o pereche de pini va fi conectată. Cei 2 pini sunt folosiți pentru a detecta butonul
ce a fost apăsat.

2.6 Senzor de flacără infraroșu

Senzorul se folosește de un fototranzistor ce funcționează pe bază de radiație IR.

Output-ul senzorului poate fi analogic sau digital. Modulul este echipat cu un circuit
integrat comparator LM393. Tensiunea de referința a comparatorului poate fi setată din
potențiometru.

21
Fig 2.11 Senzor de flacără infraroșu

Caracteristici tehnice:
 Tensiune de alimentare: 3.3V sau 5V;
 Curent consumat: 15mA;
 Lungime de undă detectată: 760nm - 1100nm;
 Unghi de detecție: 60o;
 Distanță maximă: 80cm.

Fig 2.12 Circuit senzor flacara infrarosu

3. Implementare software

3.1 Arduino IDE

Arduino este o companie open-source care produce atât plăcuțe de dezvoltare bazate
pe microcontrolere, cât și partea de software destinată funcționării și programării acestora.

Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE), care este o aplicație cross-
platform, scrisă în Java. Acesta își are originile în mediul de dezvoltare pentru limbajul de

22
programare Processing și în proiectul Wiring. Este proiectat pentru a introduce programarea
în lumea artiștilor și a celor nefamiliarizați cu dezvoltarea software. Include un editor de cod
cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și spațierea automată și oferă
mecanisme simple cu un singur click, pentru a compila și a încărca programele în plăcuța
Arduino. Un program scris în IDE pentru Arduino se numește sketch.

Arduino IDE suportă limbajele de programare C și C++ folosind reguli speciale de


organizare a codului. Arduino IDE oferă o librărie software numită Wiring, din proiectul
Wiring, care oferă multe proceduri comune de intrare și ieșire. Un sketch tipic Arduino scris
în C/C++ este compus din două funcții care sunt compilate și legate cu un ciot de
program main(), într-un program executabil cu o execuție ciclică:

 setup(): o funcție care este rulată o singură dată la începutul programului, când se
inițializează setările.

 loop(): o funcție apelată în mod repetat până la oprirea alimentării cu energie a plăcuței.

După compilarea și legarea cu GNU toolchain inclus, de asemenea, în IDE, mediul de


dezvoltare Arduino trimite comandă către programul avrdude pentru a converti codul
executabil într-un fișier text codat hexazecimal, care poate fi încărcat în placa Arduino de un
program de încărcare.

23
Fig 3.1 Arduino IDE

4. Interfata cu utilizatorul

Interacțiunea dintre utilizatori şi calculatoare apare la nivelul interfeței cu utilizatorul, care


include aspecte ergonomice, software şi hardware. La calculatoarele moderne există
următoarele puncte centrale ale interfeței om-calculator: interfața grafică (pe un monitor sau
ecran de calculator), interfața grafică mijlocită prin atingerea monitorului (touch screen) ,
interfața grafică prin comenzi verbale (recunoașterea vocii).

Interfața este acea parte a aplicației software prin intermediul căreia utilizatorul
interacționează cu calculatorul, având posibilitatea de a-şi exprima intențiile de operare şi de a
interpreta rezultatele efectuate de mașină. Interfața nu este concepută doar ca parte vizuală a
software-ului, pentru majoritatea utilizatorilor reprezintă întregul sistem de calcul. Orice
interfață poate fi utilă, utilizabilă şi utilizată.

Un aspect deosebit de important în definirea interfeței utilizator este faptul că interfaţa


reprezintă din sistemul complex utilizatorului, doar aspectele relevante pentru interacţiunea sa
cu sistemul. Celelalte aspecte care există în sistem dar nu sunt accesibile utilizatorului, nu îi

24
influențează acestuia interacțiunea cu sistemul. Van der Veer a numit interfaţa şi maşina
virtuală a utilizatorului.

Fig 4.1 Interfata cu utilizatorul

O interfață - utilizator este bine scrisă atunci când programul se comportă exact așa cum se
așteaptă utilizatorul.

Proiectarea interfețelor cu utilizatorul este rezultatul activităților de: înțelegere a nevoilor


utilizatorilor, proiectare (design), evaluare/ testare, implementare finală, menținere.

Interfețele se pot clasifica în:


 interfețe hardware – de exemplu telecomanta pentru televizor. O telecomandă obișnuită
conține butoane numerice, pentru volum, pentru schimbarea canalului, pentru
pornire/oprire și alte butoane pentru a accesa diferite facilități ale televizorului, ceea ce o
face sa reprezinte o interfață cu utilizatorul.
 interfețe software – acestea sunt reprezentate de sisteme de programe care inițiază si
întrețin un dialog cu utilizatorul.Acestea se pot împărți în doua mari categorii:
interfețe în linie de comandă (sau interfețe text) – acestea sunt reprezentate, în general,
de un program numit interpretor de comenzi, care afișează pe ecran un prompter, primește
comanda introdusă de utilizator și o executa. Comenzile se scriu folosind tastatura și pot fi
insoțite de parametri. Aproape toate sistemele de operare includ o interfață în linie de
comanda, unele foarte bine puse la punct (cazul sistemelor UNIX), iar altele destul de
primitive (MS-DOS si MS-Windows).

25
interfețe grafice (GUI – Graphic User Interface) – sunt cele mai populare interfețe cu
utilizatorul și se prezintă sub forma unui set de obiecte grafice prin intermediul cărora
operatorul poate comunica cu sistemul.

5. Tehnologii folosite

5.1 HTML

HTML este acronimul de la HyperText Markup Language si reprezinta un limbaj pentru


crearea si marcarea (formatare, aranjare) unui document astfel incat sa poata fi publicat pe
World Wide Web si vizualizat cu ajutorul unui browser (Internet Explorer, Netscape, Opera
etc.).

Termenul de hypertext desemneaza un material sub forma de text si imagine, interconectat


intr-o maniera complexa, nesecventiala, in care utilizatorul poate naviga, cauta informatii
referitoare la un obiect. Hypertext-ul trebuie interpretat ca un text care semnaleaza o legatura
la o alta informatie web, de obicei un alt document web, si este identificat prin subliniere sau
culoare, pentru a-l deosebi de textul simplu.

Hypermedia este un termen aproape sinonim celui de hypertext, singura deosebire fiind
faptul ca subliniaza prezenta si a unor elemente care nu sunt de tip text, cum ar fi animatii,
secvente sonore sau secvente video.

HTML se utilizeaza din 1990, cunoscand cateva versiuni de dezvoltare, fiecare dintre
acestea imbunatatind performantele limbajului. Ultima varianta (la data elaborarii acestui
ghid) este HTML 4.01. ce include facilitatile versiunilor anterioare (tag-uri de marcare, tag-uri
pentru hiperlegaturi, antete, paragrafe, liste, elemente de meniu, formatare caractere, imagini
in-line si tag-uri pentru schimbul de date dinamic intre utilizatori), adaugand facilitati si
extensii pentru numere, tabele si elemente de control.

5.2 CSS

CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui
document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere
externe sau în cadrul documentului, prin elementul <style> și/sau atributul style.

26
7. Interfata grafica realizata

Interfața grafică realizată pentru utilizatorii acestui sistem, cuprinde secțiuni pentru:
controlul iluminării, monitorizarea temperaturii și a umiditătii aerului, controlul accesului in
locuintă și garaj, precum și informații despre cutia poștală și perimetrul din fața locuinței.
Toate acestea se pot observa in Fig 6.1

Fig 6.1 Interfața grafică realizată

Pentru iluminat, fiecare secțiune conține două butoane “Pornit” și “Oprit”, ce vor schimba
starea sistemului. Exemplu: În momentul în care utilizatorul dorește aprinderea luminii în
bucătărie, acesta va acționa butonul “Pornit”, rezultatul fiind iluminarea bucatariei. Pentru a
anula această acțiune, utilizatorul va acționa butonul “Oprit”, rezultatul fiind închiderea
luminii.

Fig 6.2 Interfața grafică – control lumini

27
Pentru controlul accesului în locuință, secțiunea conține două butoane “Descuie” și
“Incuie”, ce vor schimba starea sistemului. Exemplu: În momentul în care utilizatorul dorește
blocarea ușii principale, acesta va acționa butonul “Incuie” din secțiunea “Ușa principală”,
rezultatul fiind blocarea ușii prin care se face accesul in locuință. Pentru a anula această
acțiune, utilizatorul va acționa butonul “Descuie”, rezultatul fiind deblocarea ușii principale.

Fig 6.3 Interfața grafică – ușa principală

Pentru controlul accesului în garaj, secțiunea conține două butoane “Deschide” și


“Inchide”, ce vor schimba starea sistemului. Exemplu: În momentul în care utilizatorul
dorește deschiderea ușii garajului, acesta va acționa butonul “Deschide” din secțiunea
“Garaj”, rezultatul fiind deschiderea ușii garajului. Pentru a anula această acțiune, utilizatorul
va acționa butonul “Inchide”, rezultatul fiind închiderea ușii garajului.

Fig 6.4 Interfața grafică – ușă garaj

Temperatura și umiditatea aerului pot fi monitorizate în secțiunile ce pot fi observate în


Fig 6.5.

Fig 6.5 – Interfața grafică – afișare temperatură și umiditate

Informații despre cutia poștală și perimetrul din fața locuinței pot fi văzute în secțiunile ce
pot fi observate în Fig 6.6

28
Fig 6.6 – Interfața grafică – informații

8. Conectivitate
8.1 Arduino Mega 2560 + Ethernet Shield W5100

Fig 7.1 Arduino Mega 2560 + Ethernet Shield W5100

Modulul Ethernet Shield W5100, se suprapune peste placa de dezvoltare Arduino Mega
2560, pentru a conecta placa Arduino la internet. Pinii digitali 4,10, 11, 12 si 13 sunt folositi
pentru comunicație între placa noastră de dezvoltare și modulul Ethernet Shield W5100.

8.1.1 Program demo Ethernet Shield W5100

#include <SPI.h>

#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Introducem adresa mac

byte ip[] = { 192, 168, 100, 10 }; // Adresa ce dorim sa o folosim

EthernetServer server(80); //Portul default al serverului pentru HTML

29
void setup()

Serial.begin(9600);

while (!Serial)

Ethernet.begin(mac, ip, gateway, subnet); // Pornim conexiunea Ethernet

server.begin();

Serial.print("Serverul este la adresa: ");

Serial.println(Ethernet.localIP()); //Printam adresa IP

8.2 Arduino Mega 2560 + DHT11

Fig 7.2 Arduino Mega 2560 + senzor temperatura DHT11

Primul pin al senzorului este VCC și se conectează la 5V de pe Arduino. Al doilea pin este
pinul pentru date și îl conectăm la pinul 2. Punem o siguranță de 10K între date și VCC. Pinul
3 nu îl folosim, iar pinul 4 este GND.

30
8.2.1 Program demo DHT11

#include <DHT.h>

#define DHTPIN 2 // Pin-ul la care am conectat senzorul

#define DHTTYPE DHT11 // Definim tipul de senzor, DHT11 in cazul nostru

DHT dht(DHTPIN, DHTTYPE);

void setup()

Serial.begin(9600);

Serial.println("Temperatura");

dht.begin();

void loop()

float u = dht.readHumidity(); // citeste valoarea pentru umiditate

float t = dht.readTemperature(); // citeste valoarea pentru temperatura

Serial.print("Umiditate: ");

Serial.print(" %\t");

Serial.println();

Serial.print("Temperatura: ");

Serial.print(t);

Serial.print(" *C ");

Serial.println();

31
}

8.3 Arduino Mega 2560 + senzor ultrasonic HC-SR04

Fig 7.3 Arduino Mega 2560 + senzor ultrasonic HC-SR04

Senzorul ultrasonic HC-SR04 are 4 pini: VCC, Echo, Trig si GND. VCC l-am conectat la
5V Arduino, GND-ul la GND Arduino, Trig la pinul 7, iar Echo la pinul 6.

8.3.1 Program demo HC-SR04

int trigPin = 7;

int echoPin = 6;

void setup()

Serial.begin(9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

void loop()

32
{

long durata, distanta;

digitalWrite(trigPin,HIGH);

delayMicroseconds(1000);

digitalWrite(trigPin, LOW);

duration=pulseIn(echoPin, HIGH);

distanta =(durata/2)/29.1;

Serial.print(distanta);

Serial.println("CM");

delay(10);

8.4 Arduino Mega 2560 + senzor de prezenta

Fig 7.4 Arduino Mega 2560 + PIR

33
Senzorul de prezență are 3 pini: VCC, GND și pin-ul care trimite date. VCC-ul a fost
conectat la 5V Arduino, GND la GND-ul Arduino, iar pinul de date, a fost conectat la pin-ul
10 Arduino.

8.4.1 Program demo PIR

int pir = 10; // pin-ul de intrare PIR

int pirstare = LOW; // incepem ca si cum nu ar fi detectata miscare

int val = 0; // variabila pentru a citi starea pin-ului

void setup() {

pinMode(pir, INPUT); // declaram senzorul ca intrare

Serial.begin(9600);

void loop(){

val = digitalRead(pir); // citim valoarea de intrare

if (val == HIGH) { // verificam daca este pe HIGH

if (pirState == LOW) {

Serial.println("Miscare detectata");

pirState = HIGH;

} else {

if (pirState == HIGH){

Serial.println("Miscarea s-a incheiat!");

34
pirState = LOW;

8.5 Arduino Mega 2560 + senzor de flacara infrarosu

Senzorul de flacără infraroșu are 4 pini: A0, D0, GND si VCC. D0 are 0 la ieșire când
nimic nu este detectat și 1 când detectează foc. A0 – dă valori cuprinse între 0 și 1024,
reprezentând probabilitatea flăcării, dimensiunea și distanța la care apare.

8.5.1 Program demo senzor de flacara infrarosu

const int analogPin = A0; // const int prag = 1015; //

void setup() {

Serial.begin(9600);

void loop() {

int analog = analogRead(analogPin);

Serial.println(analog); //serial print the FLAME sensor value

if (analogValue > prag) {

Serial.print("Nu a fost detectat foc.");

else if (analog = prag){

35
else if (analog < prag) {

Serial.print("A fost detectat un incendiu.");

delay(1);

36
9. Concluzii

În cadrul acestui proiect s-a realizat o structură hardware și software ce pune în evidență
avantajele sistemelor domotice. Provocarea a fost realizarea unui astfel de sistem la un cost
mai redus și cât mai ușor de implementat. Toate acestea s-au reușit, prețul fiind unul foarte
accesibil, iar gradul de dificultate al instalării acestui sistem fiind foarte redus, toate
componentele folosite in acest sistem, fiind de dimensiuni foarte mici.

Aplicația web a fost creată folosind HTML&CSS, tehnologii ce ne-au permis crearea unei
interfețe grafice simple. Această aplicație a fost creată pentru a reduce efortul depus de om si
pentru siguranța acestuia, nefiind nevoie ca acesta să umble la circuit. Aplicația a fost creată
folosind ultimele tehnologii și din acest motiv, ea poate fi accesată și de pe smartphone, cât
timp acesta este conectat la rețea.

Informațiile sunt colectate cu ajutorul senzorilor de către Arduino, microcontroller-ul


Arduino fiind conectat la rețea cu ajutorul modulului de Ethernet. Configurația pentru
modulul de Ethernet conține o adresă ip statica.

Prin intermediul modulului de Ethernet, Arduino trimite date la fiecare 5 secunde (poate fi
ajustat) către server. Serverul primește datele și le actualziează și în același timp, poate prelua
și comenzi manuale folosind interfața grafică realizată.

O astfel de abordare poate crește confortul persoanelor, dar totodată această abordare
poate duce la economisirea de energie.

9.1 Limitări și dezvoltări ulterioare

Proiectul are și câteva limitări, după cum urmează:

 Sistemul este vulnerabil la atacuri.


 Este nevoie de un laptop, ca server local.
 Este nevoie de conexiune la internet.
 Nu poate fi accesat de la o distanță mare, fiind limitat de rețeaua LAN.

37
Ca dezvoltări ulterioare, se pot face următoarele:

 Adăugarea unui mecanism de securitate precum o modalitate de autentificare, prin


intermediul unei baze de date, pentru a preveni autentificările neautorizare.
 Implementare sistem de oprire a curentului, în caz de urgență.
 Implementare notificări SMS.
 Adăugarea unui senzor de gaz, pentru detectarea scurgerilor de gaz.
 Adaugarea unui LCD, pentru afișarea stării sistemului.

38
Anexa 1 – cod program
#include <SPI.h> //librarie ce permite comunicarea cu device-urile SPI
#include <Ethernet.h> //librarie modul Ethernet
#include <Servo.h> //librarie pentru Servomotoare
#include <DHT.h> //librarie pentru senzorul de temperatura si umiditate
#include <Keypad.h> //librarie pentru Keypad

#define DHTPIN 17 // initializare pin senzor de temperatura


#define DHTTYPE DHT11 // alegem tipul senzorului
DHT dht(DHTPIN, DHTTYPE);

int calibrationTime = 30; //calibrare senzor PIR


long unsigned int lowIn;
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int pirPin = 10; //initializare pin PIR

int dormitor = 14; //initializare pin lumina dormitor


int bucatarie = 15; //initializare pin lumina bucatarie
int hol = 16; //initializare pin lumina hol

Servo servo_Motor; //initializare servomotor usa principala


Servo servo_Motor2; //initializare servomotor usa garaj

char* password = "111"; //setare parola de acces


int position = 0;
const byte ROWS = 4;
const byte COLS = 4;

39
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte rowPins[ROWS] = { 23, 25, 27, 29 }; //initializare linii keypad


byte colPins[COLS] = { 22, 24,26, 28 }; //initializare coloane keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

const int analogPin = A0; //initializare pin analog pentru senzor foc
const int BuzzerPin =8; //initializare pin buzzer
const int prag = 900; //setare prag incendiu

int trigPin = 19; //initializare TRIG senzor ultrasonic


int echoPin = 20; //initializare ECHO senzor ultrasonic
int pos = 0;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Adresa MAC a modului
Ethernet
byte ip[] = { 192, 168, 100, 10 }; // Adresa IP de unde putem accesa aplicatia
192.168.100.1
byte gateway[] = { 192, 168, 100, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server(80);
String readString;

void setup() {
dht.begin();
Serial.begin(9600);
while (!Serial) {

40
;
}
pinMode(trigPin, OUTPUT); //setare pin TRIG (ultrasonic) ca iesire
pinMode(echoPin, INPUT); //setare pin ECHO (ultrasonic) ca intrare
pinMode(dormitor, OUTPUT); //setare pin dormitor ca iesire
pinMode(bucatarie, OUTPUT); //setare pin bucatarie ca iesire
pinMode(hol, OUTPUT); //setare pin hol ca iesire
pinMode(BuzzerPin, OUTPUT); //setare pin buzzer ca iesire
pinMode(pirPin, INPUT); //setare pin PIR ca intrare
digitalWrite(pirPin, LOW); //pinul PIR pe LOW

servo_Motor.attach(30);
servo_Motor.write(5);
servo_Motor2.attach(11);
servo_Motor2.write(5);
setLocked(true);

Ethernet.begin(mac, ip, gateway, subnet); //Pornim serverul web


server.begin();
Serial.print("Serverul este la adresa: ");
Serial.println(Ethernet.localIP()); //afisam adresa ip a serverului

//Calibrare senzor PIR


for(int i = 0; i < calibrationTime; i++){
delay(1000);
}
delay(50);
}

41
void loop() {
//tastatura
char key = keypad.getKey();
if (key == '*' || key == '#')
{
position = 0;
setLocked(true);
}
if (key == password[position])
{
position ++;
}
if (position == 3)
{
setLocked(false);
}
delay(100);
if (key){
Serial.println(key);
}

delay(1);
//posta
long duration, distance;
digitalWrite(trigPin,HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin, HIGH);
distance =(duration/2)/29.1;

42
delay(10);

int h = dht.readHumidity(); //citim si salvam umiditatea in h


int t = dht.readTemperature(); //citim si salvam temperatura in t
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
client.println("HTTP/1.1 200 OK"); //Trimitem pagina WEB
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<title>Sisteme Domotice</title>");
client.print("<meta http-equiv=\"refresh\" content=\"2\">"); //Setam refresh-ul la 2
secunde
client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-
translucent' />");
client.println("<link rel='stylesheet' type='text/css' href='http://tech5.ro/style.css' />");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<div class='banner'>");
client.println("<h1>Sisteme domotice</h1>");
client.println("<div class='row'>");
client.println("<div class='row_cell bec'>");

43
client.println("<img src='http://www.tech5.ro/images/bec.png'>");
client.println("<p>Dormitor</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?dormitoron\">Pornit</a>");
client.println("<a class='oprit' href=\"/?dormitoroff\"\">Oprit</a>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row_cell bec'>");
client.println("<img src='http://www.tech5.ro/images/bec.png'>");
client.println("<p>Bucatarie</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?bucatarieon\">Pornit</a>");
client.println("<a class='oprit' href=\"/?bucatarieoff\"\">Oprit</a>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row_cell bec'>");
client.println("<img src='http://www.tech5.ro/images/bec.png'>");
client.println("<p>Hol</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?holon\">Pornit</a>");
client.println("<a class='oprit' href=\"/?holoff\"\">Oprit</a>");
client.println("</div>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<div class='row_cell'>");
client.println("<div class='numar'>");
client.println(t);
client.println(" C");
client.println("</div>");

44
client.println("<p>Temperatura</p>");
client.println("</div>");
client.println("<div class='row_cell'>");
client.println("<div class='numar'>");
client.println(h);
client.println(" %");
client.println("</div>");
client.println("<p>Umiditate</p>");
client.println("</div>");
client.println("<div class='row_cell'>");
client.println("<img src='http://www.tech5.ro/images/usa.png'>");
client.println("<p>Usa principala</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?usaon\">Descuie</a>");
client.println("<a class='oprit' href=\"/?usaoff\"\">Incuie</a>");
client.println("</div>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<div class='row_cell_garaj'>");
client.println("<p>Garaj</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?garajon\">Deschide</a>");
client.println("<a class='oprit' href=\"/?garajoff\"\">Inchide</a>");
client.println("</div>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<div class='row_cell_senzori'>");
if((distance<=10))

45
{
client.println("<p>Ai ceva in cutia postala!</p>");
}
else
{
client.println("<p>Nu ai nimic in cutia postala!</p>");
}

client.println("</div>");
client.println("<div class='row_cell_senzori'>");
if(digitalRead(pirPin) == HIGH){
client.println("<p>Este cineva in fata casei!</p>");
if(lockLow){

lockLow = false;
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW){
client.println("<p>Nu este nimeni in fata casei!</p>");
if(takeLowTime){
lowIn = millis();
takeLowTime = false;
}
}
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<p class='tagline'>Proiect realizat de Gorbanescu Madalin</p>");
client.println("</div>");

46
client.println("</div>");
client.println("</BODY>");
client.println("</HTML>");

delay(1);

client.stop();
//Control Arduino folosind butoanele
if (readString.indexOf("?dormitoron") >0){
digitalWrite(dormitor, HIGH);
}
if (readString.indexOf("?dormitoroff") >0){
digitalWrite(dormitor, LOW);
}
if (readString.indexOf("?bucatarieon") >0){
digitalWrite(bucatarie, HIGH);
}
if (readString.indexOf("?bucatarieoff") >0){
digitalWrite(bucatarie, LOW);
}
if (readString.indexOf("?holon") >0){
digitalWrite(hol, HIGH);
}
if (readString.indexOf("?holoff") >0){
digitalWrite(hol, LOW);
}
if (readString.indexOf("?usaon") >0){
servo_Motor.write(90);
}
if (readString.indexOf("?usaoff") >0){

47
servo_Motor.write(5);
}
if (readString.indexOf("?garajon") >0){
servo_Motor2.write(60);
}
if (readString.indexOf("?garajoff") >0){
servo_Motor2.write(5);
}
readString=""; //"curatam" string-ul pentru urmatoarea citire

}
}
}
}
//incendiu
int analogValue = analogRead(analogPin);
Serial.println(analogValue);
if (analogValue > prag) {
digitalWrite(BuzzerPin, LOW);
}
else if (analogValue = prag){
digitalWrite(BuzzerPin, HIGH);
delay(2000);
digitalWrite(BuzzerPin, LOW);
}
else if (analogValue < prag) {
digitalWrite(BuzzerPin, HIGH);
}
}

48
void setLocked(int locked)
{
if (locked)
{
servo_Motor.write(5);
}
else
{
servo_Motor.write(90);
}
}

49
10. Bibliografie

[1] www.arduino.cc
[2] ATmega 2560 Datasheet
[3] Teodor V. Chirla, Lucrari de laborator la automatizarea instalatiilor (2015) Universitatea
Tehnica din Cluj-Napoca
[4] L. Mastacan, Senzori și traductoare – Noțiuni de curs (2005-2006) Universitatea Tehnică
“Gh. Asachi” din Iași, Facultatea de Automatică și Calculatoare
[5] Adrian Dumitriu, Bazele sistemelor mecatronice (2006) Universitatea “Transilvania” din
Brasov
[6] www.wikipedia.com
[7] Catalin Braescu, Limbajul HTML - Introducere (2017) Universitatea Tehnică “Gh.
Asachi” din Iași, Facultatea de Automatică și Calculatoare
[8] Catalin Braescu, Stiluri cascadate – CSS (2017) Universitatea Tehnică “Gh. Asachi” din
Iași, Facultatea de Automatică și Calculatoare
[9] DHT11 Datasheet
[10] Ethernet Shield W5100 Datasheet
[11] Servo SG90 Datasheet
[12] HC-SR04 Datasheet
[13] PIR Motion Sensor Datasheet
[14] Rajeev Piyware, Internet of Things: Ubiquitous Home Control and Monitoring System
Using Android Based Smart Phone (2013)

50