Programul de studiu: Automatică și Informatică Aplicată [616683]

UNIVERSITATEA “TRANSILVANIA” DIN BRAȘOV
Departamentul Automatică și Tehnologia Informației
Programul de studiu: Automatică și Informatică Aplicată

Marian GHEORGHIȚĂ

Aplicație pentru reducerea
consumului de energie electrică
și sporirea confortulu i dintr -o
locuință

Îndrumător:

Șef lucrări.dr.ing. Laurențiu DIACONU

BRAȘOV
2017

F05-PS7.6 -01/ed.1 ,rev.5 1 FIȘA PROIECTULUI DE DIPLOM Ă

Universitatea Transilvania din Brașov
Lucrare de absolvire/ lucrare de licență/
proiect de diplomă/ disertație nr. ……….
Facultatea de Inginerie Electrică și Știința
Calculatoarelor
Departamentul Automatică și Tehnolog ia Informației
Viza facultății
Programul de studii
Automatica și Informatică Aplicată Anul universitar 2015 – 2016
Candidat: [anonimizat]ǎ Marian Promoția 2016
Cadrul didactic îndrumător
Ș. l. dr. ing. Laurențiu Diaconu

PROIECT DE DIPLOM Ă
Titlul lucrării:
Aplica ție pentru reducerea consumului de energie electric ă și sporire confortului dintr -o locuin ță

Problemele principale tratate:
Problemele principal e care vor fi tratate
1.Crearea unei aplicatii ce sporeste confortul unei locuinte .
2.Automatizarea sistemului climatic al locuintei .
3.Controlul elementelor dintr -o locuinta:lumini,incuietori,etc.
4.Monitorizare locuinta.
4.2.Senzori.
5.Reducera si mon itorizarea consumului de energie electrica.
Locul și durata practicii:

Bibliografie:
Practical AVR Microcontrollers, Alan Trevenor
https:// www.arduino.cc/
Aspecte particulare:

(desene, aplicații practice, metode specifice etc.)

Primit tema la data de: 01.10.2015

Data predării lucrării:

Director departament , Cadru di dactic îndrumător,
Prof. dr. ing. Sorin -Aurel Moraru (nume, prenume, semnătura)

Candidat,
(nume, prenume, semnătura)

F05-PS7.6 -01/ed.1 ,rev.5 2
PROIECT DE DIPLOM Ă – VIZE
Data
vizei Capitole/ problemele analizate Semnătura cadrului
didactic îndrumător

APRECIEREA ȘI AVIZUL CADRULUI DIDACTIC ÎNDRUMĂTOR

Data:
ADMIS pentru susținere/
RESPINS
CADRU DIDACTIC ÎNDRUMĂTOR
(nume, prenume, semnătură)

AVIZUL DIRECTORULUI DE DEPARTAMENT
Data: ADMIS pentru susținere/
RESPINS Director departa ment
Prof. dr. ing. Sorin -Aurel Moraru

SUSȚINEREA PROIECTULUI DE DIPLOM Ă
Sesiunea

Rezultatul
susținerii PROMOVAT cu media:

RESPINS cu refacerea lucrării

RESPINS fără refacerea lucrării

PREȘEDINTE COMISIE
(nume, prenume, semnătura)

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

2
Cuprins
Obiectivul lucrării…………………………………………………………………………… ……3
1. Introducere……… ……………………………………………………………………… ……..4
1.1 Sisteme automate…… ……………………………………………………… ………..5
1.2 Domoti ca…………… ……………………………………………………… …………6
2. Reducerea co nsumului de energie electrică…… …………………………………… …………7
2.1 Model de optimizare a en ergiei electrice la o locuință… …………………… ……….7
3. Componente folosite la proiect… ………………………………………………… …………. 10
3.1 Microcontroler………… …………………………………… ……………… ………11
3.1.1 Generalitati………… …………………………………………… …..…….11
3.1.2 Microcontroler vs. Microprocesor… …………………………… ..…… ….12
3.1.3 Ardui no Mega……………… …………………………………… ……… …13
3.2 Senzor i……………………… ……………………………………………… …..……14
3.3 Placa Etherne t W5100………… …………………………………………… …..……16
3.4 Cititorul de proxim itate RFID… ………………………………………… …..…… …17
3.5 Modulul de relee…… …………………………………………………… ………… …18
3.5.1 Comanda u nui releu…… …………………………………………… ………18
3.6 Driverul de moto are L298N……… ……………………………………… ….………19
4. Medii de program are… …………… ………………………………………………… …….…20
4.1 Arduino – C/C++………… ……………………………………………………… …..20
4.2 HTML/C SS……… ……………………………………………………… …..………21
4.3 AJAX …… ……………………………………………………………… …….…..…22
5. Implementare ………………… ………………………… …………………… .……… .…..…25
5.1 Instalarea mediului integrat de d ezvoltare Arduino… ……………………… .…..…25
5.2 Realizarea circuitulu i electric………………………………………… ..…… .…… …26
5.3 Scrierea codulu i sursa……………………………………………………… …..……29
5.4 Crearea conexiunii Arduino -Router -Internet……………………………… ….….…36
5.5 Functionalitatea aplica ției web…………………………………………… …………37
5.6 Descrierea panoului de prezentare……………………………………… ……..…… 38
6. Dezvoltare… ……………………………………………………………………… ……….…39
7. Concluzie ………………………………………………………………………… …………….40
Rezumat………………………………………………………………………………………….41
Bibliografie ……………………………………………………………………… ……………….42
Anexe…………………………………………………………………………… ……… ….…….43

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

3
Obiectivul lucrării
Obiectivul acestei lucrări este realizarea unui sistem care împreună cu o interfață web
ajuta utilizatorul să monitorizeze și să controleze parametrii dintr -o locuință folosind IoT
(Internet of Things). Astfel utilizatorul dețin e controlul locuinței indiferent unde se afla acesta.
Deasemenea se pune accent și pe reducerea consumului de energie electrică din locuința cu
ajutorul automatizării unor procese.
Ca mod de prezentare am ales să realizez un panou pe care voi monta, modul ar, fiecare
subsistem descris. Subsistemele prezentate sunt:
 Măsurarea și controlul temperaturii
 Acționarea luminilor din locuința
 Măsurarea nivelului de gaz și sistemul de ventilație
 Sistemul de închidere a ușii principale
 Verificare status geamuri
 Automa tizare iluminat în funcție de prezența

Fiecare modul prezintă atât regim de funcționare automat cât și regim de funcționare
manual.În cazul regimului de funcționare automat, microcontrollerul ia decizii în funcție de
parametrii pe care îi primește din lo cuința. Regimul de funcționare manual permite ca
utilizatorul să acționeze și să creeze scena rii cu elementele din locuința.
Automatizarea unor procese (ex: pornirea unor becuri în funcție de prezență în încăpere)
reușește să facă o diferență majoră la co nsumu l de energie electrică.
Întregul sistem este monitorizat și controlat de o aplicație web intuitivă care este interfața
dintre utilizator și elemente le interconectate din locuința.
Confortul este adus de aplicația web cu răspuns real conectată cu aju torul unui router la
internet. Utilizatorul poate accesa aplicația oriunde de pe planetă cu ajutorul IoT (Internet of
Things).

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

4
1.Introducere
Automatizarea locuințelor și a clădirilor ,în general, este din ce în ce mai des
întâlnită.Multe firme sau persoane fizice optează pentru astfel de sisteme deoarece sporesc
confortul și reușesc să reducă consumul de energie electrică.
Există pe piața mulți dezvoltatori ce au ales să creeze sisteme de automatizare a
locuințelor.Aceștia, de cele mai multe ori, dețin protocoale de comunicație speciale și folosesc
fire pentru a comunica cu echipamentele ce compun întregul sistem.Odată cu avansul tehnologic,
se dorește eliminarea cablajelor și se optează pentru sisteme ce comunica wireless.Comunicația
wireless aduc e un plus de de confort și flexibilitate sistemelor de automatizare din locuințe.
Ideea de automatizare a locuinței a devenit viabilă încă din anii 1900 odată cu distribuția
de energie electrică și continuat cu introducerea mașinilor de spălat în
1904,fri giderelor,uscătoarelor de haine.
În 1975 a apărut prima tehnologie dedicată domoticii și se numea X10.Un protocol de
comunicație între dispozitivele electronice folosite în locuință.În prima fază informația digitală
era reprezentată de frecvențe radio.De -a lungul anilor acest tip de protocol s -a dezvoltat atât de
mult încât, în 2012, în UȘĂ, potrivit ABI Research, au fost instalate 1.5 milioane de sisteme
domotice.
Există trei generații de automatizări locuință:
 Prima generație:tehnologie wireless cu serv er proxy;
 A doua generație:controlul dispozitivelor electrice folosind inteligenta artificială;
 A treia generație:roboți care interacționează cu oamenii.
Aplicații și tehnologii:
 Sistem de control iluminat
 Sisteme de securitate clădiri
 Încălzire,ventilație și aer condiționat(HVAC)
 Detecție scurgeri și fum

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

5
1.1 Sisteme automate
Mărimile (variabilele) asociate unui sistem sunt de trei la num ăr: mărimi de intrare,
mărimi de stare și mărimi de ieșire. Mărimile de intrare [U] sunt independente de sistem (cauză)
și influențează din exterior starea și evoluția sistemului. Mărimile d e stare [X] sunt dependente
de mărimile de intrare (efect) și au rolul de a caracteriza complet starea curentă a sistemului.
Mărimile de ieșire [Y] sunt dependente de mărimile de stare, uneori și direct de mărimile de
intrare ( efect) și au rolul de a transmi te în exterior informație referitoare la starea curentă a
sistemului.

fig. 1 .1 Reprezentarea unui sistem

Sistemul este un a nsamblu de elemente dependente între ele care formează un întreg
organizat, c e pune ordine într- un domeniu de gândire teoretică .Noțiunea de sistem are o sfer ă de
cuprindere foarte largă și, în consecință, este frecvent întâlnită în știintă și tehnică . Prin sistem
vom înțelege un ansamblu de entități ce interacționează între ele și cu exteriorul, în vederea
atingerii unei finalități .
Sistemele automate sunt si steme tehnice de supraveghere, comanda și control al
proceselor și instalațiilor tehnologice, fără intervenția directă a omului. Un sistem automat (SA)
este alcătuit din două părți principale: procesul de automatizat (P) și dispozitivul de automatizare
(DA).

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

6
1.2 Domotica

fig. 1.2 Exemplu de s istem domotic
O casă cu un astfel de sistem instalat este capabilă să sune la poliție sau la pompieri.În
mod frecvent sistemele domotice trebuie să colecteze date de la diverși senzori și să facă diferite
lucruri cum ar fi: ajustarea luminii și selectarea melodiilor preferate de fiecare membru al casei,
atunci când ei intră sau pleacă din camera personală. Acest sistem presupune că fiecare membru
să poarte asupra lui un tag RFID, pe câtă vreme cele mai sofisticate detectează mișcarea,
funcțiile vitale și m ulte alte caracteristici individuale.
Câteva sarcini îndeplinite de domotică :
 Controlează draperiile, ferestrele dintr -o locație, toată ziua, fără interacțiunea omului.
 Deschide sau blochează și deblochează poarta și intrarea în garaj, cu un control separ at
sau global.
 Controlează clima din interiorul caselor. Prin apăsarea unui buton se poate seta încălzirea
pe timp de noapte; lumina când nu ești într -o încăpere; să închidă poarta după plecare…
 Asigură lumină potrivită la locul potrivit; sistemele domotice pot asigura și memora
intensitatea luminoasă în funcție de preferințele persoanelor.
 Pot pregăti inteligent – grădinile prin pornirea stropitoarelor atunc i când solul este prea
uscat; – și alte lucrări cum ar fi cele canal; peluzele sunt udate doar atunci când este
nevoie iar persoanele pot starbate peluzele fără frică că pot fi udate.
 Pot aprinde lumina doar atunci când o persoană este prin preajmă(uneori cu rol de
alarmă).

