Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
1. Introducere …………………………………………………………….......1
1.1. Scurt istoric al evoluţiei caselor inteligente ………………………1
1.2. Conceptul de casă inteligentă …………………………………….3
1.3. Riscuri și flexibilitate …………………………………………….6
1.4. Despre Arduino …………………………………………………..7
1.5. Identificarea problemei …………………………………………..8
1.6. Scopul lucrării ……………………………………………………8
1.7. Obiective …………………………………………………………9
1.8. Prezentare sistem ………………………………………………....9
2. Implementare hardware ……………………………………………........11
2.1. Arduino Mega 2560 ……………………………………………..11
2.2. Ethernet Shield W5100 ………………………………………….12
2.3. Senzori …………………………………………………………..13
2.3.1.Senzor de temperatură și umiditate DHT11 ……………...15
2.3.2.Senzor ultrasonic HC-SR04 ……………………………...16
2.3.3.Modul PIR - senzor de prezență………………………….17
2.4. Servomotor SG90 ………………………………………………..19
2.5. Tastatură matricială 4x4 ………………………………………....20
2.6. Senzor de flacără infraroșu ……………………………………...21
3. Implementare software …………………………………………………..22
3.1. Arduino IDE ……………………………………………………..22
4. Interfața cu utilizatorul ………………………………………………….23
5. Tehnologii folosite ………………………………………………………..25
5.1. HTML …………………………………………………………...25
5.2. CSS ……………………………………………………………...25
6. Interfața grafică realizată …………………………………………….....26
7. Conectivitate ……………………………………………………………..28
7.1. Arduino Mega 2560 + Ethernet Shield W5100 ………………....28
7.1.1. Program demo Ethernet Shield W5100 ………………….28
7.2. Arduino Mega 2560 + DHT11 ………………………………….29
7.2.1. Program demo DHT11 …………………………………..30
7.3. Arduino Mega 2560 + HC-SR04 ………………………………..31
7.3.1. Program demo HC-SR04 ………………………………...31
7.4. Arduino Mega 2560 + PIR ……………………………………...32
7.4.1. Program demo PIR ………………………………………33
2017
7.5. Arduino Mega 2560 + senzor de flacără infraroșu ……………34
7.5.1. Program demo senzor de flacără infraroșu …………….34
8. Concluzii ………………………………………………………………..36
8.1. Limitări și dezvoltări ulterioare ……………………………….36
Anexa 1 – cod program ……………………………………………….38
9. Bibliografie ……………………………………………………………..49
1. Introducere
Într-o epocă în care tehnologia avanseaza din ce în ce mai repede si mai mult,
microcipurile au făcut un pas imens în revoluția digitală. Telefoanele mobile, vehiculele,
sistemele încorporate devin din ce în ce mai inteligente și mai puternice în fiecare zi, ajutand
oamenii să se confrunte cu provocări și probleme legate de timp, economie, mediu și
comunicare.
Astăzi, tehnologia a reușit să devină unul din principalele ce ajuta oamenii să aibă un stil
de viață mai confortabil. Este o chestiune de timp până când totul va fi suficient de inteligent
și va fi conectat la internet.
Tehnologia are argumente pro și contra, din multe motive s-a susținut că tehnologia nu
ajuta la evolutia rasei umane datorită efectelor negative care include: imobilitatea corpului și a
minții, probleme de securitate etc.
Partea pozitivă este cea mai dominantă, datorită numarului mare de avantaje: mai multă
siguranță în vehiculele noastre de transport, casele inteligente, asistența medicala mai buna,
rezolvarea problemelor de securitate. În plus, tehnologia ne oferă mai mult timp pentru
diferite activități.
Căminul capătă astfel noi valenţe mai ales prin prisma centrului inteligent (unitatea
centrală) care îi controlează majoritatea atributelor: funcţionalitate – controlează luminile,
jaluzele, temperatura, sistemele hi-fi, şi orice alt dispozitiv electric sau electronic , atât din
interior, cât şi din exterior, fie prin intermediul internetului (din orice colţ al lumii), fie local
utilizând telecomenzi, laptop, touchscreen; management energetic – reduce consumul de
1
energie prin optimizarea funcţionării componentelor electrice, electronice, sanitare şi termice
ale locuinţei; sisteme de securitate – permite simularea prezenţei locatarilor în timpul absenţei
lor, permite detecţia si semnalarea efracţiei către vecini, familie, firmă de pază, cât şi
declanşarea unui scenariu prestabilit pentru îndepărtarea intruşilor.
2
Expansiunea fără precedent a calculatorului în toate sferele, nu putea să nu afecteze şi
domeniul casnic / imobiliar. În acest sens a apărul ca şi domeniu de cercetare de sine stătător
domotica care se ocupă cu aplicaţiile calculatoarelor şi a roboţilor în domeniul casnic.
Conceptul de “casă inteligentă” este unul de factură relativ recentă şi defineşte un spaţiu
locuibil modern / futurist, care foloseşte tehnologii moderne pentru automatizarea tuturor
sistemelor şi a aparatelor pe bază de energie electric, aflate în interiorul acesteia sau în
imediata apropiere . Totodată, o casă inteligentă sau automatizată reprezintă un stil de viaţă
îmbunătăţit, răspunzând întocmai nevoilor fundamentale ale omului: confort, funcţionalitate şi
siguranţă.
Rolul unei case inteligente este aşadar acela de a îmbunătăţi confortul locatarilor şi a
simplifica atingerea lui printr-o simplă apasare de buton (tastele unei telecomenzi, telefon sau
alt dispozitiv de comunicare); astfel se pot apela o multitudine de funcţii pentru automatizarea
casei şi a exteriorului ei, precum: controlul luminilor din curte, din întreaga casă sau doar din
anumite camere şi climatizarea încăperilor; securitatea familiei şi a bunurilor; gestionarea
sistemului audio multiroom; acţionarea manuală sau programată a storurilor, perdelelor şi
jaluzelelor; acţionarea instalaţiei de udat şi controlarea temperaturii apei din piscină; hrănirea
animalelor de companie etc.
3
Fig 1.1 Casă inteligentă
4
intensitatea luminii, porneşte o muzică în surdină; pentru muzică, sistemul poate fi conectat la
un radio, la un telefon mobil sau la un calculator.
Realizarea unei case inteligente presupune, printre altele un sistem informatic (kit
integrat) specific, care să facă totul funcţional, asociat unui design modern inspirat de la
natură (ecologic), ţinându-se seama, în acelaşi timp, de eliminarea riscurilor de incendiu sau
alte daune colaterale.
Domotica este o stiință relativ noua, care are ca principal obiect de interes conducerea
centralizată, asistată de calculator, a tuturor instalatiilor ce deservesc o cladire. Includem aici
instalații sanitare, de ventilare-climatizare, încălzire, antiefracție, iluminat si prize, control
acces, multimedia etc.
Cam despre asta sunt sistemele domotice, iar aplicațiile lor nu se opresc doar aici.
Controlează draperiile, ferestrele dintr-o locație, toata ziua, fără interacțiunea omului.
Deschide sau blochează și deblochează poarta și intrarea în garaj, cu un control separat
sau global.
Controlează clima din interiorul caselor. Prin apăsarea unui buton se poate seta încălzirea
pe timp de noapte; lumina când nu ești într-o încăpere; să închidă poarta după plecare...
Controlează sunetul din orice cameră, utilizând butoane, tablouri sau telecomenzi.
Asigură lumina potrivită la locul potrivit; sistemele domotice pot asigura și memora
intensitatea luminoasa în funcție de preferințele persoanelor.
5
Pot pregăti inteligent - grădinile prin pornirea stropitoarelor atunci când solul este prea
uscat;
Pot aprinde lumina doar atunci când o persoana este prin preajmă(uneori cu rol de
alarmă).
Înmulţirea factorilor de stres din mediul în care trăim ne determină să căutăm tot mai
multe soluţii prin care să creăm un echilibru între tensiunea şi solicitarea psihică a fiecărei zile
şi momentele de relaxare/destindere. Datorită acestui fapt casa inteligentă a devenit un spaţiu
din ce în ce mai familiar, asigurând un plus de valoare oricărei construcţii. Suplimentar,
sistemele computaţionale ale casei inteligente au evoluat în aşa măsură încât răspund
aspiraţiilor din ce în ce mai înalte în ceea ce priveşte confortul, siguranţa şi controlul casei.
Sistemele IT care fac trecerea de la casa ecologică la casa ecologică inteligentă extind
conceptul tradiţional de „sisteme electrice” perceput ca simple sisteme de corpuri de iluminat
şi prize. Noul concept înseamnă practic echiparea locuinţei cu sisteme electronice avansate
care sunt concepute să satisfacă nevoi specifice, perfect capabile să ofere aplicaţii utile.
Integrarea tuturor acestor funcţiuni individuale creează un sistem avansat, dar uşor de folosit,
care rezistă în timp şi este extrem de flexibil, putând fi modificat şi extins în orice moment
pentru a satisface noi necesităţi . O casă inteligentă are proprietatea de a asigura acel
sentiment unic de “mă simt bine acasă” în fiecare zi, transformă casa în “acasă” în adevăratul
sens al cuvântului. Instalaţia inteligentă îmbină într-o armonie perfectă, controlul tuturor
luminilor, prizelor, încălzirii, climatizării, echipamentelor de umbrire motorizate,
echipamentelor audio-video, elementelor de securitate, sistemul de irigaţii şi multe altele.
Siguranţa copilului, confortul familiei, economia energiilor, excluderea pericolului de
electrocutare la întrerupătoare, funcţiile de simulare a prezenţei pentru zilele de concediu etc,
toate aceste avantaje sunt cu adevărat importante pentru casele inteligente.
6
funcţiile necesare noii camere. Casa inteligentă asigură comanda sau vizualizarea
echipamentelor din orice zonă a imobilului, inclusiv de la distanţă atunci cînd suntem plecaţi .
Un alt aspect demn de menţionat referitor la casa inteligentă este acela că sistemul
domotic central poate integra cu uşurinţă o multitudine de sisteme, precum: sistemul de
climatizare şi controlul luminilor, sistemul de suraveghere audio-video locală şi la distanţă,
sistemul de tip home cinema şi audio multiroom, sistemul electric de prize, sistemul de
detecţie la incendiu, efracţie sau alte incidente, sistemul de automatizare a porţilor de intrare
şi de la garaj etc.
Toate aceste sisteme pot fi controlate oricând, manual sau prin stabilirea unor scenarii
predefinite pentru diverse situaţii zilnice: când pleci sau te întorci de la muncă sau din
vacanţă, când te trezeşti sau te culci, când în casa stă întreaga familie, doar bona cu copilul
etc. De asemenea, flexibilitatea soluţiilor domotice derivă şi din posibilitatea acestora de
implementare şi adaptare la diverse spaţii: apartamente, case, vile, case de vacanţă, hoteluri,
clădiri de birouri etc.
O plăcuță Arduino este compusă dintr-un microcontroler Atmel AVR de 8-, 16- sau 32-
biți (deși începând cu 2015 s-au folosit microcontrolere de la alți producători) cu componente
complementare care facilitează programarea și încorporarea în alte circuite. Un aspect
important la Arduino este că acesta dispune de conectori standard, care permit utilizatorului să
conecteze plăcuța cu procesorul la diferite module interschimbabile numite shield-uri. Unele
shield-uri comunică cu Arduino direct prin pinii digitali sau analogici, dar altele sunt
adresabile individual prin magistrala serială I²C permițând utilizarea mai multor module în
paralel. Până în anul 2015 plăcuțele Arduino oficiale au folosit cipuri Atmel din seria
megaAVR, în special ATmega8, ATmega168, ATmega328, ATmega1280 și ATmega2560,
iar în 2015 au fost adăugate cipuri de la alți producători. O multitudine de alte procesoare au
fost folosite de dispozitive compatibile Arduino. Multe plăcuțe includ un regulator liniar de 5
V și un oscilator cu cuarț de 16 MHz (sau un rezonator ceramic în unele variante), deși
anumite plăcuțe, cum ar fi LilyPad, funcționează la 8 MHz și nu necesită regulator, datorită
restricțiilor de formă. Un microcontroler instalat pe Arduino vine preprogramat cu un
bootloader care simplifică încărcarea programelor pe memoria flash a cipului, în comparație
7
cu alte dispozitive care necesită programatoare externe. Acest aspect face Arduino o soluție
simplă, permițând programarea de pe orice computer ordinar. În prezent, bootloader-ul
optiboot este bootloader-ul implicit instalat pe Arduino UNO.
Plăcuța Arduino are expuși mulți dintre pinii de intrare/ieșire ai microcontrolerului, pentru
ca aceștia să fie folosiți de alte circuite. Diecimila, Duemilanove și UNO oferă 14 pini digitali
de intrare/ieșire, dintre care 6 pot produce semnale PWM și 6 intrări analogice care, de
asemenea, pot fi folosite ca intrări/ieșiri digitale. Acești pini sunt accesibili prin partea
superioară a plăcuței, prin intermediul unor barete mamă cu pasul între pini de 2,54 mm.
Întrerupatoarele sunt dispozitive foarte simple, doar totusi foarte importante si pot fi
vazute in fiecare zi in jurul nostru. Desi sunt atat de importante, omul nu le mai acorda prea
multa atentie, de foarte multe ori, uitand sa le actioneze.
De foarte multe ori, cand plecăm de acasă, uităm să stingem un bec, sau să scoatem ceva
din priză, acest lucru putând conduce la defectarea aparatelor din case, sau consum inutil de
energie electrică, sau în unele cazuri se poate ajunge la supraîncalzire și incendiu.
O altă problemă, o reprezintă intrările prin efracție. Este foarte important să ne asigurăm
că locuința noastră este protejată de asemenea întâmplări, cât nu suntem acasă. Intotdeauna
există riscul ca o persoană necunoscută să îți intre în casă.
8
Proiectarea și implementarea unui sistem de automatizare a unei case, care va controla
lumina, va monitoriza în permanență temperatura, umiditatea, va analiza riscul de incendiu,
va controla aerul condiționat și va asigura securitatea locuinței in permanență.
1. Utilizatorul care poate interveni asupra codului și își poate ajusta singur parametrii. Acest
utilizator este administratorul. El are autorizația să acceseze și să modifice codul
programului, sau structura hardware.
2. Al doilea tip de utilizator, este utilizatorul normal. Acest proiect a fost proiectat, special
pentru nevoile lui. El nu poate modifica codul si nici structura hardware.
Aprindere/Stingere led-uri.
Blocare/Deblocare ușa principală.
Deschidere/Inchidere usa garaj.
Pornire/Oprire ventilator.
Vizualizare temperatură și umiditate aer.
1.7 Obiective
1. Controlul led-urilor.
2. Controlul unui ventilator, pentru menținerea temperaturii constante.
3. Detectarea mișcării în afara locuinței.
4. Alarma, activată in momentul în care este detectată foc în locuință.
5. Accesul in locuință, doar pe baza unui cod.
6. Controlul unui servomotor.
9
1.8 Prezentare sistem
Următorul graf prezintă cum sunt afișate datele de la senzori, pe un laptop, sau un
smartphone, conectat la rețea.
Următorul graf prezintă cum sunt trimise datele din aplicația realizată, la Arduino.
10
Fig 1.3 Graf comenzi Arduino de la aplicație
2. Implementare hardware
Microcontroller
11
Arduino Mega 2560 este o placă de dezvoltare având drept unitate centrală
microcontrolerul ATmega2560. Acesta este un microcontroler performant Atmel AVR pe 8
biți bazat pe arhitectura RISC (Reduced Instruction Set Computing) și conține 54 de pini, ce
pot fi configurați ca intrări sau ieșiri, dintre care 15 pot furniza semnale PWM (Pulse Width
Modulation), 16 pini de intrare analogică cu o rezoluție de 10 biti (1024 de valori diferite), 4
porturi seriale hardware (UART) și un oscilator intern de 16 MHz.
12
Modulul conține cateva led-uri informative:
LINK – indică o conexiune la rețea și clipește când sunt transmise sau primite date.
2.3 Senzori
Senzorul este un dispozitiv tehnic care reacționează calitativ sau cantitativ prin proprii
mărimi măsurabile, la anumite proprietăți fizice sau chimice ale mediului din preajma lui. Ca
parte componentă a unui aparat sau sistem tehnic detector poate măsura/înregistra de exemplu
presiunea, umiditatea, câmpul magnetic, accelerația, forța, intensitatea sonoră, radiații ș.a.
Provine din latină: sensus = simț.
Senzorul este un dispozitiv care măsoară o mărime fizică (masă, presiune, temperatură,
umiditate etc.) și o transformă într-un semnal care poate fi citit de către un observator printr-
un instrument sau poate fi prelucrat.
13
sau foarte largă (VLSI), se întâlneşte în literatura de specialitate şi sub denumirile de "sistem
senzorial" sau "senzor inteligent" (smart-sensor).
Există astăzi senzori pentru mai mult de 100 de mărimi fizice, iar dacă se iau în
considerare şi senzorii pentru diferite substanţe chimice, numărul lor este de ordinul sutelor.
Se pot pune în evidenţă circa 2000 de tipuri distincte de senzori, oferite în 100.000 de
variante, pe plan mondial
absoluţi, când semnalul electric de ieşire poate reprezenta toate valorile posibile ale
mărimii fizice de intrare, raportate la o origine (referinţă) aleasă;
14
incrementali, când nu poate fi stabilită o origine pentru toate punctele din cadrul
domeniului de măsurare, ci fiecare valoare măsurată reprezintă originea pentru cea
următoare.
Specificatii
Alimentare si I / O: 3 - 5V
Curent maxim: 2.5mA
Pentru gama de umiditate 20-80% are o precizie de 5%
Pentru gama de temperatură 0-50 ° are o precizie de ± 2 ° C
Rata de eșantionare de 1 Hz (o dată pe secundă)
Dimensiuni: 15.5mm x 12mm x 5.5mm
15
Fig 2.4 Senzor de temperatură DHT11
Cum funcționează?
Senzorul returnează măsuratori ale distanței destul de precise in gama 2cm – 400cm.
Precizia este undeva la 2mm cu un unghi de generare a undei ultrasonice de 15 grade.
Modulul HC-SR04 are patru pini: “Ground”, “VCC”, “Trig”, si “Echo”. Pinul “Ground”
trebuie conectat la unul din pinii “GND”, iar pinul “VCC” la pinul de 5V al placii Arduino.
16
Pinii “Trig” si “Echo” pot fi conectați la oricare din pinii digitali de intrare/ieșire a plăcii
Arduino.
17
Fig 2.5 Senzorul de prezență
Mișcarea este detectată atunci când un corp cu o anumită temperatură (cum ar fi un om
sau un animal) trece prin fața sursei infraroșu (adică un alt corp, obiect) cu o altă temperatură,
cum ar fi un perete.
Acest lucru înseamnă că senzorul detectează căldura de la trecerea unui obiect prin câmpul
de acțiune al senzorului și acel obiect rupe câmpul pe care senzorul l-a determinat anterior ca
fiind “normal”. Orice obiect, chiar unul de aceeași temperatură ca și obiectele din jur va activa
senzorul PIR cand corpul se deplasează în câmpul vizual al senzorului.
Senzorul consta de asemenea si intr-un capac special, numit obiectiv Fresnel, care focalizeaza
semnalele infrarosii pe senzor.
18
Fig 2.6 Functionalitate PIR cu obiectiv Fresnel
Un servo motor permite un control precis al poziției, vitezei și accelerației. Acest control
foarte strict al poziției unghiulare, vitezei și accelerației nu se poate face fără un senzor pentru
feedback-ul de poziție. Acest senzor dă alarma atunci când motorul se rotește. Dar chiar și
așa, exista ceva si mai sofisticat care controleaza toate etapele motorului servo. Este vorba
despre un controller dedicat care face ca micile angrenaje din interiorul servo motorului sa se
miste cu precizie militară.
19
Fig 2.7 Servomotor SG90
Caracteristici tehnice:
Cum functionează?
20
Tastaturile matriciale folosesc o combinație de 4 linii și 4 coloane, pentru a furniza stările
butoanelor, către microcontroller. Sub fiecare tastă, este un buton, cu un capat conectat la o
linie și celălat capăt conectat la o coloană.
Din circuitul prezentat in Fig 2.10 se poate vedea că atunci când unul din cele 16 butoane
este apăsat, o pereche de pini va fi conectată. Cei 2 pini sunt folosiți pentru a detecta butonul
ce a fost apăsat.
Output-ul senzorului poate fi analogic sau digital. Modulul este echipat cu un circuit
integrat comparator LM393. Tensiunea de referința a comparatorului poate fi setată din
potențiometru.
21
Fig 2.11 Senzor de flacără infraroșu
Caracteristici tehnice:
Tensiune de alimentare: 3.3V sau 5V;
Curent consumat: 15mA;
Lungime de undă detectată: 760nm - 1100nm;
Unghi de detecție: 60o;
Distanță maximă: 80cm.
3. Implementare software
Arduino este o companie open-source care produce atât plăcuțe de dezvoltare bazate
pe microcontrolere, cât și partea de software destinată funcționării și programării acestora.
Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE), care este o aplicație cross-
platform, scrisă în Java. Acesta își are originile în mediul de dezvoltare pentru limbajul de
22
programare Processing și în proiectul Wiring. Este proiectat pentru a introduce programarea
în lumea artiștilor și a celor nefamiliarizați cu dezvoltarea software. Include un editor de cod
cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și spațierea automată și oferă
mecanisme simple cu un singur click, pentru a compila și a încărca programele în plăcuța
Arduino. Un program scris în IDE pentru Arduino se numește sketch.
setup(): o funcție care este rulată o singură dată la începutul programului, când se
inițializează setările.
loop(): o funcție apelată în mod repetat până la oprirea alimentării cu energie a plăcuței.
23
Fig 3.1 Arduino IDE
4. Interfata cu utilizatorul
Interfața este acea parte a aplicației software prin intermediul căreia utilizatorul
interacționează cu calculatorul, având posibilitatea de a-şi exprima intențiile de operare şi de a
interpreta rezultatele efectuate de mașină. Interfața nu este concepută doar ca parte vizuală a
software-ului, pentru majoritatea utilizatorilor reprezintă întregul sistem de calcul. Orice
interfață poate fi utilă, utilizabilă şi utilizată.
24
influențează acestuia interacțiunea cu sistemul. Van der Veer a numit interfaţa şi maşina
virtuală a utilizatorului.
O interfață - utilizator este bine scrisă atunci când programul se comportă exact așa cum se
așteaptă utilizatorul.
25
interfețe grafice (GUI – Graphic User Interface) – sunt cele mai populare interfețe cu
utilizatorul și se prezintă sub forma unui set de obiecte grafice prin intermediul cărora
operatorul poate comunica cu sistemul.
5. Tehnologii folosite
5.1 HTML
Hypermedia este un termen aproape sinonim celui de hypertext, singura deosebire fiind
faptul ca subliniaza prezenta si a unor elemente care nu sunt de tip text, cum ar fi animatii,
secvente sonore sau secvente video.
HTML se utilizeaza din 1990, cunoscand cateva versiuni de dezvoltare, fiecare dintre
acestea imbunatatind performantele limbajului. Ultima varianta (la data elaborarii acestui
ghid) este HTML 4.01. ce include facilitatile versiunilor anterioare (tag-uri de marcare, tag-uri
pentru hiperlegaturi, antete, paragrafe, liste, elemente de meniu, formatare caractere, imagini
in-line si tag-uri pentru schimbul de date dinamic intre utilizatori), adaugand facilitati si
extensii pentru numere, tabele si elemente de control.
5.2 CSS
CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui
document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere
externe sau în cadrul documentului, prin elementul <style> și/sau atributul style.
26
7. Interfata grafica realizata
Interfața grafică realizată pentru utilizatorii acestui sistem, cuprinde secțiuni pentru:
controlul iluminării, monitorizarea temperaturii și a umiditătii aerului, controlul accesului in
locuintă și garaj, precum și informații despre cutia poștală și perimetrul din fața locuinței.
Toate acestea se pot observa in Fig 6.1
Pentru iluminat, fiecare secțiune conține două butoane “Pornit” și “Oprit”, ce vor schimba
starea sistemului. Exemplu: În momentul în care utilizatorul dorește aprinderea luminii în
bucătărie, acesta va acționa butonul “Pornit”, rezultatul fiind iluminarea bucatariei. Pentru a
anula această acțiune, utilizatorul va acționa butonul “Oprit”, rezultatul fiind închiderea
luminii.
27
Pentru controlul accesului în locuință, secțiunea conține două butoane “Descuie” și
“Incuie”, ce vor schimba starea sistemului. Exemplu: În momentul în care utilizatorul dorește
blocarea ușii principale, acesta va acționa butonul “Incuie” din secțiunea “Ușa principală”,
rezultatul fiind blocarea ușii prin care se face accesul in locuință. Pentru a anula această
acțiune, utilizatorul va acționa butonul “Descuie”, rezultatul fiind deblocarea ușii principale.
Informații despre cutia poștală și perimetrul din fața locuinței pot fi văzute în secțiunile ce
pot fi observate în Fig 6.6
28
Fig 6.6 – Interfața grafică – informații
8. Conectivitate
8.1 Arduino Mega 2560 + Ethernet Shield W5100
Modulul Ethernet Shield W5100, se suprapune peste placa de dezvoltare Arduino Mega
2560, pentru a conecta placa Arduino la internet. Pinii digitali 4,10, 11, 12 si 13 sunt folositi
pentru comunicație între placa noastră de dezvoltare și modulul Ethernet Shield W5100.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Introducem adresa mac
29
void setup()
Serial.begin(9600);
while (!Serial)
server.begin();
Primul pin al senzorului este VCC și se conectează la 5V de pe Arduino. Al doilea pin este
pinul pentru date și îl conectăm la pinul 2. Punem o siguranță de 10K între date și VCC. Pinul
3 nu îl folosim, iar pinul 4 este GND.
30
8.2.1 Program demo DHT11
#include <DHT.h>
void setup()
Serial.begin(9600);
Serial.println("Temperatura");
dht.begin();
void loop()
Serial.print("Umiditate: ");
Serial.print(" %\t");
Serial.println();
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
Serial.println();
31
}
Senzorul ultrasonic HC-SR04 are 4 pini: VCC, Echo, Trig si GND. VCC l-am conectat la
5V Arduino, GND-ul la GND Arduino, Trig la pinul 7, iar Echo la pinul 6.
int trigPin = 7;
int echoPin = 6;
void setup()
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
void loop()
32
{
digitalWrite(trigPin,HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin, HIGH);
distanta =(durata/2)/29.1;
Serial.print(distanta);
Serial.println("CM");
delay(10);
33
Senzorul de prezență are 3 pini: VCC, GND și pin-ul care trimite date. VCC-ul a fost
conectat la 5V Arduino, GND la GND-ul Arduino, iar pinul de date, a fost conectat la pin-ul
10 Arduino.
void setup() {
Serial.begin(9600);
void loop(){
if (pirState == LOW) {
Serial.println("Miscare detectata");
pirState = HIGH;
} else {
if (pirState == HIGH){
34
pirState = LOW;
Senzorul de flacără infraroșu are 4 pini: A0, D0, GND si VCC. D0 are 0 la ieșire când
nimic nu este detectat și 1 când detectează foc. A0 – dă valori cuprinse între 0 și 1024,
reprezentând probabilitatea flăcării, dimensiunea și distanța la care apare.
void setup() {
Serial.begin(9600);
void loop() {
35
else if (analog < prag) {
delay(1);
36
9. Concluzii
În cadrul acestui proiect s-a realizat o structură hardware și software ce pune în evidență
avantajele sistemelor domotice. Provocarea a fost realizarea unui astfel de sistem la un cost
mai redus și cât mai ușor de implementat. Toate acestea s-au reușit, prețul fiind unul foarte
accesibil, iar gradul de dificultate al instalării acestui sistem fiind foarte redus, toate
componentele folosite in acest sistem, fiind de dimensiuni foarte mici.
Aplicația web a fost creată folosind HTML&CSS, tehnologii ce ne-au permis crearea unei
interfețe grafice simple. Această aplicație a fost creată pentru a reduce efortul depus de om si
pentru siguranța acestuia, nefiind nevoie ca acesta să umble la circuit. Aplicația a fost creată
folosind ultimele tehnologii și din acest motiv, ea poate fi accesată și de pe smartphone, cât
timp acesta este conectat la rețea.
Prin intermediul modulului de Ethernet, Arduino trimite date la fiecare 5 secunde (poate fi
ajustat) către server. Serverul primește datele și le actualziează și în același timp, poate prelua
și comenzi manuale folosind interfața grafică realizată.
O astfel de abordare poate crește confortul persoanelor, dar totodată această abordare
poate duce la economisirea de energie.
37
Ca dezvoltări ulterioare, se pot face următoarele:
38
Anexa 1 – cod program
#include <SPI.h> //librarie ce permite comunicarea cu device-urile SPI
#include <Ethernet.h> //librarie modul Ethernet
#include <Servo.h> //librarie pentru Servomotoare
#include <DHT.h> //librarie pentru senzorul de temperatura si umiditate
#include <Keypad.h> //librarie pentru Keypad
39
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
const int analogPin = A0; //initializare pin analog pentru senzor foc
const int BuzzerPin =8; //initializare pin buzzer
const int prag = 900; //setare prag incendiu
void setup() {
dht.begin();
Serial.begin(9600);
while (!Serial) {
40
;
}
pinMode(trigPin, OUTPUT); //setare pin TRIG (ultrasonic) ca iesire
pinMode(echoPin, INPUT); //setare pin ECHO (ultrasonic) ca intrare
pinMode(dormitor, OUTPUT); //setare pin dormitor ca iesire
pinMode(bucatarie, OUTPUT); //setare pin bucatarie ca iesire
pinMode(hol, OUTPUT); //setare pin hol ca iesire
pinMode(BuzzerPin, OUTPUT); //setare pin buzzer ca iesire
pinMode(pirPin, INPUT); //setare pin PIR ca intrare
digitalWrite(pirPin, LOW); //pinul PIR pe LOW
servo_Motor.attach(30);
servo_Motor.write(5);
servo_Motor2.attach(11);
servo_Motor2.write(5);
setLocked(true);
41
void loop() {
//tastatura
char key = keypad.getKey();
if (key == '*' || key == '#')
{
position = 0;
setLocked(true);
}
if (key == password[position])
{
position ++;
}
if (position == 3)
{
setLocked(false);
}
delay(100);
if (key){
Serial.println(key);
}
delay(1);
//posta
long duration, distance;
digitalWrite(trigPin,HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin, HIGH);
distance =(duration/2)/29.1;
42
delay(10);
43
client.println("<img src='http://www.tech5.ro/images/bec.png'>");
client.println("<p>Dormitor</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?dormitoron\">Pornit</a>");
client.println("<a class='oprit' href=\"/?dormitoroff\"\">Oprit</a>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row_cell bec'>");
client.println("<img src='http://www.tech5.ro/images/bec.png'>");
client.println("<p>Bucatarie</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?bucatarieon\">Pornit</a>");
client.println("<a class='oprit' href=\"/?bucatarieoff\"\">Oprit</a>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row_cell bec'>");
client.println("<img src='http://www.tech5.ro/images/bec.png'>");
client.println("<p>Hol</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?holon\">Pornit</a>");
client.println("<a class='oprit' href=\"/?holoff\"\">Oprit</a>");
client.println("</div>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<div class='row_cell'>");
client.println("<div class='numar'>");
client.println(t);
client.println(" C");
client.println("</div>");
44
client.println("<p>Temperatura</p>");
client.println("</div>");
client.println("<div class='row_cell'>");
client.println("<div class='numar'>");
client.println(h);
client.println(" %");
client.println("</div>");
client.println("<p>Umiditate</p>");
client.println("</div>");
client.println("<div class='row_cell'>");
client.println("<img src='http://www.tech5.ro/images/usa.png'>");
client.println("<p>Usa principala</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?usaon\">Descuie</a>");
client.println("<a class='oprit' href=\"/?usaoff\"\">Incuie</a>");
client.println("</div>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<div class='row_cell_garaj'>");
client.println("<p>Garaj</p>");
client.println("<div class='butoane'>");
client.println("<a class='pornit' href=\"/?garajon\">Deschide</a>");
client.println("<a class='oprit' href=\"/?garajoff\"\">Inchide</a>");
client.println("</div>");
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<div class='row_cell_senzori'>");
if((distance<=10))
45
{
client.println("<p>Ai ceva in cutia postala!</p>");
}
else
{
client.println("<p>Nu ai nimic in cutia postala!</p>");
}
client.println("</div>");
client.println("<div class='row_cell_senzori'>");
if(digitalRead(pirPin) == HIGH){
client.println("<p>Este cineva in fata casei!</p>");
if(lockLow){
lockLow = false;
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW){
client.println("<p>Nu este nimeni in fata casei!</p>");
if(takeLowTime){
lowIn = millis();
takeLowTime = false;
}
}
client.println("</div>");
client.println("</div>");
client.println("<div class='row'>");
client.println("<p class='tagline'>Proiect realizat de Gorbanescu Madalin</p>");
client.println("</div>");
46
client.println("</div>");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
client.stop();
//Control Arduino folosind butoanele
if (readString.indexOf("?dormitoron") >0){
digitalWrite(dormitor, HIGH);
}
if (readString.indexOf("?dormitoroff") >0){
digitalWrite(dormitor, LOW);
}
if (readString.indexOf("?bucatarieon") >0){
digitalWrite(bucatarie, HIGH);
}
if (readString.indexOf("?bucatarieoff") >0){
digitalWrite(bucatarie, LOW);
}
if (readString.indexOf("?holon") >0){
digitalWrite(hol, HIGH);
}
if (readString.indexOf("?holoff") >0){
digitalWrite(hol, LOW);
}
if (readString.indexOf("?usaon") >0){
servo_Motor.write(90);
}
if (readString.indexOf("?usaoff") >0){
47
servo_Motor.write(5);
}
if (readString.indexOf("?garajon") >0){
servo_Motor2.write(60);
}
if (readString.indexOf("?garajoff") >0){
servo_Motor2.write(5);
}
readString=""; //"curatam" string-ul pentru urmatoarea citire
}
}
}
}
//incendiu
int analogValue = analogRead(analogPin);
Serial.println(analogValue);
if (analogValue > prag) {
digitalWrite(BuzzerPin, LOW);
}
else if (analogValue = prag){
digitalWrite(BuzzerPin, HIGH);
delay(2000);
digitalWrite(BuzzerPin, LOW);
}
else if (analogValue < prag) {
digitalWrite(BuzzerPin, HIGH);
}
}
48
void setLocked(int locked)
{
if (locked)
{
servo_Motor.write(5);
}
else
{
servo_Motor.write(90);
}
}
49
10. Bibliografie
[1] www.arduino.cc
[2] ATmega 2560 Datasheet
[3] Teodor V. Chirla, Lucrari de laborator la automatizarea instalatiilor (2015) Universitatea
Tehnica din Cluj-Napoca
[4] L. Mastacan, Senzori și traductoare – Noțiuni de curs (2005-2006) Universitatea Tehnică
“Gh. Asachi” din Iași, Facultatea de Automatică și Calculatoare
[5] Adrian Dumitriu, Bazele sistemelor mecatronice (2006) Universitatea “Transilvania” din
Brasov
[6] www.wikipedia.com
[7] Catalin Braescu, Limbajul HTML - Introducere (2017) Universitatea Tehnică “Gh.
Asachi” din Iași, Facultatea de Automatică și Calculatoare
[8] Catalin Braescu, Stiluri cascadate – CSS (2017) Universitatea Tehnică “Gh. Asachi” din
Iași, Facultatea de Automatică și Calculatoare
[9] DHT11 Datasheet
[10] Ethernet Shield W5100 Datasheet
[11] Servo SG90 Datasheet
[12] HC-SR04 Datasheet
[13] PIR Motion Sensor Datasheet
[14] Rajeev Piyware, Internet of Things: Ubiquitous Home Control and Monitoring System
Using Android Based Smart Phone (2013)
50