Tătar Antoniu -Adrian [630623]

UNIVERSITATEA “PETRU MAIOR” DIN T ÂRGU -MUREȘ
FACULTATEA DE INGINERIE
SPECIALIZAREA: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ

PROIECT DE DIPLOMĂ
Sistem de automatizare pentru cas a inteligent ă

Îndrumător științific :
Lector dr. Ing. Crainicu Bogdan Absolvent: [anonimizat]
2017

Proiect de diploma Sistem de automatizare pentru casa inteligentă
2
UNIVERSITATEA "PETRU MAIOR" DIN TÎRGU -MUREȘ
FACULTATEA DE INGINERIE
Specializarea: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ Viza facultății

TEMĂ PROIECT DE DIPLOMĂ

Coordonator științific Candidat (a ):
Lector dr. Ing. Crainicu Bogdan Tătar Antoniu -Adrian
Anul absolvirii: 2017
Tema proiectului de diplomă: Sistem de automatizare pentru cas a inteligentă
Problemele principale care vor fi tratate în proiect:
1. Controlul și automatizarea unei locuințe.
– controlul iluminatului
– controlul temperaturii
– controlul accesului fizic
2. Internet of Things.
3. Identificare prin frecventa radio.
3. Microcontroler pe placa integrata – Arduino.
Bibliografie recomandată:
Marius Brânzilă, Cladiri -Inteligente -Curs , 2013, Iași
Eugen -Ștefan Popa, Sisteme electronice pentru automatizarea locui nłelor 2010
Eugen -Ștefan POPA, AUTOMATIZAREA CLĂDIRILOR, Sebes 2011
http://www.aviseco.ro/control -si-automatizari/casa -inteligenta -83.html
https://senzor -miscare.ro/senzori/senzori -de-miscare

Termene obligatorii de consultații: O data pe saptamana.
Locul practicii: Universitatea "Petru Maior", sala L22.
Primit la data de: 03.10.2016.
Termen de predare: 21.06.2017
Semnătura director departament Semnătura conducătorului

Semnătura candidat: [anonimizat]
3

Cuprins
Contents
1. Introducere ………………………….. ………………………….. ………………………….. ………………………….. …. 5
2. Principii ale controlului centralizat și automatizat al unei clădirii ………………………….. ………. 7
2.1. Cum definim o Clădire Inteligentă ? ………………………….. ………………………….. ………………. 7
2.2. Clasifica re a clădirilor inteligente ………………………….. ………………………….. …………………… 7
2.3. Controlul centralizat si automatizat al clădirii ………………………….. ………………………….. … 7
3. Casa inteligentă – aplicații și tehnologii. ………………………….. ………………………….. ……………….. 12
3.1. Aplicații ………………………….. ………………………….. ………………………….. ………………………….. 12
3.1.1. Controlul iluminatului ………………………….. ………………………….. ………………………….. 12
3.1.2. Controlul temperaturii si umidității ………………………….. ………………………….. ………. 12
3.1.3. Control securitate și siguranță ………………………….. ………………………….. ………………. 13
3.1.4. Sisteme media ………………………….. ………………………….. ………………………….. ………….. 14
3.1.5. Eficientizarea energiei ………………………….. ………………………….. ………………………….. . 14
3.1.6. Produse pentru o locuință mai inteligentă ………………………….. ………………………….. 15
3.2. Tehnologii, protocoale și standarde ………………………….. ………………………….. ………………. 16
3.2.1. Elemente de interconectare ………………………….. ………………………….. …………………… 16
3.2.2. Tehnologii , protocoale, standarde ………………………….. ………………………….. …………. 16
4. Soluție de automatizare hardware și software pentru casa inteligentă ………………………….. .. 21
4.1. Descriere generală ………………………….. ………………………….. ………………………….. …………… 21
4.2. Arhitectura soluției ………………………….. ………………………….. ………………………….. …………. 24
4.2.1. Implementarea sistemelor de automatizare ………………………….. ………………………… 24
4.2.1.1. Reglarea automată a temperaturii ………………………….. ………………………….. ….. 24
4.2.1.2. Sistemul de control al iluminatului ………………………….. ………………………….. …. 26
4.2.1.3. Sistemul de control a iluminatului cu detector de mișcare ………………………… 28
4.2.1.4. Sistem de securitate, control acces și acționarea geamurilor …………………….. 28
4.2.1.5. Sistemul de comunicație ………………………….. ………………………….. …………………. 30
4.2.2. Implementarea Montajelor ………………………….. ………………………….. …………………… 31
4.2.2.1. Montaj 1 – Sistem IOT de securitate ………………………….. ………………………….. .. 31
4.2.2.2. Montaj 2 – Sistem IOT garaj ………………………….. ………………………….. …………… 36
4.2.2.3. Montaj 4 – Sistem IOT bucătărie ………………………….. ………………………….. …… 47
4.2.2.4. Montaj 5 – Sistem IOT camera 1 ………………………….. ………………………….. ……. 52
4.2.2.5. Montajul 6 – Sistem IOT exterior ………………………….. ………………………….. ……. 56
4.2.3. Formatul mesajelor trimise ………………………….. ………………………….. …………………… 60
4.2.4. Implementarea Aplicației Server ………………………….. ………………………….. …………… 61

Proiect de diploma Sistem de automatizare pentru casa inteligentă
4
4.2.5. Implementarea bazei de date ………………………….. ………………………….. …………………. 66
4.2.6. Implementare site ………………………….. ………………………….. ………………………….. …….. 74
4.3. Componentele folosite ………………………….. ………………………….. ………………………….. ……… 87
4.3.1. Arduino Mega 2560 ………………………….. ………………………….. ………………………….. ….. 87
4.3.2. Arduino Uno ………………………….. ………………………….. ………………………….. …………….. 89
4.3.3. Arduino Nano ………………………….. ………………………….. ………………………….. …………… 91
4.3.4. WeMos D1 ESP -8266 ………………………….. ………………………….. ………………………….. … 91
4.3.5. Ethernet shield W5100 ………………………….. ………………………….. ………………………….. 93
4.3.6. Modul ethernet ENC28J60 ………………………….. ………………………….. ……………………. 94
4.3.7. RFID MFRC522 ………………………….. ………………………….. ………………………….. ………. 95
4.3.8. LCD 16×2 cu interfață I2C ………………………….. ………………………….. …………………….. 96
4.3.9. 4×4 keypad ………………………….. ………………………….. ………………………….. ……………….. 97
4.3.10. Modul GSM SIM800L ………………………….. ………………………….. ………………………….. . 97
4.3.11. Senzori PIR ………………………….. ………………………….. ………………………….. ……………… 99
4.3.12. Mosfet IRLZ44N ………………………….. ………………………….. ………………………….. …….. 102
4.3.13. Senzor magnetic ușă ………………………….. ………………………….. ………………………….. .. 102
4.3.14. Servo SG90 ………………………….. ………………………….. ………………………….. …………….. 102
4.3.15. Servo MG996R ………………………….. ………………………….. ………………………….. ……….. 103
4.3.16. Senzor ultrasunete ………………………….. ………………………….. ………………………….. ….. 104
4.3.17. Modul receptor infrarosu IR ………………………….. ………………………….. ……………….. 105
4.3.18. Senzor temperatura/umiditate DHT11 ………………………….. ………………………….. …. 106
4.3.19. Punte H – L298N ………………………….. ………………………….. ………………………….. …….. 107
4.3.20. Releu 1 si 2 canale ………………………….. ………………………….. ………………………….. …… 109
4.3.21. Senzor lumina BH1750 ………………………….. ………………………….. ………………………… 110
4.3.22. Senzor gaz/fum MQ -2 ………………………….. ………………………….. ………………………… 111
4.3.23. Conver tor nivel logic 3.3V 5V TTL ………………………….. ………………………….. ………. 112
4.3.24. Senzor presiune atmosferica BMP085 ………………………….. ………………………….. …. 112
4.3.25. Senzor umiditate sol ………………………….. ………………………….. ………………………….. .. 113
4.3.26. Senzor ploaie ………………………….. ………………………….. ………………………….. ………….. 114
5. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ….. 115
6. Anexe ………………………….. ………………………….. ………………………….. ………………………….. ………. 116
6.1. Anexa 1 – Poza cu montajul ………………………….. ………………………….. ………………………… 116
7. Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. . 117

Proiect de diploma Sistem de automatizare pentru casa inteligentă
5

1. Introducere
În zilele noastre o casa inteligent ă este o cas ă automatizat ă fiind ușor de automatizat orice
aparat din locuință , astfel încât să fie controlat prin internet . Cas a inteligentă reprezint ă o
soluție modern ă pentru nevoile de confort, funcționalitate și siguran ță ale omului secolului XXI.
Automatizarea caselor integrează controlul și automatizarea iluminatului, a încălzirii, a
ventilației, al aerului condiționat , a electrocasnicelor , a securității și altele. Sistemele moderne
sunt alcătuite din comutatoare și senzori conectați la un sistem de control care interacționează
cu software -ul de pe telefon mobil, computer , tabletă sau o interfață web.
Tema proiectului de diplomă este proiecta rea unui sistem de automatizare distribuit pe o
infrastructură ethernet pentru o casă inteligentă condusă de microcontrolere și PC în scopul de
a oferi confortul și ușurința de control a dispozitivelor din casă.
Obiectivul principal a l lucrării este de a proiecta o soluție completă de automatizare pentru
un spațiu de locuit tradițional, având la bază o platformă tehnologică de tip Arduino, un set
dedicat de senzori ( senzor de temperatura/umiditate , senzor de prezenta, senzor de mișcare ,
senzor de lumina, etc ) și o infrastructură de comunicație Ethernet, întreaga soluție este
controlat ă centralizat prin intermediul unei aplicații client -server.
Pe lângă scopul principal de a descrie și implementa practic o soluție integrată de
automati zare a unei locuințe, lucrarea reușește să demonstreze avantajele utilizării unor
tehnologii avansate bazate pe microprocesoare, dar care au devenit extrem de atractive și din
perspectiva costurilor scăzute. Astfel, o casă inteligentă nu mai reprezintă azi un deziderat
intangibil din punct de vedere al costului, tot mai multe persoane putând să -și permită asemenea
soluții în propria locuință.
Sistemul de automati zare proiectat integrează următoarele subsisteme:
 Subsistem de reglare automat ă a temperaturii ;
 Subsistem de control al iluminatului ;
 Subs istemul de control a iluminatului cu detector de mișcare ;
 Subs istem de acționare a geamurilor automat ;
 Subs istem de securitate, control acces și acționarea geamurilor ;
 Subsistemul de comunicație ;

Proiect de diploma Sistem de automatizare pentru casa inteligentă
6

Structura lucrării
Lucrarea cu titlul „ Sistem de automatizare pentru casa inteligent ă „ cuprinde în principal
studiul și sistemul de control automatizat al casei. Proiectul este structurat în 5 capitole al căror
conținut poate fi sinteti zat după cum urmează.
Primul capitol este cel de introducere în care se enumeră mai exact tema proiectului .
Capitolul doi si trei tratează aspecte generale despre casa inteligentă, principalele tehnologii
și aplicații actuale.
Capitolul patru prezintă so luția de automatizare implementată, partea hardware, software,
arhitectura soluției , prezentarea montajelor, implementarea mesajelor de comunicație și
interfațarea cu utilizatorul.
Capitolul cinci prezintă principalele concluzii rezultate după implementar ea acestui proiect.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
7

2. Principii ale controlului centralizat și automatizat al unei clădirii
2.1. Cum definim o Clădire Inteligentă ?
Într-o clădire tradițională , aparatele electrocasnice și sistemele individuale sunt controlate
independent, nu se afectează reciproc. Astăzi când o amenii petrec majoritatea timpului în
interior clădirea inteligentă devine o necesitate .
O clădire inteligent ă este o clădire automatizata care oferă facilitați sporite de confort ,
securitate și consumuri energetice scăzute . Conceptul actual de clădire inteligent ă este
rezultatul unei evoluții continue în direcția realizării unor obiective cum ar fi:
– mai multa siguranță,
– mai mult confort,
– o mai bun ă administrare a resurselor unei clădiri.

2.2. Clasificare a clădirilor inteligente [2]
A Aldrich, in 2003, clasifică „casele inteligente“ în cinci categorii după funcționalitate
 Case care c onțin obiecte inteligente – case cu obiecte și aplicații inteligente care sunt
capabile să acționeze inteligent .
 Case care incorporează obiecte inteligente capabile să comunice .
 Case conectate – casele care au în alcătuire rețele interne și externe pri n care este
permisă accesarea și comunicarea .
 Case capabile să învețe (Learning homes) – structura de activitate din spațiul locuinței
este înregistrată și odată cu acumularea de informații , casa fiind capabilă să anticipeze
și să răspundă cerințelor utilizatorului .
 Case atente – casele capabile să înregistreze poziția utilizatorului și a obiectelor
manipulate de acesta, informația fiind utilizată în scopul anticipării nevoilor .

2.3. Controlul centralizat si automatizat al clădirii
Automatizarea clădirilor este controlul automat centralizat al sistemelor de încălzire,
ventilare și climatizare, al sistemelor de iluminat etc. prin intermediul unui sistem de
management al clădirii sau al unui sistem de automatizare a clădirilor . (BAS – Building
automation system). [6]
Obiectivele automatizării clădirilor sunt:
 îmbunătățirea confortului ocupanților,

Proiect de diploma Sistem de automatizare pentru casa inteligentă
8
 funcționarea eficientă a sistemelor de construcție,
 reducerea consumului de energie și a costurilor de exploatare, precum și îmbunătățirea
ciclului de viață al utilităților.
 securitatea bunurilor si a oamenilor
Sistemul de management al clădirilor BMS ( Bulding management system ) , cunoscut și
sub denumirea de sistem de automatizare a clădirii (BAS ) , este un sistem de control electronic
ce monitorizează și controlează sistemele mecanice și electrice ale clădirii , cum ar fi sistemele
de ventilație, sistemul de iluminat , de ele ctroalimentare , detecție și semnalizare incendiu și
sistemele de securitate . [ 7]
Un sistem de management al clădirii poate monitoriza și controla următoarele subsisteme:
• Subsistemul de climatizare și încălzire.
• Subsistemul de iluminatul interior și exterior.
• Subsistemul de alimentare cu energie electrica, gaz sau apa.
• Subsistemul diverse automatizări ale clădirii, cum ar fi deschiderea ferestrelor, a trapelor,
a ușilor etc.
• Subsistemul de securitate și control acces.
• Subsistemul de detecție și alarmare în caz de incendiu.
• Subsistemul de antiefracție și supraveghere video.
• Subsistemul de sonorizare și adresare publică.
• Subsistemul de surse neîntreruptibile și de generatoare.
O clădire controlată de un sistem de management al clădi rii este adesea menționată ca o
"clădire inteligentă" , „Smart Building „ sau dacă este o reședință o "casă inteligentă",
„Smart home” .
Beneficiile dotării unei clădiri cu un siste m de management al clădirii : [7 ]
 Posibilitatea controlului individual al camerelor .
 Creșterea productivității personalului .
 Eficientizarea consumurilor energetice în condiții de confort .
 Grad ridicat de securitate al clădirii prin utilizarea unor sisteme avansate de control ale
accesului, detectare și alarmar e la incendiu și efracție, corelarea între sistemul de
evacuare al fumului și sistemul climatizare al clădirii, etc.
 Sisteme avansate de comunicații – Internet, Intranet, poșta electronică, TV prin cablu
cu ci rcuit închis, videofonie, etc.:
 Managementul c lădirii printr -un post central și mai multe posturi locale de colectare,
procesare și transmitere a datelor.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
9
Funcțiunile principale ale sistemului de management al clădirii :
 Controlul permanent oferă date legate de performanțele sistemelor .
 Monitorizea ză în timp real și detectează erori sau deficiențe în sistemele supravegheate
 Optimizează parametri sistemului .
 Raportează în timp real și gestionează energia și confortul ocupanților .

Structura hardware a unui sistem de management al clădirii es te prezentată in Fig .2.1

Fig .2.1 Structura sistemului de management al clădirii [8]

Proiect de diploma Sistem de automatizare pentru casa inteligentă
10

Fig .2.2 Rețea de automatizare într -o clădire inteligentă [6] [1]

Rețeaua de automatizare a unei cădiri inteligente este o interconexiune de rețele hardware
și software centralizate care monitorizează și controlează mediul în spații comerciale,
industriale , clădiri de birouri și locuințe Fig .2.2
„Sistemul de aut omatizare a clădirilor (BAS – Building automation system ) este un sistem
de control distribuit – rețeaua de calculatoare si dispozitive electronice destinate să monitorizeze
și să controleze sistemele mecanice, de securitate, incendiu și inundații, ilu minatul (în special
iluminatul de urgență), sistemele de ventilație ș i umiditate într -o clădire”. [6 ]
Automatizarea clădirii este termenul care descrie funcționalitatea oferită de o rețea inteligentă,
computerizată de dispozitive electronice, concepută p entru a monitoriza și controla sistemele
mecanice și electrice dintr -o clădire.
Funcționalitatea de bază a sistemul de management al clădirii constă în menținerea
climatului clădirii între anumiți parametri, asigurarea iluminatului pe baza unui program de
ocupare și monitorizarea performanțelor sistemului ca și a defecțiunilor dispozitivelor.
Rețelele de comunicații utilizate pentru automatizarea unei clădiri sunt formate din magistrale
de date primare si secundare care conectează controlere de nivel î nalt cu controlere de nivel
mai scăzut, dispozitive de intrare/ieșire s au interfața cu utilizatorul .[6 ]

Proiect de diploma Sistem de automatizare pentru casa inteligentă
11
O clădire controlată de un sistemul de management al clădirilor este adesea menționată ca o
"clădire inteligentă" sau (dacă este o reședință) o "cas ă inteligentă"
Automatizarea locuinței este cuprinsă în domeniul mai larg al automatizării clădirilor .
Cuprinde multe tehnici utilizate la automatizarea clădirilor ( controlul iluminării și climatizării
, controlul închizătorilor ușilor și ferestrel or, securitatea și sistemele de supraveghere ) dar în
plus poate include și controlul sistemelor multimedia , automatizarea procedeelor de udare a
plantelor sau de hrănire a animalelor de companie , scenarii pe ntru mese festive sau petreceri .[3]
Benefic iile pe care o casa inteligenta le poate aduce sunt :
 Reducerea si controlul consumurilor energetice .
 Confort sporit.
 Întreținere simpla.
 Reducerea timpului de reacție în caz de defect.
 Reducerea timpului de oprire neplanificata a echipamentelor.
 Sistem de monitorizare parametri in timp real .
 Posibilitate de vizualizare și control de la distanța.
 Flexibilitate în dezvoltarea ulterioară a sistemului

Proiect de diploma Sistem de automatizare pentru casa inteligentă
12

3. Casa inteligent ă – aplicații și tehnologii.
O locuință inteligentă funcționează printr -un sistem în esență simplu . Echipamentele
electrice sunt dotate cu automatizări și senzori . Automatizările permit să se programeze
activitatea echipamentelor, iar senzorii monitorizează și informează despre re spectarea
cerințelor impuse .
3.1. Aplicații
Sistemul de automatizare casa inteligentă cuprinde mai multe aplicații la un stil de viață
îmbunătățit , deservind nevoile fundamentale ale omului confort , funcționalitate și siguranță.
3.1.1. Controlul iluminatului [4]
Iluminatul a fost una dintre primele și cele mai simple aplicații ale automatizărilor.
Automatizarea se poate realiza prin înlocuirea întrerupătoarelor cu un sistem de control al
iluminatului , capabil să controleze fie un circuit de lumini , o camera întreagă sau toată casa.
Cu un sistem de control al iluminatului se poate să se aprindă / stingă toate luminile camerei;
se poate modifica intensitatea luminoasă și nivelul de luminozitate ; se pot stinge toate luminile
din casa inteligentă .
Pentru automatizarea iluminatului se folosesc senzorii de ocupare a spațiului : senzori PIR
(Passive InfraRed ) , senzori cu ultrasonice ( semnal Doppler ) , senzori crepusculari .
Pentru activarea / dezactivarea programată a iluminatului de la 5 minute – pană la 12 ore se
folosește controlerul de timp .
Pentru controlul personal al spațiilor de lucru , utilizatorii pot alege telecomenzi cu
comutator / dimmer pentru iluminat ( pornit /oprit ) sau pentru modificarea intensității
luminoase . Controlerul dimmer este util pentru controlul luminozității în concordanță cu
tipul activității desfășurate.
3.1.2. Controlul temperaturii si umidității [5]
În locuințe pentru confort trebuie ca temperatura interioară să fie 18° – 20 ° Celsius iar
umiditatea relativă a aerulu i între 60% și 80% . Pentru menținerea acestor parametri spațiile
trebuie încălzite , răcite , ventilate sau climatizate. Automatizarea acestui proces se poate face
cu ajutorul senzorilor, actuatorilor , echipamentelor de control și cu ajutorul scen ariilor
stabilite de către utilizatori în programul unităților centrale de control.
Iarna controlul temperaturii se face prin centralele termice ce produc agentul termic .
Pentru controlul temperaturii degajate , se montează un termostat în fiecare cam eră .