Cuvântul de domotic ă vine din latinul "domus" care înseamnă casa și informatică.
Domotica este o aplicație a calculatoarelor și roboților pentru aplicații casnice. O casă cu un
sistem domotic instalat trebuie să aibă multe calculatoare, probabil aranjate într -un perete, pentru
a permite proprietarului să contoleze aplicațiile din toate părțile casei.
 Controlează sunetul și home cinema din orice cameră, utiliz ând butoane, tablouri sau
telecomenzi.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

7
2.Reducerea consumului de energie electrică
În prezent lumea se confruntă cu creșterea consumului de energie electrică care s -a dublat
în ultimii 20 de ani.O comisie europeană de cercetare a relatat faptul că cel mai mare consum de
energie electrică este ocupat de transport cu 31.67% și de sectorul imobiliar cu 26.65% cu o
creștere de aproximativ 3.6% între 2009 și 2010. Se crede că cerințele tot mai mari de energie
vor conduce la o criză globală în energie.În acest context, cei mai ma ri producători în domeniul
energiei -Siemens,Samsung,Philips,General Electric, etc. țintesc către sisteme de nouă generație
capabile să managerieze inteligent consumul de energie electrică.
Cele mai populare și practice soluții la problema consumului ridic at de energie electrică
sunt:
 Implementarea surselor de energie regenerabile (stații eoliene,panouri fotovoltaice),în
principal pentru a reduce emisiile de carbon
 Utilizarea sistemelor capabile să înmagazineze energia(ex:bateriile)
 Implementarea conceptulu i de rețea inteligenta.Această tehnologie folosește surse de
energie regenerabilă și manageriaza eficient distribuția de energie electrică.

fig. 2.1 Digrama bloc a unui ansamblu de locuințe inteligente

2.1 Model de optimizare a energiei electrice la o locuință
În subcapitolul următor voi prezenta un exemplu de management al consumului de
energie electrică, în funcție deconsumatorii principali ai locuinței.
Principalele categorii de consumatori sunt:Sistemele de depozitare a energiei electrice(ex:bater ii,
UPS-uri,etc.);Echipamente cu funcționare programată – acestea sunt sistemele din locuința ce
sunt pornite sau nu, în funcție de un prag setat(ex:centrală termică cu termostat,aer
condiționat,etc.);Echipamente cu funcționare întreruptă – sunt electrocas nicele care sunt utilizate
ocazional(ex:mașină de spălat, cuptor cu microunde,mașina de spălat vase,etc.);Echipamente cu
funcționare continua – sunt electronicele care sunt pornite mereu(ex:frigider,becuri,etc.).

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

8

fig. 2.2 Model de locuința cu diferiți co nsumatori în funcție de tipul acestora

2.1.1 Sisteme de depozitare a energiei electrice
Sistemele de depozitare a energiei electrice(ex:baterie) sunt capabile să absoarbă și să
transmită energie electrică.Un exemplu de utilizare eficientă a unui astfel de sistem este
integrarea acestui unui ansamblu care produce energie regenerabilă.Un panou fotovoltaic, spre
exemplu, are nevoie de o baterie pe care să o încarce și de la care să plece energie electrică către
consumatori.Având în vedere că sursele de ener gie regenerabilă depind, de cele mai multe ori de
condițiile exterioare(ex: vânt,soare), prezența unui astfel de sistem de depozitare a energiei
electrice este necesară.
2.1.2 Echipamente cu funcționare contiua
Astfel de echipamente (ex:frigider,bec) con sumă energie electrică neîntrerupt.O soluție
pentru reducerea consumului de energie electrică a electrocasnicelor cu consum continuu este
implementarea unui program de funcționare.Aici vă dau un exemplu concret: pentru sistemele de
iluminat se pot adăuga s enzori care pornesc sau opresc becul în funcție de prezența cuiva în
permimetrul operat de aceștia.
2.1.3 Echipamente cu funcționare întreruptă
Sunt reprezentate de electrocasnicele al căror consum este ocazional, în funcție cât de des
sunt folosite de u tilizator.Astfel de echipamente sunt: mașinile de spălat, cuptoarele cu
microunde,etc.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

9
2.1.4 Echipamente termice cu funcționare programată
Sunt sisteme care pornesc sau se opresc în funcție de o valoare de prag setată de
utilizator.De exemplu: centrală termică cu termostat, aerul condiționat, e tc.Acestea depind de
temperatur a înmagazinată în încăperea de unde se citește temperatura reală.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

10
3.Componente folosite la proiect
În acest capitol voi prezenta componentele utilizate în proiect.Nucleul principal, cel care
colectează și da mai departe date de la senzori și/sau comută anumiți actuatori este
microcontrolerul.Putem spune că acesta din urmă reprezintă calea de legătură dintre utilizator și
mediul exterior.

fig. 3.1 Privire generala componente utilizate

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

11
3.1 Microcontrol er
3.1.1 Generalități
Un microcontroller este un circuit pe un singur chip care, în mod normal, conține:
 Unitatea Centrală
 Memoria volatilă(RAM)
 Memoria nevolatilă(ROM/PROM/EPROM/EEPROM)
 Generat orul de tact
 Dispozitive I/O seriale și paralele
 Timere,convertoare A/D și /D/A
 Periferice
În figură 1 este prezentată schema bloc a unui microcontroller:

Fig. 3.2. Schema bloc microcontroller
Unitatea centrală de prelucrare (CPU ) este hardware -ul într -un sistem informatic
care execută instrucțiunile unui program de calculator realizând operațiuni aritmetice și
logice, precum și operațiunile de intrare / ieșire ale sistemului. Componentele princ ipale
ale UCP sunt urmatoarele:
 Unitatea aritmetica ș i log ica (UAL): execu ta prelucrarile asupra datelor.
 Registrele: Reprezinta o memor ie interna (locala) pentru UCP.
 Unitatea de comanda și control (UCC): controleaza functionarea UCP și deci a
calculatorului.
 Interconexiunile din cadrul UCP: asigura comunicatia dintre UAL, registre și
UCC; sunt realizate sub forma unei magistrale, numita magistrala interna a UCP.
Memoria Random Access (RAM) este un tip de memorie care stochează temporar
informația și rezultatele intermediare folosite de microcontroler. Conținu tul este eliberat
odată cu oprirea circuitului.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

12
Memoria ROM(Read Only Memory) este programată în momentul fabricării.
Memoria este programată definitiv. Acest tip de memorie se folosește în cazul în care se
fabrică produse de serie scăzând costul de fab ricație. Oferă o viteză de acces bună și o
structură compactă . Microcontrolere cu asfel de memorie se găsesc în ecrane
TFT,telecomenzi,etc.
Memoria EEPROM (electricaly erasable programmable read only memory)
permite programarea și ștergerea octeților. Pr ogramarea folosește o tensiune mai mare
decât cea obișnuită (12V – 25V). Ștergerea se face aplicând un curent invers. Acest tip de
memorie are număr limitat de scrieri/ștergeri. Există o varietate de microcontrollere ce
folosesc memorie EEPROM pentru prog ram.În categoria aceasta intră și ATmega2560,
microcontroler folosit de Arduino.

3.1.2 Microcontroller vs. Microprocesor
Microprocesorul este unitatea centrală de prelucrare a informației(CPU) a unui
calculator, care coordonează sistemul.Microcontrolle rul, așa cum am precizat și mai sus, este un
microcircuit care încorporează o unitate centrală(CPU) și o memorie împreună cu resurse care îi
permit acestuia să interacționeze cu mediul exterior.
Diferență majoră dintre microcontroler și microprocesor este funcționalitatea
acestora.Pentru a putea fi folosit, un microcprocesor are nevoie de alte componente, cum ar fi
memorie și periferice pentru primirea și transmiterea datelor.Pe când microcontrollerul este
proiectat să conțină toate aceste lucruri într -un singur microchip.

fig. 3.3. Structura generala a unui microcontroler.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

13
3.1.3 Arduino Mega
Pentru acest proiect am folosit o placă de dezvoltare Arduino Mega,construită în jurul
microcontrollerului ATmega2560 de 8 -biti . Deține 54 de intrări /ieșiri digitale, 15 dintre acestea
sunt PWM(Pulse Width Modulation),16 intrări analogice, 4 UART(Universal Asynchronous
receiver/transmitter).Oscilația plăcii este dată de quartz -ul de 16 MHz.

fig. 3.4 Structura hardware Arduino Mega
Arduino Mega poat e fi alimentată fie prin conexiunea USB fie cu alimentare
externă.Alimentarea este selectată automat.Alimentarea externă poate veni fie de la un
adaptor AC -DC fie de la o baterie.Adaptorul se conectează la mufa jack de 2.1mm a
plăcii.Bateria se conectează la pinii GND și Vin existenți pe placă.Operează cu o
tensiune între 6v -20v.

Pinii de alimentare a plăcii Arduino sunt:
 VIN – se folosește la conectarea unei baterii externe pentru alimentarea plăcii Arduino
 5V – pin folosit la alimentarea microcontroler ului sau a altor componente utilizate de
Arduino
 3V3 – crează o tensiune de 3.3V
 GND – pinii ground ai plăcii

ATmega2560 are 256kb de memorie flash din care 8kb ȘRAM și 4kb EEPROM.
Arduino Mega conține pini cu funcții speciale:
 Conexiuni seriale RX,TX:[0 ,1];[19,18];[17,16];[15,14].
 Întreruperi externe:2,3,18,19,20,21.
 PWM(Pulse Width Modulation):2 -13;44 -46.
 SPI:50(MIS0),51(MO SI),52(SCK),55( SS).

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

14
3.2 Senzori
Putem spune că senzorii au rolul de a simula sau extinde percepția senzorială a
omului.Senzorii pot fi mecanici,electronici,optici,acustici sau chimici.În principal, senzorii trimit
semnale digitale(0 sau 1) sau semnale analogice, în funcție de ce detectează.În continuare va voi
prezenta senzorii pe care i -am folosit în proiect.
3.2.1 Senzorul de te mperatura si umiditate DHT11

Am folosit acest sensor pentru a simula funcționarea
unei centrale termice pe baza unui termostat.Cu ajutorul
acestui senzor am result să monitorizez atât temperatura cât
și umiditatea din aer.Range -ul senzorului este între 0-50 *C
pentru temperatura și 20 -90% RH(umiditatea relativă)
pentru umiditate.Acuratețea acestuia este + -2*C respective
+-5%RH.

3.2.2 Senzorul de calitate a aerului MQ -135
Acest tip de senzor reușește să detecteze foarte bine
nivelul de gaz din proxi mitatea acestuia. L -am utilizat pentru
a simula scenariul în care se acumulează nivel de gaz și/sau
alt aer poluant. Pe baza valorile trimise de senzor la
microcontroller, acesta din urmă monitorizează nivelul de
poluare din încăpere și activează, dacă est e cazul, sistemul de
ventilație.

3.2.3 Senzorul infrarosu pasiv ( PIR-Passive Invrared Sensor)
Senzorul PIR măsoară radiația infraroșie emisă de
obiecte aflate în câmpul său vizual.Reacționează la
schimbareatemperaturii cauzată de schimbarea fluxului de
radiații.Cu alte cuvinte, percepe numai semnale de schimbare,
cum ar fi atunci când o persoană intră în raza de sensibilitate
infraroșie a senzorului.
Am folosit acest senzor asociat unui sistem de
iluminat.Lumina se aprinde numai în momentul în care
senzorul detectează prezența în câmpul său vizual.Astfel se reduce și consumul de energie
electrică.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

15
3.2.4 Senzorul cu efect Hall

Răspunsul acestui senzor este normal 0 logic când câmpul
magnetic perpendicular pe suprafața acestuia este sub o valoare de
prag.Când câmpul depășește această valoare ieșirea trece pe 1
logic. Cu alte cuvinte, senzorul își schimbă semnalul în momentul
în care un magnet se apropie suficient de acesta.
Am folosit doi asfel de senzori la sistemul de închidere a ușii
principale.Un ul verifica dacă ușa este închisă, iar cel de -al doilea
verifica dacă zăvorul este tras.

