37 0 2MB
Cuprins 1. Introducere …………………………………………………………….......1 1.1. Scurt istoric al evoluţiei caselor inteligente ………………………1 1.2. Conceptul de casă inteligentă …………………………………….3 1.3. Riscuri și flexibilitate …………………………………………….6 1.4. Despre Arduino …………………………………………………..7 1.5. Identificarea problemei …………………………………………..8 1.6. Scopul lucrării ……………………………………………………8 1.7. Obiective …………………………………………………………9 1.8. Prezentare sistem ………………………………………………....9 2. Implementare hardware ……………………………………………........11 2.1. Arduino Mega 2560 ……………………………………………..11 2.2. Ethernet Shield W5100 ………………………………………….12 2.3. Senzori …………………………………………………………..13 2.3.1.Senzor de temperatură și umiditate DHT11 ……………...15 2.3.2.Senzor ultrasonic HC-SR04 ……………………………...16 2.3.3.Modul PIR - senzor de prezență………………………….17 2.4. Servomotor SG90 ………………………………………………..19 2.5. Tastatură matricială 4x4 ………………………………………....20 2.6. Senzor de flacără infraroșu ……………………………………...21 3. Implementare software …………………………………………………..22 3.1. Arduino IDE ……………………………………………………..22 4. Interfața cu utilizatorul ………………………………………………….23 5. Tehnologii folosite ………………………………………………………..25 5.1. HTML …………………………………………………………...25 5.2. CSS ……………………………………………………………...25 6. Interfața grafică realizată …………………………………………….....26 7. Conectivitate ……………………………………………………………..28 7.1. Arduino Mega 2560 + Ethernet Shield W5100 ………………....28 7.1.1. Program demo Ethernet Shield W5100 ………………….28 7.2. Arduino Mega 2560 + DHT11 ………………………………….29 7.2.1. Program demo DHT11 …………………………………..30 7.3. Arduino Mega 2560 + HC-SR04 ………………………………..31 7.3.1. Program demo HC-SR04 ………………………………...31 7.4. Arduino Mega 2560 + PIR ……………………………………...32 7.4.1. Program demo PIR ………………………………………33 2017
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 7.5.
1. Introducere Într-o epocă în care tehnologia avanseaza din ce în ce mai repede si mai mult, microcipurile au făcut un pas imens în revoluția digitală. Telefoanele mobile, vehiculele, sistemele încorporate devin din ce în ce mai inteligente și mai puternice în fiecare zi, ajutand oamenii să se confrunte cu provocări și probleme legate de timp, economie, mediu și comunicare. Astăzi, tehnologia a reușit să devină unul din principalele ce ajuta oamenii să aibă un stil de viață mai confortabil. Este o chestiune de timp până când totul va fi suficient de inteligent și va fi conectat la internet. Tehnologia are argumente pro și contra, din multe motive s-a susținut că tehnologia nu ajuta la evolutia rasei umane datorită efectelor negative care include: imobilitatea corpului și a minții, probleme de securitate etc. Partea pozitivă este cea mai dominantă, datorită numarului mare de avantaje: mai multă siguranță în vehiculele noastre de transport, casele inteligente, asistența medicala mai buna, rezolvarea problemelor de securitate. În plus, tehnologia ne oferă mai mult timp pentru diferite activități. O casă inteligentă sau automatizată reprezintă un stil de viață imbunătățit, deservind nevoilor fundamentale ale omului de confort, funcționalitate și siguranță. 1.1 Scurt istoric al evoluţiei caselor inteligente Majoritatea realizărilor din domeniul construcţiilor şi amenajării locuinţelor au transformat de-a lungul timpului caverna preistorică în căminul pe care îl avem astăzi. Următorul pas spre desăvârşirea acestui cămin îl reprezintă automatizarea lui; aceasta transformă pasivitatea obişnuită a rezidenţei în interacţiune inteligentă a materiei cu spiritual uman. Căminul capătă astfel noi valenţe mai ales prin prisma centrului inteligent (unitatea centrală) care îi controlează majoritatea atributelor: funcţionalitate – controlează luminile, jaluzele, temperatura, sistemele hi-fi, şi orice alt dispozitiv electric sau electronic , atât din interior, cât şi din exterior, fie prin intermediul internetului (din orice colţ al lumii), fie local utilizând telecomenzi, laptop, touchscreen; management energetic – reduce consumul de 1
energie prin optimizarea funcţionării componentelor electrice, electronice, sanitare şi termice ale locuinţei; sisteme de securitate – permite simularea prezenţei locatarilor în timpul absenţei lor, permite detecţia si semnalarea efracţiei către vecini, familie, firmă de pază, cât şi declanşarea unui scenariu prestabilit pentru îndepărtarea intruşilor. De asemenea, supravegherea video permite vizualizarea activităţii copiilor, bonelor şi a întregii reşedinţe în orice moment şi de la orice distanţă, mărind astfel eficienţa sistemului de securitate; inteligenţă – touchscreen-ul inteligent, exemplu Ipad, poate servi ca panou de control pentru automatizarea casei, îndeplinind şi funcţia de interfon sau permiţând accesarea internetului, chiar şi din afara sistemului; confort – scenariile de iluminare presetate pentru anumite tipuri de activităţi (petrecere, cină, film) care necesită niveluri diferite de intensitate ale luminii şi multiroom audio-video – care permite prin intermediul unui server audio-video ascultarea muzicii sau urmărirea unei emisiuni în fiecare încăpere a casei, în concordanţă cu preferinţele individuale. În ultimii ani, sistemul de automatizare al caselor a înregistrat progrese uriaşe în materie de tehnologie, aplicaţii şi design. Permiţând tehnologiei să pătrundă în spaţiul de locuit, oamenii au îmbunătăţit nivelul de confort făcând ca totul să fie mai funcţional. Descoperirea avantajelor pe care le imprimă sistemele tehnice şi echipamentele electronice unui spaţiu locuibil, este posibilă graţie experienţei şi tehnologiei, precum şi know-how-ului specific care a substituit sistemele electronice naturale (caracteristice insectelor) cu sisteme ale inteligenţei artificiale (aplicaţii computaţionale). Dezvoltarea ideii de casă ecologică inteligentă în practică a pornit de la comedia hollywoodiană ”Smart House”, produsă în 1999, ca adaptare cinematografică a nuvelei „The Veldt” scrisă de Ray Bradbury. O serie de gadgeturi inteligente transformau viaţa locatarilor casei într-o serie de scenarii SF aduse la zi, care au avut multă trecere la public. Succesul de care s-a bucurat pelicula a dat de gândit firmelor de automatizări şi astfel primele elemente specifice casei inteligente n-au întârziat să apară; deşi la inceput a fost vorba doar de programarea instalaţiilor de iluminat, udat grădina şi supraveghere video, în scurt timp, lista lucrurilor pe care putea să le facă o casă inteligentă a crescut considerabil . Conceptul de „casă inteligentă” relativ nou pentru România a apărut în urmă cu aproximativ 30 de ani şi a fost implementat în mai toate ţările dezvoltate din Europa. 2
Expansiunea fără precedent a calculatorului în toate sferele, nu putea să nu afecteze şi domeniul casnic / imobiliar. În acest sens a apărul ca şi domeniu de cercetare de sine stătător domotica care se ocupă cu aplicaţiile calculatoarelor şi a roboţilor în domeniul casnic. 1.2 Conceptul de casă inteligentă Conceptul de “casă inteligentă” este unul de factură relativ recentă şi defineşte un spaţiu locuibil modern / futurist, care foloseşte tehnologii moderne pentru automatizarea tuturor sistemelor şi a aparatelor pe bază de energie electric, aflate în interiorul acesteia sau în imediata apropiere . Totodată, o casă inteligentă sau automatizată reprezintă un stil de viaţă îmbunătăţit, răspunzând întocmai nevoilor fundamentale ale omului: confort, funcţionalitate şi siguranţă. Rolul unei case inteligente este aşadar acela de a îmbunătăţi confortul locatarilor şi a simplifica atingerea lui printr-o simplă apasare de buton (tastele unei telecomenzi, telefon sau alt dispozitiv de comunicare); astfel se pot apela o multitudine de funcţii pentru automatizarea casei şi a exteriorului ei, precum: controlul luminilor din curte, din întreaga casă sau doar din anumite camere şi climatizarea încăperilor; securitatea familiei şi a bunurilor; gestionarea sistemului audio multiroom; acţionarea manuală sau programată a storurilor, perdelelor şi jaluzelelor; acţionarea instalaţiei de udat şi controlarea temperaturii apei din piscină; hrănirea animalelor de companie etc.
3
Fig 1.1 Casă inteligentă
La baza caselor inteligente pentru asigurarea funcţiilor anterior menţionate stau echipamente specializate cu ajutorul cărora se pot controla marea majoritate a componentelor electronice şi electrocasnice existente în locuinţă. În principiu, toate sistemele electrice şi electronice individuale din casă sunt reunite într-un tot unitar, care face posibilă coordonarea centralizată a tuturor funcţiilor, fie din interiorul locuinţei, fie de la distanţă prin telefonul mobil sau prin internet. Casa inteligentă se mai numeşte şi “casă domotică” (de la lat. “domus”-“casa” şi informatică). Domotica reprezintă, aşadar, un ansamblu de sisteme şi tehnici electronice, informatice şi de telecomunicaţii folosite pentru casele inteligente, în scopul asigurării unui confort maxim, prin gestionarea energiei, optimizarea climatizării şi a iluminării, comanda la distanţă etc. Domotica are impact şi asupra protejării mediului, prin reducerea consumului energetic (mai ales dacă avem în vedere că va fi obligatoriu ca atunci când, de exemplu, se deschide o fereastră, să se întrerupă sistemul de încălzire). Principiul general de funcţionare al unei case inteligente constă în punerea în reţea a tuturor aparatelor electrice din locuinţă, controlate în mod constant de o “inteligenţă centralizată” (o centrală programabilă, un server – în term. informatici) cu interfaţă accesibilă. Comenzile se pot da cu ajutorul unei telecomenzi universale sau printr-un telefon portabil, un ecran tactil ş.a.m.d. Toate aceste elemente fac posibile reglajele complexe, adaptate la ritmul de viaţă al fiecărui locatar, prin realizarea şi urmărirea unor “scenarii” care să fie activate (repetabil, sub forma unui circuit predefinit) în funcţie de situaţie. De exemplu, scenariul “Plecarea la serviciu”, printr-un simplu click, va însemna stingerea luminilor, deschiderea uşilor garajului, trecerea în stare de veghe a centralei de încălzire şi desigur închiderea în 15 minute a jaluzelelor şi a uşii garajului. În mod similar, scenariul “Întoarcerea de la serviciu”, accesat de pe telefonul mobil sau de pe calculatorul de la birou, determină acţiunile în sens invers: jaluzelele se ridică, centrala porneşte, uşile se deschid etc. Acasă, pentru relaxare, acelaşi simplu clik pe telecomanda micşorează
4
intensitatea luminii, porneşte o muzică în surdină; pentru muzică, sistemul poate fi conectat la un radio, la un telefon mobil sau la un calculator. În ceea ce priveşte sistemele de securitate acestea conţin, de regulă, o cameră video, semnale luminoase şi sonore în caz de intruziune, în timp ce unele sisteme mai performante pot să contacteze automat numărul de telefon al proprietarului sau pe al unei firme de securitate, ori de câte ori ar putea fi o scurgere de gaze, o inundaţie, fum sau “vizite nedorite”. Realizarea unei case inteligente presupune, printre altele un sistem informatic (kit integrat) specific, care să facă totul funcţional, asociat unui design modern inspirat de la natură (ecologic), ţinându-se seama, în acelaşi timp, de eliminarea riscurilor de incendiu sau alte daune colaterale. Domotica este o stiință relativ noua, care are ca principal obiect de interes conducerea centralizată, asistată de calculator, a tuturor instalatiilor ce deservesc o cladire. Includem aici instalații sanitare, de ventilare-climatizare, încălzire, antiefracție, iluminat si prize, control acces, multimedia etc. Imaginați-vă cât de util va fi să vă puteți activa aparatul de aer condiționat cu zece minute înainte de a ajunge acasă într-o după-amiază fierbinte de iulie. Ce zici de un sistem de securitate care va detecta fumul, consumul excesiv de energie electrică, sau incercări de efractie, și vă va alerta? Cam despre asta sunt sistemele domotice, iar aplicațiile lor nu se opresc doar aici. Câteva sarcini îndeplinite de domotică :
Controlează draperiile, ferestrele dintr-o locație, toata ziua, fără interacțiunea omului.
Deschide sau blochează și deblochează poarta și intrarea în garaj, cu un control separat sau global.
Controlează clima din interiorul caselor. Prin apăsarea unui buton se poate seta încălzirea pe timp de noapte; lumina când nu ești într-o încăpere; să închidă poarta după plecare...
Controlează sunetul din orice cameră, utilizând butoane, tablouri sau telecomenzi.
Asigură lumina potrivită la locul potrivit; sistemele domotice pot asigura și memora intensitatea luminoasa în funcție de preferințele persoanelor.
5
Pot pregăti inteligent - grădinile prin pornirea stropitoarelor atunci când solul este prea uscat;
Pot aprinde lumina doar atunci când o persoana este prin preajmă(uneori cu rol de alarmă).
1.3 Riscuri și flexibilitate Înmulţirea factorilor de stres din mediul în care trăim ne determină să căutăm tot mai multe soluţii prin care să creăm un echilibru între tensiunea şi solicitarea psihică a fiecărei zile şi momentele de relaxare/destindere. Datorită acestui fapt casa inteligentă a devenit un spaţiu din ce în ce mai familiar, asigurând un plus de valoare oricărei construcţii. Suplimentar, sistemele computaţionale ale casei inteligente au evoluat în aşa măsură încât răspund aspiraţiilor din ce în ce mai înalte în ceea ce priveşte confortul, siguranţa şi controlul casei. Sistemele IT care fac trecerea de la casa ecologică la casa ecologică inteligentă extind conceptul tradiţional de „sisteme electrice” perceput ca simple sisteme de corpuri de iluminat şi prize. Noul concept înseamnă practic echiparea locuinţei cu sisteme electronice avansate care sunt concepute să satisfacă nevoi specifice, perfect capabile să ofere aplicaţii utile. Integrarea tuturor acestor funcţiuni individuale creează un sistem avansat, dar uşor de folosit, care rezistă în timp şi este extrem de flexibil, putând fi modificat şi extins în orice moment pentru a satisface noi necesităţi . O casă inteligentă are proprietatea de a asigura acel sentiment unic de “mă simt bine acasă” în fiecare zi, transformă casa în “acasă” în adevăratul sens al cuvântului. Instalaţia inteligentă îmbină într-o armonie perfectă, controlul tuturor luminilor,
prizelor,
încălzirii,
climatizării,
echipamentelor
de
umbrire
motorizate,
echipamentelor audio-video, elementelor de securitate, sistemul de irigaţii şi multe altele. Siguranţa copilului, confortul familiei, economia energiilor, excluderea pericolului de electrocutare la întrerupătoare, funcţiile de simulare a prezenţei pentru zilele de concediu etc, toate aceste avantaje sunt cu adevărat importante pentru casele inteligente. O instalaţie într-adevăr inteligentă va trebui să fie intuitivă şi uşor utilizabilă în viaţa de zi cu zi tuturor generaţiilor, locatari ai imobilului. De asemenea, trebuie să fie adaptabilă în timp, pentru a satisface noile cerinţe ale încăperilor cu destinaţie schimbată, nu de puţine ori, la o anumită vârstă camera copilului devine neîncăpetoare şi va primi o nouă destinaţie, iar o cameră mai mare va deveni cadoul onomastic. O casă inteligentă va reuşi să asigure toate
6
funcţiile necesare noii camere. Casa inteligentă asigură comanda sau vizualizarea echipamentelor din orice zonă a imobilului, inclusiv de la distanţă atunci cînd suntem plecaţi . Un alt aspect demn de menţionat referitor la casa inteligentă este acela că sistemul domotic central poate integra cu uşurinţă o multitudine de sisteme, precum: sistemul de climatizare şi controlul luminilor, sistemul de suraveghere audio-video locală şi la distanţă, sistemul de tip home cinema şi audio multiroom, sistemul electric de prize, sistemul de detecţie la incendiu, efracţie sau alte incidente, sistemul de automatizare a porţilor de intrare şi de la garaj etc. Toate aceste sisteme pot fi controlate oricând, manual sau prin stabilirea unor scenarii predefinite pentru diverse situaţii zilnice: când pleci sau te întorci de la muncă sau din vacanţă, când te trezeşti sau te culci, când în casa stă întreaga familie, doar bona cu copilul etc. De asemenea, flexibilitatea soluţiilor domotice derivă şi din posibilitatea acestora de implementare şi adaptare la diverse spaţii: apartamente, case, vile, case de vacanţă, hoteluri, clădiri de birouri etc. 1.4 Despre Arduino O plăcuță Arduino este compusă dintr-un microcontroler Atmel AVR de 8-, 16- sau 32biți (deși începând cu 2015 s-au folosit microcontrolere de la alți producători) cu componente complementare care facilitează programarea și încorporarea în alte circuite. Un aspect important la Arduino este că acesta dispune de conectori standard, care permit utilizatorului să conecteze plăcuța cu procesorul la diferite module interschimbabile numite shield-uri. Unele shield-uri comunică cu Arduino direct prin pinii digitali sau analogici, dar altele sunt adresabile individual prin magistrala serială I²C permițând utilizarea mai multor module în paralel. Până în anul 2015 plăcuțele Arduino oficiale au folosit cipuri Atmel din seria megaAVR, în special ATmega8, ATmega168, ATmega328, ATmega1280 și ATmega2560, iar în 2015 au fost adăugate cipuri de la alți producători. O multitudine de alte procesoare au fost folosite de dispozitive compatibile Arduino. Multe plăcuțe includ un regulator liniar de 5 V și un oscilator cu cuarț de 16 MHz (sau un rezonator ceramic în unele variante), deși anumite plăcuțe, cum ar fi LilyPad, funcționează la 8 MHz și nu necesită regulator, datorită restricțiilor de formă. Un microcontroler instalat pe Arduino vine preprogramat cu un bootloader care simplifică încărcarea programelor pe memoria flash a cipului, în comparație 7
cu alte dispozitive care necesită programatoare externe. Acest aspect face Arduino o soluție simplă, permițând programarea de pe orice computer ordinar. În prezent, bootloader-ul optiboot este bootloader-ul implicit instalat pe Arduino UNO. La nivel conceptual, când se folosește mediul de dezvoltare integrat Arduino, programarea tuturor plăcuțelor se face prin conexiune serială. Implementarea acesteia diferă în funcție de versiunea hardware. Unele plăcuțe Arduino au implementate convertoare de nivel logic pentru a realiza conversia între nivelele logice RS-232 și cele TTL. Plăcuțele Arduino din prezent sunt programate prin USB, având integrate cipuri de conversie USB-serial, cum ar fi FTDI FT232. Unele modele UNO, mai noi, folosesc un cip AVR separat programat să funcționeze ca un convertor USB-serial, care poate fi reprogramat printr-un port ICSP dedicat. Alte variante, cum ar fi Arduino Mini și versiunea neoficială Boarduino, folosesc adaptoare detașabile USB-serial, cabluri, Bluetooth sau alte metode. Plăcuța Arduino are expuși mulți dintre pinii de intrare/ieșire ai microcontrolerului, pentru ca aceștia să fie folosiți de alte circuite. Diecimila, Duemilanove și UNO oferă 14 pini digitali de intrare/ieșire, dintre care 6 pot produce semnale PWM și 6 intrări analogice care, de asemenea, pot fi folosite ca intrări/ieșiri digitale. Acești pini sunt accesibili prin partea superioară a plăcuței, prin intermediul unor barete mamă cu pasul între pini de 2,54 mm. 1.5 Identificarea problemei Întrerupatoarele sunt dispozitive foarte simple, doar totusi foarte importante si pot fi vazute in fiecare zi in jurul nostru. Desi sunt atat de importante, omul nu le mai acorda prea multa atentie, de foarte multe ori, uitand sa le actioneze. De foarte multe ori, cand plecăm de acasă, uităm să stingem un bec, sau să scoatem ceva din priză, acest lucru putând conduce la defectarea aparatelor din case, sau consum inutil de energie electrică, sau în unele cazuri se poate ajunge la supraîncalzire și incendiu. O altă problemă, o reprezintă intrările prin efracție. Este foarte important să ne asigurăm că locuința noastră este protejată de asemenea întâmplări, cât nu suntem acasă. Intotdeauna există riscul ca o persoană necunoscută să îți intre în casă. 1.6 Scopul lucrării
8
Proiectarea și implementarea unui sistem de automatizare a unei case, care va controla lumina, va monitoriza în permanență temperatura, umiditatea, va analiza riscul de incendiu, va controla aerul condiționat și va asigura securitatea locuinței in permanență. Sistemul de automatizare va procesa comenzile primite de la locatar și datele primite de la senzori. Acest sistem este constituit din componente hardware si software.
Pentru folosirea acestui sistem, exista doua tipuri de utilizator: 1. Utilizatorul care poate interveni asupra codului și își poate ajusta singur parametrii. Acest utilizator este administratorul. El are autorizația să acceseze și să modifice codul programului, sau structura hardware. 2. Al doilea tip de utilizator, este utilizatorul normal. Acest proiect a fost proiectat, special pentru nevoile lui. El nu poate modifica codul si nici structura hardware. Folosind aplicația web, utilizatorul poate efectua urmatoarele operațiuni:
Aprindere/Stingere led-uri.
Blocare/Deblocare ușa principală.
Deschidere/Inchidere usa garaj.
Pornire/Oprire ventilator.
Vizualizare temperatură și umiditate aer.
1.7 Obiective Pentru a îndeplini scopul lucrării, trebuie atinse următoarele obiective. 1. Controlul led-urilor. 2. Controlul unui ventilator, pentru menținerea temperaturii constante. 3. Detectarea mișcării în afara locuinței. 4. Alarma, activată in momentul în care este detectată foc în locuință. 5. Accesul in locuință, doar pe baza unui cod. 6. Controlul unui servomotor. 9
1.8 Prezentare sistem Următorul graf prezintă cum sunt afișate datele de la senzori, pe un laptop, sau un smartphone, conectat la rețea.
Fig 1.2 Graf afișare date de la senzori Următorul graf prezintă cum sunt trimise datele din aplicația realizată, la Arduino.
10
Fig 1.3 Graf comenzi Arduino de la aplicație
2. Implementare hardware Microcontroller La modul general un controler este o structură electronică destinată controlului unui proces sau unei interacțiuni caracteristice cu mediul exterior, fără să fie necesară intervenția operatorului uman. Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa ziselor sisteme încapsulate-integrate (“embedded systems”), la care existența unui sistem de calcul incorporat este (aproape) transparentă pentru utilizator. Printre multele domenii unde utilizarea lor este practic un standard industrial se pot menționa: în industria de automobile (controlul aprinderii/motorului, climatizare, diagnoză, sisteme de alarmă, etc.), în așa zisa electronică de consum (sisteme audio, televizoare, camere video și videocasetofoane, telefonie mobilă, GPS-uri, jocuri electronice etc.), în aparatura electrocasnică (mașini de spălat, frigidere, cuptoare cu microunde, aspiratoare), în controlul mediului și climatizare (sere, locuințe, hale industriale), în industria aerospațială, în mijloacele moderne de măsurare - instrumentație (aparate de măsură, senzori și traductoare inteligente), la realizarea de periferice pentru calculatoare, în medicină.
2.1 Arduino Mega 2560 11
Arduino Mega 2560 este o placă de dezvoltare având drept unitate centrală microcontrolerul ATmega2560. Acesta este un microcontroler performant Atmel AVR pe 8 biți bazat pe arhitectura RISC (Reduced Instruction Set Computing) și conține 54 de pini, ce pot fi configurați ca intrări sau ieșiri, dintre care 15 pot furniza semnale PWM (Pulse Width Modulation), 16 pini de intrare analogică cu o rezoluție de 10 biti (1024 de valori diferite), 4 porturi seriale hardware (UART) și un oscilator intern de 16 MHz.
Fig 2.1 Arduino Mega 2560
2.2 Ethernet Shield W5100 Acest modul este un circuit ce ajută să conectam placa Arduino Mega 2560 la internet, cu ajutorul unui cablu RJ45. Se alimentează cu 5V, de pe placa Arduino si are un buffer intern de 16K. Are viteza de conexiune de 10/100Mbps și comunică cu Arduino Mega 2560 prin protocolul SPI. Modulul dispune și de un slot pentru card de memorie Micro SD.
Fig 2.2 Ethernet Shield W5100
12
Modulul conține cateva led-uri informative:
PWR – indică dacă placa și modulul sunt alimentate.
LINK – indică o conexiune la rețea și clipește când sunt transmise sau primite date.
FULLD – indică o conexiune full duplex.
100M – indică o conexiune de 100MB/s.
RX – clipește când modulul primește date.
TX – clipește când modulul trimite date.
COLL – clipește când a fost detectată o coliziune.
2.3 Senzori Senzorul este un dispozitiv tehnic care reacționează calitativ sau cantitativ prin proprii mărimi măsurabile, la anumite proprietăți fizice sau chimice ale mediului din preajma lui. Ca parte componentă a unui aparat sau sistem tehnic detector poate măsura/înregistra de exemplu presiunea, umiditatea, câmpul magnetic, accelerația, forța, intensitatea sonoră, radiații ș.a. Provine din latină: sensus = simț. Senzorul este un dispozitiv care măsoară o mărime fizică (masă, presiune, temperatură, umiditate etc.) și o transformă într-un semnal care poate fi citit de către un observator printrun instrument sau poate fi prelucrat. Sistemele de control trebuie să fie capabile să identifice, în anumite condiţii şi limite, parametri mediului ambiant şi să reacţioneze la modificări ale acestora. Extrapolând consideraţiile despre sistemele senzoriale ale lumii vii la sistemele de control, prin senzor se va înţelege dispozitivul tehnic destinat înzestrării sistemelor cu simţuri. Are rolul determinării unei sau unor proprietăţi, şi, în funcţie de nivelul de integrare, poate avea funcţii mai simple sau mai complexe. Senzorul cuprinde traductorul/traductoarele pentru transformarea mărimii de intrare într-un semnal electric util, dar şi circuite pentru adaptarea şi conversia semnalelor şi, eventual, pentru prelucrarea şi evaluarea informaţiilor. Senzorul care include şi unităţile micromecanice şi microelectronice de prelucrare, realizate prin integrare pe scară largă (LSI) 13
sau foarte largă (VLSI), se întâlneşte în literatura de specialitate şi sub denumirile de "sistem senzorial" sau "senzor inteligent" (smart-sensor).
Fig 2.3 Structuri ale sistemelor senzoriale Există astăzi senzori pentru mai mult de 100 de mărimi fizice, iar dacă se iau în considerare şi senzorii pentru diferite substanţe chimice, numărul lor este de ordinul sutelor. Se pot pune în evidenţă circa 2000 de tipuri distincte de senzori, oferite în 100.000 de variante, pe plan mondial Senzorii pot fi clasificaţi în funcţie de tehnologiile utilizate pentru realizarea lor:
Tehnologii ale materialelor feromagnetice;
Tehnologii ale materialelor piezo-ceramice;
Tehnologii ale microeelectronicii şi microsistemelor;
Tehnologii ale staturilor subţiri;
Tehnologii ale staturilor groase;
Tehnologii pentru materiale sinterizate;
Tehnologii ale foliilor etc. În funcţie de tipul mărimii fizice de intrare senzorii pot fi clasificaţi în:
absoluţi, când semnalul electric de ieşire poate reprezenta toate valorile posibile ale mărimii fizice de intrare, raportate la o origine (referinţă) aleasă;
14
incrementali, când nu poate fi stabilită o origine pentru toate punctele din cadrul domeniului de măsurare, ci fiecare valoare măsurată reprezintă originea pentru cea următoare. Foarte importantă este clasificarea în funcţie de tipul mărimii de ieşire, în:
senzori analogici, pentru care semnalul de ieşire este în permanenţă proporţional cu mărimea fizică de intrare;
senzori numerici (digitali), la care semnalul de ieşire poate lua numai un număr limitat de valori discrete, care permit cuantificarea semnalului fizic de intrare. Privind problema semnalului de ieşire din punctul de vedere al numărului de valori
posibile, pot fi puse în evidenţă alte două clase distincte:
senzori binari, care prezintă la ieşire numai două valori distincte;
senzori cu un număr mare de valori, pentru măsurarea unei mărimi într-o anumită plajă; pot fi analogici sau numerici.
2.3.1 Senzor de temperatură și umiditate DHT11 DH11 este un senzor digital de temperatură și umiditate, low-cost. Acesta încorporează un senzor de umiditate capacitiv și un termistor, pentru a măsura aerul din jur si dă un semnal digital pe pinul de date (nu necesită pini de intrare analogici). Specificatii Alimentare si I / O: 3 - 5V Curent maxim: 2.5mA Pentru gama de umiditate 20-80% are o precizie de 5% Pentru gama de temperatură 0-50 ° are o precizie de ± 2 ° C Rata de eșantionare de 1 Hz (o dată pe secundă) Dimensiuni: 15.5mm x 12mm x 5.5mm
15
Fig 2.4 Senzor de temperatură DHT11 Cum funcționează? Pentru a măsura umiditatea, este folosit senzorul de umiditate, ce conține 2 electrozi cu un strat de menținere a umidității între ele. Când umiditatea se schimbă, se schimbă și rezistența dintre cei 2 electrozi. Această schimbare în rezistență este măsurată și procesată. Pentru măsurarea temperaturii, este folosit un termistor. Denumirea de "termistor" este o combinare a cuvintelor englezești "thermally sensitive resistor" (rezistență sensibilă termic). Această denumire descrie cu exactitate funcția de bază a dispozitivului și anume aceea de-a avea o schimbare de rezistență electrică predictibilă în funcție de orice schimbare a temperaturii sale absolute. Termistorul NTC (Negative Temperature Coefficient, coeficient negativ de temperatura) este un dispozitiv semiconductor cu doua terminale relativ simplu, realizat din amestecuri sinterizate din oxizi ai metalelor de tranziție ca manganul, cobaltul, nichelul, fierul, cuprul. 2.3.2 Senzor ultrasonic HC-SR04 Senzorul HC-SR04 emite o undă ultrasonică pe frecventa 40 000Hz. Când sunetul întâlnește în calea sa un obstacol, acesta se întoarce și este captat de modulul de recepție al senzorului. Distanța între senzor și obiectul detectat se calculează luând în considerare timpul de călătorie al sunetului și viteza sunetului. Senzorul returnează măsuratori ale distanței destul de precise in gama 2cm – 400cm. Precizia este undeva la 2mm cu un unghi de generare a undei ultrasonice de 15 grade. Modulul HC-SR04 are patru pini: “Ground”, “VCC”, “Trig”, si “Echo”. Pinul “Ground” trebuie conectat la unul din pinii “GND”, iar pinul “VCC” la pinul de 5V al placii Arduino.
16
Pinii “Trig” si “Echo” pot fi conectați la oricare din pinii digitali de intrare/ieșire a plăcii Arduino.
Fig 2.5 Senzorul ultrasonic HC-SR04 Pentru a genera ultrasunete, TRIG-ul trebuie setat pe HIGH pentru 10 microsecunde. Va trimite o explozie sonică de 8 cicluri, ce va călători cu viteza sunetului și va fi apoi primită de pinul ECHO. ECHO va scoate timpul, in microsecunde.
Figura 2.5 Funcționare senzor HC-SR04 2.3.3 Modul PIR - senzor de prezenta PIR(Passive Infrared Sensor) este un dispozitiv electronic ce măsoară radiația infraroșie emisă de obiecte aflate în câmpul său vizual.
17
Fig 2.5 Senzorul de prezență Mișcarea este detectată atunci când un corp cu o anumită temperatură (cum ar fi un om sau un animal) trece prin fața sursei infraroșu (adică un alt corp, obiect) cu o altă temperatură, cum ar fi un perete.
Fig 2.6 Funcționalitate PIR Acest lucru înseamnă că senzorul detectează căldura de la trecerea unui obiect prin câmpul de acțiune al senzorului și acel obiect rupe câmpul pe care senzorul l-a determinat anterior ca fiind “normal”. Orice obiect, chiar unul de aceeași temperatură ca și obiectele din jur va activa senzorul PIR cand corpul se deplasează în câmpul vizual al senzorului. Senzorul consta de asemenea si intr-un capac special, numit obiectiv Fresnel, care focalizeaza semnalele infrarosii pe senzor.
18
Fig 2.6 Functionalitate PIR cu obiectiv Fresnel
2.4 Servomotor SG90 Un servo motor permite un control precis al poziției, vitezei și accelerației. Acest control foarte strict al poziției unghiulare, vitezei și accelerației nu se poate face fără un senzor pentru feedback-ul de poziție. Acest senzor dă alarma atunci când motorul se rotește. Dar chiar și așa, exista ceva si mai sofisticat care controleaza toate etapele motorului servo. Este vorba despre un controller dedicat care face ca micile angrenaje din interiorul servo motorului sa se miste cu precizie militară.
19
Fig 2.7 Servomotor SG90 Caracteristici tehnice:
Tensiune de alimentare: 4.8V;
Consum redus de curent;
Viteza de funcționare: 0.12 s/60o @ 4.8 V;
Cuplu în blocare la 4.8V: 1.8 kgf*cm;
Frecvență PWM: 50Hz
Fig 2.8 Conectivitate Servomotor SG90 2.5 Tastatura matricială 4x4 Tastatură cu 16 butoane (cifrele de la 0 la 9 + încă 6 butoane), tastele fiind conectate in forma matriceala.
Fig 2.9 Keypad 4x4 Cum functionează?
20
Tastaturile matriciale folosesc o combinație de 4 linii și 4 coloane, pentru a furniza stările butoanelor, către microcontroller. Sub fiecare tastă, este un buton, cu un capat conectat la o linie și celălat capăt conectat la o coloană.
Fig 2.10 Circuit keypad 4x4 Din circuitul prezentat in Fig 2.10 se poate vedea că atunci când unul din cele 16 butoane este apăsat, o pereche de pini va fi conectată. Cei 2 pini sunt folosiți pentru a detecta butonul ce a fost apăsat. 2.6 Senzor de flacără infraroșu Senzorul se folosește de un fototranzistor ce funcționează pe bază de radiație IR. Output-ul senzorului poate fi analogic sau digital. Modulul este echipat cu un circuit integrat comparator LM393. Tensiunea de referința a comparatorului poate fi setată din potențiometru.
21
Fig 2.11 Senzor de flacără infraroșu Caracteristici tehnice:
Tensiune de alimentare: 3.3V sau 5V; Curent consumat: 15mA; Lungime de undă detectată: 760nm - 1100nm; Unghi de detecție: 60o; Distanță maximă: 80cm.
Fig 2.12 Circuit senzor flacara infrarosu
3. Implementare software 3.1 Arduino IDE Arduino este o companie open-source care produce atât plăcuțe de dezvoltare bazate pe microcontrolere, cât și partea de software destinată funcționării și programării acestora. Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE), care este o aplicație crossplatform, scrisă în Java. Acesta își are originile în mediul de dezvoltare pentru limbajul de 22
programare Processing și în proiectul Wiring. Este proiectat pentru a introduce programarea în lumea artiștilor și a celor nefamiliarizați cu dezvoltarea software. Include un editor de cod cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și spațierea automată și oferă mecanisme simple cu un singur click, pentru a compila și a încărca programele în plăcuța Arduino. Un program scris în IDE pentru Arduino se numește sketch. Arduino IDE suportă limbajele de programare C și C++ folosind reguli speciale de organizare a codului. Arduino IDE oferă o librărie software numită Wiring, din proiectul Wiring, care oferă multe proceduri comune de intrare și ieșire. Un sketch tipic Arduino scris în C/C++ este compus din două funcții care sunt compilate și legate cu un ciot de program main(), într-un program executabil cu o execuție ciclică:
setup(): o funcție care este rulată o singură dată la începutul programului, când se inițializează setările.
loop(): o funcție apelată în mod repetat până la oprirea alimentării cu energie a plăcuței. După compilarea și legarea cu GNU toolchain inclus, de asemenea, în IDE, mediul de
dezvoltare Arduino trimite comandă către programul avrdude pentru a converti codul executabil într-un fișier text codat hexazecimal, care poate fi încărcat în placa Arduino de un program de încărcare.
23
Fig 3.1 Arduino IDE
4. Interfata cu utilizatorul Interacțiunea dintre utilizatori şi calculatoare apare la nivelul interfeței cu utilizatorul, care include aspecte ergonomice, software şi hardware. La calculatoarele moderne există următoarele puncte centrale ale interfeței om-calculator: interfața grafică (pe un monitor sau ecran de calculator), interfața grafică mijlocită prin atingerea monitorului (touch screen) , interfața grafică prin comenzi verbale (recunoașterea vocii). Interfața este acea parte a aplicației software prin intermediul căreia utilizatorul interacționează cu calculatorul, având posibilitatea de a-şi exprima intențiile de operare şi de a interpreta rezultatele efectuate de mașină. Interfața nu este concepută doar ca parte vizuală a software-ului, pentru majoritatea utilizatorilor reprezintă întregul sistem de calcul. Orice interfață poate fi utilă, utilizabilă şi utilizată. Un aspect deosebit de important în definirea interfeței utilizator este faptul că interfaţa reprezintă din sistemul complex utilizatorului, doar aspectele relevante pentru interacţiunea sa cu sistemul. Celelalte aspecte care există în sistem dar nu sunt accesibile utilizatorului, nu îi
24
influențează acestuia interacțiunea cu sistemul. Van der Veer a numit interfaţa şi maşina virtuală a utilizatorului.
Fig 4.1 Interfata cu utilizatorul O interfață - utilizator este bine scrisă atunci când programul se comportă exact așa cum se așteaptă utilizatorul. Proiectarea interfețelor cu utilizatorul este rezultatul activităților de: înțelegere a nevoilor utilizatorilor, proiectare (design), evaluare/ testare, implementare finală, menținere. Interfețele se pot clasifica în:
interfețe hardware – de exemplu telecomanta pentru televizor. O telecomandă obișnuită conține butoane numerice, pentru volum, pentru schimbarea canalului, pentru pornire/oprire și alte butoane pentru a accesa diferite facilități ale televizorului, ceea ce o face sa reprezinte o interfață cu utilizatorul.
interfețe software – acestea sunt reprezentate de sisteme de programe care inițiază si întrețin un dialog cu utilizatorul.Acestea se pot împărți în doua mari categorii: interfețe în linie de comandă (sau interfețe text) – acestea sunt reprezentate, în general,
de un program numit interpretor de comenzi, care afișează pe ecran un prompter, primește comanda introdusă de utilizator și o executa. Comenzile se scriu folosind tastatura și pot fi insoțite de parametri. Aproape toate sistemele de operare includ o interfață în linie de comanda, unele foarte bine puse la punct (cazul sistemelor UNIX), iar altele destul de primitive (MS-DOS si MS-Windows).
25
interfețe grafice (GUI – Graphic User Interface) – sunt cele mai populare interfețe cu utilizatorul și se prezintă sub forma unui set de obiecte grafice prin intermediul cărora operatorul poate comunica cu sistemul.
5. Tehnologii folosite 5.1 HTML HTML este acronimul de la HyperText Markup Language si reprezinta un limbaj pentru crearea si marcarea (formatare, aranjare) unui document astfel incat sa poata fi publicat pe World Wide Web si vizualizat cu ajutorul unui browser (Internet Explorer, Netscape, Opera etc.). Termenul de hypertext desemneaza un material sub forma de text si imagine, interconectat intr-o maniera complexa, nesecventiala, in care utilizatorul poate naviga, cauta informatii referitoare la un obiect. Hypertext-ul trebuie interpretat ca un text care semnaleaza o legatura la o alta informatie web, de obicei un alt document web, si este identificat prin subliniere sau culoare, pentru a-l deosebi de textul simplu. Hypermedia este un termen aproape sinonim celui de hypertext, singura deosebire fiind faptul ca subliniaza prezenta si a unor elemente care nu sunt de tip text, cum ar fi animatii, secvente sonore sau secvente video. HTML se utilizeaza din 1990, cunoscand cateva versiuni de dezvoltare, fiecare dintre acestea imbunatatind performantele limbajului. Ultima varianta (la data elaborarii acestui ghid) este HTML 4.01. ce include facilitatile versiunilor anterioare (tag-uri de marcare, tag-uri pentru hiperlegaturi, antete, paragrafe, liste, elemente de meniu, formatare caractere, imagini in-line si tag-uri pentru schimbul de date dinamic intre utilizatori), adaugand facilitati si extensii pentru numere, tabele si elemente de control. 5.2 CSS CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul și/sau atributul style.
26
7. Interfata grafica realizata Interfața grafică realizată pentru utilizatorii acestui sistem, cuprinde secțiuni pentru: controlul iluminării, monitorizarea temperaturii și a umiditătii aerului, controlul accesului in locuintă și garaj, precum și informații despre cutia poștală și perimetrul din fața locuinței. Toate acestea se pot observa in Fig 6.1
Fig 6.1 Interfața grafică realizată Pentru iluminat, fiecare secțiune conține două butoane “Pornit” și “Oprit”, ce vor schimba starea sistemului. Exemplu: În momentul în care utilizatorul dorește aprinderea luminii în bucătărie, acesta va acționa butonul “Pornit”, rezultatul fiind iluminarea bucatariei. Pentru a anula această acțiune, utilizatorul va acționa butonul “Oprit”, rezultatul fiind închiderea luminii.
Fig 6.2 Interfața grafică – control lumini 27
Pentru controlul accesului în locuință, secțiunea conține două butoane “Descuie” și “Incuie”, ce vor schimba starea sistemului. Exemplu: În momentul în care utilizatorul dorește blocarea ușii principale, acesta va acționa butonul “Incuie” din secțiunea “Ușa principală”, rezultatul fiind blocarea ușii prin care se face accesul in locuință. Pentru a anula această acțiune, utilizatorul va acționa butonul “Descuie”, rezultatul fiind deblocarea ușii principale.
Fig 6.3 Interfața grafică – ușa principală Pentru controlul accesului în garaj, secțiunea conține două butoane “Deschide” și “Inchide”, ce vor schimba starea sistemului. Exemplu: În momentul în care utilizatorul dorește deschiderea ușii garajului, acesta va acționa butonul “Deschide” din secțiunea “Garaj”, rezultatul fiind deschiderea ușii garajului. Pentru a anula această acțiune, utilizatorul va acționa butonul “Inchide”, rezultatul fiind închiderea ușii garajului.
Fig 6.4 Interfața grafică – ușă garaj Temperatura și umiditatea aerului pot fi monitorizate în secțiunile ce pot fi observate în Fig 6.5.
Fig 6.5 – Interfața grafică – afișare temperatură și umiditate
Informații despre cutia poștală și perimetrul din fața locuinței pot fi văzute în secțiunile ce pot fi observate în Fig 6.6 28
Fig 6.6 – Interfața grafică – informații
8. Conectivitate 8.1 Arduino Mega 2560 + Ethernet Shield W5100
Fig 7.1 Arduino Mega 2560 + Ethernet Shield W5100 Modulul Ethernet Shield W5100, se suprapune peste placa de dezvoltare Arduino Mega 2560, pentru a conecta placa Arduino la internet. Pinii digitali 4,10, 11, 12 si 13 sunt folositi pentru comunicație între placa noastră de dezvoltare și modulul Ethernet Shield W5100. 8.1.1 Program demo Ethernet Shield W5100 #include #include byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Introducem adresa mac byte ip[] = { 192, 168, 100, 10 }; // Adresa ce dorim sa o folosim EthernetServer server(80); //Portul default al serverului pentru HTML 29
void setup() { Serial.begin(9600); while (!Serial) { ; } Ethernet.begin(mac, ip, gateway, subnet); // Pornim conexiunea Ethernet server.begin(); Serial.print("Serverul este la adresa: "); Serial.println(Ethernet.localIP()); //Printam adresa IP } 8.2 Arduino Mega 2560 + DHT11
Fig 7.2 Arduino Mega 2560 + senzor temperatura DHT11 Primul pin al senzorului este VCC și se conectează la 5V de pe Arduino. Al doilea pin este pinul pentru date și îl conectăm la pinul 2. Punem o siguranță de 10K între date și VCC. Pinul 3 nu îl folosim, iar pinul 4 este GND.
30
8.2.1 Program demo DHT11 #include #define DHTPIN 2
// Pin-ul la care am conectat senzorul
#define DHTTYPE DHT11
// Definim tipul de senzor, DHT11 in cazul nostru
DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Temperatura"); dht.begin(); } void loop() { float u = dht.readHumidity(); float t = dht.readTemperature();
// citeste valoarea pentru umiditate // citeste valoarea pentru temperatura
Serial.print("Umiditate: "); Serial.print(" %\t"); Serial.println(); Serial.print("Temperatura: "); Serial.print(t); Serial.print(" *C "); Serial.println(); 31
} 8.3 Arduino Mega 2560 + senzor ultrasonic HC-SR04
Fig 7.3 Arduino Mega 2560 + senzor ultrasonic HC-SR04 Senzorul ultrasonic HC-SR04 are 4 pini: VCC, Echo, Trig si GND. VCC l-am conectat la 5V Arduino, GND-ul la GND Arduino, Trig la pinul 7, iar Echo la pinul 6.
8.3.1 Program demo HC-SR04 int trigPin = 7; int echoPin = 6; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop()
32
{ long durata, distanta; digitalWrite(trigPin,HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration=pulseIn(echoPin, HIGH); distanta =(durata/2)/29.1; Serial.print(distanta); Serial.println("CM"); delay(10); } 8.4 Arduino Mega 2560 + senzor de prezenta
Fig 7.4 Arduino Mega 2560 + PIR
33
Senzorul de prezență are 3 pini: VCC, GND și pin-ul care trimite date. VCC-ul a fost conectat la 5V Arduino, GND la GND-ul Arduino, iar pinul de date, a fost conectat la pin-ul 10 Arduino. 8.4.1 Program demo PIR int pir = 10;
// pin-ul de intrare PIR
int pirstare = LOW; int val = 0;
// incepem ca si cum nu ar fi detectata miscare // variabila pentru a citi starea pin-ului
void setup() { pinMode(pir, INPUT);
// declaram senzorul ca intrare
Serial.begin(9600); } void loop(){ val = digitalRead(pir); // citim valoarea de intrare if (val == HIGH) {
// verificam daca este pe HIGH
if (pirState == LOW) { Serial.println("Miscare detectata"); pirState = HIGH; } } else { if (pirState == HIGH){ Serial.println("Miscarea s-a incheiat!");
34
pirState = LOW; } } } 8.5 Arduino Mega 2560 + senzor de flacara infrarosu Senzorul de flacără infraroșu are 4 pini: A0, D0, GND si VCC. D0 are 0 la ieșire când nimic nu este detectat și 1 când detectează foc. A0 – dă valori cuprinse între 0 și 1024, reprezentând probabilitatea flăcării, dimensiunea și distanța la care apare. 8.5.1 Program demo senzor de flacara infrarosu const int analogPin = A0;
// const int prag = 1015; //
void setup() { Serial.begin(9600); } void loop() { int analog = analogRead(analogPin); Serial.println(analog); //serial print the FLAME sensor value if (analogValue > prag) { Serial.print("Nu a fost detectat foc."); } else if (analog = prag){ }
35
else if (analog < prag) { Serial.print("A fost detectat un incendiu."); } delay(1); }
36
9. Concluzii În cadrul acestui proiect s-a realizat o structură hardware și software ce pune în evidență avantajele sistemelor domotice. Provocarea a fost realizarea unui astfel de sistem la un cost mai redus și cât mai ușor de implementat. Toate acestea s-au reușit, prețul fiind unul foarte accesibil, iar gradul de dificultate al instalării acestui sistem fiind foarte redus, toate componentele folosite in acest sistem, fiind de dimensiuni foarte mici. Aplicația web a fost creată folosind HTML&CSS, tehnologii ce ne-au permis crearea unei interfețe grafice simple. Această aplicație a fost creată pentru a reduce efortul depus de om si pentru siguranța acestuia, nefiind nevoie ca acesta să umble la circuit. Aplicația a fost creată folosind ultimele tehnologii și din acest motiv, ea poate fi accesată și de pe smartphone, cât timp acesta este conectat la rețea. Informațiile sunt colectate cu ajutorul senzorilor de către Arduino, microcontroller-ul Arduino fiind conectat la rețea cu ajutorul modulului de Ethernet. Configurația pentru modulul de Ethernet conține o adresă ip statica. Prin intermediul modulului de Ethernet, Arduino trimite date la fiecare 5 secunde (poate fi ajustat) către server. Serverul primește datele și le actualziează și în același timp, poate prelua și comenzi manuale folosind interfața grafică realizată. O astfel de abordare poate crește confortul persoanelor, dar totodată această abordare poate duce la economisirea de energie. 9.1 Limitări și dezvoltări ulterioare Proiectul are și câteva limitări, după cum urmează:
Sistemul este vulnerabil la atacuri.
Este nevoie de un laptop, ca server local.
Este nevoie de conexiune la internet.
Nu poate fi accesat de la o distanță mare, fiind limitat de rețeaua LAN.
37
Ca dezvoltări ulterioare, se pot face următoarele:
Adăugarea unui mecanism de securitate precum o modalitate de autentificare, prin intermediul unei baze de date, pentru a preveni autentificările neautorizare.
Implementare sistem de oprire a curentului, în caz de urgență.
Implementare notificări SMS.
Adăugarea unui senzor de gaz, pentru detectarea scurgerilor de gaz.
Adaugarea unui LCD, pentru afișarea stării sistemului.
38
Anexa 1 – cod program #include //librarie ce permite comunicarea cu device-urile SPI #include //librarie modul Ethernet #include //librarie pentru Servomotoare #include //librarie pentru senzorul de temperatura si umiditate #include //librarie pentru Keypad
#define DHTPIN 17
// initializare pin senzor de temperatura
#define DHTTYPE DHT11 // alegem tipul senzorului DHT dht(DHTPIN, DHTTYPE);
int calibrationTime = 30; //calibrare senzor PIR long unsigned int lowIn; long unsigned int pause = 5000; boolean lockLow = true; boolean takeLowTime; int pirPin = 10; //initializare pin PIR
int dormitor = 14; //initializare pin lumina dormitor int bucatarie = 15; //initializare pin lumina bucatarie int hol = 16; //initializare pin lumina hol
Servo servo_Motor; //initializare servomotor usa principala Servo servo_Motor2; //initializare servomotor usa garaj
char* password = "111"; //setare parola de acces int position = 0; const byte ROWS = 4; const byte COLS = 4; 39
char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} };
byte rowPins[ROWS] = { 23, 25, 27, 29 }; //initializare linii keypad byte colPins[COLS] = { 22, 24,26, 28 }; //initializare coloane keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
const int analogPin = A0; //initializare pin analog pentru senzor foc const int BuzzerPin =8; //initializare pin buzzer const int prag = 900; //setare prag incendiu
int trigPin = 19; //initializare TRIG senzor ultrasonic int echoPin = 20; //initializare ECHO senzor ultrasonic int pos = 0; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Adresa MAC a modului Ethernet byte ip[] = { 192, 168, 100, 10 }; 192.168.100.1
// Adresa IP de unde putem accesa aplicatia
byte gateway[] = { 192, 168, 100, 1 }; byte subnet[] = { 255, 255, 255, 0 }; EthernetServer server(80); String readString;
void setup() { dht.begin(); Serial.begin(9600); while (!Serial) { 40
; } pinMode(trigPin, OUTPUT); //setare pin TRIG (ultrasonic) ca iesire pinMode(echoPin, INPUT); //setare pin ECHO (ultrasonic) ca intrare pinMode(dormitor, OUTPUT); //setare pin dormitor ca iesire pinMode(bucatarie, OUTPUT); //setare pin bucatarie ca iesire pinMode(hol, OUTPUT); //setare pin hol ca iesire pinMode(BuzzerPin, OUTPUT); //setare pin buzzer ca iesire pinMode(pirPin, INPUT); //setare pin PIR ca intrare digitalWrite(pirPin, LOW); //pinul PIR pe LOW
servo_Motor.attach(30); servo_Motor.write(5); servo_Motor2.attach(11); servo_Motor2.write(5); setLocked(true);
Ethernet.begin(mac, ip, gateway, subnet); //Pornim serverul web server.begin(); Serial.print("Serverul este la adresa: "); Serial.println(Ethernet.localIP()); //afisam adresa ip a serverului
//Calibrare senzor PIR for(int i = 0; i < calibrationTime; i++){ delay(1000); } delay(50); }
41
void loop() { //tastatura char key = keypad.getKey(); if (key == '*' || key == '#') { position = 0; setLocked(true); } if (key == password[position]) { position ++; } if (position == 3) { setLocked(false); } delay(100); if (key){ Serial.println(key); }
delay(1); //posta long duration, distance; digitalWrite(trigPin,HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration=pulseIn(echoPin, HIGH); distance =(duration/2)/29.1;
42
delay(10);
int h = dht.readHumidity(); //citim si salvam umiditatea in h int t = dht.readTemperature(); //citim si salvam temperatura in t EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); if (readString.length() < 100) { readString += c; } if (c == '\n') { client.println("HTTP/1.1 200 OK"); //Trimitem pagina WEB client.println("Content-Type: text/html"); client.println(); client.println(""); client.println(""); client.println("Sisteme Domotice"); client.print(""); //Setam refresh-ul la 2 secunde client.println(""); client.println(""); client.println(""); client.println(""); client.println(""); client.println(""); client.println("Sisteme domotice"); client.println(""); client.println(""); 43
client.println(""); client.println("
Dormitor
"); client.println(""); client.println("Pornit"); client.println("Oprit"); client.println(""); client.println(""); client.println(""); client.println(""); client.println("Hol
"); client.println(""); client.println("Pornit"); client.println("Incuie"); client.println(""); client.println(""); client.println(""); client.println(""); client.println(""); client.println("Garaj
"); client.println(""); client.println("Deschide"); client.println("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){