Proiect de diploma Sistem de automatizare pentru casa inteligentă
13
Termostatele în funcție de temperatura măsurată au capacitatea de a închide sau deschide
circuitul pentru a permite agentului termic să încălzească mai mult sau mai puțin radiatorul.
Reglarea termostatelor în funcție de temperaturile citite și fix area valorilor minime și maxime
se realizează cu ajutorul controlerului instalat în rețea . În funcție de datele culese se pot crea
diferite scenarii pentru menținerea temperaturii in limitele confortului .
Vara controlul temperaturii interioare se poate realiza printr -o ventilare naturală , o
ventilare mecanică sau prin climatizare. Senzorii din rețea transmit unității centrale informații
despre temperatura în anumite zone ale clădirii. În același timp senzorii de intensitate luminoasa
pot detecta lumina puternică a soarelui ce intra pe fereastră , iar senzorii de stare (închis /
deschis) a ferestrelor pot furniza informații despre poziția acestora.. Controlerul principal poate
comanda tragerea jaluzelelor, închiderea ferestrelor și chiar pornirea unității de climatizare . În
funcție de datele culese se pot crea diferite scenarii pentru menținerea temperaturii în limitele
confortului .
3.1.3. Control securitate și siguranță [4]
Detecție antiefracție
Detecția și notificarea imediată asupra unui intrus nedorit este importantă pentru securitate.
Prin sistemele automatizate antiefracție se urmărește protecția persoanelor și a bunurilor
materiale . Cu ajutorul detectorilor de mișcare , a detectorilor de geam spart , a contactelor
magnetice se pot gestiona scenarii pentru măsuri antiefracție .
Detecție incendiu și avertizare
Detecția și avertizarea incendiilor pentru limitarea pagubelor materiale sau umane se face
printr -un sistem detecție incendi u ( alarma incendiu ) . În cazul locuințelor este suficientă
conectarea detectorilor de fum și temperatură la centrala de alarmă folosită împotriva
antiefracție . Detectorii de fum pot fi : detectori de fum optici , detectori de fum tip barieră în
infraroșu , detectori de fum cu ionizare , detectori de fum cu spot reflexiv in infraroșu ,
detectori de fum prin aspirație .
Autorizări pentru acces
Pentru protejarea persoanelor și a bunurilor locuințele se pot dota cu sisteme automatizate
de con trol acces . Sistemele pot fi sisteme control acces cu card , sisteme control acces cu
tastatura . Prin carduri și / sau coduri unice alocate se poate permite accesul de la distanță
doar în anumite zone ale rezidenței . Cardurile de acces pot fi nelim itate și se pot programa
personalizat in funcție de persoana care le utilizează , respectiv de drepturile de acces stabilite.
Prin integrarea sistemului de acces cu un sistem programat se pot face statistici sau rapoarte pe
diferite zone de acces sau pe c ardurile / codurile unice.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
14
Controlul porților și ușilor automate
Cu sistemul de automatizare a porților și ușilor de la garaj se poate obține rapiditate ,
confort și siguranța , datorita deschiderii automate realizate printr -o simpla apăsare a butonului
de la telecomandă sau din smartphone . De la distanță se poate comanda deschiderea automată
a porților pietonale , a celor de curte sau a ușilor de garaj. Sistemul poate include automatizări
de porți batante, glisante și uși de garaje , acționate de la di stanță prin intermediul controlului
prin întrerupătoare, telecomenzi, prin calculator sau prin telefon.
Sisteme de interfonie și videofonie
Pentru securitatea și siguranța proprietății respectiv accesul controlat în imobile se
folosesc sistemele de i nterfonie / videointerfonie . Rolul unui sistem de interfon și
videointerfon este să se afle identitatea vizitatorului , să se comunice cu persoana aflată in afara
proprietății înainte ca aceasta sa aibă acces . Sistemul de videointerfon dă posibilitatea s ă se
identifice persoana care solicita accesul .
Toate sistemele (efracție, incendiu, supraveghere, acces) pot fi controlate prin aceeași interfață
de pe un echipament instalat în casă sau prin internet .
3.1.4. Sisteme media
Sistemul audio dă posibilitatea să se asculte muzica preferată în orice încăpere a casei fără
să fie nevoie să fie folosite mai multe echipamente audio. Produsele pentru sonorizare sunt
foarte diversificate : instalații de sonorizare, ampl ificare, proiectoare de sunet, boxe ,
microfoane, goa rne, difuzoare, amplificatoare, proiectoare, sisteme video . Anumite zone din
casă pot fi setate automat să pornească muzica în clipa în care este simțită prezentă uman ă.
Utilitatea sistemelor de sonorizare este evidentă. Sunt integrate sisteme de sonor izare de ultimă
generație , personalizabile in funcție de cerințele fiecărui client sau de tipul și dimensiunile
fiecărei încăperi .
Apariția ecranelor de mari dimensiuni: plasme, LCD -uri, proiectoare și ecrane de proiecție
speciale pentru sisteme Home Cin ema , a realizat visul de a putea vedea imagini impresionante
acasă .
3.1.5. Eficientizarea energiei [4]
Utilizarea sistemelor inteligente în casă pot îmbunătăți mediul și pot reduce consumul de
energie . Iluminatul și climatizarea sunt principali consumatori e nergetici ai locuinței. Prin
automatizarea iluminatului și a climatizării se poate reduce consumul de energie . Prin
realizarea unor scenarii privind iluminatul și încălzirea doar a spațiilor de care este nevoie se
poate reduce consumul de energie . Sist emul de automatizare permite un control eficient al
energiei în casă . Astfel se poate regla temperatura în fiecare cameră , se poate închide automat

Proiect de diploma Sistem de automatizare pentru casa inteligentă
15
sistemul de încălzire/răcire când se deschid geamurile pentru aerisire , se poate închide sau
deschide lumina exterioară în funcție de intensitatea luminoasă naturală și de prezentă, se poate
verifica consumul pentru diverși consumatori, se poate întrerupe alimentarea cu energie
electrică în anumite camere, se poate reduce nivelul de iluminat după o an umită perioadă de
timp .
Controlul automatizat al iluminatului asigură eficientizarea consumului energetic prin
controlul deschiderii/închiderii iluminatului în diverse spații sau al nivelului de luminozitate
unde și când este nevoie . Pierderile energe tice pot fi eliminate utilizând controlul automatizat
al iluminatului , care sa permită utilizarea luminii artificiale la un nivel de luminozitate potrivit
, pentru spațiul potrivit , la timpul potrivit .

3.1.6. Produse pentru o locuință mai inteligent ă
În momentul de fa ță cele mai întâlnite tipuri de dispozitive inteligente sunt:
• Întrerupătoare – controlează de obicei luminile din casă, însă nu se limitează doar la corpuri
de iluminat .
• Prize – oferă statistici privind consumul de curent și pot porni/op ri automat dispozitivele
conectate la ele în funcție de parametri setați de utilizator .
• Becuri – pot fi oprite/pornite manual de la distanță sau automat în funcție de evenimente ,
se poate controla intensitatea luminoasă și culoarea (becuri LED ) .
• Securitate – de la camere video de securitate pană la yale de control al accesului în locuință .
• Senzori – măsoară temperatura , umiditatea , detectează fumul, nivelul de lumină exterioară
etc. , și sunt folosiți pentru activarea/dezactivarea altor dispoz itive inteligente în funcție de
valorile raportate de către senzori unității centrale .
• Termostate – sunt printre primele dispozitive inteligente, în funcție de senzorii de
temperatură din casă controlează centralele termice, caloriferele și aparatele de climatizare
pentru a încălzi/răci locuința la valori confortabile pentru locatari.
• Unități centrale – acestea sunt cele mai avansate componente ale unei case inteligente,
capabile să controleze toate dispozitivele din casă dintr -un singur loc, în funcți e de reguli
prestabilite dar cu opțiuni de modificare a acestor reguli de către utilizator .

Proiect de diploma Sistem de automatizare pentru casa inteligentă
16

3.2. Tehnologii , protocoale și standarde
Pentru automatizare se folosesc diferite protocoale sau platforme de comunicații atât pentru
rețea cât și pentru a gestiona și a controla dispozitivele electrice dintr -o instalație.
3.2.1. Elemente de interconectare [3]
Interconectarea elementelor pentru automatizarea locuințelor se poate face în trei moduri:
 Interconectare prin cabluri , cele mai importante sunt :
– Cabluri xDSL
– Cablu de fibră optică .
– Cablu torsadat și coaxial
– Cabluri electrice (INSTEON, X10)
 Wireless:
• Prin radio (INSTEON, Wi -Fi ,Bluetooth, GPRS ; ZigBee ; Z -Wave ; DECT ;
ONE -NET ; EnOcean )
• Infraroșu
 Mixt: cablu și wireless:
• INSTEON
• wireless.
3.2.2. Tehnologii , p rotocoale , standarde [3]
Tehnologiile standardizate actuale includ INSTEON , X10, KNX (standard) , LonTalk ,
C-Bus, Universal powerline bus (UPB) , ZigBee si Z-Wave etc. , care permit controlul celor
mai multe dintre aplicații.
Insteon este o topologie de rețea casnică duală , care poate utiliza atât cablurile de
alimentare, cât și comunicarea pe frecvențe radio. Insteon reprezinta o tehnologie de
automatizare a casei care permite controlul switch -urilor de lumini, termostate, senzori d e
scurgere, telecomenzi, senzori de mișcare, și alte dispozitive acționate prin intermediul liniilor
electrice, de frecvență radio de comunicații (RF), sau ambele.Tehnologia Insteon suportă chiar
sistemele de automatizare mai simple pentru acasă .
X10 a fost dezvoltat pentru comunicarea între dispozitivele utilizate pentru automatizarea
locuinței , este cel mai vechi standard din domeniu .
KNX este un standard european pentru protocoale de comunicare în rețea , pentru clădiri
inteligente . KNX este proiec tat pentru a fi independent de orice platformă hardware specială.
Un dispozitiv de rețea KNX poate fi controlat de un microcontroler de 8 biți conectat la un PC,

Proiect de diploma Sistem de automatizare pentru casa inteligentă
17
Toate dispozitivele în cazul KNX sunt conectate împreună printr -un autobus cu două fire pentru
schimb de date. Senzorii culeg date și le trimit pe bus. Actuatori primesc datele, care sunt apoi
convertite în acțiuni.
LonTalk este un protocol creat de Echelon Corporation pentru dispozitive de rețea.
C-Bus este un protocol de comunicații pentru auto matizarea locuințelor și clădirilor , în
care se pot utiliza cabluri Cat -5
UPB se bazează pe standardul X10 , oferind viteze mai mari de transfer și o exactitate mai
ridicată.
ZigBee este un standard de comunicație ieftin , care funcționează la puteri și c are
funcționează exclusiv wireless .
Z-Wave este un protocol de comunicații wireless .
Tehnologia Z -Wave este momentan cea mai eficienta soluție în domeniul automatizării
locuințelor inteligente . Aceasta este utilizată la : senzori , termostate, lumini , alarme, aer
condiționat, sisteme audio -video, uși și ferestre motorizate. Z -Wave a fost dezvoltat de Zensys
Inc. o companie cu sediul în Danemarca și a fost lansat în 2004. Z -Wave din Europa a fost
producătorul german Merten (acum parte din grupul Schne ider Electric). În prezent zeci de
producători fac produse compatibile cu acest protocol Z -Wave, mai ales în zona de control a
luminii.
Fiecare dispozitiv Z -Wave din rețea primește sau trimite comenzi, poate să monitorizeze
sau să controleze funcționarea aparatelor din casă, totul fiind centralizat în unitatea centrală al
automatizării casei.Principalul avantaj al sistemelor Z -Wave este caracterul modular .Primul
pas este unitatea centrala de control, care stă la baza oricărui sistem. Pentru început se pot asocia
doar câteva dispozitive, iar ulterior se poate completa. Noile dispozitive vor comunica intre ele
iar sistemul va lua forma unei rețele .
Z-Wave este o tehnologie de rețea MESH, unde fiecare dispozitiv din rețea poate trimite
sau primi comenzi. Dispozitivele pot de asemenea să controleze și să monitorizeze funcționarea
anumitor module, informând constant unitatea centrala asupra statusului lor. Dispozitivele
folosite în sistem se bazează pe tehnologia Z -Wave, datorită căreia pot funcționa indivi dual sau
în grupuri, comunicând unul cu altul, oferind opțiuni nelimitate de management al automatizării
casei. Fiecare modul a trecut prin niște probe în urma cărora a primit un certificat de
compatibilitate. În mod curent, 250 de companii din întreaga lu me au acces la tehnologia Z –
Wave. Sistemele care folosesc tehnologia Z -Wave sunt cele mai importante și cele mai flexibile
sisteme de pe piață.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
18
Cu ajutorul acestui standard este posibilă interconectarea tuturor funcțiilor de iluminat, de
încălzire, de răci re, de securitate, etc. cu scopul de a oferii utilizatorului mai multă siguranță și
mai mult confort.
În Europa, Z -wave operează pe o frecvență de 868.42 MHz, astfel modulele nu suferă de
interferență. Frecvența de funcționare este aleasă astfel încât ari a de acoperire să fie optimă iar
timpul redus de transmitere a unui modul asigură o diminuare substanțială a energiei consumate
și a radiațiilor electromagnetice emise. Modulele Z -Wave folosesc tipologia de rețea denumită
MESH ce prezintă redundanța maximă , în care device -urile acționează ca repetoare astfel încât
informațiile ce sunt transmise de la unitatea centrală la modulul țină și invers (comunicare
bidirecțională) pot fi transmise pe mai multe căi. Avantajul unei astfel de rețele este dat de
faptul c ă modulele pot comunica direct între ele și în plus informațiile pot ajunge la un modul
țintă aflat la o distanță mai mare prin intermediul a mai multor module. Astfel cu cât sunt mai
multe module în rețea, aria de acoperire a rețelei devine mai mare și rețeaua devine mai robustă.
Raza de acțiune a unui modul Z -Wave este de 100 de metri în câmp deschis, iar în interior
aceasta se reduce depinzând foarte mult de materialele de construcție.
Avan tajele tehnologiei Z – Wave [ 5 ]
 Este un standard european de automatizare a caselor .
 Tehnologia radio Z – Wave este cea mai dezvoltată și utilizată.
 Toate dispozitivele ce operează în protocolul Z – Wave sunt compatibile între ele .
 Utilizarea protocolului radio permite setarea sistemul , fără a schimba cablajul existent .
 Principalii parametri ai sistemului se pot schimba de către utilizator .
 Sistemul se poate completa cu dispozitive noi cu ușurință .
 Protocol Z – Wave utilizează frecvența de 868 MHz .
 Tehnologia Z -Wave este simplă , orice produs co ntrolat prin tehnologie Z -Wave poate fi
ușor de adăugat la orice sistem .
 Cu tehnologia Z -Wave se poate majora sau micșora numărul dispozitivelor controlate.
 Sistemul de ”casă inteligentă” controlat prin Z -Wave este accesibil și poate fi instalat ușor.
 Sistemul de ”casa inteligentă” controlat prin Z -Wave monitorizează dispozitivele
controlate și trimite alarme proprietarului .
 Tehnologia Z -Wave este compatibilă nu este legată de un anumit producător .
 Tehnologia Z -Wave poate îmbunătăți foarte mult viaț a persoanelor care apelează la această
tehnologie .
 Tehnologia Z -Wave poate ajuta la micșorarea costurilor pentru energie .
 Tehnologia Z -Wave monitorizează casa și transmite informații proprietarului

Proiect de diploma Sistem de automatizare pentru casa inteligentă
19
O comparație între câteva tehologii standardizate fol osite în prezent este indicată în
Tabelul 1 [3]
Tabelul 1 Comparație între tehnologii standardizate [ 3]

Protocoale si standarde industriale [1]
1 – ASHRAE (American Society of Heating, Refrigerating and Air Conditioning Engineers)
organizație internațională pentru cei implicați în încălziri, ventilare, condiționarea aerului sau
frig
2 – BACnet este un protocol de comunicații de rețea pentru siste mele de control si automatizare
a clădirilor,
3 – C-Bus este un protocol de automatizare a clădirii

Proiect de diploma Sistem de automatizare pentru casa inteligentă
20
4 – DALI (Digital Addressable Lighting Interface) este un protocol digital pentru controlul
iluminării în clădiri.
5 – DSI (Digital Signal Interface) este un protocol pentru controlul iluminării clădirilor.
6 – Dynet este produsul companiei australiene Dynalite.
7 – Energy Star este de program creat pentru a promova produse de consum eficiente energetic.
8 – KNX, un s istem de control al clădirii și locuinței
9 – LonTalk este un protocol creat de Echelon Corporation pentru dispozitive de rețea.
10 – ZigBee este un standard de comunicații wireless de rază scurtă si mică putere orientat către
automatizarea clădirilor.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
21
4. Soluție de automatizare hardware și software pentru casa inteligent ă
4.1. Descriere generală
Automatizarea este implementată pe 6 m ontaje . Toate aceste montaje comunic ă cu un server
central (PC) pe o infrastructură de comunicație Ethernet, serverul gestionând î ntregul sistem.
Schema bloc g enerală este prezentată în Fig.4.1.

Fig.4.1. Schema bloc generală

Fig.4.2. Macheta realizată

Proiect de diploma Sistem de automatizare pentru casa inteligentă
22

Cele 6 Montaje sunt gestionate de microcontrolere, iar aplicația server rulează pe o
platforma Windows (PC -ul central). Fiecare bloc din Figura 4.1 are un rol bine stabilit și
comunică bidirecțional doar cu serverul. Aplicația server constituie punctul central al
procesului de automatizare.
Proiectarea machetei Fig .4.2 a fost obținută cu ajutorul software -ului Catia și apoi a fost
executată după desen în forma finală din lemn, plastic si metal . Catia este un pachet de
programe de modelare geometrică tridimensională ( 3D ) produs de firma Dassault System din
Statele Unite și este destinat în principal automatizării proiectării mecanice . Lucrează sub
mediul Windows și beneficiază de interfața grafică a acestuia .
Locația elementelor de automatizare este prezentată în Fig.4.3.

Fig.4.3. Planul casei cu poziționarea elementelor

Proiect de diploma Sistem de automatizare pentru casa inteligentă
23
Schema prezint ă planul casei cu localizarea ele mentelor de automatizare .
Blocurile de automatizare, montajele și senzorii sunt reprezentate de pătrate sau cercuri și
arată poziționarea în spațiul casei. Ca denumire a elementelor s-a ales o abordare mai
„neștiințifică” și s-a denumit elementele după numele lor pentru o identificare mai ușoară .
Legenda este prezentată în tabelul 2.
Tabelul 2 Legenda elementelor de automatizare
Simbol Marcaj Semnificație Simbol Marcaj Semnificație
– camera 1
– Led
1,2,3,4,5,6,7,8,9 Led
– camera 2
– but 1,3,5,7,9 Buton
– camera 3
– but 2,4,6,8,10 Buton
hol1 – holul 1 Temp
1,2,3,4,5,6 Senzor de
temperatura
hol2 – holul 2 lum 1; 2 Senzor lumina
buc – bucătărie senz
geam1,2,3,4 Senzor magnetic
Montag 1 senz ușă 1,2,3,5 Senzor magnetic
Montaj 2 senz gaz Senzor gaz
Montaj 3 senz ploaie Senzor ploaie
Montaj 4 sens dist Senzor distanta
Montaj 5 senz umid Senzor umiditate
Montaj 6 pres_atm Senzor presiune
atmosferica
LCD1 Afișaj PIR 1,2,3 Detector de
mișcare
LCD2 Afișaj Rez 1,2,3,4 Rezistenta
SIM Modul GSM Servo 1,2,3,4,5 Motor servo
RFID Cititor de card motor 1 Motor
Keypad Tastatura IR Receptor infraroșu

Proiect de diploma Sistem de automatizare pentru casa inteligentă
24
4.2. Arhitectura soluției
4.2.1. Implementarea sistemelor de automatizare
În proiectarea sistemului de automatizare s -au implementat mai multe subsisteme de
automatizare și reglare care se regăsesc în montaje .
4.2.1.1. Reglarea automat ă a temperaturii

Prima funcție implementat ă este un termostat clasic care reglează temperatura după
referință folosind reglarea bipozițională. La fiecare 2 secunde se c itește temperatura de la
senzorul de temperatura ( DHT11 ), compar ă temperatura și acționează releul dac ă este o
diferența între te mperatura citit ă și referință. În cazul unui defect a senzorul de temperatur ă, nu
returnează nici o valoare și se trimite o alarm ă la server și se oprește sistemul de încălzire local.
Pentru interfațarea cu senzorul de temperatura s -a folosit librăria DHT si DHT_U.
if (millis() > data.val.lastCheckTime && data.val.stare_incalzire) //2sec
{
//termostat
sensors_event_t event;
DHT.temperature() .getEvent( &event);

if (isnan(event .temperature))
{
data.val.rateu++;

Serial.print(F("temp:"));
Serial.println(event.temperature);

if (data.val.rateu >= 3)
{
data.val.stare_incalzire = false;
Serial.println(F("Senzor temperatura x defect" ));
char textToSend[] = "Temp2:def!" ;
ether.sendUdp(textToSend , sizeof(textToSend) – 1, localPort ,
destIP, destPort );
data.val.rateu = 0;
}
}
else
{
if ((byte)event.temperature >= data.val.set_temp &&
data.val.stare_releu == true)
{
data.val.stare_releu = false;
digitalWrite (RELEU_PIN , RELEU_OFF);
Serial.println(F("Releu OFF" ));
}
else if ((byte)event.temperature <= data.val.set_temp –
toleranta_temp && data.val.stare_releu == false)
{
data.val.stare_releu = true;
digitalWrite (RELEU_PIN , RELEU_ON);
Serial.println(F("Releu ON" ));
}

Proiect de diploma Sistem de automatizare pentru casa inteligentă
25

Serial.print(F("Temp:"));
Serial.println(event.temperature);

}
data.val.lastCheckTime = millis() + TERMOSTAT_INTERVAL;
}

//trimite date la server
if ( millis() > data.val.lastUDPSendTime ) //5 minute
{

//temperatura – umiditate
sensors_event_t event;

DHT.humidity() .getEvent( &event);
if (isnan(event .relative_humidity))str .concat("Hum2:er;" );
else
{
str.concat("Hum2:");
str.concat((byte)event.relative_humidity);
str.concat(";");
}
DHT.temperature() .getEvent( &event);
if (isnan(event .temperature))str .concat("Temp2:er;" );
else
{
str.concat("Temp2:" );
str.concat((byte)event.temperature);
str.concat(";");
}

Serial.println(str);
char textToSend[str .length() + 1];
str.toCharArray (textToSend , str.length() + 1);
ether.sendUdp(textToSend , sizeof(textToSend) – 1, localPort , destIP,
destPort );

data.val.lastUDPSendTime = millis() + UDP_SEND_INTERVAL; //1 min

} //trimitere date

Temperatura și umiditatea se trimit periodic către server la fiecare 5 minute.
Temperatura setat ă se cere de la server și serverul trimite temperatura la modificarea acesteia
altfel se setează cea implicita ( 25 grade ).

if (!data.val.temp_primit )
{
char textToSend[] = "CereTempSet?" ;
ether.sendUdp(textToSend , sizeof(textToSend) – 1, localPort , destIP,
destPort );
}

if (strstr(packetBuffer , "TempSet:" ) != NULL)
{
char *pch = strchr(packetBuffer , ':');
pch = pch + 1;

Proiect de diploma Sistem de automatizare pentru casa inteligentă
26
data.val.set_temp = atoi(pch);
Serial.print(F("S-a setat temperatura! " ));
Serial.println(data.val.set_temp);
data.val.temp_primit = true;
}

Daca nu este necesar sistemul de încălzire nu va porni . Se cere starea încălzirii de
la server în caz contrar se setează cea implicita ( OFF ).

if (!data.val.incalzire_primit)
{
char textToSend[] = "CereSisInc?" ;
ether.sendUdp(textToSend , sizeof(textToSend) – 1, localPort , destIP,
destPort);
}

if (strcmp(packetBuffer , "SisInc:1" ) == 0)
{
Serial.println(F("Sistemul de incalzire ON" ));
data.val.stare_incalzire = true;
data.val.incalzire_primit = true;
}
else if (strcmp(packetBuffer , "SisInc:0" ) == 0)
{
Serial.println(F("Sistemul de incalzire OFF" ));
data.val.stare_incalzire = false;
data.val.incalzire_primit = true;
}

4.2.1.2. Sistemul de control al iluminatului

Iluminarea casei este făcută în întregime cu benzi de leduri. Procentul de luminozitate este
reglat folosind un tranzistor cu efect de câmp MOSFET care este comandat printr -un semnal
PWM generat de microcontroler.
Daca se apasă butonul se aprinde lumina. Starea luminii on/off este trimis ă către server la
schimbarea acesteia. Mai jos este un exemplu de cod de aprindere a luminii de la buton:
//////apăsare buton + setare lumina////////////////
data.val.stare_buton_L = digitalRead (BUTON_L_PIN);