3.2.5 Senzorul magnetic

Senzorul magnetic de proximitate este ideal pentru medii
dure.Acesta este insensibil la căldură, praf și vibrații.În momentul
în care este în apropierea unui magnet își schimbă semnalul logic.
L-am folosit pentru a monitoriza statusul(închis/deschis) al
gemurilor din locuința.

3.2.6 Senzorul de lumina

Senzorul de lumină a fost utilizat în proiect cu scopul de a
monitoriza nivelul d e lucși dintr -o anumită încăpere.Senzorul trimite
analogic către microcontroller o valoare între 0 și 1024, în funcție de
nivelul de lumină existent.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

16

3.2.7 Senzorul de curent ACS 712

Senzorul de curent ACS712 funcționează pe baza efectului
Hall. Efectul Hall apare întotdeauna când un conductor sau un
semiconductor, traversat de un curent electric, este supus acțiunii
unui câmp magnetic perpendicular pe direcția curentului și se
manifestă prin apariția unei tensiuni, denumită tensiune Hall.
Am folo sit acest senzor pentru a monitoriza consumul de energie
electrică făcut de sistem.

3.3 Placa Ethernet W5100
Shield -ul Ethernet W5100 permite
conexiunea între Arduino și internet.Chip -ul
ethernet pune la dispoziție un IP capabil
TCP(Protocol de contr ol al transmisiei) și
UDP(Protocolul datagramelor utilizator).
Conține și un slot microSD pe care se poate instala
un card cu capacitate maximă de 16 Gb.Cardul
poate fi utilizat pentru a stoca fișierele care trebuie
accesate de pe internet.
În proiectul re alizat de mine, placă ethernet deține
un rol foarte important, deoarece cu această reușesc
să realizez conexiunea IoT(Internet of Thinghs) între
elementele conectate la microcontroller.Cu ajutorul unui cârd microSD, încarc fișierele necesare
accesării apli cației web.Fișierele rămân pe card și pot fi accesate oricând prin internet.Pentru a
realiza conexiunea la internet cu placa ethernet și implicit cu microcontrollerul, folosim un
router.Atribuim o adresă IP din aceeași clasă cu routerul și un port plăcii e thernet.Apoi din
meniul routerului putem face un port forwarding adresei IP și portului atribuit plăcii.Accesarea
din altă rețea se face folosind adresa IP reală pe portul ales.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

17

3.4 Cititorul de proximitate RFID YK -74EM(26)
Cititorl de proximitate YK-74EM(34)
folosește format de tip Wiegand.
Formatul Wiegand este:
 interfața specială între cititor și
card;
 un semanl electronic de date;
 interfața binară între cititor și
controller(ex:microcontroler);

Cel mă uzitat tip de format Wiegand este
Standard 26 -bit.Este un format
open,disponibil publicului, ceea ce înseamnă
că oricine poate cumpăra carduri cu astfel de
format.Protocolul standard are un bit de
paritate,8 biți cod facilitate, 16 biți cod ID și
un bit de paritate de urmărire pentru toți cei
26 de biți.

fig. 3.5 Utilizarea bitilor protocolului Wiegand

 codul maxim al facilitații este 255 egal cu valoarea maximă a celor 8 biți asociați.
 numărul cardului maxim este 65,535 egal cu valoarea maximă a celor 16 biți asociați.
Bitul de paritate es te folosit pentru a verifica acuratețea biților de date trimiși.În exemplu din fig.
1, bitul de paritate par este asociat primilor 12 biți de date.Dacă cei 12 biți de date au ca valoare
un număr impar, bitul de paritate este setat 1 să rezulte totalul a 13 biți un număr
păr.Ultimii 13 biți sunt setați similar cu o valoare impară.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

18

Interfața Wiegand folosește 2 pini
de date DATA0(D0) și DATA1(D1) sau
Data Low și Data High.Când nu se trimit
date, D0 și D1 sunt setați la nivelul
"high"(+5vdc).Când 0 est e trimis, D0 este
setat la nivelul "low" în timp ce D1
rămâne la nivelul "high".Când 1 este
trimis,D1 este setat la nivelul "low" și D0
la nivelul "high".

3.5 Modulul de relee
Modulul de relee a fost folosit la comanda becurilor
din locuinta. Un re leu este un dispozitiv de comutare
prevazut cu unul sau mai multe contacte, actionat de un
semnal electric. Cu alte cuvinte, un releu ajuta la comutarea
unei valori mari a tensiunii cu o valoare mai mica de
tensiune.
Tipul de relee folosit contine 3 contact e: contactul
comun(COM),contactul normal inchis(NC) si contactul
normal deschis(NO).

3.5.1 Comanda unui releu
În figur a următoare este prezentată comanda unui releu cu ajutorul unui semnal digital
trimis de la un microcontroller.

fig. 3.6 Circuitul de comanda a unui releu

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

19

3.6 Driverul de motoare L298N
Am folosit driverul pentru a controla 2 motoare de
12V integrate pe ntru a simula sistemul de
ventilație.Modulul are la baza 2 punți H cu care permite
controlul vitezei și direcției motorului.
În placă de dezvoltare se conectează 6 pini, 3 pentru
fiecare motor.
Pentru motorul 1:
 In1 – activează motorul 1
 In2 – activează mo torul 1
 EnA – activează semnalul PWM
Pentru motorul 2:
 In3 – activează motorul 2
 In4 – activează motorul 2
 EnB – activează semnalul PWM
Cu ajutorul semnalului PWM(Pulse Width Modulation) se controlează viteza motorului.
Modulul driver de motoare L298N po ate alimenta cele două motoare atât pe 5v cât și folosind
tensiuni mai mari(ex:12v).
Un lucru important de precizat este că, dacă folosim driverul conectat la o placă de
dezvoltare asemănătoare Arduino, cei doi pini EnA și EnB ce activează semnalul PWM tr ebuie
neapărat conectați la unul din pinii speciali PWM de pe placa de dezvoltare.Deasemenea dacă se
folosește o alimentare externă, groundul acesteia trebuie să fie comun cu groundul plăcii de
dezvoltare.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

20
4.Medii de programare
4.1 Arduino – C/C++
Arduino IDE reprezintă o aplicație ce a fost dezvoltată pentru a ușura programarea
microcontrolerului.Astfel poate fi utilizată atât de utilizatori mai experiomentati cât și de
începători, fiind ușor de înțeles. Acesta include un editor de cod având diverse proprietăți
ajutătoare, cum ar fi evidențierea sintaxelor, închiderea/deschiderea parantezelor pentru funcții
sau alinierea automată a rândurilor. Aplicația este capabilă să compileze și să încarce codul scris
pe placă Arduino rapid, doar la un cl ick distanta. Un program sau o bucată de cod scrisă pentru
Arduino poartă numele de „sketch”.
Programele Arduino sunt scrise în limbajul de programare C/C++. Pentru a produce un
program executabil ciclic, utilizatorul trebuie să definească două funcții, c are obligatoriu trebuie
să poarte numele de „setup()” și „loop()” pentru a fi recunoscute de compilator.
După cum ne dăm seama și din denumire, funcția "setup()" rulează o singură dată și are
rol de inițializare.În acest segment utilizatorul poate decla ra variabilele cu o anumită valoare de
început, poate seta pini plăcii de dezvoltare sau inițializa conexiunea serială.Funcția "loop()"
rulează repetitiv și în interiorul acesteia va exista majoritatea codului programat.
Ca orice limbaj de programare asem ănător C/C++ utilizatorul își poate crea funcții
diverse pe care le va apela în "loop()".
În concluzie platforma sofware dezvoltată de Arduino are rolul de a simplifica modul de
programare C/C++ pentru a ușura înțelegerea de cătră utilizatorii începători.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

21
4.2 HTML/CSS
4.2.1 HTML(HyperText Markup Language)
HTML(HyperText Markup Language) este un limbaj de marcare pentru creat pagini și
aplicații web.Elementele unui HTML sunt reprezentate de etichete, una de deschidere
<eticheta> și alta de î nchidere </eticheta>. Astfel cu ajutorul etichetelor, un browser web
randează conținutul paginii.
Pagina principală a unui domeniu este fișierul „index.html” respectiv „index.htm”. Această
pagină este setată a fi afișată automat la vizitarea unui domeniu.
De exemplu la vizitarea domeniului www.domeniu.ro este afișată pagina
www.domeniu.ro/index.html.Unele etichete permit utilizarea de atribute care pot avea anumite
valori:
<eticheta atribut="valoare"> … </eticheta>
Componența unui document HTML este:
 versi unea HTML a documentului
 zona head cu etichetele <head> </head>
 zona body cu etichetele <body> </body> sau <frameset> </frameset>
<!DOCTYPE html> //se definește documentul ca fiind HTML5
<html>
<head> //conține informațiile meta despre document
<title>Titlul paginii </title>//titlul documentului
</head>
<body> //conține elementele vizibile în pagină web
<h1>Primul heading </h1>
<p>Primul paragraf. </p>
</body>
</html>
Scopul HTML este mai degrabă prezentarea informațiilor – paragrafe, fontu ri, tabele etc.,
decât descrierea semanticii documentului.
4.2.2 CSS(Cascading Style Sheets)
CSS descrie cum arata elementele HTML în browserul web.Este folosit pentru a defini
stiluri vizuale pentru paginile web. Stilurile se pot atașa elementelor HTML prin intermediul
unor fișiere externe sau în cadrul documentului, prin elementul <style> și/sau atributul style.
CSS se poate utiliza și pentru formatarea elementelor XHTML, XML și SVGL.
CSS3 reprezintă un upgrade ce aduce câteva atribute noi și ajută la dezvoltarea noilor
concepte în webdesign.Unele dintre cele mai importante segmente (module) noi adăugate acestui
standard pentru formatarea elementelor HTML aduc un plus considerabil în dezvoltarea
activități webdesign.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

22
4.3 JavaScript
JavaScript este un limbaj de programare orientat obiect bazat pe conceptul
prototipurilor.R eprezinta limbajul de programare al HTML -ului si al paginii web.Cu ajutorul
acestui limbaj de programare se poate programa comportamentul paginilor web.
A fost dezvoltat inițial d e către Brendan Eich de la Netscape Communications
Corporation sub numele de Mocha, apoi LiveScript, și denumit în final JavaScript.
Browserele rețin în memorie o reprezentare a unei pagini web sub forma unui arbore de
obiecte și pun la dispoziție aceste obiecte script -urilor JavaScript, care le pot citi și manipula.
Arborele de obiecte poartă numele de Document Object Model sau DOM. Există un standard
W3C pentru DOM -ul pe care trebuie să îl pună la dispoziție un browser, ceea ce oferă premiza
scrierii de script -uri portabile, care să funcționeze pe toate browserele. În practică, însă,
standardul W3C pentru DOM este incomplet implementat . Deși tendința browserelor este de a se
alinia standardului W3C, unele din acestea încă prezintă incompatibilități majore, cum este cazul
Internet Explorer.
O tehnică de construire a paginilor web tot mai întâlnită în ultimul timp este AJAX,
abreviere de la „Asynchronous JavaScript and XML”. Această tehnică constă în executarea de
cereri HTTP în fundal, fără a reîncărca toată pagina web, și actualizarea numai anumitor porțiuni
ale paginii prin manipularea DOM -ului paginii. Tehnica AJAX permite construirea unor
interfețe web cu timp de răspuns mic, întrucît operația (costisitoare ca timp) de încărcare a unei
pagini HTML complete este în mare parte eliminată.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