if (data.val.stare_buton_L == LOW && data.val.stare_prev_buton_L == HIGH &&
millis() > data.val.t_buton_L && data.val.sistem_securitate != 1)
{
Serial.println(F("Buton L Apasat!" ));
data.val.lumina_aprinsa = !data.val.lumina_aprinsa;
if (data.val.lumina_aprinsa)
{
byte light = (byte)(data.val.procent_lumina / 100. * 255);
analogWrite ( LED_PIN , light );
char textToSend[] = "Lum2:1;" ;
send_UDP_message (textToSend);
}
else
{

Proiect de diploma Sistem de automatizare pentru casa inteligentă
27
analogWrite ( LED_PIN , 0 );
char textToSend[] = "Lum2:0;" ;
ether.sendUdp(textToSend , sizeof(textToSend) – 1, localPort , destIP,
destPort );
}
data.val.t_buton_L = millis() + DEBOUNCE;
}
data.val.stare_prev_buton_L = data.val.stare_buton_L;

Microcontrolerul cere procentul de luminozitate de la server altfel se setează cea implicit ă
( 50% ).
if (!data.val.lumina_primit )send_UDP_message("CereLumSet?");
if (strstr(packetBuffer , "LumSet:" ) != NULL)
{
char *pch = strchr(packetBuffer , ':');
pch = pch + 1;
data.val.procent_lumina = atoi(pch);
Serial.print(F("S-a setat luminozitatea:" ));
Serial.println(data.val.procent_lumina);
data.val.lumina_primit = true;
}

Serverul trimite alt procent de luminozitate daca acesta se modifica iar programul
ajustează luminozitatea setând factorul de umplere la al semnalului PWM.
//daca s -a schimbat luminozitatea schimbă acum
if ( data.val.procent_lumina_old != data.val.procent_lumina)
{
if (data.val.lumina_aprinsa)
{
byte light = (byte)(data.val.procent_lumina / 100. * 255);
analogWrite ( LED_PIN , light );
}
data.val.procent_lumina_old = data.val.procent_lumina;
}

Luminile se sting la armarea sistemului indiferent de starea lor sau de apăsarea butonului.
//daca sistemul este blocat se sting luminile
if (data.val.sistem_securitate == 1 && data.val.lumina_aprinsa_1)
{
analogWrite ( LED_1_PIN , 0 );
send_UDP_message( "Lum3:0;" );
}

Proiect de diploma Sistem de automatizare pentru casa inteligentă
28

4.2.1.3. Sistemul de control a iluminatului cu detector de mișcare

Controlul iluminatului se realizează la fel ca mai sus dar schimbarea stării este declanșată
de senzor.
Exemplu de cod:
if (digitalRead (PIR_PIN) == HIGH)
{
if (data.val.lockLow)
{
if (data.val.sistem_securitate == 1)
{
//trimite alarma mișcare la server
}
else
{
//aprinde lumina
data.val.lum_pir = true;
}

data.val.lockLow = false;

}
data.val.takeLowTime = true;
}

if (digitalRead (PIR_PIN) == LOW)
{
if (data.val.takeLowTime)
{
data.val.lowIn = millis() + pause; //salvează timpul HIGH ->LOW
data.val.takeLowTime = false;//se setează doar când semnalul trece pe
LOW
}
//daca senzorul e LOW un timp dat atunci nu mai exista mișcare
if (!data.val.lockLow && millis() > data.val.lowIn)
{
//stinge lumina
data.val.lum_pir = false;
data.val.lockLow = true;//se asigura ca blocul se executa doar după
secvența LOW HIGH
}
}

4.2.1.4. Sistem de securit ate, control acces și acționare a geamurilor

Microcontrolerul cere starea sistemului de securitate și serverul trimite starea sistemului la
modificarea acestuia și la cerere.
Trimiterea cererii:
send_UDP_message("CereSisSec?");

Proiect de diploma Sistem de automatizare pentru casa inteligentă
29
Primirea răspunsului:
//primește starea sistemului de securitate
else if (strstr(packetBuffer , "SisSec:" ) != NULL)
{
char *pch = strchr(packetBuffer , ':');
pch = pch + 1;
data.val.sistem_securitate = atoi(pch);
Serial.print(F("Sistem securitate:" ));
Serial.println(data.val.sistem_securitate);
data.val.securitate_primit = true;
}
Exemplu de acționare a geamului prin apăsarea butonului:
data.val.stare_geam_1 = digitalRead (GEAM_1_PIN);

if (data.val.stare_geam_1 == HIGH && data.val.stare_prev_geam_1 == LOW &&
millis() > data.val.t_geam_1 && data.val.sistem_securitate != 0)
{
Serial.println(F("Alarma intrus! Geam 3 deschis!" ));
send_UDP_message( "AlarmaIntrus!Geam3!" );
data.val.t_geam_1 = millis() + DEBOUNCE;
}
data.val.stare_prev_geam_1 = data.val.stare_geam_1;

//////apăsare buton + setare geamuri////////////////
data.val.stare_buton_G1 = digitalRead (BUTON_G1_PIN);

if (data.val.stare_buton_G1 == HIGH && data.val.stare_prev_buton_G1 ==
LOW && millis() > data.val.t_buton_G1 && data.val.sistem_securitate == 0)
{
Serial.println(F("Buton Geam 1 Apasat!" ));

if (data.val.stare_geam_1)
{
Servo1.write(UNGHI_GEAM_INCHIS);
send_UDP_message( "Geam3:0;" );
}
else
{
Servo1.write(UNGHI_GEAM_DESCHIS);
send_UDP_message( "Geam3:1;" );
}
data.val.t_buton_G1 = millis() + DEBOUNCE;
}
data.val.stare_prev_buton_G1 = data.val.stare_buton_G1;

Fiecare geam are atașat un senzor magnetic care indic ă dacă este închis sau deschis.
Când se apasă butonul, microcontrolerul determin ă starea gemului și acționează geamul în
direcția corect ă. Pentru acționarea geamurilor s -a folosit librăria Servo. Dacă sistemul e armat
atunci pentru orice geam care se deschide forțat este generat ă o alarm ă care este trimis ă la
server. Serverul procesează acesta alarm ă și se trimite un SMS la proprietar și la firma de
securitate. În cazul în care s -a modificat starea unui geam se trimite un mesaj la server.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
30
4.2.1.5. Sistemul de comunica ție
Pentru comunicația și interfațarea cu modulul W5100 s -a folosit librăria Ethernet și
pentru modulul ENC28J60 s-a folosit librăria ethercard.
Trimiterea mesajul se face cu ajutorul funcției „ send_UDP_message ” în cazul shieldului
ethernet
void send_UDP_message( char *Buffer)
{
UDP.beginPacket (destIP, destPort);
UDP.write(Buffer);
UDP.endPacket ();
}

În cazul folosirii modulului ENC28J60

ether.sendUdp(textToSend , sizeof(textToSend) – 1, localPort , destIP,
destPort );

Primirea mesajul se face prin intermediul funcției „receive_UDP_message”

void receive_UDP_message()
{
unsigned int packetSize = UDP.parsePacket ();
if (UDP.available () && packetSize > 0)
{
char packetBuffer[packetSize];
// citește mesajul si copiază in variabila „packetBuffer”
UDP.read(packetBuffer , packetSize);
packetBuffer[packetSize] = '\0';
Serial.print(F("Contents:" ));
Serial.println(packetBuffer);

//tratare comand ă!

}//if packetSize
}

In cazul folosirii modulului ENC28J60

void receive_UDP_message( uint16_t dest_port , uint8_t src_ip[IP_LEN] ,
uint16_t src_port , const char *packetBuffer , uint16_t len)
{
Serial.print(F("packetBuffer: " ));
Serial.println(packetBuffer);
//tratare comanda!
}

În cazul microcontrolerul WebMos D1 funcțiile de trimitere și primire a mesajelor
ethernet sunt identice ca la modulul W5100, dife ră doar inițializarea.
Celeilalte sisteme de automatiza re sunt specifice fiecărui montaj și se descriu în următoarele
capitol e la montajul specific.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
31
4.2.2. Implementarea Montajelor
În continuare se detaliază arhitectura de ansamblu a soluției, montajele și componentele
constructive , precum și formatul mesajelor vehiculate între componente.
4.2.2.1. Montaj 1 – Sistem IOT de securitate
Montaj ul 1 este responsabil cu secu ritatea casei, control acces , interfațarea cu utilizatorul –
schimbarea temperaturi, codului, armarea/dezarmarea sistemului, trimiterea de SMS -uri ,
aprinderea luminii din fa ța usa1 și hol 1. Este plasat în hol, în aproprierea ușii principale de
acces.
Schema bloc a Montajului 1 este prezentată în Fig. 4.4.

Fig. 4.4. Schema bloc montaj 1

Proiect de diploma Sistem de automatizare pentru casa inteligentă
32
Componente montajul ui: sunt conform tab elul 3
Tabelul 3 Componentele montajului 1
Componenta Numărul de piese
Arduino Mega 2560 1
Ethernet shield W5100 1
LCD 16×2 2
RFID MFRC522 1
Keypad 1
Mosfet IRLZ44N 2
Led 3
Rezistente 300Oh 3
Modul GSM SIM800L 1
Senzor magnetic ușă 1
Senzori PIR 2
Banda de leduri 2
Servo SG90 1

Schema electric ă a Montajului 1 este conform Fig. 4.5.
Legenda elementelor de automatizare sunt conform Tabelul 2
Descrierea funcționalități:
Sistemul are ca intrare senzorul RFID, un keypad și are ca ieșire un servo motor, două
ecrane LCD și un shield ethernet pentru comunicare pe rețea.
Yala ușii de la intrare poate fi deschisă prin 3 moduri : prin card RFID, prin cod introdus de la
keypad și prin comandă de la distanță. Microcontrolerul cere starea sistemului de securitate iar
serverul trimite starea sistemului la modificarea acestuia și la cerere.
Parola este cerută de microcontroler și trimisă de către server, altfel se setează una implicita.
La 4 încercări greșite a codului este trimisă o notificare la server, serverul o procesează și
inserează in log și trimite un SMS la proprietar.
Fiecare card este înregistrat în baza de date. La pornire Microcontrolerul face o cerere de RFID
iar serverul trimite ID -urile la card -uri altfel se ia unu implicit. Fiecare eveniment de acces este
trimis la server și scris în baza de date.
Încercările repetate pe RFID se vor raporta la server iar acesta va insera in log și va trimite un
SMS la proprietar.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
33

Fig. 4.5. Schema electrică a Montajului 1

Proiect de diploma Sistem de automatizare pentru casa inteligentă
34

De la keypad se poate seta starea sistemului, procedura de armare / dezarmare:
Daca s -a introdus un cod de minim 3 cifre și apoi un diez „#” atunci programul verific ă dacă
parola este corect ă. Orice cod introdus urmat de caracterul steluță „*” resetează codul introdus
anterior.
Procedura de armare sau dezarmare a sistemului este cum urmează:
Cod corect + A – armare sistem de tip zi
Cod corect + D – dezarmare sistem
Cod corect + B – armare sistem de tip noapte
Cod corect + C – schimbare cod sau schimbare temperatura
Fiecare intrare ieșire cu RFID/keypad este înregistrat ă în baza de date cu timpul la cod
corect/greșit, la car d corect/greșit, la încercări multiple, la blocare keypad. Orice alarm ă este
înregistrată în baza de date cu data și ora, orice schimbare de variabile primare este notat ă în
log.
Montajul mai implementează Sistemul de control a iluminatului cu detector de mișcare
descris la cap.4.2.1.3 și o parte din sistemul de securitate și acționare a geamului care este
valabil și pentru ușă. La cap .4.2.1.4 .

Mesajele trimise/primite intre Montajul 1 si Server
Mesaje de cerere
Primele mesaje pe care le trimite fiecare montaj sunt mesajele de cerere care cer parametrii
principali de stare a casei. Mesajele de acest tip sunt comune la toate montajele dar fiecare
montaj își cere setul de parametrii pe care îi folosește. Mesajele de cerere pentru Montajul 1
sunt:
CereSis Sec? – Cere starea sistemului de securitate
CereRFID? – cere ID -ul cardurilor de acces
CereCodKeypad? – cere parola de acces
CereLumSet? – cere procentul de lumina selectat
CereSisInc? – Cere starea sistemului de încălzire
CereTempSet? – Cere temperatura s etata

Mesaje de informație
La mesajele de mai sus Serverul răspunde cu următoarele mesaje pe care Montajul 1 le
procesează. Mesajele de informație pentru Montajul 1 sunt:
SisSec:0|1|2 – Starea sistemului de securitate valoare 0,1 sau 2

Proiect de diploma Sistem de automatizare pentru casa inteligentă
35
RFIDcard1:022 007 090 002;RFIDcard2:222 200 206 165;RFIDcard3:213 231 405
000;RFIDcard4:021 147 205 101; – ID-urile cardurilor de acces
CodKeypad:<cod> – codul de acces
LumSet:80 – Valoarea luminii setata la 80%
SisInc:0|1 – Starea sistemului de încălzir e, valoare 0 sau 1, 0 – oprit, 1 – pornit
TempSet:30 – temperatura setata la 30 grade
Mesaje regulate
Acest montaj nu trimite mesaje periodice în afara celor de stare.
Mesaje de alarma
O alt ă categorie de mesaje sunt mesajele de alarm ă . Aceste mesaje sunt specifice fiecăr ui
montaj în parte și sunt unice. Mesajele de alarm ă pentru Montajul 1 sunt
UnRecCard! – când un card scanat nu este înregistrat
AccBlocat! – când se blochează accesul la introducerea repetat ă a codului de acces greșit
AlarmaMisc!PIR1! – alarma de mișcare în fata ușii de la intrare când sistemul este blocat
starea 1 (zi)
AlarmaMisc!PIR3! – alarma de mișcare din holul de acces când sistemul este blocat starea 1
CodGresit!Inc:x!Cod:1234! – se trimite ca log codurile greșite introduse la ke ypad cat și a
câta încercare de introducere.
Mesaje de stare
Următoarea categorie de mesaje sunt mesajele trimise la schimbarea de stare. Aceste mesaje
sunt din nou unice pe montaj. Mesajele de stare pentru Montajul 1 sunt:
Usa1:0|1;type:0; – se trimite st area ușii inițiale la pornirea montajului
Usa1:1;type:1; – se trimite stare ușă deschisa ca urmare a introducerii corecte a codului de
acces.
Usa1:1;type:2;RFIDx; – se trimite stare ușă deschisa ca urcare a citiri uni card RFID
înregistrat.
Usa1:1;type:3; – – se trimite stare ușă deschisa ca urcare a unei comenzi primite prin ethernet
de la server.
Mesaje de comanda
Ultima categorie de mesaje sunt comenzile primite de la server. Aceste mesaje sunt unice
pentru fiecare montaj. Mesajele aferente Montajului 1 sunt:
ComUsa1! – este comanda de deschidere a ușii
SMS:<text> – este mesajul de alarma care urmează sa fie trimis prin SMS la persoanele de
interes.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
36

4.2.2.2. Montaj 2– Sistem IOT garaj
Montajul 2 este responsabil cu deschiderea ușii garajului prin 3 metode buton,
telecomand ă și extern. Pe lângă funcția principala el mai colectează temperatura/umiditatea și
starea ușii de acces din spatele casei , este plasat in garaj.
Schema bloc a montajului 2 este prezentată în Fig. 4.6.

Fig. 4.6. Schema bloc montaj 2
Schema electrica a montajului 2 este prezentată în Fig. 4.7.
Schema PCB Montaj 2 este prezentată în Fig. 4. 8.
Componente montajului sunt conform tabelul . 4
Legenda elementelor de automatizare sunt conform Tabelul 2

Proiect de diploma Sistem de automatizare pentru casa inteligentă
37

Fig. 4.7. Schema electrica a Montajului 2

Fig. 4.8. Schema PCB a Montajului 2

Proiect de diploma Sistem de automatizare pentru casa inteligentă
38
Tabelul.4 Componentele montajului 2
Arduino Uno R3 1
Shield Ethernet W5100 (Ethernet 2) 1
Buton (Buton 9,10) 2
Senzor ultrasunete 1
IR (Senzor infraroșu) 1
Senzor temperatura/umiditate DHT11 1
Senzor magnetic ușă (SUS,JOS) 3
Punte H – L298N 1
Motor curent continu 6V (Motor DC) 1
MOSFET IRLZ44N (MOSFET 6) 1
Banda leduri 1
Transmițător IR(telecomanda) 1
Sursa alimentare 5V 1
Sursa alimentare 12V 1

Descrierea funcționalității montajul ui :
Montajul 2 are ca intrare dou ă butoane, un senzor de temperatură, trei senzori magnetici,
un receptor infraroșu și un senzor cu ultrasunete, are ca ieșire (comanda) un modul L298N
(controlează motorul), un mosfet pentru controlul iluminatului și un shield ethernet (W5100)
pentru comunicare pe rețea.
Ușa de garaj este acționată de un motor care este comandat de un modul L298N, care are ca
principiu de funcționare puntea H. Acest ă punte H este comandat ă printr -un semnal PWM
pentru viteza și de 2 pini digital i pentru direcția de rotație a motorului de la microcontroler.
Exemplu de cod de acționare a motorului:
//motor
data.val.stare_usa_jos = digitalRead (GARAJ_JOS_PIN);
data.val.stare_usa_sus = digitalRead (GARAJ_SUS_PIN);

if (data.val.actioneaza_motor) // acționează motorul -> setează PWM si
direcția o singura data
{
switch (data.val.actiune_motor)
{
case 1: // Motor 1 Stop
analogWrite (SPEED_PIN , 0);
digitalWrite (DIR1_PIN , LOW);

Proiect de diploma Sistem de automatizare pentru casa inteligentă
39
digitalWrite (DIR2_PIN , HIGH);
Serial.println(F("Motor 1 Stop" ));
break;

case 2: // Motor coboara
analogWrite (SPEED_PIN , VITEZA_MOTOR);
digitalWrite (DIR1_PIN , LOW);
digitalWrite (DIR2_PIN , HIGH);
Serial.println(F("Motor 1 coboara" ));
data.val.t_tranzitie_motor = millis() + TRANZITIE_USA_GARAJ;
//ceva_test = millis();
break;

case 3: // Motor urca
analogWrite (SPEED_PIN , VITEZA_MOTOR);
digitalWrite (DIR1_PIN , HIGH);
digitalWrite (DIR2_PIN , LOW);
Serial.println(F("Motor 1 urca" ));
data.val.t_tranzitie_motor = millis() + TRANZITIE_USA_GARAJ;
break;
}
data.val.actioneaza_motor = false;
}

Oprirea motorului când ajunge la captat de cursa sau expir ă timpul:

if
(
(data.val.actioneaza_motor == false && data.val.t_tranzitie_motor != 0)
&&
(
(data.val.actiune_motor == 2 && data.val.stare_usa_jos == false &&
data.val.stare_usa_sus == true)
||
(data.val.actiune_motor == 3 && data.val.stare_usa_jos == true &&
data.val.stare_usa_sus == false)
||
(millis() > data.val.t_tranzitie_motor) //protecție daca senzorii nu
funcționează ( după 5 secunde se oprește )
)
)
{
data.val.actioneaza_motor = true;
data.val.actiune_motor = 1; //stop motor
data.val.t_tranzitie_motor = 0;
}

Metodele de acționare a ușii garajului sunt prin butonul situat în garaj, printr -un transmițător
IR și se mai poate comanda și de la distant ă prin intermediul site -ului.
Algoritmul logic de comand ă ușă garaj este după cum urmează: se apasă butonul, se
determina poziționarea ușii sus sau jos prin intermediul senzorilor de ușă, apoi dac ă ușa este
jos atunci se da comanda ca ușa s ă se ridice și invers. Daca senzorii indic ă eronat atunci ușa
urcă . Mai jos este o bucat ă de cod pentru acționarea de la buton, asemănător se face și pentru

Proiect de diploma Sistem de automatizare pentru casa inteligentă
40
celelalte dou ă metode. Pentru recepționarea semnalului infraroșu am folosit librăria
„IRremote”[31 ] care poate sa d ecodeze mai multe tipuri de telecomande.
Exemplu de cod pentru acționarea motorului de la buton:
data.val.stare_buton_G = digitalRead (BUTON_G_PIN);

if (data.val.stare_buton_G == HIGH && data.val.stare_prev_buton_G == LOW
&& millis() > data.val.t_buton_G && data.val.sistem_securitate == 0 &&
data.val.t_tranzitie_motor == 0)
{
Serial.println(F("Buton Garaj Apasat!" ));

data.val.actioneaza_motor = true; // actioneaza motorul -> seteaza PWM
si directia o singura data

if (data.val.stare_usa_jos && !data.val.stare_usa_sus) // deschis
{
data.val.actiune_motor = 2; // coboară
send_UDP_message( "Garaj:0;type:1;" );//va fi închis
}
else if (!data.val.stare_usa_jos && data.val.stare_usa_sus) //închis
{
data.val.actiune_motor = 3; //urca
send_UDP_message( "Garaj:1;type:1;" );//va fi deschis
}
else if (data.val.stare_usa_sus && data.val.stare_usa_jos)
{
Serial.println(F("Senzori garaj defecti" )); //de test
send_UDP_message( "Garaj:def!" );
data.val.actiune_motor = 3; // urca
send_UDP_message( "Garaj:1;type:1;" );//va fi deschis
}
else
{
Serial.println(F("Usa In tranzitie" )); //de test
}

data.val.t_buton_G = millis() + DEBOUNCE;
}
data.val.stare_prev_buton_G = data.val.stare_buton_G;
//end motor

Exemplu de recepționare cod trimis prin IR și verificare parol ă:
//IR
if (irrecv.decode(&results))
{
irrecv.resume(); // recepționează următoarea valoare
if (results .value != 0xFFFFFFFF) //FFFFFFFFF
{
//Serial.println(results.value, HEX);
data.val.keypressed = decodare_cheie(results .value);
Serial.println(data.val.keypressed);
if (data.val.keypressed != NO_KEY)
{
keyBuffer[data .val.index++] = data.val.keypressed;
keyBuffer[data .val.index] = '\0';
Serial.println(keyBuffer);

Proiect de diploma Sistem de automatizare pentru casa inteligentă
41

if (strlen(keyBuffer) > 4 && keyBuffer[data .val.index – 1] == '#')
{
keyBuffer[data .val.index – 1] = '\0';

if (strcmp(keyBuffer , secret) == 0)
{
//acționează motor
}
else
{
//se trimite o atenționare de cod greșit
char temp[] = "CodGresit:" ;
char textToSend[ sizeof(temp) + sizeof(secret) – 1];
strcpy(textToSend , temp);
strcat(textToSend , secret);
textToSend[ sizeof( textToSend) – 1] = ';';
textToSend[ sizeof( textToSend)] = '\0';
send_UDP_message(textToSend);
}
clearBuffer();

}//if >3
}// keypress
}//if FFFFF
data.val.lastKey = millis() + 4000;

}//if decode