23
4.4 AJAX(Asynchronous JavaScript And XML)
AJAX este o tehnică de dezvoltare pentru a crea aplicații web mai rapide și interactive.Combina
JavaScript,HTML,CSS și XML.Avantajele majore pe care le are această metodă sunt:
-Actualizeaza o pagină web fără ca aceasta să fie reîncărcata
-Trimite date unui server în background
-Cere date de la un server după ce pagină a fost încărcată
-Trimite date la un server după ce pagină a fost încărcată
AJAX poate folosi XML(Extensible Markup Language) să transporte date și JavaScript/HTML
să afișeze date.Această metodă permite păgânilor web să se actua lizeze asincron prin schimburi
de date de la un web server, în background.
 1. A apărut un eveniment în pagină web(ex:pagina încărcată,un buton apăsat, etc.)
 2. Un XMLHttpRequest object este creat de JavaScript
 3. Obiectul XMLHttpRequest trimite o cerere un ui web server
 4. Serverul procesează cererea primită
 5. Serverul trimite un răspuns înapoi paginii web
 6. Răspunsul este citit de JavaScript
 7. Acțiunea în pagină web este făcută de JavaScript

fig.5.1 Schema bloc functionare metoda AJAX

Câteva aplicaț ii web cunoscute care folosesc AJAX sunt:
>Google Maps https://www.google.ro/
-utilizatorul utilizează mouse -ul pentru a alege locații pe glob

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

24
>Google Suggest google.com
-pe măsură ce scrii, Google îți oferă sugestii pe care poți să le alegi cu tasta tură
>Gmail gmail.com
-contine email -uri mai intuitive și eficiente

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

25
5.Implementare
În următorul capitol voi prezenta pas cu pas etapele necesare pentru a implementa un
astfel de sistem.Că mod de prezentare fizic, am ales să cone ctez întregul sistem pe un panou și să
reprezind modular funcționalitatea fiecărui modul.
Accesul aplicației web se va face de la distanță folosind aproape orice device conectat la
internet.
5.1 Instalarea Mediului Integrat de Dezvoltare(IDE) Arduino
Pentru crearea codului sursa ce trebuie încărcat în memoria microcontrolerului, am ales
să folosesc Mediul Integrat de Dezvoltare oferit gratuit de Arduino.Softul de poate descărca de
pe site -ul oficial Arduino: https://www.arduino.cc/en/main/software

fig. 5.1 Structura IDE Arduino
Limbajul de programare utilizat de Arduino IDE este asemănător limbajului C dar ușor
mai simplificat.Softul oferă o gamă largă de librarii dedicate microcontrolarelor utilizate de
plăcile de dezvoltare Arduino

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

26
5.2 Realizare a circuitului electric
Circuitul electric este dispus în module conectate între ele.Există două module esențiale:
 modulul de alimentare electrică
 modulul de comandă
aceste două module sunt vitale în funcționarea de bază a sistemului. Restul modulelor pot
fi detașate fără să afecteze funcționalitatea celorlalte module și sunt:
 măsurarea și controlul temperaturii
 acționarea luminilor din locuința
 măsurarea nivelului de gaz și sistemul de ventilație
 sistemul de închidere a ușii principale
 verificare status ge amuri
 automatizare iluminat în funcție de prezența
5.2.1 Modulul de alimentare electrica
Acest modul alimentează cu energie electrică întregul ansamblu.Preia curentul alternativ
de la priză de 220v și distribuie mai departe la restul modulelor.Pentru a alimenta placă de
dezvoltare Arduino și restul elementelor ce necesită curent continuu de 12v, am folosit o sursă
industrială S150 -12.Ca măsură de siguranță am folosit o siguranță automată de 10A pe
alimentarea generală și încă două disjunctoare.Unul pentr u alimentarea sistemului de iluminat și
celălalt pentru alimentarea sursei de 12v.Distribuția către elementele din sistem este făcută cu
ajutorul unor cleme cu prindere rapidă.
fig. 5 .2 Modulul de alimentare electrica

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

27
5.2.2 Modulul de comandă
Modulul de comandă este reprezentat de placă de dezvoltare arduino și shieldul
ethernet.Folosind diverși conectori și mufe, de la sistemul de comandă pleacă conexiunile
necesare celorlalte module.Deasemenea, în modulul de comandă este instalat și routerul care
face conexiunea între internet și placa de dezvoltare.
5.2.3 Măsurarea și controlul temperaturii
Acest modul simulează practic automatizarea unei centrale de încălzire în funcție de
valoarea citită de la senzorul de temperatură și valoarea de prag definită de utilizator.
Componentele modulului sunt: un senzor de temperatură DHT11 și un led care reprezintă
statusul centralei de încălzire(oprit/pornit).
5.2.4 Acționarea luminilor din locuința
Modulul simulează controlul sistemului de iluminat din locuința. Este reprezentat de 3
becuri alimentate din disjunctorul modulului de alimentare electrică și 3 relee cu care se
realizează comanda din pinii digitali ai plăcii de dezvoltare Arduino
.
fig. 5 .3 Modulul de actionare a luminilor

5.2.5 Măsurarea nivelului de gaz și sistemul de ventilație
Pentru a simula un scenariu apropiat de cel real, am creat un mediu închis reprezentând o
încăpere a locuinței în care am montat senzorul de gaz și două ventilatoare care ajută la
recirculația rapidă a aerului în cazul în care este necesar.Ventilatoarele sunt alimentate cu o
tensiune electrică de 12v cu ajutorul unui driver de motoare.Scenariul este descris astfel: în cazul
în care, în încăpere, nivelul de gaz a atins valoarea maximă admisă, pornește automat ventilația
până când calitatea aerului revine în parametrii normali.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

28

fig. 5 .4 Modulul automatizarii aerisirii in functie de nivelul de gaz

5.2.6 Sistemul de închidere a ușii principale
Ușa principală poate fi accesată atât utilizând un card de proximitate definit î n sistem cât
și tastând pinul de utilizator.Încuietoarea ușii este reprezentată de un electromagnet comandat de
la un releu.Pentru a ști dacă ușa este închisă cât și dacă zăvorul este tras, am folosit 2 senzori cu
efect Hall.
Funcționalitate sistem închid ere: Presupunem că ușa este închisă și încuiată.Cu ajutorul celor doi
senzori Hall, placă de dezvoltare verifica starea acestora și transmite mai departe aplicației web
statusul sistemului (ușă:închisă; incauietoare:închisă).În momentul în care se deschide
ușa(folosind cardul de proximitate sau pinul definit) zăvorul este tras 3 secunde în care se
așteaptă deschiderea ușii de către utilizator.În cazul în care ușa nu este deschisă în acest interval,
zăvorul este tras.În cazul în care se deschide ușa în inte rvalul a 3 secunde, zăvorul nu este tras
până când senzorul Hall detectează că ușa a fost închisă fizic.
Cititorul de proximitate folosit se alimentează la o tensiune de 12v și comunica cu placa de
dezvoltare folosind protocolul Wiegand 26.Mai multe detali i legate de acest protocol găsiți la
subcapitolul 3.4.Tastatura utilizată este o tastatură matricială cu 8 pini conectați la intrările
digitale ale plăcii de dezvoltare Arduino, reprezentând 4 linii și 4 coloane.

5.2.7 Verificare status geamuri
Pentru că utilizatorul să știe dacă un geam este deschis sau închis am folosit senzori
magnetici.Acest tip de senzori își schimbă valoarea logică în prezența unui magnet.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

29

fig. 6.5 Senzori magnetici

5.2.8 Automatizare iluminat în funcție de prezența
Am asoci at unui bec un senzor de prezența PIR.În momentul în care senzorul detectează
prezența, un releu primește comanda de a porni becul.Acesta din urmă rămâne aprins câteva
secunde și dacă senzorul PIR nu mai detectează prezența, se oprește.

5.3 Scrierea codul ui sursa
Codul sursă al întregului sistem se împarte în două limbaje de programare
distincte.Primul este reprezentat de codul compilat și încărcat pe placa de dezvoltare
Arduino,respectiv în memoria microcontrolerului, iar cel de -al doilea este codul apli cației
web.Acesta din urmă este păstrat de placă ethernet pe cardul microSD încorporat și poate fi
accesat de pe internet.
5.3.1 Cod sursa Arduino
În mediul de programare Arduino se regăsesc majoritatea funcțiilor și algoritmilor care
duc la comportament ul microcontrolerului.
În prima parte a codului, până să intrăm în funcția "setup()",se adăugă librăriile necesare
funcționalității elementelor componente din cod

fig. 5 .6 Librariile utilizate

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

30
În fig. 5 .6 se pot observa librăriile pe care le -am folosi t.Primele trei librarii ajută la
conexiunea plăcii Arduino cu placa ethernet.Librăriile "Password" și "Keypad" conțin sursele
necesare inițializării și verificării parolei introduse de la tastatură matricială.Librăria "dht" ajuta
la interpretarea semnalulu i trimis de senzorul de temperatură și umiditate, iar "Wiegand" la
protocolul de comunicație de tip Wiegand pe care îl are cititorul de proximitate.

fig. 5 .7 Setarile Ethernet
În figură fig. 5 .7 se evidențiază codul care setează configurația ethernet. Codul se poate
adapta în funcție de mac -ul plăcii ethernet, care este un număr unic, adresa IP, care poate varia în
funcție de rețeaua în care este routerul.O altă configurație importantă este portul plăcii ethernet.

fig. 5 .8 Setarea parolei si definirea pinilor tastaturii
Se poate observa în fig. 5 .8 codul care definește pinii care sunt conectați la tastatură
matricială folosită la sistemul de închidere a ușii principale.Deasemenea, tot în partea aceasta a
codului se definesc și variabilele globale util izate în mai multe funcții.
În structura funcției "setup()" se introduc elemente de inițializare.Funcția "setup()" se execută o
singură dată, la alimentarea microcontrollerului.

fig. 5 .9 Initializare conexiune fisier index.htm
În figură de mai sus este reprezentat codul care verifica existența unui anumit fișier .htm
pe cardul microSD apoi se intializeaza placă ethernet cu ip -ul setat anterior.Legat de conexiunea
cu placa ethernet, în mod normal se poate alege să se urce codul htm atât pe cardul microSD cât
și scris în memoria internă a plăcii Arduino.Am ales să folosesc varianta cu cardul micro SD

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

31
deoarece îmi oferă spațiu de memorie relevant astefel încât să nu am probleme dimensiunea prea
mare a codului.Pentru a seta acest tip de memorie, se dezactivea ză chipul plăcii ethernet, setând
pinul digital 10 al plăcii arduino pe LOW.
Tot în porțiunea aceasta de cod se intializeaza pinii folosiți pe placa Arduino.D upă cum
puteți observa în fig. 5 .10 pinii digitali ai plăcii Arduino au fost setați atât "INPUT" – pin
pregătit să primească valori logice de la diverși senzori sau butoane, cât și "OUTPUT" – pin
pregătit să trimită semnal digital către releu, led,etc.Pentru senzorii magnetici folosiți la geamuri
pinii au fost setați că "INPUT -PULLUP".În momentul în c are un capăt al unuia din firele
senzorului magnetic este conectat la pinul setat input -pullup, celălalt trebuie conectat la groundul
plăcii de dezvoltare.Astfel pinul reușește să citească valori logice diferite în funcție de prezența
unui magnet în preajm a senzorului.

fig. 5 .10 Configurarea pinilor digitali utilizati
Următoarea secțiune a codului sursa al microcontrolerului este funcția "loop()".Această
funcție, ca și funcția "setup()" este obligatorie în structura de cod Arduino.Diferență majoră
dintre "setup()" și "loop()" este că aceasta din urmă este accesata repetitiv în timpul funcționarii
microcontrolerului.Cu alte cuvinte, codul existent în interiorul acestei funcții intra într -o buclă
infinită.
În prima parte vom descrie fragmentul de cod, care realizează transferul de informații
dintre placă de dezvoltare Arduino și pagină web, care reprezintă interfața utilizatorului.

fig. 5.11 Sectiunea de cod care realizeaza transferul de da te dintre Arduino si pagina web
Arduino verifica prin "HTTP_req" d acă primește răspuns de la pagină web, implicit de la
utilizator(ex: dacă s -a apăsat un buton), le verifică și acționează în funcție de ce primește.Un
exemplu concret este funcția "setLEDs()" care este rulata în momentul în care se primește un
răspuns de l a serverul web.Dup ă cum bine observăm și în fig. 5.11 această funcție verifica ce se
primește de la serverul web și acționează dacă recunoaște ceva.În exemplul de mai jos, dacă se
primește "LED1=1" se va acționa un releu.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

32

fig. 5 .12 Functie de verificare date primite de la serverul web
Ceea ce trimite Arduino către serverul web, respectiv către aplicația web este conținut de
funcția "XML_response(EthernetClient cl)", care este rulata continuu atât timp cât există o
conexiune cu serverul.

fig. 5 .13 Funct ie de trimitere date catre serverul web
După cum putem observa în fig. 5.13 funcția "XML_response(EthernetClient cl)" trimite
către pagină web valori de la diferiți senzori, valori situate între etichete(ex:<analog>valoare_de
_trimis</analog>).Astfel se reușește citirea corectă a datelor din codul Javascript al paginii
HTML.
Recapitulând cele spuse anterior legate de transferul reciproc de date dintre Arduino și
serverul web, tragem concluzia că există 2 funcții principale care ajută la asta.Funcția
"setLEDs()" care reușește să verifice informația primită de la pagină web și acționează conform
acesteia – folosită la implementarea butoanelor de pe aplicația web și funcția
"XML_response(EthernetClient cl)" care trimite datele colectate de la senzori organiz ate în
etichete, ca apoi să fie preluate de Javascript -ul paginii web și distribuite eficient în HTML -ul
aplicației web.
Trebuie să menționez faptul că informațiile conținute de "XML_response" nu se trimit
decât dacă serverul web este activ, cu alte cuvi nte, doar dacă este accesata pagină web.De aceea
pentru că sistemul să funcționeze corect, toți algoritmii care ajută la automatizarea sistemului se
scriu în funcția "loop()" a codului sursa.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

33

fig. 5 .14 Programarea elementelor conectate la Arduino in "loo p()"
În figură de mai sus sunt prezentate câteva if -uri care fac anumite module ale sistemului
să fie automate.În prima parte se face o verificare între temperatura citită de la senzor și pragul
setat de utilizator în aplicația web.În momentul în care pra gul este mai mic decât temperatura
citită, se oprește ledul situat pe pinul 9.În caz contrar ledul pornește.Ledul simulează sursa de
căldură din încăpere.
Următoarele linii de cod citesc valorile analogice de la senzorul de gaz respectiv senzorul
cu efect Hall.
"wg.available()" verifică codul cardului cu care se încearcă accesul ușii principale.Dacă
codul corespunde se deschide ușa.Mai departe se verifică valoarea senzorului Hall,respectiv dacă
ușa este închisă.Dacă senzorul Hall este activat se comută re leul care alimentează zăvorul.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

34
5.3.2 Cod sursa aplicație web
Codul sursă al aplicației web este compus din trei părți.Prima parte este reprezentată de
funcțiile Javascript, a doua parte de stilurile CSS3 și ultima parte efectiv conținutul pag inii scris
în HTML.
Am result să combin aceste trei limbaje astfel în cât aplicația web să funcționeze rapid și
eficient.Metoda folosită a fost AJAX , metoda prezentată la capitolul 5.Cu AJAX se reușește
transferul de date dintre server și pagină web în spate, fără a reîncărca pagină web folosind
XML.
După cum puteți observa în fig. 5.15 funcția "GetArduinoIO()" recepționează datele primite din
etichetele trimise de la microcontroler și le distribuie mai departe în HTML.

fig. 5 .15 Funcția javascript de recepționare date de la MCU
Tot în Javascriptul paginii web se realizează și transferul de date către
microcontroler.Lucru evidențiat fin fig. 6. 16.

fig. 5 .16 Cod javascript de trimitere date către MCU

Am creat în partea asta de cod și funcții care s e aplică dacă un buton este aplicat și trimit
diverse mesaje către microcontroler.Tot codul javascript a fost scris în interiorul etichetei
<script></script>.
Continuând , următoare structură este conținută de etichetă <style><style> și este
reprezentată de limbajul CSS3. Cu ajutorul acestei secvențe de cod am creat un design mai
interesant al aplicației web.
Ultima parte este reprezentată de codul HTML, care afișează co nținutul aplicației web.În
fig 5.17 observăm dispoziția elementelor afișate în aplic ația web în tabele.Elementele care se
schimbă în funcție de ce se primește de la microcontroler au id -uri,astfel funcția din javascript
știe exact unde să trimită datele.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

35

fig. 5 .17 Exemplu de cod HTML
Codul aplicației web este conținut de un fișier index .htm accesat de browser de pe cardul
microSD al plăcii Ethernet.

5.4 Crearea conexiunii Arduino -Router -Internet
Pentru că aplicația web stocată de placă ethernet pe cardul microSD să fie accesibilă
oriunde de pe internet, avem nevoie de un router.În cod ul sursă al plăcii de dezvoltare Arduino
putem asocia plăcii ethernet o adresă IP și un port.

fig. 5 .18 Setari conexiune internet
Adresa IP trebuie să fie din aceeași clasă de IP -uri cu routerul.Pentru a accesa aplicația web din
rețeaua locală, dispozi tivul pe care îl folosim (laptop,tableta,telefon) trebuie să fie conectat la
rândul lui, la același router.

Pentru a asigura conexiunea, putem seta manual
proprietățile cone xiunii locale IPv4 (vezi fig. 5.19).
IP address este adresa IP a device -ului folosi t,Subnet
mask, masca,iar default gateway adresa routerului.

fig. 5 .19 Setari IPv4

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

36

fig.5.20 Conexiune fizica retea locala
Pentru a face posibil accesul paginii web din altă rețea este nevoie de configurarea
routerului.Trebuie cre at un port forwarding pe adresa IP a plăcii ethernet.Acest lucru se face
accesând meniul routerului,după cum urmează:Într -un browser se accesează adresa IP a
routerului.În cele mai dese cazuri adresa poate fi 192.168.0.1 sau 192.168.1.1.În meniul
routerulu i găsiți tabul "Forwarding".

Aici adăugăm adresa IP și portul plăcii ethernet.

După salvare, reporniți routerul.În acest moment, pagină web stocată de placă ethernet poate fi
accesată din altă rețea.Accesul se face în felul următor:
Într-un browser, cu conexiune la internet, scrieți adresa IP a providerului de internet asociată
routerului unde este conectat sistemul și portul.Exemplu:

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

37
5.5 Funcționalitate Aplicație Web
Structura aplicației web se poate observa în fig. 6.5.1 . Primul tab conține ele mentele
legate de securitate.Se primește în timp real statusul geamurilor (închis/deschis) și prezența
mișcare în diferite zone ale locuinteri.
În tabul ușa intrare primim informații legate de statusul ușii și
încuietorii(închisă/deschisă).
Temperatura e ste monitorizată cu ajutorul unui afișaj circular iar pragul de temperatura
este setat din cele două butoane "+" și " -".
Umiditatea și consumul de energie electrică, la fel ca temperatura este monitorizată pe
același tip de afișaj circular.
Controlul lum inilor este realizat utilizând butoane (ON/OFF) care își schimbă denumirea
în funcție de statusul becurilor.
Se poate monitoriza nivelul de gaz și nivelul de iluminare din încăpere.
Afișajul circular folosit în aplicație este predefinitin javascript.Util izarea în proiecte a acestuia
este gratuită.Licența se găsește la anexă 1.

fig. 5 .21 Privire de ansamblu aplicație web
Aplicația rulează rapid pe orice device cu browser web compatibil HTML5.Având în
vedere că este aplicație web, accesul este flexibil fo losind atât laptop cât și tableta și/sau telefon.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

38
5.6 Descriere panou de prezentare

fig. 5 .21 Ansamblu panou de prezentare
Am ales să folosesc ca model de prezentare un panou construit din sine DIN.Fiecare
modul este reprezentat separat pentru a ob serva mai ușor funcționalitatea acestuia.Conexiunile
exterioare necesare funcționalității complete a sistemului sunt alimentarea electrică de la
priză(AC 220V) și cablu pentru conexiunea internet.
Pentru a simula parametri dintr -o încăpere, am creat medii închise din plexiglas în care
am montat senzorii necesari măsurătorilor.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

39
6.Dezvoltare
După realizarea proiectului și în timpul acesta, am realizat că această ramură, domotica,
permite o dezvoltare vastă.Sistemele de automatizare locuința pot fi oricând extinse și
upgradate.Deasemenea se pot prelua tehnologiile noi apărute pentru a îmbunătăți sitemul
domotic.
Cum am precizat și în capitolul doi, sistemul domotic trebuie conectat la o sursă de
energie regenerabilă.Un exemplu concret este montar ea de panouri fotovoltaice.Piața panourilor
fotovoltaice s -a dezvoltat și ea, existând tot mai mulți producători.Avantajul principal în
utilizarea unei surse regenerabile este reducerea costului la energie electrică.Dacă se optează
pentru alimentarea între gii clădiri de la osursa regenerabila, costul pentru energia electrică este
zero.
Pentru a spori confortul utilizatorului se poate monta un sistem de încălzire în
pardosele.Acest sistem ar îmbunătăți eficienta menținerii temperaturii dorite constant în
încăpere.
Având în vedere că am creat un sistem compus din module independente, adăugarea de
alte elemente este facilă.Spre exemplu, dacă se dorește, se pot adăuga mai mulți senzor, atât timp
cât poate microcontrollerul.
O îmbunătățire majoră a sistemului creat de mine este înlocuirea conexiunii cablata și
adăugarea unor module wi -fi care ajută elementele din locuința ca comunice între ele.
Cu alte cuvinte, dezvoltarea acestui tip de sistem este limitată doar de bugetul și dorințele
utilizatorului.Se poat e crea un sistem domotic complet autonom, utilizând surse de energie
regenerabilă.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

40
7.Concluzie
Se observă clar o dorință a utilizatorilor de locuințe pentru implementarea sistemelor de
casă inteligentă.Având în vederea dezvoltarea tehnologiilo r de comunicație între componentele
electronice, acest lucru a devenit facil.
După analiza acestor sisteme, consider că cel mai important element îl reprezintă sursa de
energie electrică ce alimentează întregul ansamblu.Plecând de la faptul că se utilizea ză o sursă
de energie regenerabilă, trebuie creat un plan de management al consumului pentru a distribui
energia într -un mod cât mai eficient.
Practic, reducerea consumului de energie electrică se realizează utilizând echipamente
electronice și electrice cu consum redus.Un exemplu concret, înlocuirea becurilor cu filament
care au un consum mare, cu becuri led.Deasemenea se pot folosi diverși senzori cu care se
controlează funcționalitatea unor unor echipamente electronice.Ca exemplu avem asocierea unui
senzor de prezența sau a unui senzor de lumină cu sistemul de iluminat din locuința.
Elementele termo din locuința, care consumă în funcție de comparația temperaturii din
încăpere cu temperatura setată de utilizator, au o eficientă a consumului electric izo lând
încăperea.
Confortul dat de sistemele de casă inteligentă este, în principal, reprezentat de faptul că
utilizatorul schimba paramaetri din locuința cu doar un click folosind aplicația web oriunde de
pe internet.Cu ajutorul Internet of Things toate e lementele din locuința comunica cu
microcontrolerul, iar acesta din urmă cu utilizatorul folosind interfața web.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