Se recepționează șirul de biți transmis, se decodează într -un caracter predefinit
corespunzător șirului de biți, se stochează caracterul într -un vector, dacă vectorul are lungime
mai mare de 4 și ultimul caracter este „#” atunci se verific ă parola. In caz favorabil se
acționează motorul, altfel se trimite o alarm ă la server.
Folosind senzorul de ultrasunete se determină prezenta mașinii în garaj, dac ă mașina pleacă
sau intr ă în garaj atunci se transmite la server informația. Pentru determinarea distan ței am
folosit librăria „NewPing”.[29 ].
Se trimite starea ușii garajului dac ă se schimb ă, daca ușa este deschis ă fără acționare atunci se
trimite o alarm ă la server.
Montajul 2 mai implementează sistemul de iluminat descris în cap .4.2.1.2 , transmiterea
temperaturii descris in cap .4.2.1.1 și comunicația ethernet descris ă la cap .4.2.1.5 .

Mesajele trimise/primite intre Montajul 2 si Server
Mesaje de cerere
Mesajele de cerere parametri principali de stare ai casei pentru Montajul 2 sunt:
CereSisSec? – Cere starea sistemului de securitate
CereCodKeypad? – cere parola de acces
CereLumSet? – cere procentul de lumina selectat

Proiect de diploma Sistem de automatizare pentru casa inteligentă
42
Mesaje de informație
La mesajele de mai sus Serverul răspunde cu următoarele mesaje pe care Montajul 2 le
procesează. Mesajele de inform ație pentru Montajul 2 sunt:
SisSec:0|1|2 – Starea sistemului de securitate valoare 0,1 sau 2
CodKeypad:<cod> – codul de acces
LumSet:80 – Valoarea luminii setata la 80%
Mesaje regulate
O alt ă categorie sunt mesajele trimise regulat sunt trimise la fieca re 5 minute, de obicei se
trimit temperaturi sau parametri atmosferici la care ulterior se v a studia evoluția prin
afișarea unor grafice. Mesajul pentru Montajul 2 are forma:
Temp5:22;Hum5:60; – numele senzorului si valoarea lui
Mesaje de alarma
O alt ă categorie de mesaje sunt mesajele de alarm ă. Aceste mesaje sunt specifice fiecăr ui
montaj în parte și sunt unice. Mesajele de alarm ă pentru Montajul 2 sunt:
Garaj:def! – când cei doi senzori de cursa arata același valoare sau când senzorii sunt
defecți
CodGresit:<COD>! – când codul introdus este greșit se trimite pentru log codul introdus.
Mesaje de stare
Următoarea categorie de mesaje sunt mesajele trimise la schimbarea de stare. Aceste mesaje
sunt din nou unice pe montaj. Mesajele de stare pentru Montajul 2 sunt:
auto:0|1; – prezenta autoturismului in garaj
Lum6:0|1; – starea luminii din garaj
Garaj:0|1;type:0; – se trimite starea ușii inițială la pornirea montajului
Garaj:1;type:1; – se trimite stare ușă deschis ă ca urmare a apăsării butonului
Garaj:1;type:2; – se trimite stare ușă deschis ă ca urmare a introducerii corecte a codului
Garaj:1;type:3; – se trimite stare ușă deschis ă ca ur mare a unei comenzi primite prin ethernet
de la server.
Mesaje de comanda
Ultima categorie de mesaje sunt comenzile primite de la server. Aceste mesaje sunt și ele
unice pentru fiecare montaj. Mesajele aferente Montajului 1 sunt:
ComUsaGaraj! – comanda de deschidere a ușii
ComLum6! – comanda de aprindere/stingere a luminii

Proiect de diploma Sistem de automatizare pentru casa inteligentă
43
Montaj 3 – Sistem IOT pentru camera 2 si 3
Montajul 3 se ocup ă cu automatizarea a dou ă camere, controlul luminii, reglarea
temperaturii și acționarea geamurilor fiind plasat între camera 2 și 3.
Schema bloc a Montajului 3 este prezentată în F ig.4.9

Fig. 4.9. Schema bloc montaj 3

Componente montajului sunt conform tab el . 5
Schema electrica a montajului 3 este prezentată în Fig. 4.10.
Pentru Montajul 3 s -au realizat două PCB -uri (unu pentru fiecare cameră) .

Proiect de diploma Sistem de automatizare pentru casa inteligentă
44
Tabelul.5 Componentele montajului 3
Arduino Uno R3 1
Shield ethernet W5100 (ethernet 3) 1
Releu 2 canale (Releu 4) 1
Senzor magnetic (Senzor geam 3,4) 2
Buton (Buton 5,6,7,8) 4
senzor temperatura/umiditate DHT 11 (senzor temp 3,4) 2
Rezistente 5W 30 Ohm (Rezistenta 3,4) 2
MOSFET IRLZ 44N(MOSFET 3,4) 2
Banda led (Led 3,4) 2
Servo MG996R 2
Alimentare 5V 1
Alimentare 12V 1

Fig. 4.10. Schema electrica a Montajului 3

Proiect de diploma Sistem de automatizare pentru casa inteligentă
45
Schema PCB Montaj 3.1 este prezentată în Fig. 4.11.

Fig. 4.11. Schema PCB a Montajului 3.1
Schema PCB Montaj 3.2 este prezentată în Fig.4.12

Fig.4.12. Schema PCB a Montajului 3.2

Proiect de diploma Sistem de automatizare pentru casa inteligentă
46

Descrierea funcționalității Montajului 3
Acest sistem are ca intrare dou ă butoane, doi senzori de temperatură și doi senzori
magnetici la geamuri. Are ca ieșire dou ă relee, dou ă mosfet -uri, dou ă servo -uri și un shield
ethernet pentru comunicare pe rețea.
În implementarea montajului 3 s-au folosit următoarele sisteme de automatizare: controlul
iluminatului descris la cap . 4.2.1.2 , reglarea temperaturii descris la cap. 4.2.1. 1 , acționarea
geamurilor descris la cap. 4.2.1. 4 și colectarea temperaturii descrise tot la cap. 4.2.1.1 .
Singura diferență notabil ă este c ă acest montaj are c âte dou ă din fiecare element de
automatizare hardware și software rezultând un număr dublu de variabile, mesaje de stare și
memorie ocupat ă și pini utilizați.
Mesajele trimise/primite dintre Montajul 3 si Server

Mesaje de cerere
Mesajele de cerere parametri principali de stare ai casei pentru Montajul 3 sunt:
CereSisSec? – Cere starea sistemului de securitate
CereLumSet? – cere pro centul de lumin ă selectat
CereSisInc? – Cere starea sistemului de încălzire
CereTempSet? – Cere temperatura setat ă
Mesaje de informație
La mesajele de mai sus Serverul răspunde cu următoarele mesaje pe care Montajul 3 le
procesează. Mesajele de informație pentru Montajul 3 sunt:
SisSec:0|1|2 – Starea sistemului de securitate valoare 0,1 sau 2
LumSet:80 – Valoarea luminii setata la 80%
SisInc:0|1 – Starea sistemului de încălzire, valoare 0 sau 1, 0 – oprit, 1 – pornit
TempSet:30 – temperatura setata la 30 grade
Mesaje regulate
O alta categorie sunt mesajele trimise regulat care sunt trimise la fiecare 5 minute, de obicei
se trimi t temperaturi sau parametri atmosferici la care ulterior se va studia evoluția lor prin
afișarea unor grafice. Mesajele regulate pentru Montajul 3 sunt:
Hum3:58;Temp3:24;Hum4:56;Temp4:24; – numele senzorului si valoarea lui
Mesaje de alarma
O alt ă categorie de mesaje sunt mesajele de alarm ă. Aceste mesaje sunt specifice fiecărui
montaj în parte și sunt unice. Mesajele de alarm ă pentru Montajul 3 sunt:

Proiect de diploma Sistem de automatizare pentru casa inteligentă
47
AlarmaIntrus!Geam3! – s-a deschis forțat geamul când sistemul este armat
AlarmaIntrus!Geam4! – s-a deschis forțat geamul când sistemul este armat
Temp3:def! – senzor defect
Temp4:def! – senzor defect
Mesaje de stare
Următoare a categorie de mesaje sunt mesajele trimise la schimbarea de stare. Aceste mesaje
sunt din nou unice pe montaj. Mesajele de stare pentru Montajul 3 sunt:
Lum3:0|1; – starea luminii 3
Lum4:0|1; – starea luminii 4
Geam3:0|1; – starea geamului 3
Geam4:0|1; – starea geamului 4
Mesaje de comanda
Ultima categorie de mesaje sunt comenzile primite de la server. Aceste mesaje sunt și ele
unice pentru fiecare montaj. Mesajele de comanda pentru Montajul 3 sunt:
ComGeam3! – comanda de acționare a geamului 3
ComGeam4! – comanda de acționare a geamului 4
ComLum3! – comanda de acționare a luminii 3
ComLum4! – comanda de acționare a luminii 4

4.2.2.3. Montaj 4 – Sistem IOT bucătărie

Montajul 4 se ocup ă cu automatizarea bucătăriei, control ează luminile, regl ează
temperatura și acțion ează geamuril e, prelevarea nivelului de gaz și fum c ât si nivelul de
luminozitate fiind plasat evident în bucătărie.
Schema bloc a Montajului 4 este prezentată în Fig.4.13.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
48

Fig.4.13. Schema bloc montaj 4
Componente montajului 4 sunt conform Tabel 6
Tabelul.6 Componentele montajului 4
WeMos D1 R1 esp8266 1
Senzor lumina BH1750 1
Senzor gaz/fum MQ -2 1
Convertor de nivel 1
Releu 1 canal (Releu 1) 1
senzor geam (Senz geam 1) 1
Buton (Buton 1,2) 2
senzor temperatura/umiditate DHT 11 (senz temp 1) 1
rezistenta 5W 47Oh (Rezistenta 1) 1
MOSFET IRLZ 44N 1
Banda leduri 1
Servo MG996R 1
Alimentare 5V 1
Alimentare 12V 1

Proiect de diploma Sistem de automatizare pentru casa inteligentă
49
Schema electric ă a montajului 4 este prezentată în Fig.4.14

Fig.4.14. Schema electrica a Montajului 4
Schema PCB Montaj 4 este prezentată în Fig.4.15.

Fig.4.15. Schema PCB a Montajului 4

Proiect de diploma Sistem de automatizare pentru casa inteligentă
50
Descrierea funcționalității montajului 4
Montajul 4 are ca intrare dou ă butoane, un senzor de temperatur ă, un senzor magnetic
geam, un senzor de lumin ă și un senzor gaz/fum. Are ca ieșire un releu și un mosfet, un servo
și un shield ethe rnet pentru comunicație ethernet.
În implementarea montajului 4 s -au folosit următoarele sisteme de automatizare: controlul
iluminatului descris la cap.4.2.1.2 , reglarea te mperaturii descris la cap.4.2.1.1 , acționarea
geamurilor descris la 4.2.1. 4 si colectarea temperaturii prescrise la 4.2.1.1 .
Pentru prelevarea luminozități s -a folosit o versiune puțin modificata a librăriei „BH1750”.
Luminozitatea se trimite la fiecare 5 minute .
Exemplu de cod:
//trimite date la server
if ( millis() > data.val.lastUDPSendTime ) //5 minute
{
//sensor lumina
data.val.lux = lightMeter .readLightLevel();

if (data.val.lux == 54612)
{
str.concat("lux1:er;" );
}
else
{
str.concat("lux1:");
str.concat(data.val.lux);
str.concat(";");
}
Serial.println(str);
char textToSend[str .length() + 1];
str.toCharArray (textToSend , str.length() + 1);
send_UDP_message(textToSend);

data.val.lastUDPSendTime = millis() + UDP_SEND_INTERVAL; //1 min

}//trimitere date

Determinarea prezen ței de gaz sau fum și transformarea din tensiune în ppm.
Senzorul MQ -2 este sensibil la gaz rezultând o modificare a rezisten ței. Conform datasheet
măsoară între 300-10000ppm gaz combustibil. Este plotat un grafic intre raportul Rs/Ro și ppm.
Se aleg dou ă puncte și se aproximează trasând o linie, se logaritmează pentru constrânge rea
graficului. [52] [64]
Formatul datelor { x, y, panta}; punct1: (lg200, 0.21), punct2: (lg10000, -0.59)

float LPGCurve[3] = {2.3, 0.21, -0.47};
float COCurve[3] = {2.3, 0.72, -0.34};
float SmokeCurve[3] = {2.3, 0.53, -0.44};
unsigned int MQGetPercentage( float rs_ro_ratio , float *pcurve)
{
return (pow(10, ( ((log(rs_ro_ratio) – pcurve[1]) / pcurve[2]) +
pcurve[0])));
}

Proiect de diploma Sistem de automatizare pentru casa inteligentă
51
Mesajele trimise/primite dintre Montajul 4 si Server
Mesaje de cerere
Mesajele de cerere parametri principali de stare ai casei pentru Montajul 4 sunt:
CereSisSec? – Cere starea sistemului de securitate
CereLumSet? – Cere procentul de lumin ă selectat
CereSisInc? – Cere starea sistemului de încălzire
CereTempSet? – Cere temperatura setat ă
Mesaje de informație
La mesajele de mai sus Serverul răspunde cu următoarele mesaje pe care Montajul 4 le
procesează. Mesajele de informație pentru Montajul 4 sunt:
SisSec:0|1|2 – Starea sistemului de securitate valoare 0,1 sau 2
LumSet:80 – Valoarea luminii setata la 80%
SisInc:0|1 – Starea sistemului de încălzire, valoare 0 sau 1, 0 – oprit, 1 – pornit
TempSet:30 – temperatura setata la 30 grade
Mesaje regulate
O alta categorie sunt mesajele trimise regulat care sunt trimise la fiecare 5 minute, de obicei se
trimi t temperaturi sau parametrii atmosferici la care ulterior se va studia evo luția prin afișarea
unor grafice. Mesajele regulate pentru Montajul 4 sunt:
lux1:er;Hum1:er;Temp1:er; – numele senzorului si valoarea lui
Mesaje de alarm ă
O alt ă categorie de mesaje sunt mesajele de alarm ă. Aceste mesaje sunt specifice fiecăr ui
montaj în parte și sunt unice. Mesajele de alarma pentru Montajul 3 sunt:
AlarmaIntrus!Geam1! – s-a deschis forțat geamul când sistemul este armat
Temp1:def! – senzor defect
AlarmaGazFum! – alarm ă de fum sau gaz in bucătărie
Mesaje de stare
Următoarea categorie d e mesaje sunt mesajele trimise la schimbarea de stare. Aceste mesaje
sunt din nou unice pe montaj. Mesajele de stare pentru Montajul 4 sunt:
Lum1:0; – starea luminii 1
Geam1:0; – starea geamului 1
Mesaje de comanda
Ultima categorie de mesaje sunt comenzile primite de la server. Aceste mesaje sunt și ele unice
pentru fiecare montaj. Mesajele de comanda pentru Montajului 4 sunt:
ComLum1! – comanda acționarea luminii 1
ComGeam1! – comanda acționarea geamului 1

Proiect de diploma Sistem de automatizare pentru casa inteligentă
52
4.2.2.4. Montaj 5 – Sistem IOT camera 1
Montajul 5 este responsabil cu gestionarea automatizării camerei 1, printre funcțiile lui
se numără reglarea temperaturii , controlul iluminatului, acționarea geamurilor , detecția
mișcării , aprinderea inteligent ă a luminii de la b aie.
Schema bloc a montajului 5 este prezentată în Fig.4.16.

Fig.4.16. Schema bloc montaj 5
Componente le montajului: sunt conform tab elul . 7
Tabelul.7 Componentele montajului 5
Arduino Nano 1
Modul ethernet ENC28J60 1
Senzor de mișcare PIR 1
Releu 1 canal 1
senzor magnetic geam 1
Buton 1
Senzor temperatura/umiditate DHT11 1
Rezistente 5W 47Oh 1
MOSFET 3
Banda leduri 3
Servo MG996R 1
Alimentare 5V 1
Alimentare 12V 1

Proiect de diploma Sistem de automatizare pentru casa inteligentă
53
Schema electric ă Montaj 5 este prezentată în Fig.4.17.
Fig.4.17. Schema electrică a Montajului 5
Schema PCB Montaj 5 este prezentată în Fig 4.18.

Fig 4.18. Schema PCB a Montajului 5

Proiect de diploma Sistem de automatizare pentru casa inteligentă
54
Descrierea funcționalității Montajului 5
Acest sistem are ca intrare 2 butoane,1 senzor de temperatur ă, 2 senzori magnetici (geam
și ușă baie), 1 senzor de mișcare. Are ca ieșire 1 releu, 1 mosfet, 1 servo și un modul ethernet
pentru comunicare pe rețea.
Montajul 5 implementează următoarele sisteme de automatizare: controlul temperaturii descrise
la cap.4.2.1.1 , controlul iluminatulu i la cap.4.2.1.2 , transmiterea temperaturii descrise la
cap.4.2.1.1 . Pe lângă cele menționate s -a mai implementat o mașină de stare pentru aprinderea
automat ă a luminii de la baie.
La baie se face un scenariu, inițial uș a este închisă, se deschide ușa, se aprinde lumina, se
închide ușa rezultând c ă ocupantul a intrat în baie. Lumina rămâne aprins ă pană când se
deschide ușa și apoi se închide ușa rezultând c ă ocupantul a ieșit din baie. Daca nu se deschide
ușa după un timp, lumina se stinge automat după un timp predefinit. Daca ușa rămâne deschis ă
atunci intr ă in starea 3 si așteptă închiderea ușii.
Mașina de stare
S0 – lumina stins a – stare inițial a
| T01 – se deschide ușa
S1 – lumina aprinsa
| T12 – se închide ușa
S2 – start Timer
| T23 – s-a deschis ușa sau a expirat timpul
S3 – stinge lumina
| T30 – se închide ușa
S0

Mesajele trimise/primite dintre Montajul 5 si Server
Mesaje de cerere
Mesajele de cerere parametri principali de stare ai casei pentru Montajul 5 sunt:
CereSisSec? – Cere starea sistemului de securitate
CereLumSet? – Cere procentul de lumin ă selectat
CereSisInc? – Cere starea sistemului de încălzire
CereTempSet? – Cere temperatura setat ă
Mesaje de informație
La mesajele de mai sus Serverul răspunde cu următoarele mesaje pe care Montajul 5 le
procesează. Mesajele de informație pentru Montajul 5 sunt:
SisSec:0|1|2 – Starea sistemului de securitate valoare 0,1 sau 2

Proiect de diploma Sistem de automatizare pentru casa inteligentă
55
LumSet:80 – Valoarea luminii setat ă la 80%
SisInc:0|1 – Starea sistemului de încălzire, valoare 0 sau 1, 0 – oprit, 1 – pornit
TempSet:30 – temperatura setat ă la 30 grade
Mesaje regulate
O alta categorie sunt mesajele trimise regulat care sunt trimise la fiecare 5 minute, de obicei se
trimi t temperaturi sau parametri atmosferici la care ulterior se va studia evoluția prin afișarea
unor grafice. Mesajele regulate pentru Montajul 5 sunt:
Hum2:er;Temp2:er; – numele senzorilor si valoarea
Mesaje de alarm ă
O alt ă categorie de mesaje sunt mesajele de alarm ă. Aceste mesaje sunt specifice fiecăr ui
montaj în parte și sunt unice. Mesajele de alarm ă pentru Montajul 5 sunt:
Temp2:def! – senzor defect
AlarmaMiscare!PIR2! – alarma de mișcare când sistemul este blocat starea 1
AlarmaIntrus!Geam2! – s-a deschis forțat geamul când sistemul este armat
Mesaje de stare
Următoarea categorie de mesaje sunt mesajele trimise la schimbarea de stare. Aceste mesaje
sunt din nou unice pe montaj. Mesajele de stare pentru Montajul 5 sunt:
Lum2:0;Lum5:0;Lum8:0;
Lum2:0|1; – starea luminii 2
Geam2:0|1; – starea geamului 2
Lum5:0|1; – starea luminii 5(baie)
Lum8:0|1; – starea luminii 8 (hol1)
Mesaje de comanda
Ultima categorie de mesaje sunt comenzile primite de la server. Aceste mesaje sunt și ele unice
pentru fiecare montaj. Mesa jele de comanda pentru Montajul 5 sunt:
ComLum2! ! – comanda de acționare a luminii 3
ComGeam2! – comanda de acționare a geamului 4

Proiect de diploma Sistem de automatizare pentru casa inteligentă
56
4.2.2.5. Montajul 6 – Sistem IOT exterior
Acest montaj se ocup ă cu colectarea parametrilor exteriori (temperatur ă, umiditate,
presiune atmosferic ă, averse, umiditatea grădinii) și trimiterea lor către server pentru a fi
colectate datele. Montajul este situat în curtea casei.
Schema bloc a Montajului 6 este prezentată în Fig.4.19.

Fig.4.19. Schema bloc Montaj 6
Componente monta jului: sunt conform tab. 8
Tabelul 8 Componentele montajului 6
Arduino Nano 1
Modul ethernet ENC28J60 1
Senzor temperatura/umiditate DHT11 1
Senzor presiune atmosferica BMP085 1
Senzor luminozitate BH1750 1
Senzor umiditate sol 1
Senzor ploaie 1
Alimentare 12V 1
Alimentare 5V 1

Schema electrica a Montajului 6 este prezentată în Fig.4.20
Schema PCB a Montajului 6 este prezentată în Fig.4.21.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
57

Fig.4.20. Schema electrică a Montajului 6

Fig.4.21. Schema PCB a Montajului 6

Proiect de diploma Sistem de automatizare pentru casa inteligentă
58
Descrierea funcționalității Montajului 6
Montajul 6 colectează temperatura care este explicat ă la cap.4.2.1.1 .
Pentru determinarea procentului de precipitații și umiditate sol s -a făcut o convenție din
moment ce convertorul A/D al microcontrolerul Arduino Nano este pe 10 biti, intervalul citit
este 0 -1023, 0 – însemnă ca suprafața este saturata cu apa însemnând 100% , iar 1023 când
suprafața este uscata – 0 %.
Exemplu de cod:
//umiditate sol
unsigned int analogSoilRead = analogRead (SOIL_HUM_PIN_A);

byte tempSoil = 0.09775171 * ( 1023 – analogSoilRead);

str.concat("Sol:");
str.concat(tempSoil);
str.concat(";");

O alt ă funcție a montajului este de a colecta presiunea atmosferic ă și de prezice vremea în
funcție de diferența de presiune atmosferica din dou ă momente de timp. Schimbările în
presiunea barometric ă se corelează direct cu schimbările în vreme. O presiune scăzută indic ă în
general o înrăutățire a vremii. O presiune mare poate fi interpretată ca o îmbunătățire a vremii.
Presiunea se măsoară în hPa iar previziunea se face calculând diferența de presiune kPa/h. O
variant ă mai complex ă e să se măsoare P/t și să se vadă cum gradientul se schimb ă în timp.
Senzorul trebuie s ă stea într -o locație fix ă. Cum timpul progresează, vr emea poate fi împărțit ă
în categorii exacte. În tabelul 9, se arat ă intervalele de presiune în timp și tipul de vreme
corespunzător. Aceste măsurări sunt raportate la ora, este nevoie de 2 -3 ore pentru a deduc e
cum presiunea evoluează. [50 ]
Tabelul 9 Determinarea avansată a vremii [50]
Analiza Răspuns
dP/dt > 0.25 kPa/h Creștere rapida a presiunii, vreme instabila
0.05 kPa/h < dP/dt < 0.25 kPa/h Creștere ușoară a presiunii, vreme stabila si buna
-0.05 kPa/h < dP/dt < 0.05 kPa/h Vreme foarte stabila
-0.25 kPa/h < dP/dt < -0.05 kPa/h Scădere ușoară a presiunii, vreme stabila cu ploaie
dP/dt < -0.25 kPa/h Scădere rapida a presiunii, descărcări electrice ,
vreme instabila