41
Rezumat
Plecând de la ideea generală că oamenii tind să -și ușureze și să -și simplifice activitățile
zilnice am ales să folosesc tehnologia pentru a îndeplini această dorință. Domeniul pe care l -am
ales este comun atât utilizatorilor casnici cât și firmelor ce au clădiri cu birouri.
Tema proiectului evidențiază două aspecte importante ale automatizării unei
locuințe.Primul aspect important este reducerea consumului de energie electrică, care este în
creștere față de ultimii ani.Am considerat că trebuie făcută o analiză a consumului d e energie
electrică în funcție de tipul de consumatori utilizați în imobil.Astfel se poat lua măsuri în funcție
de fiecare situație pentru a reduce consumul.Un exemplu rapid și detaliat în proiect este
asocierea unor senzori cu anumiți consumatori.Sistemul de iluminat, de multe ori, funcționează
fără întrerupere și fără a fi necesar acest lucru.Dacă sistemului de iluminat îi asociem un senzor
de prezența, acesta va porni numai în cazul în care este necesar.Astfel consumul sistemului de
iluminat este eficien t.
Deasemenea utilizarea de surse de energie electrică regenerabila, așa cum sunt panourile
fotovoltaice,crește eficiența în consumul de energie electrică din locuința.
Al doilea aspect important în sistemul de smart house este confortul.Confortul este d at de
ușurința cu care utilizatorul acționează anumite elemente sau monitorizează parametrii din
locuința.Aplicația web creată de mine, consider că sporește drastic confortul față de o locuință
tradițională.
Utilizatorul poate controla sistemul de ilumina t și temperatura din locuința prin internet
de pe orice device.
Încă un plus adus confortului este securitatea locuinței.Utilizând aplicația se pot
monitoriza parametri care informează utilizatorul dacă geamurile sunt deschise sau dacă ușile
sunt încuiate .
Deasemenea automatizarea sistemului de ventilație asociind funcționarii acestuia un
senzor de gaz sporește siguranță.Un exemplu de scenariu real: Nu este nimeni acasă și într -o
încăpere sunt scurgeri de gaz.Senzorul le detectează și dacă depășesc pragul critic, se acționează
automat sistemul rapid de ventilație.
Sistemele de control și monitorizare locuința sunt pe o pantă ascendentă, iar proprietarii
de locuințe doresc din ce în ce mai mult instalarea lor.Un avantaj îl reprezintă faptul că sistemele
se pot îmbunătăți pe parcurs, adăugând elemente noi.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

42
Bibliografie
[1] B. Hirl, Energy Eff iciency Status Report. 2012. (PDF)
[2] Floroian D.,Moldoveanu F., Microcontrolere,Universitatea Transilvania din Brașov,2009
[3] Alan Trevenor ,Practical AVR Microcontrollers (PDF)
[4] http://webbut.unitbv.ro/Carti%20on -line/BSM/BSM/ capitol4.pdf ,senzori
[5] https://github.com/Mikhus/canvas -gauges/blob/master/LICENSE , licența afișaj HTML5
[6] https://www.arduino.cc/en/Main/arduinoBoardMega2560 , proprietăți Arduino Mega 2650
[7] http://www.w3schools.com/ ,informatii referitoare la HTML/CSS3/Javascript

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

43

Anexa 1 [Licenta utilizare afisaj circular aplicatie web ]
The MIT License (MIT)

Copyright (c) 2016 Mykhailo Stadnyk <mikhus@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subjec t to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
IMPLIED, INCLUDING BU T NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHE RWISE,
ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE
SOFTWARE.

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

44
Anexa 2 [Codul sursă microcontroler]

#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
#include <Password.h>
#include <Keypad.h>
#include <dht.h>
#include <Wiegand.h>
#define dht_dpin A1 //se defineste pinul analogic pentru senzorul de temperatura
#define MQ2 A2 //se defineste pinul analogic pentru senzorul de gaz
#define REQ_BUF_SZ 50 //marime buffer pentru HTTP requests
WIEGAND wg;
dht DHT;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //adreasa MAC a placii E thernet
IPAddress ip(192, 168, 1, 101); // Adresa IP a placii Ethernet
EthernetServer server(80); // Portul placii Ethernet
File webFile;
char HTTP_req[REQ_BUF_SZ] = {0};
char req_index = 0;
boolean LED_state[5] = {0}; // Statusul ledurilor folosite la butoane
int senzor_magnetic=22,senzor_magnetic2=24; //pini senzori magnetici
int r1=23,r2=25,r3=27,r4=29; //pini relee
int led_w=6, buzzer_w=5;//pini led si buzzer cititor RFID
int prag_setat;
int rel_usa=7;//pin releu folosit la incuietoare
int gaslevel;//variabila valoare senzor gaz
float teset=200;//variabila prag temp setat, initializat cu 20*C
int pir1=37,pir2=41;
const int hallPi n = 26;
int hallState = 0;

const int analogIn = A3;
int mVperAmp = 66;
int RawValue= 0;
int ACSoffset = 2500;
double Voltage = 0;
double Amps = 0;
double Wat t = 0;

Password password = Pas sword( "1234" );
const byte ROWS = 4; // Four rows
const byte COLS = 4; // columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte rowPins[ROWS] = { 35,33,31,36 };
byte colP ins[COLS] = { 34,32,30,28, };
Keypad keypad = Keypad( makeKeymap(keys), rowPins, co lPins, ROWS, COLS );

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

45
void setup()
{
// dezactivare chip ethernet
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);

Serial.begin(9600); // pentru debugging in serial monitor

// initializare card SD
Serial.println("Init ializare card SD…");
if (!SD.begin(4)) {
Serial.println("EROARE! – Initializare card SD esuata!");
return; // initializare esuata
}
Serial.println("SUCCES! – Card SD initializat");
// cauta fisierul .htm
if (!SD.exi sts("index.htm")) {
Serial.println("EROARE! – Nu gaseste fisierul .htm!");
return; // can't find index file
}
Serial.println("SUCCES! – Fisier .htm gasit!");
Ethernet.begin(mac, ip); // initializare placa Ethernet
server.begin(); // porneste server

//servoMain.attach(42); //pin servo
pinMode(led_w,OUTPUT); //pin led reader
pinMode(buzzer_w,OUTPUT); //pin buzzer reader
digitalWrite(buzzer_w,HIGH);
digitalWrite(led_w,HIGH) ; //initializate

wg.begin();//initializare reader RFID
DHT.read11(dht_dpin);//citeste valoare senzor de temperatura

pinMode(senzor_magnetic, INPUT_PULLUP); //defineste pin senzor magnetic de tip pull -ip
pinMode(senzor_m agnetic2, INPUT_PULLUP); //defineste pin senzor magnetic de tip pull -ip
pinMode(pir1, INPUT);//pin senzor PIR 1
pinMode(pir2, INPUT);//pin senzor PIR 2
pinMode(9, OUTPUT);//test led
pinMode(rel_usa, OUTPUT);//releu incuietoare
pinMode(r1, OUTPUT);//releu 1
pinMode(r2, OUTPUT);//releu 2
pinMode(r3, OUTPUT);//releu 3
pinMode(r4, OUTPUT);//releu 4

digitalWrite(rel_usa, HIGH); //initializare relee oprite
digitalWrite(r1, HIGH);
digitalWrite(r2, HIGH);
digitalWrite(r3, HIGH);
digitalWrite(r4, HIGH);
pinMode(MQ2,INPUT); //initializare senzor gaz
digitalWrite(9, LOW);//led test

pinMode(hallPin, INPUT);

keypad.addEventListener(keypadEvent); //add an event listener for this keypad
}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

46
void loop()
{
EthernetClient client = server.available(); // cauta client
if (client) { // verifica daca exista client
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // d ate client disponibile pentru citit
char c = client.read(); // citeste 1 byte(caracter) de la client
if (req_index < (REQ_BUF_SZ – 1)) {
HTTP_req[req_index] = c; // salveaza caracter
req_index++;
}
if (c == ' \n' && currentLineIsBlank) {
// trimite raspuns http standard
client.println("HTTP/1.1 200 OK");
//cerere Ajax
if (StrContains(HTTP_req, "ajax_inputs")) {
// trimite restul raspunsului HTTP
client.println("Content -Type: text/xml");
client.println("Connection: keep -alive");
client.println();
SetLEDs(); //trimite functiile cu statuturile intrarilor
PrimestePrag();
XML_response(client);
}

else { // web page request
// send rest of HTTP header
client.println("Content -Type: text/html");
client.println("Connection: keep -alive");
client.println();
// trimite pagina web
webFile = SD.open("index.htm"); // deschide pagina web
if (webFile) {
while(webFile.available()) {
client.write(webFile.read()); // trimite pagina web clientului
}
webFile.close();
}
}
// afiseaza HTTP request pr imit pe portul serial
//Serial.print(HTTP_req);
req_index = 0;
StrClear(HTTP_req, REQ_BUF_SZ);
break;
}
// every line of text received from the client ends with \r\n
if (c == ' \n') {
// last character on line of received text
// starting new line with next character read
currentLineIsBlank = true;
}
else if (c != ' \r') {
// a text character was received from client
currentLineIsBlank = false;
}
} // end if (client.available())
} // end while (client.connected() )
delay(1); // give the web browser time to receive the data

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

47
client.stop(); // close the connection
} // end if (client)

// verifica temperatura setata cu temperatura primita
if (teset/10<=DHT.temperature) {
digitalWrite(9, LOW); //opreste caldura
}
else if ( teset/10 >DHT.temperature) {
digitalWrite(9,HIGH); //porneste caldura
}
delay(10);
gaslevel=(analogRead(MQ2)); //citeste valoare senzor gaz

hallState = digitalRead(hallPin);//citeste valoare senzor hall

if(wg .available())
{
if(wg.getCode()==748907){
OpenDoor();
}
}
if (hallState == LOW){ //daca usa este inchisa
digitalWrite(rel_usa, HIGH); //incuie usa
digitalWrite(led_w,HIGH);
digitalWrite(buzzer_w,HIGH);
}

keypad.getKey();
RawValue = analogRead(analogIn);
Voltage = (RawValue / 1024.0) * 5000; // Gets you mV
Amps = ((Voltage – ACSoffset) / mVperAmp);
Watt = -(Voltage/10)*Amps;
}

void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str[i] = 0;
}
}

char StrContains(char *str, char *sfind)
{
char found = 0;
char index = 0;
char len;

len = strlen(str);

if (strlen(sfind) > len) {
return 0;
}
while (index < len) {
if (str[index] == sfind[found]) {
found++;
if (strlen(sfind) == found) {
return 1;
}
}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

48
else {
found = 0;
}
index++;
}

return 0;
}

void SetLEDs(void)
{
// releu 1
if (StrContains(HTTP_req, "LED1=1")) {
LED_state[0] = 1; // state releu 1
digitalWrite(r1, LOW);
}
else if (StrContains(HTTP_req, "LED1=0")) {
LED_state[0] = 0; // state releu 1
digitalWrite(r1, HIGH);
}

if (StrContains(HTTP_req, "LED2=1")) {
LED_state[1] = 1; // state releu 2
digitalWrite(r2, LOW);
}
else if (StrContains(HTTP_req, "LED2=0")) {
LED_state[1] = 0; // state releu 2
digitalWrite(r2, HIGH);
}

if (StrContains(HTTP_req, "LED3=1")) {
LED_state[2] = 1; // state releu 3
digitalWrite(r3, LOW);
}
else if (StrContains(HTTP_req, "LED3=0")) {
LED_state[2] = 0; // state releu 3
digitalWrite(r3, HIGH);
}

if (StrContains(HTTP_req, "LED4=1")) {
LED_state[3] = 1; // state releu 4
digitalWrite(r4, LOW);
}
else if (StrContains(HTTP_req, "LED4=0")) {
LED_state[3] = 0; // state releu 4
digitalWrite(r4, HIGH);
}

if (StrContains( HTTP_req, "LED5=1")) {
LED_state[4] = 1; // state buton incrementare prag temperatura
teset = teset + 5;
}
else if (StrContains(HTTP_req, "LED5=0")) {
LED_state[4] = 0; // state buton incrementare prag temperatura
teset = teset + 5;
}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

49

if (StrContains(HTTP_req, "LED6=1")) {
LED_state[5] = 1; // state buton decrementare prag temperatura
teset = teset – 5;
}
else if (StrContains(HTTP_req, "LED6=0")) {
LED_state[5] = 0; // state buton decrementare prag temperatura
teset = teset – 5;
}
}
void PrimestePrag(void){
String pragul= "";
if (StrContains(HTTP_req, "P20")) {
prag_setat = 20;
digitalWrite(9, LOW);//test led
pragul="Valoare 20";
Serial.println(pragul);

}
else if (StrContains(HTTP_req, "P30")) {
prag_setat = 30;
digitalWrite(9, HIGH);//test led
pragul="Valoa re 30";
Serial.println(pragul);

}
}