Proiect de diploma Sistem de automatizare pentru casa inteligentă
59

Mesajele trimise/prim ite dintre Montajul 6 si Server
Montajul 6 nu are mesaje de cerere, de informație, de alarm ă de stare sau de comand ă, are doar
Mesaje regulate cu date colectate din me diu.
Mesaje regulate
O categorie sunt mesajele trimise regulat care sunt trimise la fiecare 5 minute, de obicei se trimi t
temperaturi sau p arametri atmosferici la care ulterior se va studia evoluți a prin afișarea unor
grafice. Mes ajele regulate pentru Montajul 6 sunt:
lux2:0;Hum6:53;Temp6:24;pres:1013;Vremea:5;Ploaie:46;Sol:0;
Explicație: „Lux2” reprezintă senzorul de luminozitate exterior
„Hum6” – reprezintă umiditatea
„Temp7” – reprezintă temperatura
„pres” – reprezintă presiunea atmosferic ă la altitudinea curent ă
„Vremea” – previziunea vremii
„Ploaie” – Cantitatea de precipitații în procente
„Sol” – Umiditatea solului în procente

Proiect de diploma Sistem de automatizare pentru casa inteligentă
60
4.2.3. Formatul mesajelor trimise
Pentru simplitate și ușurință s -a ales codarea mesajelor mai lizibil ă și ușor de înțeles dar s –
a și comprimat informația care se trimite. S -au folosit caractere speciale „:;!?” pentru a putea
procesa mesajul pe bucăți și a putea semnala exact unde se termin ă cuvântul și începe următorul
respectiv pentru a putea extrage numele senzorului și valoarea sau a determina tipul mesajului.
Mesajele trimise pe ethernet se împart in 6 categorii.
Mesaje de cerere sunt mesajele care le trimit e Montajul pentru a primi informațiile necesare și
a funcționa corect.
Format mesaj: < cuvânt „Cere” > < nume_variabila > <semn „ ? ”>
Exemplu: CereSisSec?
Explicație: se cere variabila de stare a sistemului de securitate
Mesaje de informație sunt răspunsurile la mesajele de cerere menționate anterior.
Format mesaj: < nume variabilă > <semn „ : ”> <valoare>
Exemplu: SisSec:0
Explicație: Variabile de starea sistemului de securitate , valoare 0 – dezarmat
Mesajele regulate sunt m esajele trimise re gulat la fiecar e 5 minute, de obicei se trimit
temperaturi sau parametri atmosferici la care ulterior se va studia evoluția prin afișarea unor
grafice. Format mesaj:
Format mesaj: <nume_senzor> < semn „ : ” > <valoare> < semnul „ ; ”>
Aceste mesaje se pot și combina și trimite odată păstrând același format.
Exemplu: Hum3:58;
Explicație : numele senzorului Hum5 si valoarea 58 %
Mesaje de alarm ă sunt mesajele care apar în urma unui eveniment critic, o eroare sau o
avertizare despre un eveniment. Aceste mesaje au mai multe formate.
Alarmele propriu zise
<cuvântul „Alarma”> <tip alarmă> <„!”> <nume senzor> <semnul „!”>
Exemplu: AlarmaIntrus!Geam4!
Explicație: alarma de intrus la geamul numărul 4
Defectele
<nume senzor> <semnul „ : ”> <Cuvântul „def” sau „err”> < semnul „ ! ” >
Exemplu: Temp1:def!
Mai sunt și alarme specifice montajului care au alt format, dar toate păstrează ace iași idee,
în numele alarmei intr ă cel puțin un element de identificare pentru a putea înțelege natura
alarmei.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
61
Mesaje de stare sunt mesajele care se trimit la schimbarea stării unui element monitorizat
din casa cum ar fi starea unui geam , a luminii etc. Aceste mesaje au valori de 1 sau 0 ,
închis/deschis , aprins/stins, pornit/oprit.
Format mesaj: <nume senzor> <semnul „ : ”> < valoare> < „ ; ”>
Exemplu: Geam3:0; – starea geamului 3 este închisă
Mesaje de comand ă sunt mesajele care transmit comenzi de la aplicație spre montaj. Aceste
mesaje sunt de obicei acționări a elementelor montajului cum ar fi o schimbare a stării unei
lumini sau deschidere/închiderea unui geam.
Format mesaj: < Cuvântul „Com” > < nume element > < semnul „ ! ” >.
Exemplu: ComLum3! – comanda lumina numărul 3.
4.2.4. Implementarea Aplicației Server
Aplicația server este scris ă în limbajul de programare C#, utilizându -se platforma de
dezvoltare (IDE) Visual Studio 2015.
Rolul Aplicației Server este de a gestiona întregul sistem, implementează un program client –
server pentru comunicarea pe ethernet, procesează mesajele primite, trimite comenzi și răspuns
la cereri , ia decizii , se ocup ă cu conectarea la baza de date, încărcarea datelor relevante ,
modificarea datelor .
Principalele funcții ale aplicației server sunt:
 Trimiterea/primirea mesajelor
Comunicația ethernet se face prin protocolul UDP folosind o librărie UDP Client/Server
(System.Net,System.Net.Sockets [66 ]) care recepționează mesajul, IP -ul client și portul aferent.
serverThread() – funcția care primește mesajele:
public void serverThread(){
UdpClient udpClient = new UdpClient (this.config.listenPORT);
while (true){
IPEndPoint RemoteIpEndPoint = new IPEndPoint (IPAddress .Any, 0);
Byte[] receiveBytes = udpClient.Receive( ref RemoteIpEndPoint);
string returnData = Encoding .ASCII.GetString(receiveBytes);
this.SetText(RemoteIpEndPoint.Address.ToString() + ":" +
RemoteIpEndPoint.Port.ToString() + "-" + returnData.ToString());
//de aici se prelucrează datele !
proceseazaCerere(returnData, RemoteIpEndPoint.Address.ToString(),
RemoteIpEndPoint.Port);
}
}
Serverul asculta pe portul desemnat iar când se recepționează mesajele, acestea se copiază în
varia bila „returnData”
sendUDPmessage() – funcția care trimite mesajele:
Înainte de a trimite mesajul propriu zis se face o verificare dac ă IP este înregistrat în baza de
date și eventual se afișează in log.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
62
public void sendUDPmessage( string textDeTrimis, string remoteIP, int
remotePORT, bool debug = true)
{
string rhostname = getHostName(remoteIP);
if (rhostname == "0")
{
this.SetText(remoteIP + "IP neinregistrat" );
}
else
{
UdpClient udpSend = new UdpClient ();
udpSend.Connect(remoteIP, remotePORT);
Byte[] sendData = Encoding .ASCII.GetBytes(textDeTrimis);
udpSend.Send(sendData, sendD ata.Length);
if (debug) this.SetText( "S-a trimis raspuns la " + rhostname);
}
}
 Prelucrarea mesajelor primite