void XML_response(EthernetClient cl)
{

float analog_val; // variabila valori intrari analogice
int sw_arr[] = {pir1,pir2}; // pini senzori pir
int count;
float temp = DHT.temperature; //variabila temperatura
float umi = DHT.humidity; //variabila umiditate
int numar = 0;
cl.print("<?xml version = \"1.0\" ?>");
cl.print("<inputs>");

analog_val =analogRead(0); //citeste valoare senzor lumina
cl.print("<analog>");
cl.print(analog_val); //trimite valoare luminozitate in primul analog
cl.println("</analog>");

analog_val = temp; //citeste temperatura
cl.print("<analog>");
cl.print(analog_val,1); //trimite temperatura in al doilea analog
cl.print("</analog>");

analog_val = umi; //citeste umiditate
cl.print("<analog>");
cl.print(analog_val); //trimite umiditate in al treilea analog
cl.print("</analog>");

cl.print("<analog>");
cl.print(teset/10,1); //trimite valoare prag setat in al 4 -lea analog
cl.println("</analog>");

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

50
cl.print("<analog>");
cl.print(gaslevel); //trimite valoare senzor de gaz in al 5 -lea analog
cl.println("</analog>");

cl.print("<p>");
if (digitalRead(senzor_magnetic)) { //verifica status senzor magnetic 1 in primul p
cl.println("Deschis!");
//cl.println("&#128227;");
}
else {
cl.println("Inchis!");
}
cl.print("</p>");

cl.print("<p>");
if (digitalRead(senzor_magnetic2)) { //verifica status senzor 2 in al doilea p
cl.println("Deschis!");
}
else {
cl.println("Inchis!");
}
cl.print("</p>");

for (count = 0; count < 2; count++) {
cl.print("<switch>");
if (digitalRead(sw_arr[count])) {
cl.print("DA!");
// cl.print("&#128276");
//servoMain.write(135);
}
else {
cl.print("NU!");
//servoMain.write(90);
}
cl.println("</switch>");
}

cl.print("<LED>");
if (LED_state[0]) {
cl.print("on");

}
else {
cl.print("off");
}
cl.println("</LED>");

cl.print("<LED>");
if (LED_state[1]) {
cl.print("on");

}
else {
cl.print("off");
}
cl.println("</LED>");

cl.print("<LED>");
if (LED_state[2]) {

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

51
cl.print("on");

}
else {
cl.print("off");
}
cl.println("</LED>");

cl.print("<LED>");
if (LED_state[3]) {
cl.print("on");

}
else {
cl.print("off");
}
cl.println("</LED>");

cl.print("<LED>");
if (LED_state[4]) {
cl.print("on");

}
else {
cl.print("off");
}
cl.println("</LE D>");

cl.print("<LED>");
if (LED_state[5]) {
cl.print("on");

}
else {
cl.print("off");
}
cl.println("</LED>");

cl.println("<WIG>");
if(digitalRead(hallPin)==0){
cl.print("Inchisa!");}
else{cl.print("Deschisa!");}
cl.println("</WIG>");

cl.println("<WATT>");
cl.print(Watt,3);
cl.println("</WATT>");
cl.print("</inputs>");
}

void OpenDoor(){
digitalWrite(rel_usa, LOW);
digitalWrite(led_w,LOW);
digitalWrite(buzzer_w,LOW);
delay(3000);

}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

52
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
case '*': checkPassword(); break;
case '#': password.reset(); break;
default: password.append(eKey);
}
}
}

void checkPassword(){
if (password.evaluate()){
Serial.println("Success");
OpenDoor();
//Add code to run if it works
}else{
Serial.println("Wrong");
//add code to run if it did not work
}
}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

53
Anexa 3 [Codul sursă al paginii web]

<!DOCTYPE html>
<html>
<head>
<title>Home Automation</title>
<script>
var data_val = 0; //valoare senzor iluminare
var data_val1 = 0;//valoare senzor temperatura
var data_val2 = 0;//valoare senzor umiditate
var data_val3 = 0;//valoare senzor curent
var data_val4 = 0;//valoare prag setat
var data_val5 = 0;
strLED1 = "";//releu 1
strLED2 = "";//rel eu 2
strLED3 = "";//releu 3
strLED4 = "";//releu 4
strLED5 = "";//prag+
strLED6 = "";//prag –
var LED1_state = 0;//status releu 1
var LED2_state = 0;//status releu 2
var LED3_state = 0;//status releu 3
var LED4_state = 0;//status releu 4
var LED5_state = 0;//status prag+
var LED6_state = 0;//status prag –
var LED_state = 0;
var prag_setat = 0;//valoare prag temperatura
<!– Gauge Code vezi licenta –>
function GetArduinoIO()
{
nocache = "&nocache=" + Math.random() * 1000000;
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
if (this.readyState == 4) {
if (this.status == 200) {
if (this.responseXML != null) {
var count;

//intrari analogice
document.getElementById("se nzor_iluminare").innerHTML =
//senzor iluminare
this.responseXML.getElementsByTagName('analog')[0].childNodes[0].nodeValue;
document.getElementById("senzor_temperatura").innerHTML =
//senzor tem peratura
this.responseXML.getElementsByTagName('analog')[1].childNodes[0].nodeValue;
document.getElementById("senzor_umiditate").innerHTML =
//senzor umiditate
this.responseXML.getElementsByTagName('analog')[2].childNodes[0].nodeValue;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

54
document.getElementById("termostat").innerHTML =
//valoare prag setat
this.responseXML.g etElementsByTagName('analog')[3].childNodes[0].nodeValue;

document.getElementById("senzor_gaz").innerHTML =
//valoare senzor gaz
this.responseXML.getElementsByTagName('analog')[4].childNodes[0].no deValue;

data_val = this.responseXML.getElementsByTagName('analog')[0].childNodes[0].nodeValue;
data_val1 = this.responseXML.getElementsByTagName('analog')[1].childNodes[0].nodeValue;
data_val2 = this.responseXML.getElementsByTagName('analog')[2].childNodes[0].nodeValue;
data_val4= this.responseXML.getElementsByTagName('analog')[3].childNodes[0].nodeValue; //val prag setat
data_val5= this.responseXML.getElementsBy TagName('analog')[4].childNodes[0].nodeValue; //val nivel gaz
data_val3= this.responseXML.getElementsByTagName('WATT')[0].childNodes[0].nodeValue; //valoare consum energie electrica
document.getElementById("aer_m").value = data_val5; //modifica meter calitate aer
document.getElementById("snzmag").innerHTML =
//senzor magnetic 1
this.responseXML.getElementsByTagName('p')[0].childNodes[0].nodeValu e;
document.getElementById("snzmag2").innerHTML =
//senzor magnetic 2
this.responseXML.getElementsByTagName(' p')[1].childNodes[0].nodeValue;
document.getElementById("usa").innerHTM L =
//reader proximitate
this.responseXML.getElementsByTagName('WIG')[0].childNodes[0].nodeValue;
//citire senzori prezenta
var num_an = this.responseXML.getElementsByTagName('switch').length;
for (count = 0; count < num_an; count++) {

document.getElementsByClassName("switches")[count].innerHTML =

this.responseXML.getElementsByTagName('switch')[cou nt].childNodes[0].nodeValue;
}
//verificare status releee
// releu 1
if (this.responseXML.getElementsByTagName('LED')[0].childNodes[0].nodeValue === "on") {
document.getElementById("LED1").innerHTML = "ON";
LED1_state = 1;
}
else {

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

55
document.getElementById("LED1").innerHTML = "OFF";
LED1_state = 0;
}
// releu 2
if (this.responseXML.getElementsByTagName('LED')[1].childNodes[0].nodeValue === "on") {
document.getElementById("LED2").innerHTML = "ON";
LED2_state = 1;
}
else {
document.getElementById("LED2").innerHTML = "OFF";
LED2_state = 0;
}
// releu 3
if (this.responseXML.getElementsByTagName('LED')[2].childNodes[0].nodeValue === "on") {
document.getElementById("LED3").innerHTML = "ON";
LED3_state = 1;
}
else {
document.getElementById("LED3").innerHTML = "OFF ";
LED3_state = 0;
}
// releu 4
if (this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "on") {
document.getElementById("LED4").innerHTML = "ON";
LED4_state = 1;
}
else {
document.getElementById("LED4").innerHTML = "OFF";
LED4_state = 0;
}
// LED 5
if (this.responseXML.getElementsByTagName('LED')[4].childNodes[0].nodeValue === "on") {
document.getElementById("LED5"). innerHTML = "+";
LED5_state = 1;
}
else {

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

56
document.getElementById("LED5").innerHTML = "+";
LED5_state = 0;
}
// LED 6
if (this.responseXML.getElementsByTagName('LED')[5].childNodes[0].nodeValue === "on") {
document.getElementById("LED6").innerHTML = " -";
LED6_state = 1;
}
else {
document.getElementById("LED6").innerHTML = " -";
LED6_state = 0;
}
}
}
}
}

// send HTTP GET request with LEDs to switch on/off if any
request.open("GET", "ajax_inputs" + strLED1 + strLED2 + strLED3 + strLED4 + strLED5 + strLED6 + prag_setat + nocache, true);
reque st.send(null);
setTimeout('GetArduinoIO()', 500);//refresh time
strLED1 = "";
strLED2 = "";
strLED3 = "";
strLED4 = "";
strLED5 = "";
strLED6 = "";
prag_setat ="";//trimite catre arduino
}
function GetButton1() //functie buton releu 1
{
if (LED1_state === 1) {
LED1_state = 0;
strLED1 = "&LED1=0";
}
else {

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

57
LED1_state = 1;
strLED1 = "&LED1=1";
}
}

function GetButton2() //functie buton rel eu 2
{
if (LED2_state === 1) {
LED2_state = 0;
strLED2 = "&LED2=0";
}
else {
LED2_state = 1;
strLED2 = "&LED2=1";
}
}

function GetButton3() //functie buton releu 3
{
if (LED3_state === 1) {
LED3_state = 0 ;
strLED3 = "&LED3=0";
}
else {
LED3_state = 1;
strLED3 = "&LED3=1";
}
}

function GetButton4() //functie buton releu 4
{
if (LED4_state === 1) {
LED4_state = 0;
strLED4 = "&LED4=0";
}
else {

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

58
LED4_state = 1;
strLED4 = "&LED4=1";
}
}
function GetButton5() //functie buton termostat +
{
if (LED5_state === 1) {
LED5_state = 0;
strLED5 = "&LED5=0";
}
else {
LED5_state = 1;
strLED5 = "&LED5=1";
}
}
function GetButton6() //functie buton termostat –
{
if (LED6_state === 1) {
LED6_state = 0;
strLED6 = "&LED6=0";
}
else {
LED6_state = 1;
strLED6 = "&LED6=1";
}
}

function check(form) {
//functi e autentificare
if(form.userid.value == "user" && form.pswrd.value == "P@ssw0rd") {
document.getElementById("myDIV").style.display = "none";
}
else {
alert("Error Password or Username ")
}
}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

59

function sendValue15(){
//functie trimitere prag catre MCU
prag_setat = "P15";
}
function sendValue20(){
//functie trimitere prag catre MCU
prag_setat = "P20";
}
function sendValue25(){
//functie trimitere prag catre MCU
prag_setat = "P25";
}
function sendValue30(){
//functie trimitere prag catre MCU
prag_setat = "P30";
}
</script>
<style>
table, th, td { /*stil general tabele*/
border -collapse: collapse;
}
th, td {
padding: 5px;
text-align: left;
vertical -align: top;
}
table{
height:100%;width:100%;
}
table#t01{
width:100%;
}
table#t02{
width:100%;
}
table#t03{
width:100%;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

60
}
table#t04{
width:100%;
}
th#sec{ /*stil caseta securitate*/
color:black;
background -color: #a3c2c2;
text-align:center;
font:bold 18px Georgia, serif;
}
th#usa_intrare{ /*stil caseta usa intrare*/
color:black;
background -color: #a3c2c2;
text-align:center;
font:bold 18px Georgia, serif;
}
th#tmp{ /*stil caseta temperatura*/
color:black;
background -color: #a3c2c2;
text-align:center;
font:bold 18px Georgia, serif;
}
th#umi{ /*stil caseta umiditate*/
color:black;
background -color: #a3c2c2;
text-align:center;
font:bold 18px Georgia, serif;
}
th#lum{ /*sil caseta control lumini*/
color:black;
background -color: #a3c2c2;
text-align:center;
font:bold 18px Geo rgia, serif;
}
th#con{ /*stil caseta consum*/
color:black;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

61
background -color: #a3c2c2;
text-align:center;
font:bold 18px Georgia, serif;
}
th#aer{ /*stil caseta aer*/
color:black;
background -color: #a3c2c2;
text-align:center;
font:bold 18px Georgia, serif;
}
th#ilu{ /*sil caseta luminozitate*/
color:black;
background -color: #a3c2c2;
text-align:center;
font:bold 18px Georgia, serif;
}
th#logo{ /*stil caseta logo home*/
color:#b3cccc;
background -color: #1f2e2e;
text-align:center;
font-size: 300%;
}
th#bot{ /*stil caseta bottom*/
color:#b3cccc;
background -color: #1f2e2e;
text-align:center;
font-size: 150%;
}
p#sec01{ /*sil text securitate*/
text-align: left;
}
p#usa01{ /*sil text usa intrare*/
text-align: left;
}
p#usa02{ /*sil text usa intrare*/
text-align: left;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

62
}
p#tmp01{ /*stil text temperatura*/
text-align: center;
font-size: 80%;
}
p#lum01{ /*stil text control lumini*/
text-align:left;
font-size:80%;
}
p#con01{ /*stil gauge consum energie electrica*/
text-align:left;
}
meter { /*stil bar -metter nivel aer*/
width: 300px;
height: 15px;
border: 1px solid #ccc;
border -radius: 3px;
}
#myDIV { /*stil div autentificare*/
position: absolute;
width: 100%;
height: 100%;
background -color: lightblue;
display:none; /*modifica la final*/
}
h1#autentificare{ /*stil text autentificare*/
color:red;
text-align:center;
}
form#pass { /*stil caseta user&password*/
display: block;
margin -top: 0em;
text-align:center;
}

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

63
/*––––––––––––––––– stil buton random*/
.buttonS {
background -color: #4CAF50;
border: none;
color: white;
padding: 10px 22px;
text-align: center;
text-decoration: none;
display: inline -block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
border -radius: 4px;
border: 2px solid #40ff50;
}
.buttonS:hover {
background -color: #40ff50;
color: black;
border: 2px solid whi te;
box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
}
.buttonS:active {
background -color: #3e8e41;
box-shadow: 0 5px #666;
transform: translateY(4px);
}
/*––––––––––––––––– stil buton con trol lumini*/
.buttonL {
display: inline -block;
padding: 5px 25px;
font-size: 15px;
cursor: pointer;
text-align: center;
text-decoration: none;
outline: none;
color: #fff;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

64
background -color: #4CAF50;
border: none;
border -radius: 5px;
box-shadow: 0 9px #666;
}
.buttonL:ho ver {background -color: #3e8e41}
.buttonL:active {
background -color: #3e8e41;
box-shadow: 0 5px #666;
transform: translateY(4px);
}
/*––––––––––––––––– stil buton prag temperatu ra*/
.buttonT {
display: inline -block;
padding: 7px 20px;
font-size: 15px;
cursor: pointer;
text-align: center;
text-decoration: none;
outline: none;
color: #fff;
background -color: #01A9DB;
border: none;
border -radius: 5px;
box-shadow: 0 7px #666;
}
.buttonT:ho ver {background -color: #0080FF}
.buttonT:active {
background -color: #0080FF;
box-shadow: 0 3px #666;
transform: translateY(4px);
}
#chenar1{
width: 100%;
padding: 12px 20px;
margin: 8px 0;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

65
box-sizing: border -box;
border: none;
background -color: #3CBC8D;
color: white;
}
</style>
</head>
<body onload="GetArduinoIO()" bgcolor="#1f2e2e"> <! –update aza datele primite de la MCU –>
<div id="myDIV"><br></br><br></br><br></br> <!–div-ul de autentificare –>
<h1 id="autentificare"> User Autentification </h1>
<form name="login" id="pass">
Username<input type="text" name="userid"/><br></br>
Password<input type="password" name="pswrd"/><br></br>
<input type="button" onclick="check(this.form)" value="Login"/>
<input type="reset" value="Cancel"/>
</form>
</div>
<table id="t01"> <!–tabel nr1 –>
<tr><th id="logo" > Monitorizare si control parametrii locuinta</th> <! –logo home –>
</table>
<table id="t02"> <!–tabel nr2 –>
<tr> <!–caseta securitate –>
<th id="sec"> <p id="chenar1" >SECURITATE</p>
<p id="sec01">Geam dormi tor:</p><p id="snzmag">Inchis!</p>
<p id="sec01">Geam intrare:</p> <p id="snzmag2">Inchis!</p>
<hr>
<p id="sec01">Prezenta Hol:</p> <span class="switches">NU</span>
<p id="sec01">Prezenta Intrare:</p>< span class="switches">NU</span>
</th>
<th id ="usa_intrare"> <p id="chenar1" >USA INTRARE < p> <! –caseta usa intrare –>
<p id="usa01"> Status usa:</p> <p id="usa">Inchisa!</p>
<hr>
<p id="usa02"> Status incuietoare: </p> <p id="incuietoare">Inchisa!</p>
</th>
<th id="tmp"><p id="chenar1" >TEMPERATURA: <p>
&nbsp;&nbsp;&nbsp;&nbsp;

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

66
<canvas id="an_gauge_1" data -title="Temperatura" data -units=" &deg;C" width="200" height="200" data -major -ticks=" -10 0 10 20 30 40 50 60
70 80 90" data -type="canv -gauge" data -min-value=" -10" data -max-value="90" data -highlights=" -10 0 #80ffe5, 0 20 #79d2a6, 20 30 #79d279,
30 50 #ffa366, 50 90 #ff6666" data -onready="setInterval( function() { Gauge.Collection.get('an_gauge_1').setValue(data_val1);},
200);"></canvas>
<form method="post " action="" id="temp_form">
<p id="tmp01">Setare prag:
<!–<button type="button" onclick="sendValue15()" class="buttonT">15</button>
<button type="button" onclick="sendValue20()" class="buttonT">20</button>
<button type="button" onclick="sendValue25 ()" class="buttonT">25</button>
<button type="button" onclick="sendValue30()" class="buttonT">30</button>
–>
<button type="button" id="LED6" onclick="GetButton6()" class="buttonT"> -</button>
<span id="termostat">…</span>
<button type="button" id ="LED5" onclick="GetButton 5()" class="buttonT">+</button>
</p>
</form>
</th>
<th id="umi"><p id="chenar1" >UMIDITATE:</p>
<canvas id="an_gauge_2" data -title="Umiditate" data -units=" %RH" width="200" height="200" data -major -ticks="0 10 20 30 40 50
60 70 80 90 100" data -type="canv -gauge" data -min-value="0" data -max-value="100" data -highlights="0 30 #ffa366, 30 70 #ffff80, 70 100
#79d279" data -onready="setInterval( function() { Gauge.Collection.get('an_gauge_2').setValue(data_val2);}, 200);"></canvas>
</th>
<th id="lum"><p id="chenar1" >CONTROL LUMINI </p> <!–caseta control lumini –>
<hr>
<div align="left"><p id="lum01"> Dormitor I:</div> <div align="right"><button type="button" id="LED1" onclick="GetButton1()"
class="buttonL">OFF</button></di v></p>
<!–<div align="left"><p id="lum01">Hol:</div> <div align="right"><button type="button" id="LED2" onclick="GetButton2()"
class="buttonL">OFF</button></div></p> –>
<hr>
<div align="left"><p id="lum01"> Dormitor II:</div> <div align="right"><button type="button" id="LED3" onclick="GetButton3()"
class="buttonL">OFF</button></div></p>
<hr>
<div align="left"><p id="lum01"> Living:</div> <div align="right"><button type="but ton" id="LED4" onclick="GetButton4()"
class="buttonL">OFF</button></div></p>
<hr>
</th>
</tr>
</table> <br><br>
<table id="t03"> <!–tabel nr3 –>
<tr>

Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departa mentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată

67
<th id="con" ><p id="chenar1" >CONSUM ENERGIE ELECTRICA </p><! –caseta consu m energie electrica –>
<p id="con01"><canvas id="an_gauge_3" data -title="Consum" data -units="W" width="250" height="250" data -major –
ticks="0 500 1500 2000 2500 3000 4000 5000 6000 7000 10000" data -type="canv -gauge" data -min-value="0" data -max-value="100 00" data –
highlights="0 2000 #79d279, 2000 5000 #ffff80, 5000 10000 #ff6666" data -onready="setInterval( function() {
Gauge.Collection.get('an_gauge_3').setValue(data_val3);}, 200);"></canvas>
</p>
</th>
<th id="aer"> <p id="chenar1" >NIVEL CALIT ATE AER</p> <!–caseta calitate aer –>
<meter min="0" low="350" high="400" max="1023" value="0" id="aer_m" ></meter><br>
<span id="senzor_gaz"> … </span>
</th>
<th id="ilu"><p id="chenar1" > NIVEL ILUMINARE</p> <!–caseta nivel ilumi nare–>
<span id="senzor_iluminare"> … </span>
</th>
</tr>
</table>
<table id="t04"> <!–tabel nr4 –>
<tr><th id="bot" >Universitatea Transilvania din Brasov <hr>Facultatea de Inginerie Electrica si Stiinta Calculatoarelor</th>
</tr>
</table>
</body>
</html>

DECLARAȚIE
PRIVIND ORIGINALITATEA LUCRĂRII DE DI PLOMĂ

UNIVERSITATEA TRANSILVANIA DIN BRAȘOV
FACULTATEA INGINERIE ELECTRICĂ ȘI ȘTIINȚA CALCULATOARELOR
PROGRAMUL DE STUDIU : …………………………………………………..

NUMELE ȘI PRENUMELE : …………………………………………………
PROMOȚIA : ….…… ..
SESIUNEA DE LICENȚĂ : ………………

DENUMIREA LUCRĂRII :
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………

CADRUL DIDACTIC ÎNDRUMĂTOR : ………………… ………………………………..

Declar pe prop ria răspundere că lucrarea de față este rezultatul muncii mele , pe
baza c ercetări lor proprii și pe baza informațiilor obținute din surse care au fost citate și
indicate conform normelor etice, în textul lucrării, în note și bibliografie.
Declar că nu am folosit în mod tacit sau ilegal munca altora și că nici o parte din
teză/proiect nu încalcă drepturile de proprietate intelectuală ale altcuiva, persoană fizică
sau juridică.
Declar că lucrarea nu a mai fost prezentată sub această formă vreunei instituții de
învățământ superior în vederea obținerii unui grad sau titlu științific ori didactic.
În cazul constatării ulterio are a unor declarații false, voi suporta rigorile legii.

Data: Nume, prenume, semnătura

Similar Posts