Fiecare microcontroler are un set de mesaje bine definite care au fost descrise la fiecare
montaj în parte. Direct în firul de execuție se declanșează funcția de prelucrare la primirea
oricărui mesaj pe ethernet. Înainte de a procesa datele este făcută o verificare de IP în care se
verific ă dacă mesajul a fost trimis de la un IP înregistrat în baza de d ate.
Mesajele primite sunt împărțite în următoarele categorii în funcție de evenimentul care îl
semnalează.
1. Schimbare de variabile
Aceste mesaje vin doar de la Montajul 1,orice alt IP care trimite aceste tipuri de mesaje este
respins și afișat in log. Cel e 3 mesaje schimb ă parametrii vitali cum ar fi starea sistemului de
securitate, încălzirea și parola la Keypad .
2. Mesajele de cerere date
Aceste mesaje sunt global pentru fiecare mesaj în funcție de facilitați. Fiecare Montaj
când repornește cere un set bine definit de date pentru a putea funcționa la parametrii actuali
cum ar fi Starea sistemului de securitate, starea sistemului de încălzire, valoarea temperaturii
setate, procentul de lumina setat, codul keypad (valabil doar pentru montajul 1 si 2) si ID -urile
cardurilor(valabil doar pentru montajul 1) de acces.
Exemplu de Cod care procesează o cerere de date
if (String.Equals(returnData, "CereSisSec?" , StringComparison .Ordinal))
{
this.SetText( "S-a primit cererea de securitate" );
string textDeTrimis = "SisSec:" + currentStatus.securitySystemStatus.ToString();
SetText(textDeTrimis);
sendUDPmessage(textDeTrimis, remoteIP, remotePORT);
}
Se primeste mesajul „CereSisSec?” , se compara șirul de caractere , se formează mesajul de
răspuns și se trimite pe UDP răspunsul.
3. Comenzi de la site.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
63
Din site -ul realizat pentru gestionarea sistemului descris la capitolul 4.2.6 sunt trimise
mesaje de comand ă pentru geamuri, lumini, uși d irect la aplicație prin ethernet.
Aceste mesaje încep fiecare cu cuvântul „Com” și se face o filtrare Regex pentru a le filtra
de celelalte.
Exemplu de cod:
if (String.Equals(returnData, "ComGaraj!" , StringComparison .Ordinal))
{
string IP = getHostIP(2); //ard 2
sendUDPmessage(returnData, IP, config.remotePORT, true);
}
4. Mesajele de alarm ă
Aceste mesaje se termina cu caracterul „!” și indic ă o alarm ă generat ă de senzori într -un
Montaj. Alarme ca acces blocat, card neînregistrat, parola greșită , alarm ă mișcare, defecțiune
senzori, senzor temperatura defect, alarm ă intrus. Aceste mesaje sunt filtrate in funcție de
montaj. Fiecare montaj transmite un set specific de alarme.
Exemplu de cod:
if (String.Equals(returnData, "AlarmaIntrus!Geam1!" , StringCompari son.Ordinal))
{
string[] data = returnData.Split(delimiterChars);
SetText( "key:" + data[0]);
SetText( "value:" + data[1]);
int sensorID = this.getSensorID(data[1]);
string log = "Alarma Intrus – " + data[0] + " a fost deschis" ;
insertLogIntoDB(log, arduinoI D, sensorID, 0);
}
Se taie mesajul în mai multe șiruri de caractere după delimitatori, în nume senzor și
valoare. Se determina ID -ul senzorului și se introduce în baza de date ca un log.
5. Mesajele regulate de stare sau valoare
Aceste mesaje se termin ă fiecare cu caracterul „ ; ” și în cazul schimbării de stare sunt
transmi se doar la schimbarea stării iar mesajele periodice se trimit cu o frecvent ă stabilit ă.
Mesaje de stare sunt: starea luminilor , starea geamurilor, starea garajului , starea ușilor
Mesaje periodice: valoarea temperaturilor, umidității
Exemplu de cod mesaj de stare:
if (Regex.IsMatch(returnData, @"(\bGaraj:\b)"))
{
string[] data = returnData.Split(delimiterChars);
SetText( "key:" + data[0]);
SetText( "value:" + data[1]);
int sensorID = this.getSensorID(data[0]);
if (sensorID > 0)
{
int sensorPoz = getSensorPosInArray(sensorID);
byte sensorValue;
byte.TryParse(data[1], out sensorValue);
string text = "sensorID:" + sensorID + " sensorPoz:" + sensorPoz + " sensorValue:"
+ sensorValue;

Proiect de diploma Sistem de automatizare pentru casa inteligentă
64
this.sensors[sensorPoz].status = sensorValue;
string log = "Usa de la garaj" ;
if (sensorValue == 1) log += " a fost deschisa" ;
else if(sensorValue == 0) log += " a fost inchisa" ;
byte type = 0;
if (Regex.IsMatch(returnData, @"(\btype:\b)"))
{
byte.TryParse(data[3], out type);
text += " type:" + type;
switch (type)
{
case 0:
//by nothing
log += "";
break;
case 1:
//byte button
log += " de la buton" ;
break;
case 2:
//by telecomanda
log += " prin telecomanda" ;
break;
case 3:
//by remote command
log += " prin comanda externa – ethernet" ;
break;
}
}

insertSensorsDataToDB(sensorID, sensorValue, arduinoID);
updateValInSens orsTable(sensorID, sensorValue);
if(type != 0 ) insertLogIntoDB(log,arduinoID,sensorID,0);
SetText(text);
SetText(log);
}
else
{
string eroare = "senzor " + data[0] + " nerecunoscut!" ;
insertLogIntoDB(eroare, arduinoID, 0, 0);
SetText(eroare);
}

Această bucată de cod procesează mesajul de stare a garajului. Mesajul are formatul
Garaj:1;type:1;. Primul pas se taie mesajul după delimitatori într -un vector de cuvinte, se
determina ID -ul senzorului și dac ă exist ă, se procesează valoarea senzorului, se actualizează
valoarea curent ă a senzorului, se generează log -ul acțiunii în funcție de valoare și tip, 0 – s-a
închis, 1 – s-a deschis, tip:1 de la buton , 2 -de la telecomanda, 3 -extern.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
65
 Să comunice cu baza de date și să prelucreze/insereze/actualizeze date
Fluxul de date circula bidirecțional baza de date – aplicație server – montaje și invers, deci
absolut toate datele sistemului sunt în baza de date. Ace asta este arhiva întregului sistem. La
baza de date se conectează aplicația server și site -ul de g estiune. Pentru comunicarea cu baza
de date am folosit librăria MySql.Data.MySqlClient.[67 ]
Conectarea la baza de date:
private string DBconnect()
{
this.conn = new MySqlConnection ("server = " + this.config.dbServer + "; " + "user =
" + this.config.dbUsername + "; " + "database = " + this.config.dbDatabase + "; " +
"port = " + this.config.dbPort + "; " + "password = " + this.config.dbPassword + ";");
try
{
this.conn.Open();
this.conn.Close();
return "OK";
}
catch (Exception ex)
{
return ex.ToString();
}
}
Exemplu de încărcare a variabilelor din baza de date într -o structură C#
byte i = 0;
MySqlCommand commandNumArduino = conn.CreateCommand();
commandNumArduino.CommandText= "SELECT COUNT(id) FROM `arduino` WHERE `active` = '1'";
try
{
conn.Open();
int rowsCountArduino = Convert.ToInt32(commandNumArduino.ExecuteScalar());
this.arduinos = new Arduino[rowsCountArduino];
conn.Close();
MySqlCommand commandArduino = conn.CreateCommand();
commandArduino.CommandText= "SELECT id,name,description,active,IP FROM `arduino`
WHERE `active` = '1'" ;
conn.Open();
MySqlDataReader readerArduino = commandArduino.ExecuteReader();
i = 0;
while (readerArduino.Read())
{
this.arduinos[i].id = Convert.ToByte(readerArduino[ "id"]);
this.arduinos[i].name = readerArduino[ "name"].ToString();
this.arduinos[i].description = readerArduino[ "description" ].ToString();
this.arduinos[i].IP = readerArduino[ "IP"].ToString();
i++;
}
conn.Close();
}
catch (Exception ex)
{
SetText(ex.ToString());
conn.Close();
}
Se creează interogarea, se determina numărul de rânduri, se creează structura, se mai face o
interogare și se încarcă coloanele tabelului in variabilele structurii.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
66
4.2.5. Implementarea bazei de date
O componenta importanta a acestui proiect este baza de date, care stochează toate
informațiile colectate, toate variabilele importante și toate stările senzorilor. Entitățile care se
conectează la baza de date sun t site -ul și aplicația Server.
Ca aplicați e s-a folosit pachetul Winginx care conține tot ce ai nevoie pentru a implementa un
site cu baza de date în exploatare. Conține plachetele webserver – nginx 1.12.0 , interpretor php
– PHP 5.6.30 , aplicația baza de date – MySQL 5.7.18 și un manager de ba ză de date –
phpMyAdmin 4.7. S-a folosit un server MySql cu motor de stocare InnoDB care suport ă chei
primare, unice, străine, reparare tabele, optimizare si altele.
Baza de date proiectat ă conține 9 tabele: arduino, globals, keypad, logs, news, RFIDcards,
sensors, sensors_data, users, O parte din aceste tabele sunt pentru stocare informații utilizator
iar restu l pentru stocarea informațiilor.
1. Tabela „arduino”
Structura și numele coloanelor tabelului „arduino” sunt conform tab elul .10. Acest tabel
stochează fiecare bloc din acest proiect. Fiecare Montaj are alocat ă un IP și identificator unic.
Aceste date nu se modific ă pe parcursul funcționării sistemului.
Tabelul 10 Tabel structura „arduino”
Nume coloana Proprietate Tip Explicație
id Cheie primara
Auto incrementare int(11) identificatorul unic
name Unic varchar(30) numele blocului de automatizare
individual
description – varchar(100) o scurta descriere a blocului
active 1 sau 0 tinyint(1) daca este activ blocul sau nu
IP Unic varchar(15) adresa IPv4 a Blocului.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
67
Datele curente din acest tabel sunt conform t abelul 11
Tabelul 11 Tabel date curente „arduino”
id name description act IP
1 arduino_1_sec ard1_sis_usa_keypad_lcd_rfid_cu_int_et
h_servo_SIM_mega_v6 1 192.168.0.11
2 arduino_2_garaj ard2_sis_garaj_IR_sonic_motor_DHT_se
nz_usa_lum_ethernet_v6 1 192.168.0.12
3 arduino_3_cam23 ard3_sis_2cam_DHT_rez_senz_geam_le
d_buton_servo_ethernet_v6 1 192.168.0.13
4 arduino_4_wifi_bu
c ard4_sis_1cam_DHT_rez_senz_geam_le
d_but_servo_l um_esp8266_v6 1 192.168.0.14
5 arduino_5_cam1 ard5_sis_1cam_DHT_rez_senz_geam_le
d_but_servo_PIR_ENC28J60_v4 1 192.168.0.15
6 arduino_6_ext ard6_sis_curte_lum_pres_ploaie_hum_te
mp2_ENC_v3 1 192.168.0.16
7 localhost server/site 1 127.0.0.1
8 site_extern site extern 1 193.169.145.102

Cele 6 montaje și situl sunt trecute în acest tabel, aplicația server verific ă IP-ul și identific ă
montajul, situl folosind acest tabel.

2. Tabela „globals”
In acest tabel ( tabelul 12 ) se afl ă principalele variabile de stare a întregului sistem.
Tabelul 12 Tabela „globals” variabile stare
Nume coloana Tip date
id tinyint(4)
name varchar(30)
status varchar(10)
description varchar(50)

Proiect de diploma Sistem de automatizare pentru casa inteligentă
68
Conținutul tabelului „globals” este conform tab elul 13
Tabelul 13 Tabela „globals” conținut tabel
id name status description
1 TempSet 30 Temperatura setata
2 LumSet 50 Lumina setata
3 SisSec 0 Sistem Securitate
4 SisInc 1 Sistemului de încălzire
5 Keypad Arduino 1,2 Keypad Arduino
6 RFID Arduino 1 RFID Arduino

Cele 6 variabile sunt cruciale pentru întregul sistem, orice modificare eronat ă a lor
poate produce erori neașteptate în toate montajele.
„TempSet” – temperatura setat ă a sistemului de încălzire
„LumSet” – procentul de luminozitate
„SisSec” – starea sistemului de securitate
„SisInc” – starea sistemului de încălzire
„Keypad Arduino” – care montaje cer parola, este o protecție pentru cererile
frauduloase
„RFID Arduino” – asemănător ca mai sus, id -ul arduino -ului care are RFID

3. Tabela „keypad”

Tabelul „keypad” stochează parolele de acces a ocupanților ( tabelul . 14 ).
Tabelul 14 Tabela keypad
Nume
coloana Proprietate Tip Explicație
id Cheie primara
Auto incrementare int(11) identificatorul unic
name Unic varchar(30) numele
password Unic Varchar(20) parola
active 1 sau 0 tinyint(1) daca este activ blocul sau nu
description – varchar(100) o scurta descriere a blocului

Proiect de diploma Sistem de automatizare pentru casa inteligentă
69
4. Tabela „RFIDcards”
Tabela „RFIDcards” stochează datele cardurilor de acces ale ocupanților.

Formatul tabelului: este conform tab elul 15
Tabelul 15 Tabela „RFIDcards” format
Nume
coloana Proprietate Tip Explicație
id Cheie primara
Auto incrementare int(11) identificatorul unic
name Unic varchar(30) numele
data Unic Varchar(15) parola
active 1 sau 0 tinyint(1) daca este activ blocul sau nu
userid Cheie străină din
tabela users int(11) ID-ul utilizatorului
description – varchar(30) o scurta descriere a blocului

Coloana „data” stochează un sir de 4 numere a un byte (0 -255).
Conținutul tabelului: este conform tab elul .16
Tabelul 16 Tabela „RFIDcards” data
id name data active userid description
1 RFIDcard1 022 007 090 002 1 2 card alb 1
2 RFIDcard2 222 200 206 165 1 2 card alb 2
3 RFIDcard3 213 231 405 000 1 1 dongle1
4 RFIDcard4 021 147 205 101 1 1 dongle2

Proiect de diploma Sistem de automatizare pentru casa inteligentă
70
5. Tabela „sensors”
In acest tabel a „sensors” ( tabelul 17 ) se afl ă toți senzorii folosiți în acest proiect. Așa
aplicația server știe c ă un anumit senzor de la ce montaj aparține sau dac ă e activ sau nu și
dacă datele acelui senzor au venit de la montajul corect.
Tabelul 17 Tabela „sensors”
Nume coloana Proprietate Tip date Explicație
id Cheie primara
Auto incrementare int(11) Identificatorul unic
name Unic varchar(20) Numele senzorului
status – tinyint(1) Starea sau valoarea curenta a
senzorului
arduinoid Cheie străină din
tabela arduino int(11) ID-ul arduino -ului căruia aparține
command 1 sau 0 tinyint(1) Daca elementul se poate comanda
active 1 sau 0 tinyint(1) Daca senzorul este activ
description – varchar(100) O scurta descriere a senzorului,
plasarea lui

Datele din tabelul „sensors” conform tab elul .18
Tabelul 18 Tabela „sensors” date
id name status arduinoid command active description
0 None 0 6 0 0 NULL
1 lux1 0 4 0 1 NULL
2 lux2 127 6 0 1 NULL
10 Temp1 0 4 0 1 NULL
11 Temp2 0 5 0 1 NULL
12 Temp3 0 3 0 1 NULL
13 Temp4 0 3 0 1 NULL
14 Temp5 0 2 0 1 NULL
15 Temp6 25 6 0 1 NULL
16 Hum6 52 6 0 1 NULL
19 Hum1 0 4 0 1 NULL
20 Hum2 0 5 0 1 NULL
21 Hum3 0 3 0 1 NULL
22 Hum4 0 3 0 1 NULL
23 Hum5 0 2 0 1 NULL
24 Geam1 0 4 1 1 Bucătărie
25 Geam2 1 5 1 1 Camera 1
26 Geam3 1 3 1 1 Camera 2
27 Geam4 1 3 1 1 Camera 3

Proiect de diploma Sistem de automatizare pentru casa inteligentă
71
28 Usa1 1 1 1 1 NULL
29 Usa2 0 2 0 1 NULL
30 Usa3 0 5 0 1 NULL
32 Lum1 0 4 1 1 Bucătărie
33 Lum2 0 5 1 1 Camera 1
34 Lum3 1 3 1 1 Camera 2
35 Lum4 0 3 1 1 Camera 3
36 Lum5 0 5 0 1 baie
37 Lum6 0 6 1 1 Garaj
38 Lum7 0 1 0 1 NULL
39 Lum8 0 5 0 1 NULL
40 Lum9 0 1 0 1 fata ușii
41 pres 127 6 0 1 NULL
42 Vremea 5 6 0 1 NULL
43 lpg 0 4 0 1 NULL
44 co 0 4 0 1 NULL
45 smoke 0 4 0 1 NULL
46 auto 0 2 0 1 Prezenta mașină in garaj
47 Garaj 0 2 1 1 Garaj
48 Ploaie 3 6 0 1 NULL
49 Sol 0 6 0 1 NULL

6. Tabela „senzors_data”
In Tabela „senzors_data” tabelul 19 este stocat valorile tuturor senzorilor si timpul când
s-a raportat acesta valoare.
Tabelul 19 Tabela „senzors_data”
Nume coloana Proprietate Tip date Explicație
id Cheie primara
Auto incrementare int(11) Identificatorul unic
sensorid Cheie străină din
tabela sensors
int(11) ID-ul senzorului
arduinoid Cheie străină din
tabela arduino int(11) ID-ul arduino -ului căruia aparține
value – float Valoarea raportata a senzorului
time – timestamp Timpul când s -a făcut inserarea

Din acest tabel se pot afișa stările senzorilor la anumite momente de timp sau se pot trasa
grafice cu evoluția stării sau valorii.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
72
7. Tabela „logs”
In acest tabel ( tabelul 20 ) se stochează toate log -urile, alarmele, notificările sau erorile
generate de la întregul sistem. Aceste mesaje sunt exclusiv destinate pentru utilizatorul uman,
mesajele sunt propoziții care transmit exact problema semnalata.
Formatul tabelului:

Tabelul 20 Tabela „logs”
Nume
coloana Proprietate Tip date Explicație
id Cheie primara
Auto incrementare int(11) Identificatorul unic
arduinoid Cheie străina din
tabela arduino int(11) ID-ul arduino -ului căruia
aparține
sensorid Cheie străină din
tabela sensors int(11) ID-ul senzorului care a generat
log-ul
log – varchar(200) Mesajul propriu zis
type – tinyint(1) Tipul înregistrării
datetime – timestamp Data si timpul înregistrării

Exemplu de înregistrare din tabelul „logs”
Tabelul 21 Tabela „logs” exemplu înregistrare
id arduinoid sensorid log type datetime
2613 2 47 Ușa de la garaj a fost deschisa
de la buton 0 2017 -05-17 01:20:41
2612 2 37 Lumina din garaj s -a stins 0 2017 -05-17 01:20:38
2611 3 35 Lumina camera 3 s -a stins 0 2017 -05-17 01:20:34
2610 3 34 Lumina camera 2 s -a stins 0 2017 -05-17 1:20:28

Proiect de diploma Sistem de automatizare pentru casa inteligentă
73
Tabela „news”
Tabela „news” stochează știrile care se afișează pe site -ul de gestionare ( tabelul 2 2 ).
Formatul tabelului:
Tabelul 2 2 Tabela „news”
Nume coloana Proprietate Tip Explicație
id Cheie primara
Auto incrementare int(11) identificatorul unic
name – varchar(30) Titlul știrei
news – varchar( 255) știrea
time – timestamp Timpul postării

8. Tabela „users”
Tabela „users” stochează datele utilizatorilor sitului de gestionare ( tabelul 2 3 ).
Tabelul 2 3 Tabela „users”
Nume coloana Proprietate Tip date Explicație
id Cheie primara
Auto incrementare int(11) Identificatorul unic
username Cheie unica varchar(20) Numele de logare
password – varchar(64 ) Parola utilizatorului criptat
salt – varchar(32 ) Adaugă un nivel suplimentar de
criptare
name – varchar(50 ) Numele complet al utilizatorului
joined – datetime Data si timpul înregistrării
group – int(11) Grupul de utilizator

Proiect de diploma Sistem de automatizare pentru casa inteligentă
74
4.2.6. Implementare site
Acest site a fost implementat cu scopul de a da o interfață utilizatorului către casa
inteligentă. În implementarea acestui proiect s -au folosit tehnologiile / limbajele HTML, CSS,
PHP, JavaScript, MySql.
Pentru interfața vizuală a sitului s -a folosit un șablon baza de librăria Bootstrap. Pentru logare
și procesări s -a folosit PHP OOP prin care s -au creat clase specifice pentru fiecare modul din
site. Pentru conectarea la baza de date și interogare s -a folosit extensia PHP PDO. S -au folosit
tehnologiile si librari predefinite Javascript, Ajax, jquery pentru aducere de date în anumite
zone a site -ului fără a reîncărca pagina cum ar fi starea geamurilor.
Principale funcții ale sitului:
 Logare / înregistrare utilizator
 Vizuale parametrii stare
 Vizualizare stări elemente din casa
 Vizualizare știri
 Utilizatorul poate da comenzi
 Vizualizare date senzori
 Vizualizare log -uri sistem
 Vizualizare grafice

Proiect de diploma Sistem de automatizare pentru casa inteligentă
75
1. Pagina Index
Utilizatorul poate vizualiza și schimba parametr ii, poate vizualiza starea stărilor
geamurilor, ușilor și a luminilor, citi ultimele titluri de știri Fig.4.22.

Fig.4.22. Pagina Index site
Scriptul care actualizează starea casei
Se face o cerere Ajax către un fișier php care returnează un vector in format json . Se parcurge
vectorul , unde este valoarea 1 se pune buton albastru iar unde este 0 buton roșu. Acesta funcție
rulează ciclic la fiecare secunda.
<script type="text/javascript" >
function refresh()
{
$.ajax({
type: 'GET',
url: 'ajax_check.php' ,
data: '',
dataType : 'json',
cache: false,
success: function (data)
{
for (id in data)
{
if(data[id] == 1)
{
document .getElementById ("buton"+id).innerHTML = "<p><button
type='button' class='btn btn -danger btn -xs' data -toggle='tooltip' data –
placement='top' title='" +on[id]+"'><b>"+on[id]+"</b></button></p>" ;
}
else if( data[id] == 0)

Proiect de diploma Sistem de automatizare pentru casa inteligentă
76
{
document .getElementById ("buton"+id).innerHTML = "<p><button
type='button' class='btn btn -primary btn -xs' data -toggle='tooltip' data –
placement='top' title='" +on[id]+"'><b>"+off[id]+"</b></button></p>" ;
}
}
}

});
setTimeout ("refresh()",1000);
}
refresh();
</script>

Scriptul php:
<?php
require_once 'core/init.php' ;
$user = new User();
if($user->isLoggedIn())
{
$sensors = array();
$DB = DB::getInstance ();
$data = $DB->query("SELECT * FROM sensors WHERE active = '1' AND
command = '1'" );
foreach ($data->results() as $row )
{
$sensors [$row->id] = $row->status;
}
Print(json_encode ($sensors ));
}
else Print "Not logged!" ;
?>

Scriptul php verifică dacă utilizatorul este logat apoi interoghează baza de date și selectează
informațiile de stare a senzorilor și convertește în format json.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
77
2. Pagina știri
Afișează știrile de interes într -un format atrăgător. ( Fig.4.23. )

Fig.4.23. Pagina stiri site
Codul clasei care generează pagina
<?php
class News
{
private $news;
public function __construct()
{
$db = DB::getInstance ();
$data = $db->query("SELECT * FROM news ORDER BY id DESC" );
$this->news = $data->results();
}
public function ShowNews()
{
$i = 0;
foreach ($this->news as $row)
{
if($i%2===1)
{
$side = 'class="timeline -inverted"' ;
$icon = 'fa fa-credit-card';// fa fa -bomb fa fa -save
$color = '';
}
else
{
$side = '';
$icon = 'fa fa-check';
$color = 'warning' ;
}

?>
<li <?=$side?>>
<div id="<?=$row->id?>" class="timeline -badge <?=$color?>"><i
class="<?=$icon?>"></i>
</div>

Proiect de diploma Sistem de automatizare pentru casa inteligentă
78
<div class="timeline -panel">
<div class="timeline -heading" >
<h4 class="timeline -title"><?=$row->name?><small
class="pull-right text -muted"><i class="fa fa-clock-o"></i> <?=$row-
>news?></small></h4>
</div>
<div class="timeline -body">
<p> <?=$row->time?> </p>
</div>
</div>
</li>
<?php
$i++;
}
}
La initializare prin intermediul metodei construct se încarcă în clasa conținutul știrilor din
baza de date. Când se apelează metoda „ShowNews” se afișează ca mai sus in mod cronologie
știrile.
3. Pagina Comenzi
Aici se dau comenzi direct la server si se vede starea senzorilor in timp real ( fig 4.24 ) .

Fig.4.24. Pagina comenzi

Proiect de diploma Sistem de automatizare pentru casa inteligentă
79
Funcția care actualizează starea stărilor la elemente
<script type="text/javascript" >
function refresh()
{
$.ajax({
type: 'GET',
url: 'ajax_check.php' ,
data: '',
dataType : 'json',
cache: false,
success: function (data)
{
var str = "";
for (id in data)
{
if(data[id] == 1)
{
toggleOn (id);
}
else if( data[id] == 0)
{
toggleOff (id);
}
}
},
});
setTimeout ("refresh()",1000);
}
refresh();
</script>

Scriptul care trimite comanda către server
<script type="text/javascript" >
function sendMessage (id,name)
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function ()
{
if (this.readyState == 4 && this.status == 200)
{
document .getElementById ("demo").innerHTML =
this.responseText ;
}
};

xhttp.open("POST", "ajax.php" , true);
xhttp.setRequestHeader ("Content -type", "application/x -www-form-
urlencoded" );
xhttp.send("id="+id+"&name=" +name);
}
</script>

Proiect de diploma Sistem de automatizare pentru casa inteligentă
80
Butonul:
<div class="col-lg-3 col-md-4 col-xs-12">
<div class="panel panel -default" >
<div class="panel-heading" >
<p class='text-center'> <strong><?=$row->name ?> &nbsp;
(<?=$descr?>) </strong></p>
</div>
<div class="panel-body">
<p class='text-center'> <input type="checkbox" id="toggle-
trigger<?=$row->id?>" data-toggle="toggle" data-on="<?=$on?>" data-
off="<?=$off?>" data-width="90%" disabled > </p>
<p class='text-center'> <button type='button'
onclick= "sendMessage ('<?=$row->id?>','<?=$row->name?>')" class='btn btn –
success buton1' width="80%">Toggle</button>

</div>
</div>

4. Pagina de log -uri
Pagina afișează toate evenimentele care sunt înregistrate de sistem in baza de date (Fig.4.25. )
Se poate sorta după senzor, microcontroler, tip, data sau chiar cuvinte cheie din mesaje

Fig.4.25. Pagina de log -uri
Generarea tabelului

<div class="table-responsive" >
<table class="table table -striped table -bordered table -hover">
<thead>
<tr>
<th>ID</th>
<th>Arduino</th>
<th>Sensor</th>
<th>Log</th>
<th>Tip</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<?php

Proiect de diploma Sistem de automatizare pentru casa inteligentă
81
foreach ($table_data as $row )
{
print "<tr><td class='text -center'>" .$row->id . "</td>";
print "<td>".$row->arduino . "</td>";
print "<td>".$row->sensor . "</td>";
print "<td>".$row->log ."</td>";
print "<td>".$row->type ."</td>";
print "<td>".$row->datetime ."</td></tr>" ;
}
?>
</tbody>
</table>

Procesarea căutării:
if(isset($_GET) && isset($_GET['sensor' ])&& isset($_GET['arduino' ])&&
isset($_GET['datetimepicker6' ])&& isset($_GET['datetimepicker7' ]) &&
isset($_GET['log']) && isset($_GET['type']))
{
print("<br>a intrat<br>" );
$where="";
$values = array();
$sensorid = (int)$_GET['sensor' ];
$arduinoid = (int) $_GET['arduino' ];
$datetimepicker6 = (string) $_GET['datetimepicker6' ];
$datetimepicker7 = (string) $_GET['datetimepicker7' ];
$log = (string) $_GET['log'];
$type = (int)$_GET['type'];
if($log != "")
{
$where .=" AND logs.log LIKE ? " ;
array_push ($values, '%'.$log.'%');
}
if($arduinoid > 0)
{
$where .=" AND logs.arduinoid = ? " ;
array_push ($values, $arduinoid );
}
if($sensorid > 0)
{
$where .= " AND logs.sensorid = ? ";
array_push ($values, $sensorid );
}
if($type > 0)
{
$where .= " AND logs.type = ? " ;
array_push ($values, $type);
}
if($datetimepicker6 != "" && $datetimepicker7 != "")
{
$where .= " AND logs.datetime BETWEEN ? AND ? " ;
array_push ($values, $datetimepicker6 ,$datetimepicker7 );
}
var_dump ($where);
var_dump ($values);
$DB = DB::getInstance ();
$data = $DB->query("SELECT logs.id AS id,logs.log, logs.type,
logs.datetime , arduino.name AS arduino, sensors.name AS sensor FROM logs
JOIN arduino JOIN sensors WHERE logs.arduinoid = arduino.id AND
logs.sensorid = sensors.id " .$where." ORDER BY logs.id DESC" ,$values);
$table_data = $data->results();
}

Proiect de diploma Sistem de automatizare pentru casa inteligentă
82
5. Date senzori
Realizat asemănător ca pagina de mai sus dar acesta afișează datele senzorilor. ( Fig.4.26. )

Fig.4.26. Date senzori
6. Grafice
Pagina generează grafice la diferite elemente din casa cum ar fi variația temperaturii sau
durata de funcționare a luminilor (Fig.4.27. , Fig.4.2 8.,)

Fig.4.27. Grafice lumini

Proiect de diploma Sistem de automatizare pentru casa inteligentă
83

Fig.4.28. Evoluția senzorilor

Programul php care aduce datele din baza de date
<?php
require_once 'core/init.php' ;
$user = new User();
if($user->isLoggedIn())
{
$sensor_data = array();
if(isset($_POST) && isset($_POST['sensor' ])&&
isset($_POST['datetime1' ])&& isset($_POST['datetime2' ]))
{
//print("<br>a intrat<br>");
$where = "";
$values = array();
$sensorid = (int)$_POST['sensor' ];
$datetime1 = (string) $_POST['datetime1' ];
$datetime2 = (string) $_POST['datetime2' ];
if ($sensorid > 0) {
$where .= " AND sensors_data.sensorid = ? " ;
array_push ($values, $sensorid );
}
if ($datetime1 != "" && $datetime2 != "") {
$where .= " AND sensors_data.time BETWEEN ? AND ? " ;
array_push ($values, $datetime1 , $datetime2 );
}
$DB = DB::getInstance ();
$data = $DB->query("SELECT sensors_data.value AS value,
sensors_data.time AS time F ROM sensors_data JOIN sensors WHERE
sensors_data.sensorid = sensors.id " . $where . " ORDER BY sensors_data.id
ASC", $values);
foreach ($data->results() as $row)
{
$sensor_data [] = $row;
}
Print(json_encode ($sensor_data ));
}
}
else Print "Not logged!" ;
?>

Proiect de diploma Sistem de automatizare pentru casa inteligentă
84
Scriptul javascript + ajax care aduce datele în pagina:
$("#form_graph" ).submit(function (event)
{
event.preventDefault();
$.ajax({
type: 'POST',
url: 'get_data.php' ,
data: { sensor: $('#sensor' ).val(),datetime1 :
$('#datetime1' ).val(),datetime2 : $('#datetime2' ).val() },
dataType : 'json',
cache: false,
success: function (data)
{
var arr = [];
for (var i in data)
{
arr.push(data[i]);
}
console.debug(arr);
document .getElementById ("morris-line-chart").innerHTML ="";
$.fn.plot1(arr);
}
});
});

Funcția care desenează graficul:
<script type="text/javascript" >
$.fn.plot1 = function (arr){
Morris.Line({
element: 'morris-line-chart',
data: arr,
xkey: ['time'],
ykeys: ['value'],
labels: ['value'],
pointSize : 2,
hideHover : 'auto',
resize: true
});
};
</script>

Proiect de diploma Sistem de automatizare pentru casa inteligentă
85
7. Conectarea la baza de date și logare a utlizatorului
Clasa PHP care realizează obiectul DB
<?php
class DB
{
private static $_instance = null;
private $_pdo;
private $_query;
private $_error = false;
private $_result ;
private $_count = 0;
private function __construct()
{
try
{
$this->_pdo = new PDO("mysql:host=" .Config:: get('mysql/host' ).";
dbname=" .Config:: get('mysql/db' ),Config:: get('mysql/username' ),Config:: get(
'mysql/password' ));
}
catch (PDOException $e)
{
die($e->getMessage());
}
}
public static function getInstance()
{
if(!isset(self::$_instance ))
{
self::$_instance = new DB();
}
return self ::$_instance ;
}
public function query($sql, $params = array())
{
$this->_error = false;
//print_r($sql).'<br>';
//print_r($params).'<br>';
if($this->_query = $this->_pdo->prepare( $sql))
{
$x = 1;
if(count($params))
{
foreach ($params as $param)
{
$this->_query->bindValue( $x,"$param");
//echo 'param'.$x.'='.$param.'<br>';
$x++;
}
}
if($this->_query->execute())
{
$this->_results = $this->_query->fetchAll(PDO:: FETCH_OBJ );
$this->_count = $this->_query->rowCount();
}
else
{
$this->_error = true;
}
}
return $this;
}

Proiect de diploma Sistem de automatizare pentru casa inteligentă
86
Metoda de logare din clasa User:
public function login($username = null,$password = null, $remember = false)
{
if(!$username && !$password && $this->exists())
{
Session:: put($this->_sessionName ,$this->data()->id);
}
else
{
$user = $this->find($username );
if($user)
{
if($this->data()->password === Hash:: make($password ,$this->data()-
>salt) )
{
Session:: put($this->_sessionName ,$this->data()->id);
if($remember )
{
$hash = Hash:: unique();
$hashCheck = $this->_db->get ('users_session' , array
('user_id' , '=', $this->data()->id));
if (!$hashCheck ->count())
{
$this->_db->insert( 'users_session' , array
(
'user_id' => $this->data()->id,
'hash' => $hash
));
}
else
{
$hash = $hashCheck ->first() ->hash;
}
Cookie:: put($this->_cookieName , $hash, Config:: get
('remember/cookie_expiry' ));
}
return true ;
}//if
}//user
}//else
return false ;
}

Proiect de diploma Sistem de automatizare pentru casa inteligentă
87
4.3. Componentele folosite
4.3.1. Arduino Mega 2560 [33]

Fig.4.2 9. Arduino Mega 2560 [63]
Pentru a face legătura dintre hardware și software s -a folosit o placă de dezvoltare
Arduino Mega 2560 . Această placă este bazată pe microcontrolere , ce sunt ușor programabile
printr -o interfață și un limbaj special creat de către Arduino. Scopul platformei este de a pune
la dispoziție utilizatorilor pini de intrare/ieșire (digitali și analogici) care pot fi interfațați cu o
gamă variată de alte plăcuțe, numite shield -uri.
S-a ales microcontrolerul Arduino deoarece acesta se p oate găsi la un preț accesibil,
fiind compatibil cu o multitudine de shield -uri și senzori acesta pune la dispoziție și o mulțime
de bi blioteci . ATmega2560 are 54 de pini de intrare / ieșire digitali (dintre care 14 pot fi utilizați
ca ieșiri PWM), 16 intrări analogice, 4 portu ri seriale hardware , un oscilator cu cristal de 16
MHz, o conexiune USB ( Fig.4.2 9. ) .
Pinii de alimentare sunt următorii:
• VIN – Reprezentând tensiunea de intrare la placa Arduino când folosește o sursă de alimentare
externă ,tot de aici se poate alimenta cu aceea și tensiune orice alt component.
• 5V – poate fi folosit ca alimentare microcontroler cu 5V sau dac ă este alimentat de la VIN
,furnizeaz ă 5V pentru alte componente.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
88
Fiecare dintre cei 54 de pinii digital i de pe ATMega poate fi utilizat ca intrare sau ieșire,
folosind funcțiile: pinMode (), digitalWrite () și digitalRead ().Fiecare PIN functioneaz ă pe 5V
și poate oferi sau primi un maxim de 20 mA.
Unii pini au func ți speciale :
Serial: 0 (RX) și 1 (TX); Serial 1: 19 (RX) și 18 (TX); Serial 2: 17 (RX) și 16 (TX); Serial 3:
15 (RX) și14 (TX). Este folosit pentru a primi (RX) și transmite date seriale (TX) TT L. Pinii 0
și 1 sunt folosi ți pentru comunicarea serială prin USB dintre placa arduino ATMega și PC,
Întreruperile externe: 2 (0 întrerupere), 3 (întrerupe 1), 18 (întrerup 5), 19 (întrerup 4), 20
(întrerup 3), și 21(Întrerupe 2). Acești pini pot fi confi gurați pentru a declanșa o întrerupere la
o valoare mică, front crescător sau descrescător.
PWM: 0 la 13, 44 la 46: Furnizează ieșiri PWM de 8 biți, pentru comanda acestora se poate
folosi funcția analogWrite ().
I²C: 20 (SDA) și 21 (SCL). ATmega2560 folosește I2C (TWI), software -ul Arduino include o
bibliotecă Wire.h pentru a simplifica utilizarea magistralei I ²C .
ATMega2560 are 16 intrări analogice, fiecare având o rezoluție de 10 biți (adică 1024 valori
diferite). Placa dispune și de un pin de rese t care e folosit pentru a reseta microcontroller -ul.
52(SCK),50(MISO),51(MOSI),53(SS), suportand protocolul SPI() care permite comunicarea
cu numerioase elemente care trasmit o cantitate mare de informatie. Protocolul SPI este o
magistrala de comunicatie m aster – slave la care pot comunica mai multe dispozitive.
Microcontrolerul dispune de 6 timere, timer1 , timer 3, timer 4 și timer 5 pe 16 biti și timer0 și
timer 2 pe 8 biti.
Tabelul 24 Specificații tehnice Arduino Mega 2560
Microcontroler ATmega2560
Tensiunea de operare 5V
Tensiunea de alimentare(recomandata) 7-12V
Tensiunea de alimentare(Limita) 6-20V
Pini intrare/ieșire digitali 54 (din care 15 pini PWM)
Pini analogici de intrare 16
Curentul per pin I/O 20 mA
Curentul maxim pe pinul 3.3V 50 m A
Memoria flash 256 KB din care 8 KB este folosit de bootloader
SRAM 8 KB
EEPROM 4 KB
Frecventa de lucru 16 MHz
LED_BUILTIN 13
Lungime 101.52 mm
Lățime 53.3 mm
Greutate 37 g

Proiect de diploma Sistem de automatizare pentru casa inteligentă
89

4.3.2. Arduino Uno [32][62]

Fig.4.30. Arduino Uno [62]
Arduino UNO este o platform ă de procesare open -source, bazat ă pe software și hardware
flexibil și simplu de folosit. Const ruită intr-o platforma de mici dimensiuni (6.8 cm / 5.3 cm –
în cea mai des intalnit ă variant ă) construit ă in jurul unui procesor de semnal și este capabil ă de
a prelua date din mediul înconjurator printr -o serie de senzori și de a efectua ac țiuni asupra
mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive
mecanice. Procesorul este capabil s ă ruleze cod scris într-un limbaj de programare care este
foarte similar cu limbajul C++.
Acest microcontroler este o versiune mai redus ă ca cel specificat mai sus, are memorie mai
puțină și un numar mult mai mic de pini digitali și analogici, este baza t pe microprocesorul
ATm ega328P . ATmega328P are 14 de pini de intrare / ieșire digitali (dintre care 6 pot fi utilizați
ca ieșiri PWM), 6 intrări analogice, 1 port serial hardware, un oscilator cu cristal de 16 MHz, o
conexiune USB (Fig.4.30. ).
Pinii de alimentare sunt următorii:
• VIN – Reprezentând tensiunea de intrare la placa Arduino când folosește o sursă de alimentare
externă ,tot de aici se poate alimenta cu aceeasi tensiune orice alt component.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
90
• 5V – poate fi folosit ca alimentare microcontroler cu 5V sau daca e ste alimentat de la VIN
,furnizeaz ă 5V pentru alte componente.
Fiecare dintre cei 14 de pinii digital i de pe ATMega poate fi utilizat ca intrare sau ieșire,
folosind funcțiile: pinMode (), digitalWrite () și digitalRead ().Fiecare PIN functioneaza pe 5V
și poate oferi sau primi un maxim de 20 mA.
Unii pini au func ții speciale :
Pinii 0 și 1 sunt folosiți pentru comunicarea serială prin USB dintre placa A rduino ATmega și
PC.
Întreruperile externe: 2 (0 întrerupere), 3 (întrerupe 1), Acești pini pot fi configurați pentru a
declanșa o întrerupere la o valoare mică, front crescător sau descrescător.
PWM: 3, 5, 6, 9, 10, 11 : Furnizează ieșiri PWM de 8 biți, pentru comanda acestora se poate
folosi funcția analogWrite ().
I2C: A4 (SDA) și A5 (SCL). ATmega328P folosește I2C (TWI), software -ul Arduino include
o bibliotecă Wire.h pentru a simplifica utilizarea magistralei I2C
ATmega328P are 6 intrări analogice, fiecare având o rezoluție de 10 biți (adică 1024 valori
diferite). Placa dispune și de un pin de reset care e folosit pentru a reseta microcontroller -ul.
D13(SCK) ,D12 (MISO) ,D11 (MOSI) ,D10 (SS), suportand protocolul SPI() care permite
comunicarea cu numerioase elemente care trasmit o cantitate mare de informatie. Protocolul
SPI este o magistrala d e comunicatie master – slave la care pot comunica mai multe dispozitive.
Tabelul 25 Specificații tehnice Arduino UNO R3
Arduino Uno R3
Microcontrol er ATmega328P
Tensiunea nominala de lucru 5 V
Tensiune de intrare recomandata 7-12 V
Tensiune de intrare limita 6-20 V
Curent 3,3 V 50mA
Curent per pin I/O 20mA
Memorie Flash 32KB
SPAM 2KB
Pini digitali 14 (6 PWN output )
Pini analogici 6
Dimensiuni 68,6*53,4 mm

Proiect de diploma Sistem de automatizare pentru casa inteligentă
91
4.3.3. Arduino Nano [34]

Fig.4.31. Arduino Nano [61]
Arduino Nano este un microcontroler cu exact acelasi specificatii ca Arduino Uno descris
mai sus dar vine intr -un pachet mult mai mic.
4.3.4. WeMos D1 ESP -8266 [35]
Placă de Dezvol tare Wemos D1 R1 este un microcontroler bazat pe microprocesorul ESP-
8266EX , are acelasi format ca Arduino Uno cu num ăr de pini asem ănatori și acel eași
protocole cunoscute. Cel mai important ca este compatibil cu softul celor de la arduino și
compatibil și o parte din librariile dedicate microprocesoarelor Arduino.
ESP8266 are 11 de pini de intrare / ieșire digitali (dintre care toț pot fi utilizați ca ieșiri
PWM), 1 intrare analogică, 1 port serial hardware, un oscilator cu cristal de 80MHz/160MHz
și o conexiune USB.
Pinii de alimentar e sunt următorii:
• VIN – Reprezentând tensiunea de intrare la placa Arduino când folosește o sursă de
alimentare externă ,tot de aici se poate alimenta cu aceeasi tensiune orice alt component.
• 5V – poate fi folosit ca alimentare microcontroler cu 5V sau daca este alimentat de la
VIN ,furnizeaza 5V pentru alte componente.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
92
Fiecare dintre cei 11 de pinii digitali poate fi utilizat ca intrare sau ieșire, folosind
funcțiile: pinMode (), digitalWrite () și digitalRead (). Fiecare PIN functioneaza pe 3.3V si
poate oferi sau de a primi un maxim de 20 mA.
Toti 11 pini suportă intrerupere, PWM , I2C, OneWire cu exceptia lui D0.
Pinii TX și RX sunt folosiți pentru comunicarea serială prin USB dintre placa și PC.
Întreruperile externe pot fi configurate pentru a dec lanșa o întrerupere la o valoare mică, front
crescător sau descrescător.
Toti 10 furnizează ieșiri PWM de 8 biți, pentru comanda acestora se poate folosi funcția
analogWrite ().
I2C:D4 (SDA) și D3 (SCL).protocolul I2C software -ul Arduino include o bibliot ecă Wire.h
pentru a simplifica utilizarea magistralei I2C
ESP8266 are o intrăre analogică, având o rezoluție de 10 biți (adică 1024 valori diferite) cu o
tensiune maxim 3,2V .Placa dispune și de un pin de reset care e folosit pentru a reseta
microcontroller -ul.
D5(SCK),D6(MISO),D7(MOSI),D10(SS), suport ând protocolul SPI() care permite
comunicarea cu numerioase elemente care trasmit o cantitate mare de informa ție. Protocolul
SPI este o magistral ă de comunicatie master – slave la care pot comuni ca mai multe dispozitive.

Tabelul 26 Specificații WeMos D1 ESP -8266
WeMos D1 ESP -8266
Microcontroler ESP-8266EX
Tensiunea nominala de lucru 3.3V
Frecvență 80MHz/160MHz
Tensiune de intrare limita 6-20 V
Curent 3,3 V 50mA
Curent per pin I/O 20mA
Memorie Flash 4Mb
SPAM 32KB
Pini digitali 11
Pini analogici 1
Dimensiuni 68,6*53,4 mm

Proiect de diploma Sistem de automatizare pentru casa inteligentă
93
Tabelul 27 Corespondenta pini WeMos D1 ESP -8266
WeMos D1 R1 Pin Function ESp-8266 Pin
D0 RX GPIO3
D1 TX GPIO1
D2 IO GPIO16
D3 IO,SCL GPIO5
D4 IO,SDA GPIO4
D5 IO,SCK GPIO14
D6 IO,MISO GPIO12
D7 IO,MOSI GPIO13
D8 IO,Pull-up GPIO0
D9 IO,Pull-up,LED GPIO2
D10 IO,Pull-down,SS GPIO15
A0 Analog Input A0

4.3.5. Ethernet shield W5100 [37]
În acest proiect s-a utilizat un shield bazat pe chipul W5100 (Figura) care utilizează
tehnologia CMOS 0.18 μm și are 16Kbytes de memorie interna pentru stocarea buffer -ului
TX/RX pentru a furniza o conexiune ethernet 10Mb/100Mb. Acest modul se poate conecta la
internet fără un sistem de operare. Este compatibil cu standardul IEEE802.3/u, protocolul
TCP/IP și adresarea MAC. Toate aceste facilitați fac modulul ideal pentru integrarea în
sistemele încorporate. Acest modul este un circuit ce face legătura între internet și circ uitele
electronice. Plăcuța este proiectată astfel încât se potrivește perfect cu Arduino Uno .
Shield -ul este ideal pentru proiectele ce au legătură cu noul concept IoT. Modulul dispune și de
un slot pentru card de memorie Micro SD.
Shield -ul dispune și de o tehnologie cu ajutorul căreia se poate alimenta din tensiunea de
pe cablul de internet. Are viteza de conexiune de 10/100Mbps și comunică cu Arduino Uno
prin protocolul SPI(Serial Peripheral Interface ) .
Protocoalele suportate de W5100 TCP
 Transmission Control protocol (TCP)
 User Datagram Protocol (UDP)
 Internet Protocol Version 4 (IPV4)
 Internet Control Message Protocol (ICMP)
 Address Resolution Protocol (ARP)
 Internet Group Massaging Protocol (IGMP)
 Point -to-Point Protocol over Ethernet (PPPoE).

Proiect de diploma Sistem de automatizare pentru casa inteligentă
94

Fig.4.32 Schema bloc de conectare a modulului W5100
In Fig.4.32 arata cum pini MISO, SCK, Reset, GND, VCC, and MOSI sunt conecta ți la
header ICSP/ISP de pe Arduino Uno sau Mega. Cum se vede pinii 9,33,34 de pe Mega sunt
conectati la pinii ISP.
4.3.6. Modul ethernet ENC28J60 [38]
Un modul folosit pentru a conecta Arduino la o re țea fix ă (ethernet), bazat pe chipul
ENC28J60.Acest modul e bazat pe circuitul integrat ENC28J60 care conține tot ce este necesar
pentru adăugarea unei interfețe ethernet la proiectele tale.
Comunicarea se realizeaz ă prin SPI.Unele au stabilizator de 3.3V, altele nu.
Sunt dou ă librarii pe care s-au testat cu acesta și functioneaz ă:ethercard și UIPEthernet
Cum se conecteaza la interfata SPI a Arduino Uno
SO -> Arduino pin 12
SI (ST) -> Arduino pin 11
SCK -> Arduino pin 13
CS -> Arduino pin 8
5V -> Arduino 5V pin
GND -> Arduino Gnd pin

Proiect de diploma Sistem de automatizare pentru casa inteligentă
95
Tabelul 28 Specificații tehnice ethernet ENC28J60
Modul ethernet interfata SPI ENC28J60
Tensiunea nominala de lucru 3.14-3,45V
Buffer 8K
Viteza ethernet 10Mb
Curent 25MHz cu prescalar
Comunicare SPI
Consum 250mA
Standardul IEEE 802.3;
Dimensiuni 56mm x 34mm.
Mode de operare full ș i half – duplex

Modulul de Ethernet cu circuit integrat ENC28J60 este util în proiecte de electronică ce se
mulează pe conceptul de IoT.
Modulul este unul de dimensiuni mici și este util pentru a controla diferite circuite cu ajutorul
internetului. Poate fi folosit împreună cu microcontrollere sau plăci de dezvoltare Arduino.

4.3.7. RFID MFRC522 [39][54]
RFID( radio frequency identification ) este u n modul f ără fir care transmite date pe distan țe
foarte scurte(1 cm) la frecven ța de 13.56MHz. Acest modul include un scanner de carduri care
e capabil sa scaneze oric âte carduri. Fiecare card are un ID specific ia r autorizarea se face din
partea microcont rolerului. Viteza de trasfer este de 106KB/s iar transmis ia se face prin
modula ție în amplitudine ASK (Amplitude Shift Keying).

Fig.4.32. RFID MFRC522 [54]
Modulul RFID comunic ă cu microcontrolerul prin protocolul SPI. Conexiun ile se fac dup ă
cum este în fig. Fig.4.32 .

Proiect de diploma Sistem de automatizare pentru casa inteligentă
96
Tabelul 28 Specificații tehnice . RFID MFRC522
Curent 13 – 26 mA/DC 3.3 V
Curentul consumat cand este inactiv 10-13 mA/DC 3.3 V
Curentul in modul „adormire” < 80 ua
Curentul de varf < 30 ma
Frecventa de operare 13.56 MHz
Tipuri de carduri suportate mifare1 S50, mifare1 S70, mifare
UltraLight, mifare Pro, mifare Desfire
Dimensiuni 40 mm x 60 mm
Viteza maxima de trasfer 10 mbit/s

4.3.8. LCD 16×2 cu interfață I2C
Acest LCD este ideal pentru proiecte în care nu aveți foarte mulți pini disponibili de la
microcontroller deoarece conține un adaptor pentru interfață I°C ce are nevoie de doar 2
conexiuni (SDA și SCL) + conexiunea de masă.
LCD -ul are contrast ajustabil, culoarea caracterelor este alba, iar backlight -ul galben -verde.
Modul LCD ce comunică pe interfață I²C și afișează 2 rânduri a câte 16 caractere.
Modulul reprezintă un adaptor ce se montează direct pe ecranul LCD. Display -ul trebuie să fie
de tip 1602 sau 2004 și bazat pe controller -ul HD44780.
Comunicația I2C reprezintă un ava ntaj deoarece avem nevoie de doar două fire pentru a
comunica cu plăcuța de dezvoltare Arduino sau cu un alt microcontroler. Cele două fire sunt
necesa re pentru clock și pentru date.
Modulul conține potențiometru pentru a regla contrastul și este compatibil și cu ecranele ce au
iluminare de fundal.
Tabelul 29 Specificatii tehnice LCD 16*2
Afisaj LCD 16*2 1602A
Dimensiuni gabarit 80.0X36.0X12.mm
Dimensiune ecran 64.5X13.8/16.0mm
Tensiunea nominala 5 V
Tensiune alimentare din spate 4,2 V
Curent alimentare din spate 100mA
Controler HD44780
Matrice de lucru 16 x 2
Curent 1.1mA

Proiect de diploma Sistem de automatizare pentru casa inteligentă
97
4.3.9. 4×4 keypad [41 ]
Tastaturile matrici utilizeaz ă o combina ție de 4 r ânduri și 4 coloane pentru a oferi 16
butoane recunoscute de un microcontroler. Sub fiecare cheie este un buton care un cap ăt este
conectat la o coloan ă iar cel ălalt cap ăt la un rand. Aceste conexiuni sunt prezentate în Fig.4.33

Fig.4.33. 4×4 keypad [41]
Ca microcontroler ul să determine dac ă un buton e ap ăsat, trebuie s ăa pună fiecare coloana
în parte pe starea logica „1” și să citeasca pe rand starea logica a randurilor.
De exemplu: Programul a pus coloanele pe LOW pini 2 -4 pe low si coloana 4 (pinul 1) pe
HIGH și apoi citeste fiecare r ând și determin ă ca randul 1 (pinul 8 ) este pe HIGH, rezult ă ca
tast „A” a fost ap ăsată.

4.3.10. Modul GSM SIM800L [42]
Modulul GSM cu cipul SIM00L este foarte popular în cadrul comunității Arduino. Acesta
oferă servicii GSM (Global System for Mobile Communications) și GPRS (General Packet
Radio Ser vice) precum: SMS, USSD, servicii de voce și suport pentru servicii de internet TCP,
UDP, HTTP si FTP.
Modulul se alimentează la o tensiune de 3.4 – 4.4 V și comunică cu plăcuța Arduino prin
interfața serială. Modul de funcționare este asemănător modulul W ifi ESP -01: modulul
primește o serie de comenzi prestabilite pe serială pentru accesarea funcțiilor. Modulul
răspunde la setul de comenzi AT.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
98
Specificatii :
GSM Quad -Band 850/900/1800/1900MHz
GPRS multi -slot clasa 12/10 ,GPRS mobile station clasa B
GSM 2/2 + Clasa 4 (2 W la 850/900MHz) ,Clasa 1 (1 W la 1800/1900MHz)
FM: frecventa intre 76 si 109 MHz reglabila cu pas de 50 KHz
Suporta setul de comenzi AT (3GPP TS 27.007, 27.005 si AT augmentat de SIMCOM)
Interfata seriala
Tensiune de alimentare: 3.4 – 4.4 V
Functioneaza intre -40 si +85 °C
GPRS clasa 12, maxim 85.6 kbps
Suporta PBCCH
Suporta scheme de codare CS 1, 2, 3, 4
Stiva PPP
CSD pana la 14.4 kbps
Suporta USSD
Suporta SMS
Suporta modul text si modul PDU
Suporta protocolul 0710 MUX
Suport integrat pentr u TCP / UDP
Supor pentru FTP / HTTP
MMS
E-mail
Detectie DTMF
Tricodec
Half Rate (HR)
Full Rate (FR)
Enhanced Full Rate (EFR)
AMR
Half Rate (HR) ,Full Rate (FR)
Suporta algoritmi pentru eliminarea ecoului
Interfata cartela SIM 3 V / 1.8 V

Proiect de diploma Sistem de automatizare pentru casa inteligentă
99

4.3.11. Senzori PIR [10]
Senzorul pasiv de radiatii infraroșii ( PIR – Passive InfraRed ) este un dispozitiv electronic
care măsoară în infraroșu (IR) , lumina care radiază de la obiectele aflate în câmpul său vizual.
Toate ființele și obiectele emit energie sub formă de radiații infraroșii invizibile pentru ochiul
uman dar care pot fi detectate de dispozitive electronice . C ând un corp se mișca își schimbă
marimea energiei radiației infraroșii . Senzorul PIR detectează această modificare a energiei
și emite un semnal de joasă frecventă și amplitudine mica .
Pentru depistarea miscarii la distanțe mari se folosesc lentilele Fresnel pentru focalizarea
radiațiilor infraroșii .Lentila Fresnel – lentila convergent ă la care una dintre suprafete este
constituit ă din inele convergente concentrice.In Fig.4.34. este aratată focalizarea radiațiilor
infrarosii cu lentila Fresnel .

Fig.4.34 .Focalizarea radiațiilor IR cu lentila Fresnel [10]
Detectorul este un dispozitiv electronic care detectează apropierea unei persoane sau a unui
obiect de zona controlată. Constructiv, dispozitivul are o masca frontală cu lentile Fresnell, prin
care senzorul analizează, în funcție de numărul de lentile (12 -15), fluxurile infraroșii din
încăpere. În momentul în care un corp cald tranzitează un astfel de spot, piroelementul
generează un impuls electric care este analizat și procesat de partea electronică a senzorului.
Un detector de miscare PIR cuprinde 3 c omponente principale :partea optică – lentila
Fresnel care focalizează energia ;senzorul propriu -zis convertește energia infraroșie în energie
electrică ;circuitul de procesare analizează semnalul .

Proiect de diploma Sistem de automatizare pentru casa inteligentă
100

Schema logica a detectorului PIR este aratată in f ig Fig.4.35.

Fig.4.35.Schema logica a detectorului PIR [10]
Radiațiile infraroșii sunt focalizate de lentilele Fresnel în senzorul PIR , apoi sunt
amplificate de un amplificator la a cărui ieșire este conectat comparatorul care compară
semnalul obținut cu cel inițial, etalon.

Fig.4.36. Principiul de funcționare al unui senzor IR [10]

Emițătorul transmite un fascicul de de radiații infraroșii , care se propagă în mediu, iar apoi
se reflectă. Fasciculul reflectat este captat de detector, estimându -se o distanță între senzorul
infraroșu și obiectul detectat din mediu, conform principiulu i de funcționare prezentat în figura
Fig.4.36. .
Lumina în infraroșu ajunge la senzorul propriu -zis care transformă această energie
infraroșie în energie electrică, care este analizată de circuitul de procesare și care va separa
alarmele false de alarmele reale (Fig.4.37)

Proiect de diploma Sistem de automatizare pentru casa inteligentă
101

Fig.4.37. Semnalul receptionat [11]
Tabelul 30 Specificatii tehnice senzor PIR HC -SR501
Modul senzor miscare PIR HC -SR501
Tensiune de operare 5V – 20V
Curent 65mA
Output digital TTL citiri 3.3V / 0V
Delay ajustabil 0.3sec – 5min
Raza de sensibilitate 110°, 7 metri
Temperatură de operare -15oC – +70oC
Dimensiuni 32mm x 24mm

Modulul este format dintr -un senzor Pyroelectric care generează energie ,atunci când e
expus la căldură. In momentul în care un organism uman sau animal va ajunge în raza de acțiune
a senzorului va detecta o mișcare pentru că organismul uman sau animal emite energie termică
într-o formă de radiații infraroșii.De acolo provine si numele de senzor pasiv
infraroșu.Termenul "pasiv" înseamnă că senzorul nu utilizează nici o energie în scopul
detectării, pur și simplu funcționează prin detectarea energiei degajate de celelalte obiecte.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
102
4.3.12. Mosfet IRLZ44N [44]

Fig.4.38. Mosfet IRLZ44N
IRLZ44N este un tranzitor cu efect de camp NPN cu specificatiile de din fig.4.38. S-a
ales acest mode l deoarece se poate comanda logic 5V de microcontroler.

4.3.13. Senzor magnetic ușă [49]
Contact magnetic aplicat autoadeziv YB -34-ALB.
Tabelul 31 Specifica ții tehnice senzor magnetic ușă
Dimensiuni 23x14x6 mm
Interspatiu 20±5 mm
Functionare 2 fire, normal inchis
Culoare plastic alb

Format din un magnet permanent și un dispozitiv activ de tip bobin ă. Se poate monta pe
uși / ferestre. Se leaga pe 2 fire. Nu are nevoie de alimentare, se leag ă doar pe zona.

4.3.14. Servo SG90 [45]
Servo motor -ul SG90 este probabil cel mai popular servo motor din robotic ă. Este
ieftin și foarte usor de controlat cu o placa Arduino.
Este un motor u șor și cu putere mare(1KG/cm). Acest motor se roteste aproximativ 180 grade
(90 de grade în fiecare directie). Acest motor vine cu controler ,feedback și reductor .
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 s enzor pentru
feedback -ul de poziție. Acest senzor dă alarma atunci când motorul se rotește. Un controller
dedicat care face ca micile angrenaje din interiorul servo motorului s ă se mi ște cu precizie
militară.Un senzor de feedback, un controler și un motor. Acestea sunt componentele esențiale

Proiect de diploma Sistem de automatizare pentru casa inteligentă
103
în cazul în care avem nevoie de un control precis al brațelor și picioarelor unui robot umanoid,
motoare și componente ale unui robot mobile sau oricare alte componente care necesit ă o
pozitie precisa.
Tabelul 3 2 Speci ficații tehnice Servo SG90
Weight 9 g
Dimension 22.2 x 11.8 x 31 mm approx
Stall torque: 1.8 kgf·cm
Operating speed: 0.1 s/60 degree
Operating voltage: 4.8 V (~5V)
Dead band width: 10 μs
Temperature range: 0 șC – 55 șC

Simbolul si semnificatia pinilor de iesire dupa culoare (Fig.4.39. )

Fig.4.39. Semnificația pinilor Servo SG90
Semnalul PWM acceptat de driverul intregrat in servo
Factorul de umplere și perioada PWM -ului ( Fig.4.40. )

Fig.4.40. Factorul de umplere servo SG90
Pozitia 0 (mijlocul) este echivalentul a unui puls de1.5ms. Pozitia „90” (maxim dreapta)
este echivalentul a unui puls de 2ms, „ -90”(maxim stanga) a unui puls de 2ms.
4.3.15. Servo MG996R [46]
Este un servo motor mic pentru o sarcin ă mare. Folosit pentru machete, roboți mici , etc.
Pentru controlul acestor servomecanisme se utilizează un semnal PWM standard.
Arduino poate controla PWM un servomotor, făcându -l ideal pentru o varietate mare de proiecte
robotice. Acest servo are un cuplu foarte mare (10KG forta) într-un pachet as a mic. Se poate
roti pana la 120 de grade (60 de grade in fiecare directie) .
Simbolul si Semnificatia pinilor de iesire dupa culoare (Fig.4.41. )

Proiect de diploma Sistem de automatizare pentru casa inteligentă
104

Tabelul 33 Specificații tehnice Servo MG996R
Nume valoare
Unghi de operare 120 grade
Protocol de control PWM
Greutate 55 g
Dimensiune 40.7 x 19.7 x 42.9 mm approx.
Culplul de blocaj 9.4 kgf·cm (4.8 V ), 11 kgf·cm (6 V)
Viteza de operare 0.17 s/60ș (4.8 V), 0.14 s/60ș (6 V)
Tensiunea de operare: 4.8 V to 7.2 V
Curentul nominal 500mA -900mA(6A)
Curentul d e blocaj 2.5A(6V)
Dead band width 5 μs
Temperatura de functionare 0 șC –55 șC

Fig.4.41. Semnificația pinilor Servo MG996R
Semnalul PWM acceptat de driverul intregrat in servo
Factorul de umplere si perioada PWM -ului (Fig.4.42. )

Fig.4.42. Factorul de umplere Servo MG996R

4.3.16. Senzor ultrasunete [47][65]
Senzorul cu ultrasunete HC -SR04 este folosit pentru asistența parcării din garaj,fiind un
senzor de proximitate / distanță foarte accesibil, care e folosit în principal pentru detectarea
distanței dintre el și mașina care va fi parcată.
Modulul are un trasmițător care trimite pulsuri ultrasonice si un receptor care le recepționează.
La început este trimis un semnal de 10 μs, apoi modulul generează o serie de 8 impulsuri de 40
kHz. Receptorul va aștepta eco ul ,iar dacă răsp unsul este între 150 μs – 25 ms , atunci a detectat
un obiect; dacă timpul este peste 38 ms nu a detectat nimic).Acesta poate măsura distanțe până

Proiect de diploma Sistem de automatizare pentru casa inteligentă
105
la 400 de cm,oferind o precizie de 3 mm . În configurare trebuie să definiți trigPin ca o ieș ire și
echoPin ca o intrare. Fig.xxx – Semnalele generate de fiecare pin Fig.4.43.

Fig.4.43. Semnalele generate de fiecare pin senzor ultrasunete [65]
4.3.17. Modul receptor infrarosu IR [48]

Fig.4.44. Modul receptor infrarosu IR [48]
Arată ca un simplu tranzistor dar receptorul IR este defapt un circuit integrat de demodulare
lumin ă. Cu trei pini VCC,semnal și masa,este simplu de conectat ș i folosit. Receptorul IR poate
fi alimentat de la 2.5V pana la 5.5V, deci este compatibil cu o varieta te de
microcontrolere.Modulatorul e tunat s ădemoduleze semanle de 38KHz, care sunt destul de
comune printre telecomenzile IR. Tot ce trebuie s ă facă un microcontroler e să numer e pulsatiile
inalte si sa masoare durata lor. (Fig.4.45. )

Fig.4.45. Caracteri stica U/t modul receptor infrarosu IR [48]

Proiect de diploma Sistem de automatizare pentru casa inteligentă
106

4.3.18. Senzor temperatura/umiditate DHT11 [36]
DHT11 este un senzor digital de temperatur ă și umiditate . Acesta încorporeaz ă un senzor
de umiditate capacitiv și un termistor, pentru a m ăsura aerul din jur și da un semnal digital pe
pinul de date (nu necesit ă pini de intrare analogici). Este simplu de utilizat, dar necesit ă
sincronizare atent ă pentru a culege datele.
Tabelul 34 Specificatiile tehnice senzor senzor DHT 11
Senzor de temperatura si umiditate DHT 11
Tensiune de alimentare 3,3V – 5V
Curentul maxim 2,5mA (maxim);
Gama de măsurare a umidității 20% – 90% RH
Acuratețea măsurării umidității ±5% RH
Gama de măsurare a temperaturii 0 oC – 50 °C
Acuratetea măsurării temperaturii ±2° C
Tipul de ieșire ieșire digitală
Dimensiunea plăci mici PCB 3.2 x 1.4cm
Greutate 8g

DHT vine cu un sir de 4 pini și opereaz ă intre 3.3V si 5.5V. Poate măsura temperaturi între 0 și
50°C ±2°C și umidita ți intre 20 si 90% cu o precizie de ±5%.Sensorul vine gata calibrat și are
o comunicare 1 -Wire proprietara . Pentru a comunica cu senzorul, microcotrolerul trebuie s ă
aibă acest protocol implementa t și sincronizare preci să cu senzorul.

Fig.4.47.Schema de conectare senzor DHT 11

Proiect de diploma Sistem de automatizare pentru casa inteligentă
107
În Fig 4.47. e prezentat procesul de comunicare care descrie protocolul de transfer de date
între MCU și senzorul DHT11. MCU inițiază transmisia de date prin emiterea unui semnal de
„Start“. Senzorul răspunde la semnalul de MCU „Start. Odată ce detecteaza semnalul de
răspuns de la senzor, MCU trebuie să fie gata să primească date de la senzor. Senzorul apoi
trimite 40 de biți (5 octeți) de date în mod continuu în linia de date. Constată că, în timp ce
transmiterea bytes, senzorul trimite cel mai semnificativ bit ma i întâi.

Fig.4.48. Procesul general de comunicare senzor DHT 11
Datele de 40 de biți de senzor au urmatoarea structura.
Data (40 -bit) = partea intreaga umiditate + partea zecimală umiditate + partea intreaga
Temperatura partea zeciama temperatura + suma de control

4.3.19. Punte H – L298N [53][55]
O punte H (eng. H Bridge) este un circuit electronic ce permite aplicarea unei tensiuni
pe o sarcină în orice sens. Aceste circuite sunt adesea folosite în robotică și alte aplicații
pentru a permite motoarelor de curent continuu să ruleze înainte și înapoi. Punțile H sunt
disponibile ca circuite integrate sau pot fi construite din componente discrete, tranzistoare
bipolare sau MOS.
Principiu de functionare :
Atunci când întrerupătoarele S1 și S4 ( Fig.4.49. ) sunt închise și S2 și S3 sunt deschise o
tensiune pozitivă va fi aplicat ă la nivelul motorului. Prin deschiderea întrerupătoarelor S1 și
S4 și închiderea întrerupătoarelor S2 și S3, această tensiune este inversat ă, astfel să permită
funcționarea inversă a motor ului. Întrerupătoarele S1 și S2 nu trebuie să fie închise în același
timp, deoarece acest lucru ar provoca un scurt -circuit la sursa de tensiune (Vin). Același lucru
se aplică și întrerupătoarelor S3 și S4.
În practică întrerupatoarele S1,S2,S3,S4 sunt tranzistoare bipolare sau MOS -FET.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
108

Fig.4.49. Schema de functionare Punte H – L298N
Tabelul 35 Specificatiile tehnice Punte H – L298N
Tensiune motoare:  5V – 35V
Tensiune circuite logice 5V
Curent motoare 2A (MAX)
Curent logica:  36mA
Frecvență maximă PWM  40kHz
Dimensiuni: 43 x 43 x 27 mm

Diagrama bloc a modului L298N este prezentată în Fig.4.50.

Fig.4.50. Diagrama bloc a modului L298N
Driver -ul conține și un limitator de tensiune liniar, astfel că atunci când tensiunea de
alimentare a motoarelor este >7V, nu este nevoie să alimentăm separat partea de logică.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
109
Driver -ul este unul dual, putând să controleze două motoare. El poate fi folosit și pentru motoare
pas cu pas. Chiar dacă are dimensiuni mai mari, este util prin faptul că beneficia ză de un radiator
destul de mare și disipă o cantitate mare de căldură.

4.3.20. Releu 1 si 2 canale
Pentru controlul echipamentelor de înaltă putere (bec,prize și ventilator) o solu ție ar fi relee –
le,care se pot controla cu ajutorul sitemului de comandă, Arduino.U n releu este un comutator
electromagnetic acționat de o tensiune relativ mică, care poate activa sau dezactiva o tensiune
mult mai mare. Inima unui releu este un electromagnet (o bobină de sârmă, care devine un
magnet temporar atunci când fluxurile de ener gie electrică trec prin ea).
Relee-le pot funcționa fie ca switch -uri sau ca amplificatoare (conversie curenți mici în
curenți mai mari). Schema electrica a unui releu cu 2 canale este prezentată în Fig.4.51.

Fig.4.51. Schema electrica a unui releu cu 2 canale

Proiect de diploma Sistem de automatizare pentru casa inteligentă
110
4.3.21. Senzor lumina BH1750 [56]
Senzorul BH1750FVI este un senzor digital pentru intensitatea luminii , comunicând prin
protocolul I²C. Acest senzor este util pentru aflarea informațiilor despre lumina din mediu .
Tabelul 36 Specificații tehnice senzor BH1750FVI
Senzor Digital de Intensitate a Luminii BH1750FVI
Tensiune de alimentare 4,5V
Curentul maxim 7mA
Tensiune de funcționare 2,4-3,6V
Temperatură de lucru -40°- 85° C
Gama de măsurare a intensitatii lumini 1 – 65535 lx
Protocol comunicare Digital I²C la 400 kHz

Fig.4.52. Diagrama bloc senzor BH1750FVI
Diagrama bloc a senzorului este conform Fig.4.52, unde
PD fotodioda , AMP amplificator
ADC convertor analog –digital
OSC – oscilator

Proiect de diploma Sistem de automatizare pentru casa inteligentă
111
Procedura de masurare este prezentată în Fig.4.5 3.

Fig.4.5 3. Schema de măsurare cu senzor BH1750FVI

4.3.22. Senzor gaz/fum MQ -2 [52]
Senzor ul gaz MQ-2 semnalează prezența anumitor gaze în general cele infalambile.
Tabelul 37 Specificații tehnice senzor gaz/fum MQ -2
Tensiune de alimentare 5V
Curentul maxim 150mA
Temperatură de lucru 20°- 50° C
Gama de măsurare a temperaturii 0 °C – 50 °C
Tipul de ieșire ieșire digitală
Dimensiuni 33 x 14 x 1.6mm
Rezistență heater 33R

Modulul este folosit pentru a detecta scurgerile de gaze în încăperi mici sau mari și
reprezintă o metodă de precauție pentru incendii sau pentru intoxicații.
Senzorul are o sensibilitate ridicată și principalele gaze pe care le vizează sunt GPL -ul,
izobutan, propan, metan, alcool, hidrogen și fum.
Senzorul dispune de un comparator, astfel că puteți citi date analogice în timp real sau puteți
afla dacă concentrația de gaz a depășit o anumita limită Fig.4.54.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
112

Fig.4.54. Circuitul de masură senzor gaz MQ -2

4.3.23. Convertor nivel logic 3.3V 5V TTL [60]
Rolul este de a trasforma un semnal de 3.3V în unul de 5V și invers . Este util în cazul în
care senzorii func ționeaza pe 3.3V iar microcontrolerul pe 5V sau invers.Permite conectarea a
doua dispozitive de nivele logice diferite (ex: 5V si 3.3V). Este compus din 4 canale uni –
directionale (doua intr -o directie, doua in cealalta).

4.3.24. Senzor presiune atmosferica BMP085 [57]
Senzorul BMP085 este un senzor foarte precis produs de firma Bosch, capabil sa m ăsoare
presiunea atmosferica și temperatura .
Aceasta este o placă simplă ce conține senzorul de presiune barometrică BMP085 de înaltă
precizie și putere mică. BMP085 oferă o plajă de măsurare de la 300 până la 1100 hPa cu o
precizie absolută de până la 0,03 hPa. Este bazată pe tehnologia piezo -rezis tivă pentru rezistența
la interferențe, precizia ridicată, liniaritate îmbunătățită și stabilitate pe termen lung.
Cum presiunea atmosferic ă variaz ă cu altitudinea, pe baza presiunii atmosferice m ăsurate
se poate calcula și altitudinea .
Tabelul 38 Specificatiile tehnice senzor BMP085
Senzor de presiune atmosferică BMP085.
Tensiune de alimentare 1.8V ~ 3.6V
Temperatură de lucru -40°- +85° C
Gama de presiune 300 ~ 1100hPa
Rezolutie presiune 0,01 hPa
Rezolutie temperatura 0,01 ° C
Protocol comunicare I²C
Timp raspuns 7,5 ms

Proiect de diploma Sistem de automatizare pentru casa inteligentă
113

Conectarea senzorului la Arduino se face prin I2C conform Fig.4.55

.

Fig.4.55 Schema bloc a senzorul BMP085

4.3.25. Senzor umiditate sol
Acest senzor poate fi folosit in detectarea picaturilor de ploaie. Poate fi folosit in creare
unei mici statii meteo experimentala ( Fig.4.56 )

Fig.4.56 Senzor umiditate sol [58]

Proiect de diploma Sistem de automatizare pentru casa inteligentă
114
Specifica ții:
Alimentare: DC 3.3 -5.5V
Curent utilizat: <20mA
Principiul de functionare
Pe o plac ă este trasat ă o gril ă paralel ă, jumatate potential + , jum ătate cu potential – .
Apa este conductoare într-o oarecare masur ă și cu cat mai multe picaturi sunt pe placa cu
atat curentul trece mai u șor , rezistenta scade. Modulu l atasat m ăsoară acesta rezistent ă și
genereaz ă o tensiune proportional ă .

4.3.26. Senzor ploaie

Fig.4.57 Senzor ploaie [59]
Acest (Fig.4.57 ) funcționeaz ă exact pe acelasi p rincip iu ca cel explicat mai sus, cu c ât
mai multa apa este prezent ă între cele 2 brate cu at ât rezisten ța este mai sc ăzută .

Proiect de diploma Sistem de automatizare pentru casa inteligentă
115

5. Concluzii
Principalul obiectiv al acestei lucrări a fost realizarea un ui sistem de automatizare
complet distribuit pe o infrastructur ă ethernet pentru o cas ă inteligent ă condus ă de
microcontrolere și PC în scopul de a oferi confortul și ușurința de control a dispozitivelor din
casă. În implementarea acestui proiect s -a realizat o macheta complet funcțională în mai multe
etape.
Pentru realizarea proiectului de diplomă au fost necesare studii aprofundate în
domeniu IOT, în principiile și soluțiile deja prezente în automatizarea caselor inte ligente,
studierea senzorilor și modulelor folosite precum și învățarea a mai multor limbaje de
programare pentru realizarea aplicației Server în C# dar și pentru realizarea site -ului de
gestionare.
“Beneficii ale automatizării unei case” sunt beneficiile directe:consum de energie
scazut, monitorizarea și controlul dispozitivelor, confortul și ușurința crescut ă și beneficii
indirecte: siguran ța sporit ă,posibilitatea controlului la distanta a diverselor aplica ții,
mentenan ța ușoară cu costuri reduse.
Desi lucrarea nu s -a axat pe măsurarea beneficiilor directe care stau la baza
automatizării unei locuințe (de exemplu : scăderea consumului de energie), acest aspect poate
constitui o bază solidă pentru dezvoltarea viitoare a proiectului și crearea unor studii d e caz
elocvente privind avantajele indiscutabile oferite de “transformarea” inteligentă a unui spațiu
de locuit cu scopul declarat de a crește confortul personal.

Proiect de diploma Sistem de automatizare pentru casa inteligentă
116

6. Anexe
6.1. Anexa 1 – Poza cu montajul

Proiect de diploma Sistem de automatizare pentru casa inteligentă
117
7. Bibliografie
[1] Eugen -Ștefan POPA, AUTOMATIZAREA CLĂDIRILOR , Sebes 2011
http://stiintasiinginerie.ro/wp -content/uploads/2014/01/33 -AUTOMATIZAREA –
CL%C4%82DIRILOR.pdf
[2] Marius Brânzilă, Cladiri -Inteligente -Curs , 2013, Iași
https://www.scribd.com/document/337914259/Cladiri -Inteligente -Curs
[3] Eugen -Ștefan Popa, Sisteme electronice pentru automatizarea locuinłelor 2010,
http://stiintasiinginerie.ro/18 -41-sisteme -electronice -pentru -automatizarea -locuinlelor/
[4] http://www.aviseco.ro/control -si-automatizari/casa -inteligenta -83.html
[5] http:/ /casa -inteligenta.eu/
[6] https://en.wikipedia.org/wiki/Building_automation
[7] https://en.wikipedia.org/wiki/Building_management_system
[8] Ing. dr d. ALECSANDRU Stefan, BUILDING MANAGEMENT SYSTEMS
http://cabms.blogspot.ro/2006/12/
[9] https://en.wikiped ia.org/wiki/List_of_automation_protocols
[10] Ramona Eugenia Popescu , Ing. Ioan Bărdescu ,Universitatea Tehnică de Construcții
București Facultatea de Utilaj Tehnologic Utilizarea senzorilor de mișcare pentru eficientizarea
sistemelor de iluminat la clădi ri
[11]https://senzor -miscare.ro/senzori/senzori -de-miscare/
Librarii folosite pentru interfațarea cu senzorii si modulele compatibile Arduino
[12] Arduino
https://github.com/arduino/Arduino
[13] Tony DiCola, Adafruit_BMP085_Library
https://github.com/adafruit/Adafruit -BMP085 -Library
[14] Adafruit_BMP085_Unified
https://github.com/adafruit/Adafruit_BMP085_Unified
[15] Arduino -LiquidCrystal -I2C
https://github.com/fdebrabander/Arduino -LiquidCrystal -I2C-library
[16] BH1750 light sensor
https://github.com/mysensors/MySensorsArduinoExamples/tree/master/libraries/BH1750
https://github.com/mysensors/MySensorsArduinoExamples/blob/master/examples/Li ghtLuxS
ensor/LightLuxSensor.ino
[17] https://www.youtube.com/watch?v=IcD9Jffstmw
[18] DHT

Proiect de diploma Sistem de automatizare pentru casa inteligentă
118
https://github.com/adafruit/DHT -sensor -library
[19] ethercard ENC28J60
https://github.com/jcw/ethercard
[20] esp8266
https://github.com/esp8266/Arduino
[21] Ethernet
https://www.arduino.cc/en/Reference/Ethernet
[22] Keypad
http://playground.arduino.cc/Code /Keypad
[23] MFRC522
https://github.com/miguelbalboa/rfid
[24] MQ -2
https://www.youtube.com/watch?v=YgEOnZ -7i8o
[25] http://blog.mkme.org/index.php/mq2 -smoke -gas-co-sensor -electronics/
[26] http://mkme.org/forum/viewtopic.php?f=2&t=656
[27] http://sandboxe lectronics.com/?p=165
[28] https://www.mysensors.org/build/gas
[29] Tim Eckel, NewPing Library for Arduino
http://playground.arduino.cc/Code/NewPing
https://bitbucket.org/teckel12/arduino -new-ping/downloads
[30] Servo library
https://www.arduino.cc/en/Refe rence/Servo
[31] Marc MERLIN, z3t0 -Arduino -IRremote
http://z3t0.github.io/Arduino -IRremote/
Specificatii:
[32] https://www.arduino.cc/en/Main/ArduinoBoardUno
[33] https://www.arduino.cc/en/Main/ArduinoBoardMega2560
[34] https://www.arduino.cc/en/Main/ArduinoBoardNano
[35] https ://wiki.wemos.cc/products:d1:d1
Datasheets:
[36] http://www.micropik.com/PDF/dht11.pdf
[37] https://www.sparkfun.com/datasheets/DevTools/Arduino/W5100_Datasheet_v1_1_6.pdf
[38] http://ww1.microchip. com/downloads/en/DeviceDoc/39662c.pdf
[39] https://www.nxp.com/documents/data_sheet/MFRC522.pdf
[40] https://www.sparkfun.com/datasheets/LCD/ADM1602K -NSW -FBS-3.3v.pdf

Proiect de diploma Sistem de automatizare pentru casa inteligentă
119
[41] https://www.parallax.com/sites/default/files/downloads/27899 -4×4-Matrix -Membrane –
Keypad-v1.2.pdf
[42] http://www.datasheetspdf.com/datasheet/SIM800L.html
[43] https://www.mpja.com/download/31227sc.pdf
[44] http://www.irf.com/product -info/datasheets/data/irlz44n.pdf
[45] http://www.micropik.com/PDF/SG90Servo.pdf
[46] http://www.electronico scaldas.com/datasheet/MG996R_Tower -Pro.pdf
[47] http://www.micropik.com/PDF/HCSR04.pdf
[48] https://learn.sparkfun.com/tutorials/ir -control -kit-hookup -guide
[49] https://www.a2t.ro/sisteme -alarma/contact -magnetic -aplicat -autoadeziv.html
[50] John B. Young, Modern Altimeter and Barometer System using the MPL115A
[51] http://www.nxp.com/assets/documents/data/en/application -notes/AN3914.pdf
[52] https://www.parallax.com/sites/default/files/downloads/605 -00008 -MQ-2-Datasheet.pdf
[53] http://www.electronicstefan .ro/2012/01/ce -este-puntea -h/
[54] http://www.14core.com/rfid -gate-access -contr ol-module -rc522 -with-arduino
[55] https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf
[56] http://cpre.kmutnb.ac.th/esl/learning/bh1750 -light-sensor/bh1750fvi -e_datas heet.pdf
[57] https://www.sparkfun.com/datasheets/Components/General/BST -BMP085 -DS000 -05.pdf
[58] http://gloimg.everbuying.net/E/2014/201405/goods -img/1401040578243 -P-1732549.jpg
[59] http://articulo.mercadolibre.com.ar/MLA -609104548 -modulo -higrometro -sensor -de-
humedad -arduino -mejor -precio -_JM
[60] https://learn.sparkfun.com/tutorials/using -the-logic -level -converter
[61] https://www.jakartanotebook.com/arduino -nano -v3.0-atmega328 -blue
[62] https://microcontrolere.wordpress.com/2016/08/10/arduino -uno/
[63] http://www.sandal.tw/goods.php?id=782
[64] http://sandboxelectronics.com/?p=165
[65] http://howtomechatronics.com/tutorials/arduino/ultrasonic -sensor -hc-sr04/
[66] https://msdn.microsoft.com/en -us/library/system.net(v=vs.110).aspx
[67] https://dev.mysql.com/downloads/connector/net/6.0.html

Similar Posts