Specializarea Electronică Aplicată Lucrare de diplomă Sistem de securitate Coordonator științific Absolvent Conf.dr.ing. Tecla Goraș Istrati… [301996]
Universitatea Tehnică “Gheorghe Asachi” [anonimizat]: [anonimizat].dr.ing. [anonimizat], 2016
[anonimizat], [anonimizat], [anonimizat]- pare să fi devenit un fel de zeitate la care oamenii se raportează aproape fără excepție. [anonimizat], dependent de tehnologie în realizarea celor mai banale activități.
[anonimizat] “casă inteligentă” a devenit o [anonimizat], tentați de avantajele pe care le presupune un astfel de concept. Trăim într-o [anonimizat], societățile al căror domeniu de activitate presupune realizarea unor tehnologii care să materializeze conceptul mai sus amintit își vor adapta ofertele tuturor buzunarelor.
Lucrarea noastră a [anonimizat] a-[anonimizat] o [anonimizat] a găsi soluții adaptate nevoilor și posibilităților financiare de care dispui.
[anonimizat]“casă inteligentă” a [anonimizat]-fiction. A devenit, fără doar și poate, o [anonimizat]. De aceea este firesc ca industria echipamentelor de automatizări să investească în resursa umană capabilă să genereze tehnologia care să facă posibil controlul asupra locuinței tale.
Așadar, ce este “o casă inteligentă”? Putem vorbi despre acest concept dacă funcționalitatea instalațiilor dintr-o casă este controlată prin scenarii predefinite sau dacă toate subsistemele ([anonimizat], [anonimizat], irigații și degivrare etc.) [anonimizat]-o interfață grafică facilă și comodă proprietarului sau dacă sunt anticipate anumite nevoi ale ocupanților casei și sunt rezolvate automat.
Beneficiile pe care o astfel de casă le aduce sunt consistente. [anonimizat], de voința proprietarilor și de gradul de confort în utilizare pe care aceștia îl doresc. [anonimizat], este ușurința cu care proprietarii unei astfel de case vor controla permanent sistemul inteligent. [anonimizat]. Nu trebuie ignorant nici aspectul care privește securitatea ori eficacitatea energetică sporită. [anonimizat] o [anonimizat], vocii sau retinei. Desigur, nici varianta deloc costisitoare a unei parole nu este de neglijat. [anonimizat] a închide, [anonimizat] a seta o anumită valoare a temperaturii înainte de a ajunge acasa reprezintă avantaje deloc de neglijat.
[anonimizat]-zis “o casă inteligentă”, ci realizarea unei părți componente din ceea ce s-ar putea define astfel. Am vizat elementele care asigură accesul protejat într-o locuință. Lucrarea noastră își propune să ofere o perspectivă asupra modului în care senzorii pot fi folosiți pentru a crea, din acest punct de vedere, proprietarului unei locuințe obișnuite confortul pe care îl promite noțiunea de “casă inteligentă”. Ușa acționată de un servomotor este conectată la câțiva senzori care permit intrarea în proprietate pe baza unei parole. Mai mult, senzorii de mișcare vor detecta, în cazul în care aceesul este ilicit, neconfirmat de introducerea unei parole corecte pe tabloul exterior, prezența indezirabilă și vor da alarma.
Finalitatea acestui proiect vizează asigurarea locuinței la costuri pe care și le poate permite orice proprietar.
Capitolul 1
Introducere
Un sistem de alarmă este un circuit electric proiectat pentru a detecta orice fel de acces neautorizat într-o anumită incintă, atât pentru protecție împotriva hoților, a oricăror intruși, precum și pentru protejarea bunurilor personale. Sistemele de securitatea se folosesc în mod uzual atât în domeniul casnic, cât și în celelalte domenii de activitate, cum ar fi: domeniul comercial, industrial, militar, etc. Alte sisteme care pot fi considerate de protecție sunt sistemele de alarmă de la mașini ori sistemele de încarcerare a deținutilor din închisori. Se pot adăuga și sistemele de monitorizare a deținuților la domiciliu.
Sistemele de alarmă mai pot fi combinate atât cu un sistem de monitorizare video cu circuit închis, cât și cu unul cu circuit deschis. În cazul sistemelor cu circuit închis se face monitorizarea unei incinte cu ajutorul unor camere cu o rezoluție foarte bună. Toate informațiile care sunt înregistrate vor fi păstrate fie într-un mediu de stocare local, fie se poate face stocarea în Cloud. Avantajul unui sistem de monitorizare în buclă deschisă este că poate fi programat ca, în momentul în care se detectează un intrus, sa fie apelat sistemul unic de urgență 112. Există, de asemenea, și sisteme de alarmă a căror declanșare atrage după sine blocarea căilor de acces în incinta respectivă (sisteme folosite mai ales la muzee).
În general, un sistem de alarmă este compus din mai multe componente. În primul rând, există un panou de control al alarmei, ce reprezintă, metaforic vorbind, creierul sistemului, acesta citind valorile oferite de senzori, armând sau dezarmând sistemul. În funcție de complexitatea sistemului de supraveghere, panoul de control al alarmei poate fi format din unul sau mai multe calculatoare, sau, în cazul sistemelor mai simple, dintr-o singură placă ce este incorporată într-o carcasă de metal sau plastic. Cea de-a doua componentă a sistemului este reprezentată de către senzori. Senzorii pot detecta intrușii prin mai multe metode, cum ar fi: monitorizarea ușii sau a geamurilor, monitorizarea mișcărilor din cadrul unei incinte sau prin măsurarea vibrațiilor sau a altor factori perturbatori. O altă componentă o reprezintă sistemul de alarmare. Aceasta este reprezentată în mod general de sirene, lumini intermitente, sau alte sunete care au atât rolul de a speria posibilii intruși, dar și de a avertiza posibilii trecători. O altă componentă important este reprezentată de către tastatura care permite introducerea codului de acces. Aceasta are rolul de a crea o interfață între om și sistemul de supraveghere, dându-i posibilitatea de a arma sau dezarma sistemul.
În realizarea lucrării care vizează proiectarea și implementarea unui sistem de securitate am urmărit realizarea unui model principial, făcând o analiză comparativă a sistemelor deja existente pe piață. Obiectivul principal al lucrării este de a realiza acest sistem cu un cost minim de implementare practică, astfel încât sistemul să fie eficient din punct de vere funcțional, promovând astfel principiul DIY ( do it yourself).
1.1 Schema bloc a circuitului:
Figure 1: Schema bloc a proiectului
Funcționarea schemei bloc este în felul următorul.Proiectul se bazează pe ușurarea atât a accesului în locuinșe, cât și pe facilitățile pe care aceasta le are.Accesul în locuință se va face pe baza unui cod de acces, renunțându-se astfel la vechea cheie, care reprezintă un obiect ce se poate pierde foarte ușor, pe când un cod ce ne este familiar ar fi mult mai facil de ținut minte.La intrarea în locuință va exista o tastatură alfanumerică și un display, împreună cu două leduri.
Tastatura va conține o serie de butoane ce vor permite accesul utilizatorului la diferitele moduri de funcționare a sistemului ce vor fi tratate în capitolele următoare. După introducerea codului de acces în locuință, există un număr de senzori ultrasonici ce au rolul de a detecta prezența oricui în locuință. Senzorii au două moduri de funcționare, li anume: în momentul în care sistemul este dezarmat li se face accesul în locuinșă, senzorii ultrasonici care sunt montași individual în fiecare încăpere vor detecta prezenșa, determinând astfel aprinderea ledului din camera respectivă. În momentul în care sistemul este armat, iar un anumit senzor ultrasonic va detecta o o anumită prezență, se vor aprinde ledurile din toate camerele, iar aprinderea ledurilor va determina alimentarea buzzerului ce va avea rol de sistem de alarmă.
1.2 Schema electrică a circuitului
Schema electrică prezintă următoarea interconectare a componentelor cu unitatea de comandă și control. Tastatura este alcătuită dintr-un număr de 8 pini care se conectează la pinii digitali ai plăcii Arduino. Tastatura utilizează o combinație de 4 linii și 4 coloane pentru a furniza unității centrale de comandă și control poziția tastei care a fost apăsată. Sub fiecare tastă există un buton de contact care are un capăt conectat la un rând și celălalt capăt conectat la coloană, dând astfel poziția exactă a butonului. Display-ul conține un număr de 16 pini, dintre care doar 12 pini se conectează la Arduno. Ground se conectează la masă, Vcc se conectează la 5V, Vee-ul se utilizează pentru a oferi contrast pixelilor, pinul R/W este conectat la masă, pinii Led+ și Led- oferă contrastul pentru fundal, iar pinii de la DB4-DB7 se conectează la pinii digitali ai plăcii.
Senzorii conțin un număr de 4 pini: VCC,GND,Trig,Echo. Pinul VCC se conectează la alimentarea de 5V, Gnd-ul la masă, iar cei 2 pini Trigger si Echo se conectează la pinii digitali ai plăcii Arduino.
Buzzer-ul și Led-urile utilizează doar 2 pini GND si IN. Pinul de Gnd se conectează la masa, iar pinul IN se coneactează la o intrare digitală.
Servomotorul conține 3 pini: PWM, Vcc, Gnd.Pinul de PWM se conectează la un pin digital al plăcii care poate genera semanl PWM, Vcc-ul se conectează la 5V, iar Gnd-ul se conectează la masă.
Capitolul 2.Proiectarea și implementarea
2.1 Unitatea utilizată pentru comandă și control: Arduino Mega 2560
Pentru a putea implementa acest proiect am utilizat platforma Arduino. Arduino reprezintă o placă ce ușurează comunicarea între programator și platforma ce urmează a fi programată.Arduino își are originea în Italia, unde a fost inventată de către Massimo Banzi, care împreună cu ungrup de cercetători au reușit să creeze o placă ce stă la baza multor proiecte din ziua de astăzi. Elementele din componența plăcii prezentate în figura 3 constau într-un microcontroller integrat Atmega 2560, un număr de 54 pini digitali intrare/ieșire (din cei 54 pini, 15 pot fi folosiți pentru a genera semnal PWM), 16 intrări analogice, 4 UART (porturi serial hardware), un oscilator de cristal de 12 MHz, o conexiune USB, un conector de putere și un buton de resetare.
Figure 3: Arduino Mega
Specificațiile tehnice ale plăcii:
Schema electrică a platformei Arduino Mega (Figura 4):
Figure 4: Schemă electrică Arduino Mega
2.1.1 Microcontrollerul Mega 2560
Componenta principală a plăcii este reprezentată de către procesorul Atmega 2560. Acesta are în componența sa memorie RAM/ROM, EEPROM, o frecvență de tact (clock), precum și numeroase periferice.
Procesorul Atmega 2560 face parte din familia de microcontrollere AVR pe 8 biți.
Principalele caracteristici ale familiei Avr pe 8 biți sunt prezentate în continuare:
Toate procesoarele au memorie flash integrată, ce este folosită ca memorie de program. Pe lângă memoria flash, mai există memorie EEPROM sau ROM externă, folosită pentru a stoca codul programelor. Programarea microprocesorului se poate face în două moduri, și anume serie și paralel.
Acesta are un număr mare de regiștri ce permit stocarea unui număr cât mai mare de variabile în interiorul procesorului, și anume 32 de regiștri ce lucrează pe câte 8 de biți. Acest fapt oferă o viteză de procesare mult mai mare decât dacă variabilele ar fi stocate în memoria externă.
Microprocesorul are o arhitectură de tip Harvard,astfel că memoriile EEPROM și RAM sunt ultilizate ca fiind memorii de date pentru a stoca constante sau variabile.
Acesta are o frecvență de lucru ce poate varia intre 0-12 Mhz. Majoritatea instrucțiunilor sunt efectuate într-un singur ciclu de tact, acest lucru ducând la o performanță mult mai ridicată față de celelalte microprocesoare.
Resetarea circuitului se face simplu, dintr-un buton, fără a fi necesară întreruperea alimentării circuitului.
Acesta are un timer watchdog cu oscilator ce este folosit pentru a recupera informațiile în cazul în care apar erori de tip software.
Beneficiază de existența prealabilă a unui set mare de instrumente software ce permit dezvoltarea unui număr mare de aplicații.
Elementul care este specific arhitecturii de tip Harvard constă în faptul că microprocesoarele utilizează separat spațiile de memorie și magistralele pentru a accesa mai rapid codurile și datele. Deoarece memoria FLASH este integrată, acest lucru permite modificarea rapidă a softului și încărcarea programului, fără a fi necesară întreruperea alimentării. Pentru a veni în ajutorul programatorului/utilizatorului, limbajul de programarea este foarte apropiat de C. Memoria FLASH oferă o durată mare de viață microprocesorului și, pe lângă acest lucru, permite utilizarea acestuia într-un număr cât mai mare de aplicații.
Microcontroller-ul are un consum mic de energie, cu tensiuni de alimentare cuprinse intre 2-5V. Pentru a ajuta la economisirea energiei, acesta are mai multe moduri de funcționare.
Faptul că frecvența de tact poate fi controlată software, asigură o frecvență maxima cand este nevoie, iar în restul timpului acesta trece într-un mod de tip STAND BY, unde se va reduce drastic consumul de energie.
2.1.2 Alimentarea circuitului
Pini pentru alimentarea circuitului:
Pinul de 5V – utilizat pentru alimentarea microcontrolerului si a celorlalte piese de pe placă. Alimentarea se poate face in doua moduri: fie de la pinul VIN datorită faptului că placa are un regulator de tensiune integrat, fie prin portul USB.
Vin – folosit pentru alimentarea plăcii cu ajutorul unei surse de tensiune
Gnd – Reprezintă masa circuitului
3,3 V – Reprezintă tensiunea ce este generată in interiorul plăcii, curentul maxim prin placă fiind de 50 ma.
IOREF – pin ce furnizează tensiunea de alimentare a microcontrolerului. Acesta poate fi setat atat ca input, cât și ca output, iar setarea acestuia în modul HIGH va duce la o alimentare a constantă a circuitului la o tensiune de 5V.
Pe lângă pinii enumerați mai sus, mai există și pinii PWM (Pulse Width Modulation). Fata de pinii digitali obișnuiți, care au la ieșire 0 sau 5V, pinii PWM permit aplicarea unei tensiuni variabile. Pinii de pe placă care permit o tensiune variabilă sunt marcați cu ”~”, iar aceștia sunt:2,3,4,5,6,7,8,9,10,11,12,13.
Putem clasifica senzorii ce pot fi conectați la Arduino în două mari clase: cu logică și fără logică.
În cazul celor logice pot intra: LCD-urile, modulele Bluethooth,module inflaroșu, etc.
În categoria senzorilor fără logică se pot încadra butoanele, ledurile, potențiometrele, releele, senzorii de lumină, temperatură, umiditate, îndoire, fum, etc. Acești senzori sunt conectați cu două sau trei fire, și anume:
GND – Acesta reprezintă masa și va fi conectat cu portul GND de la Arduino.
VCC – Reprezintă alimentarea senzorului și va fi conectat fie la 3,3V fie la 5V, în funcție de valoarea necesară senzorului.
OUT/ANALOG OUT – Folosit doar pentru device-urile de intrare prin care se pot citi informații de la senzor. Acesta se conectează de obicei la pinii A0-A5.
DATA/DIGITAL – Folosit doar pentru device-urile de iesire, acesta poate fi conectat la pinii digitali de la 0-14. Pentru a activa device-ul conectat pe acești pini se va scrie HIGH, iar portul va genera o valoare de 5V pentru a activa acel device.
2.1.3 Comunicarea
Datorită faptului că, în ziua de astăzi circuitele au ajuns sa aibă dimensiuni din ce în ce mai mici, s-a recurs la integrarea acestora într-o capsulă, devenind astfel circuite integrate. Cea mai mare problemă a circuitelor integrate este comunicarea acestora cu exteriorul. Datorită faptului că cea mai mare parte a acestor circuite este ocupată de pini, pentru a putea comunica cu exteriorul s-au dezvoltat anumite protocoale de comunicare.
Comunicarea serială este o comunicare de tip digitală, însemnand că pe aceleași fir se vor transmite mai multi biți, ca în cazul unei rețele de comunicare. Acest tip de comunicare serială are loc între Arduino și calculator în momentul în care se dorește programarea acestuia. Rata de transfer sau viteza de transmitere a datelor diferă de la microcontroler la microcontroler și aceasta poate varia (9600, 19200, 57600, 115200 bps).
Un alt tip de comunicare serială este SoftwareSerial. În această comunicare nu sunt utilizați pinii TX și Rx ai microcontrolerului. Această comunicare utilizează o bibliotecă software care simulează comunicarea folosind oricare doi pini digitali ai plăcii. Acest tip de comunicare prezintă avantajul că se pot conecta mai multe dispozitive seriale la placă.
Însă cel mai simplu mod de comunicare folosit pentru circuitele integrate de tip digital este SPI (Serial Peripheral Interface). Aceasta este o comunicare de tipul master-slave, în care unitatea master este reprezentată de către Arduino, iar celelalte sunt slave.
Comunicarea SPI se face utilizând patru tipuri de semnale, acestea clasificându-se astfel:
SS (53) – (slave select) este activ pe 0 logic, în momentul în care valoarea din canal este LOW , dispozitivul slave comunică cu master-ul, iar când valoarea esteHIGH, atunci dispozitivul ignoră comunicarea SPI. În acest mod se pot conecta mult mai multe dispozitive pe același canal SPI, doar că fiecare dispozitiv trebuie să aiba atașat un canal Slave select. Pentru a realiza o transmisie avem nevoie de un front negativ pe SS, iar pentru a încheia o transmisie avem nevoie de un front pozitiv pe SS. Semnalul are rolul de a selecta circuitul Slave pentru comunicare.
MISO (50) – este semnalul master in, slave out. Slave are un registru de 8 sau mai multi biți egal cu numarul de biți din master. Pe fiecare front SCK se transmite informația din registrul intern al slave-ului și primul bit este MSB. MISO se conectează la LSB-ul masterului, fiind firul prin care dispozitivele slave trimit informații către master.
MOSI (51) – este semnalul master out, slave in. Masterul are în componentă un registru de 8 sau mai mulți biți. În funcție de cum funcționează SPI, se va trimite pe frontul SCK câte un bit din registrul intern, primul bit este MSB (Most significant bit). MOSI se conecteaza la LSB-ul (least significant bit) intern al slave-ului, fiind firul prin care dispozitivele master trimit informații către slave.
SCK (52) – este semnalul de tact al buss-ului SPI, fiind stabilite 2 semnale ce determină 4 moduri de funcționareale buss-ului. Primul semnal determină polaritatea ceasului (0 sau 1 logic), iar cel de-al doilea semnal determina faza ceasului (daca biții se transmit pe MISO sau MOSI pe frontul pozitiv sau negativ). Nu se pot transfera date fară interschimbare. Daca avem mai multe circuite slave, acestea putând fi selectate de același semnal, caz în care MOSI și MISO sunt identice, sau pot fi selectate de SS diferit, aici numărul de semnale trebuie să fie egal cu numarul de circuite de tip slave. Caz în care informația se interschimbă între circuitele slave și master în lanț.
Un alt mod de comunicare pe lângă cele enumerate îl reprezintă comunicarea I2C (Inter Integrated Circuits). Acesta poate permite conectarea unui număr mai mare de dispozitive la adrese diferite. În cazul acestei comunicari se folosește o bibliotecă prestabilită pentru acel dispozitiv, fiind necesară, pe lângă aceasta biblioteca, memorarea adreselor. Restul comunicării este realizată de acea bibliotecă. La placa utilizată, și anume Arduino Uno R3 pinii I2C, și anume SDA și SLC, sunt reprezentați in figura 4. Utilizarea unui dispozitiv I2C permite conectarea pinului SDA din cadrul plăcii Arduino cu pinul SDA al dispozitivului, același lucru fiind valabil si pentru pinul SLC. În funcție de dispozitivul care se va folosi, va mai fi necesară conectarea pinilor GND și Vcc (diferă de la placă la placă).
Figure 5: Pinii pentru cominucarea serială Arduino Mega
2.1.4 Programarea microcontrollerului
Pentru a putea programa microcontrollerul este necesară o parte software. Partea software este inclusă într-o interfață grafică de tip IDE, ce are la bază limbajul de programare Processing, iar programarea propriu-zisă se face pe baza limbajului de programare Arduino. Datorită platformelor ce sunt utilizate pentru arduino, PC-ul se transformă într-un dispozitiv de testare și proiectare a interfețelor. Odată conectată placa la calculator, se poate observa în secțiunea Device Manager portul pe care se poate face programare plăcii Arduino, și anume COM 3.
Pentru softul necesar progrămării și alte drivere, este necesar să intrăm pe site-ul producătorului, și anume: https://www.arduino.cc
2.2 Mediul pentru dezvoltarea părții Arduino
Mediul pentru a putea dezvolta orice aplicație ce utilizează Arduino este proiectat astfel încât după scrierea codului acesta să poată fi încărcat cu ușurință în microcontrollerul de pe placă. Interfața programului este de tip Java, iar codul de programare este de tip open source. Interfața poate fi utilizată atât pe sistemul de operare Window, cât și pe Linux.
Toate programele care se scriu au două moduri, și anume:
Setup – programul va rula o singură dată, fie atunci când este alimentată placa, fie când este apăsat butonul de reset. De obicei, în această secțiune se introduce codul de inițializare
Loop – bucla care rulează atâta timp cât este alimentată placa. În această buclă este introdus codul principal al programului.
Interfața în care se scrie codul de programare pentru Arduino este prezentată în urmatoarea figură:
Figure 6: Softul necesar programării microcontrolerului
După cum reiese din interfața grafică, avem butoanele ce se folosesc pentru verificarea codului și compilarea/salvarea acestuia după cum urmează:
Utilizat pentru verificarea corectitudinii codului scris
Utilizat pentru încărcarea codului pe platform Arduino
Utilizat pentru a crea o schiță nouă
Utilizat pentru a deschide un proiect salvat anterior
Utilizat pentru a salva progresul în schița curentă
Utilizat pentru comunicarea cu portul serial cu PC-ul
Acest program este utilizat pentru a scrie limbajul de programare necesar, în funcție de orice aplicație. Codul utilizat pentru programare este încărcat pas cu pas și instrucțiune cu instrucțiune pe placă. După ce se încarcă fiecare cod pe placă se creează un sketch cu ajutorul căruia se interactionează cu mediul.
2.3 Servomotorul
În general, în categoria de servomotoare sunt cuprinse motoarele electrice ce sunt făcute special pentru a fi utilizate în sistemele cu poziționare automata. Acestea sunt de putere mică, ajungând cel mult la ordinal câtorva [Kw].
Servomotoarele sunt motoare electrice de curent continuu sau de curent alternativ, ce prezintă o viteza de rotație reglabilă în ambelele sensuri, care are ca scop final deplasarea de-a lungul unei traiectorii într-un timp cât mai exact a unui anumit sistem.
Acestea prezintă un număr mare de avantaje cum ar fi:
O gamă largă pentru modificarea vitezei în ambele sensuri
Acesta lucrează stabil la o turație mică
Fiabilitate crescută
Caracteristică de reglare dinamică
Raport cuplu/inerție cât mai bun
Răspuns la semnal cât mai bun și mai rapid
Servomotoarele sunt utilizate într-o gamă cât mai largă de aplicații, cum ar fi: la acționarea roboților industriali, a numeroase periferice din calculatoare, a maținilor cu comandă numerică, etc. În mod normal, servomotoarele Rc sunt conenctate în circuite cu trei fire.
Figure 7: Pinii pentru conectarea servomotorului
Pe un fir se furnizează un semnal PWM pentru comanda rotorului, un fir se conectează la o tensiune pozitivă de aproximativ 5-6V, iar cel de-al treilea fir se conectează la masă.
În general, aceste motoare se pot roti la 180 °, iar viteza de rotație a acestora se măsoară în timp.
Figure 8: Valoarea minimă și maximă de rotație a servomotorului
Pentru acest proiect am utilizat un servomotor model SG90, care este prezentat în figura ce urmează:
Figure 9: Servomotor SG90
Specificații tehnice ale motorului:
2.4 Tastatura
Pentru implementarea codului de acces în locuință este necesar o tastatură. Pentru proiect am utilizat o tastatură alfanumerică de dimensiune 4×4. Este o tastatură ce asigură o interconectare foarte ușoară între programator și microcontroller.
Specificațiile tehnice ale tastaturii:
Schema electrică a tastaturii:
Figure 10: Schema electrică a tastaturii
Tastatura utilizează o combinație de patru rânduri și patru coloane pentru a furniza starea fiecărui buton microprocesorului. Sub fiecare tastă se află un buton ce asigură contactul în momentul în care aceasta este apăsată. Butonul are două contacte, unul din contacte fiind conetat la un rând, iar celălalt contact fiind conectat la coloană. Pentru ca microcontroller-ul să își dea seama ce tastă a fost apăsată, acesta trebuie să pună atât cele 4 coloane (și anume pinii 1-4) în 1 logic, iar după acesta pune fiecare rând individual în 0 logic, astfel reușind să își dea seama ce tastă a fost apăsată.
Figure 11: Dispunerea electrică a tastelor
2.5 LCD (Liquid Crystal Display) 16×2
LCD-ul este un dispozitiv pentru afișare litere, cifre, desene, imagini, acesta fiind constituit dintr-o matrice formată din celule lichide ce au tendința de a deveni opace sau să își schimbe culoarea sub influența unui curent. Acesta are o gamă largă de utilizare atât în domeniul electronic, cât și în cel medical și în multe altele (telefonie mobilă, fotocopiatoare, aparatură medicală, etc.). Pentru proiect am utilizat un display matricial de dimensiune (16×2), ceea ce înseamnă că acesta poate afișa 16 caractere pe linie, fiind disponibile 2 linii. Pe fiecare poziție din cele 16 acesta poate afișa orice caracter din codul ASCII (American Standard Code for Information Interchange) de la 0 la 225.
Figure 12: Lcd 16×02
Figure 13: Totalitatea caracterelor ce le afișează Lcd in cod Ascii
Acest LCD utilizează doi regiștri, unul pentru comandă și celălalt pentru date.
Registrul de comandă va stoca toate instrucțiunile de comandă transmise către LCD, de exemplu: inițializarea acestuia, controlul de afițare, poziționarea cursorului.
Registrul de date va stoca temporar datele ce urmează a fi afișate pe LCD. Toate datele vor fi codate în cod ASCII.
Figure 14: Modul de afișare a caracterelor
2.6 Buzzer-ul
Un buzzer sau un beeper reprezintă un dispozitiv ce are tendința de a emite un semnal audio. Buzzer-ul poate fi de mai multe tipuri: mecanic, electromecanic, piezoelectric. În funcție de dispozitiv, calitatea cu care este redat sunetul poate fi mai bună. Acesta are 2 pini ce se conectează la arduino, unul din pini la Gnd, iar celălalt la un pin digital.
Figure 15: Exemplu buzzer
Figure 16: Conectarea senzorului la Arduino
2.7 Senzorii cu ultrasunete
Pentru a realiza conceptul definit mai sus, o componentă fundamentală este reprezentată de senzori. Se impune, prin urmare, o abordare teoretică a acestei noțiuni.
La întrebarea “Ce este un senzor?” răspunsurile nu sunt, în literatura de specialitate, unitare. S-a creat astfel spațiu pentru pentru interpretări, ambiguități și confuzii. Mai ales că, până prin anii ’70, noțiunea de senzor nu apărea în multe dintre dicționare. Dezvoltarea fără precedent a microelectronicii a atras după sine și introducerea, în limbajul de specialitate, a acestei noțiuni, văduvită însă de semnificații foarte precise.
De aceea, o serie de autori preferă să folosească sintagma „senzori și traductoare”, în cadrul căreia, fie pun pe picior de egalitate senzorul și traductorul, utilizând, alternativ sau preferențial, unul dintre termeni, fie consideră că unul reprezintă o categorie ierarhică superioară, incluzându-l pe celălalt.
Etimologia cuvântului “senzor” este latinească, „sensus” însemnând „simț”. Primul domeniu de utilizare a termenului a fost cel al biologiei, domeniu în care denumea capacitățile organelor de simț ale oamenilor și ale organismelor vii în general de a culege informații din mediul înconjurător și de a le transmite creierului. În acest proces mărimile fizice, neelectrice, sunt convertite în semnale electrice, pe care creierul le poate prelua și interpreta și pe baza cărora coordonează acțiunile mușchilor. Deoarece termenul a fost “împrumutat” în domeniul tehnologiilor, mai exact pentru sistemele tehnice, modelul din biologie poate fi întâlnit, în mare măsură, la sistemele mecatronice.
Așa cum omul este capabil să culeagă informațiile din lumea în care trăiește prin intermediul diverselor simțuri: auz, văz, simț tactil, tot astfel sistemele mecatronice trebuie să fie capabile să identifice, în anumite condiții și limite, parametri ai mediului ambiant și să reacționeze la modificări ale acestora.
Păstrând analogiile cu lumea vie, dar realizând transferul semantic în sfera tehnologiilor, noțiunea de “senzor” va defini, dintr-o abordare elementară, “dispozitivul tehnic destinat înzestrării mașinilor cu simțuri”. Acesta are rolul de a determina una sau mai multe proprietăți, și, în funcție denivelul de integrare, poate avea funcții mai simple sau mai complexe.
Așadar, senzorul se definește, în literatura de specialitate, drept “un dispozitiv care detectează sau măsoară unelecondiții sau proprietăți și înregistrează, indică sau uneori răspunde la informația primită”. Prin urmare, senzorii au funcția de a converti un stimul într-un semnal măsurabil,cuprinzând atât traductorul, care transformă mărimea de intrare în semnal electric util, câtși circuite pentru adaptarea și conversia semnalelor, și, eventual, pentru prelucrarea șievaluarea informațiilor. Stimulii pot fi mecanici, termici, electromagnetici, acustici sauchimici la origine, în timp ce semnalul măsurabil este tipic de natură electrică, deși pot fifolosite semnale pneumatice, hidraulice, optice sau bioelectrici.
Senzorii și traductoarele sunt elemente esențiale ale sistemelor de automatizare adispozitivelor civile și industrial. Utilizarea acestora vizează un domeniu larg de principii fizice de operare. Domeniul cercetării utilizează senzorii și traductoarele în realizarea analizelor de laborator, aceștia fiind fiind incluși în lanțuri de măsurare complexe, care sunt conduse automat.
2.7.1 Clasificare
Evoluția extraordinară a tehnologiei face posibilă identificarea a peste 2000 de tipuri distincte de senzori, oferite, pe plan mondial, în peste 100000 de variante. Aceasta pentru că există senzori pentru mai mult de 100 de mărimi fizice, fără a lua în calcul senzorii pentru diverse substanțe chimice. Numărul acestora s-ar multiplica astfel de câteva ori.
Multitudinea criteriilor de clasificare a senzorilor este determinată de diversitatea principiilor de conversie a mărimilor fizice în mărimi electrice. La aceasta se adaugă varietatea soluțiilor de implementare a acestor principii.
Vom enumera mai jos câteva dintre aceste criterii de clasificare:
Senzorii se pot clasifica î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.
2. Î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ă;
– 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.
4. Dacă se are în vedere semnalul de ieșire din punctul de vedere al numărului de valoriposibile, 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.
5. Senzorii pot fi clasificați și în funcție de domeniul în care sunt utilizați:
– În industrie
– Robotică, fabricație flexibilă, controlul calității, activități de birou etc.
– În protecția mediului
– În transporturi
– În automatizarea clădirilor și locuințelor (domeniu pe care îl vizează și lucrarea noastră).
Alegerea senzorilor și a traductoarelor trebuie făcută ținând cont de proprietatea de monitorizat, de domeniul în care variază aceasta, de dimensiunile ce trebuie respectate sau de geometria sistemului, de condiții speciale de mediu sau de lucru, de tipul mărimiide ieșire și, nu în ultimul rând, de cost. Astfel pot fi identificați senzori de proximitate, traductoare de tip Hall, traductoarede deplasare și viteză, senzori și traductoare de forță, senzori de temperatură, senzori de umiditate, senzori pentru gaze, senzori de curent, switch-uri optice, senzori de presiune, cititoare de coduri de bare etc.
2.7.2 CARACTERISTICILE SENZORILOR
Caracteristicile principale ale senzorilor pot fi definite prin următorii parametri:
– domeniul de utilizare,
– rezoluția (sensibilitatea – cel mai mic increment măsurabil al stimulului),
– frecvența maximă a stimulului ce poate fi detectat (selectivitatea),
– acuratețea (eroarea de măsurare raportată, în procente, la întreaga scală),
– dimensiunile și masa senzorului,- temperatura de operare și condițiile de mediu, durata de viață (în ore sau numărde cicluri de operare),
– stabilitatea pe termen lung,
– costul.
Majoritatea acestor caracteristici sunt precizate în fișele de fabricație ale senzorilor. La aceste caracteristici vom face referire în rândurile următoare:
a) Sensibilitatea
Sensibilitatea unui senzor este definită ca panta curbei caracteristicii de ieșire sau, intrarea minimă a parametrilor fizici care va creea o variație a ieșirii.
La unii senzori, sensibilitatea este definită ca parametrul de intrare cerut pentru a produce o standardizare a schimbării ieșirii. La altele, ea este definită ca tensiunea de ieșire dată pentru schimbarea parametrului de intrare.
b) Eroarea de sensibilitate
Eroarea de sensibilitate este punctul de plecare pentru panta ideală a caracteristicii curbei.
c) Domeniul de acoperire
Domeniul de acoperire al senzorului este maximul si minimul valorilor aplicate parametrilor care pot fi măsurate.
De exemplu, un senzor de presiune dat poate avea domeniul de variatie intre –400 si +400 mm Hg. Alternativ, extrema pozitivă și negativă sunt de obicei inegale.
d) Domeniul dinamic
Domeniul dinamic reprezintă domeniul total al variației senzorului de la minim la maxim.
e) Precizia
Termenul de precizie se referă la gradul de reproducere al măsurătorii.
Cu alte cuvinte, dacă exact aceleași valori au fost măsurate de un anumit număr de ori, atunci un senzor ideal va scoate la ieșire aceași valoare de fiecare dată.
Senzorii reali scot însă la ieșire valori apropiate de valoarea reală. Să presupunem că o presiune de 150 mm Hg este aplicată unui senzor. Chiar dacă presiunea aplicată este constantă, valorile de la ieșirea senzorului variază considerabil. Apar astfel câteva probleme din punct de vedere al preciziei când valoarea adevărată si valoarea indicată de senzor nu sunt la o anumita distanță între ele.
f) Rezoluția
Rezoluția reprezintă detecția celui mai mic parametru de intrare care poate fi detectat din semnalul de ieșire. Rezoluția poate fi exprimată proporțional cu semnalul citit, fie in valori absolute.
g) Acuratețea
Acuratețea este dată de diferența dintre valoarea actuală si valoarea indicată la ieșirea senzorului. Din nou, acuratețea poate fi exprimată ca un procent sau în valori absolute.
h) Offset-ul
Eroarea de offset al unui traductor este definită ca valoarea ieșirii care exista atunci când ar trebui să fie zero, sau diferența dintre valoarea reală de la ieșirea traductorului și valoarea de la ieșire specificată de o serie de condiții particulare.
i) Liniaritatea
Liniaritatea este expresia cu care curba măsurată se diferențiază de curba ideală.
Neliniaritatea statică este uneori subiectul unor factori de mediu, inclusiv temperatura, vibrațiile, nivelul acustic de zgomot si umiditatea. Este important de știut în ce condiții această caracteristică este validă și se îndepărtează de acele condiții care nu furnizează modificări ale liniarității.
Liniaritate dinamică
Liniaritatea dinamică a unui senzor este o măsură a abilității sale de a urmării schimbăriile rapide ale parametrilor de intrare. Caracteristicile distorsiunii amplitudinii, caracteristicile distorsiunii fazei, si timpul de răspuns sunt importante pentru a determina liniaritatea dinamică.
Histerezis-ul
Un traductor trebuie să fie capabil să urmărească schimbările parametrilor de intrare indiferent din ce direcție este facută schimbarea, histerezis-ul fiind măsura a acestei proprietăți.
Timpul de răspuns
Senzorii nu-și schimbă starea de ieșire imediat când apare o schimbare a parametrului de intrare, de obicei, va trece în starea nouă abia după o anumită perioadă de timp.
Timpul de răspuns poate fi definit ca fiind timpul necesar ieșirii valorilor unui senzor de a trece din starea precedentă spre o valoare stabilită in limitele unui domeniu de toleranță a noii valori corecte. Acest concept este într-un fel diferit de termenul de timp constant (T) a sistemului. Acest termen poate fi definit într-o manieră similară cu cea a unui condesator care se încarcă printr-un rezistor si este de obicei mai mic decât timpul de răspuns.
2.7.3 Senzorul HC-SR04
Senzorul utilizează emisia de unde pentru a determina distanța până la un obiect. Acesta poate oferi detalii privind distanța unui obiect fără a intra în contact cu acesta. Senzorul poate detecta obiecte ce se află la o distanță minimă de 2 cm, iar distanța maximă la care poate detecta un obstacol este de 400cm. Acesta nu este influențat în detecția distanței de intensitatea luminii. Acesta este alimentat la o tensiune de 5V și are o frecvență de lucru de 40Khz.
Figure 17: Senzor ultrasonic HC-SR04
Specificații tehnice ale senzorului:
Modul de funcționare:
Când se dorește ca senzorul să măsoare distanța acesta va emite un semanl cu o perioadă de 10µs, după care acesta va emite 8 impulsuri de 40Khz. Senzorul va astepta ecoul ce va proveni de la obiectul pe care îl va întâlni. Dacă răspunsul va avea o valoare cuprinsă între 150µs-25ms, acesta va trimite un semanal către placă prin care va recunoaște că a observat un obstacol. Dacă valoare este de aproximativ 38 ms, în suprafața senzorului nu se află nici un obstacol.
Senzorul calculează distanța folosind urmatoarea relație:
L= C *T/2, unde:
L- reprezintă distanța dintre senzor si obiect
C- viteza de deplasare a sunetului în aer, și anume 334m/s
T- diferența de timp de când a fost emisă unda si când a fost recepționată
Figure 18: Modul de funcționare a senzorului
Modul de conectare al pinilor la Arduino: pinul de trigger și pinul de echo se conecteaza la pinii digitali ai plăcii arduni, pinul de vcc la 5V, iar Gnd la masă.
Figure 19: Conectarea senzorului la Arduino
Capitolul 3. Implementarea și funcționarea sistemului
Pentru implementarea proiectului s-a utilizat
Arduino mega 2560
Tastatură alfanumerică 4×4
LCD 16×02
Senzori ultrasonici HC-SR04
Servomotor SG90
Fire pentru conexiune și leduri
Regulator de tensiune 5V
Condensatori 10 µF
Baterii 9V
Breadboard
Realizarea conexiunii display-ului 16×02 cu Arduino Mega
Figure 20: Conectarea Lcd-ului
Conexiunea display-ului cu unitatea de comandă și control Arduino Mega se face prin intermediul urmatorilor pini:
Pinul 1 al lcd-ului, și anume Gnd se conectează la masă
Pinul 2, și anume Vcc se conectează la alimentarea de 5 v
Pinul 3, Vee este utilizat pentru a seta contrastul pixelilor;pe pinul vee se conectează un potențiometru cu ajutorul căruia se poate regla intesitatea
Pinul 4, RS se conectează la pinul digital numărul 12
Pinul 5, R/W se conectează la masă
Pinul 6, E se conectează la pinul digital numărul 11
Pinii DB0-DB3 rămân neconectați
Pinii DB4-DB7 se conectează la pinii digitali cu numărul: 2 3 4 5
Pinul 15, și anume Led+ se conectează la Vcc și anume 5 v
Pinul 16, și anume Led- se conectează la Gnd; pinul 15 împreună cu pinul 16 formează contrasul pentru fundalul lcd-ului
Exemplu inițializare display:
#include <LiquidCrystal.h> // librărie display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// se inițializează pinii Rs,E, și pinii DB4-DB7
void setup() {
lcd.begin(16, 2);// se setează numărul de coloane și numărul de rânduri
}
void loop() {
lcd.clear();// se șterge display-ul
lcd.setCursor(0,0);// se setează cursurul pe linia 0
lcd.print("IstratiAlexandru");// se printează mesajul dorit
lcd.setCursor(0, 1);// se setează display-ul pe linia1
lcd.print("Licenta 2016");// se printează mesajul dorit
delay(1000);// se introduce o intârziere de 1s în buclă pentru claritatea textului
}
Conectarea tastaturii 4×4 cu unitatea de control Arduino Mega
Tastatura alfanumerică utilizată pentru setarea codului ce va fi necesar pentru accesul în locuintă.Tastatura conține un număr de 8 fire în magistrală ce se vor conecta la 8 pini digitali ai plăcii Arduino.După conectarea tastaturii, verificarea individual a tastelor se face in aplicația specială utilizată la programarea microcontroller-ului
Figure 21: Conectarea tastaturii
Exemplu inițializare tastatură:
#include <Keypad.h>// librărie tastatură
const byte ROWS = 4; // se definește numărul de linii
const byte COLS = 4; // se definește numărul de coloane
// se defines simbolurile pe linie în ordinea lor pe tastatură
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},// prima linie
{'4','5','6','B'},// a doua linie
{'7','8','9','C'},// a treia linie
{'*','0','#','D'}// a patra linie
};
byte rowPins[COLS] = {2, 3, 4, 5}; // se definesc pinii pentru conexiunea liniilor la Arduino
byte colPins[ROWS] = {6, 7, 8, 9};// se definesc pinii pentru conexiunea coloanelor la Arduino
Keypad customKeypad = Keypad // se stochează variabila citită în variabila keypad
void setup(){
Serial.begin(9600);// se setează rata biților pe secundă
}
void loop(){
char customKey = customKeypad.getKey();// citește variabila de la tastatură și o stochează în variabila de tip char customKey
if (customKey){//
Serial.println(customKey);// se printează serialul dacă tasta e apăsată
}
}
Conectarea servomotorului cu unitatea de comandă și control Arduino Mega
Servomotorul are 3 pini ce ajută la acționarea acestuia: un pin de PWM, un pin de Vcc și un pin de Gnd. Pinul de Pwm se conectează la pinul 6 al plăcii, acesta fiind unul dintre pinii PWM ai plăcii.Pinul de Vcc se conectează la alimentarea de 5V a plăcii, iar Gnd-ul la masă.
Figure 22: Conectarea Servomotorului
Exemplu inițializare servomotor:
#include <Servo.h> // librărie servomotor
Servo myservo; // se creează o variabilă pentru control servo
int pos = 0; // se creează o variabilă pentru a stoca poziția servomotorului
void setup() {
myservo.attach(9); // atașează variabila myservo la comezile de pe pinul 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // merge de la 0̊ la 180 ̊ câte 1̊ odată
myservo.write(pos); // comandă servo să meargă în poziția variabilei pos
delay(15); // durează 15ms ca servo să ajungă în aceea poziție
}
for (pos = 180; pos >= 0; pos -= 1) { // merge de la 180̊ la 0̊
myservo.write(pos); // servo se mută în valoarea lui pos
delay(15); // durează 15ms ca servo să ajungă în aceea poziție
}
}
Conectarea senzorilor ultrasonici cu unitatea de comandă și control Arduino Mega
Senzorii conțin un număr de 4 pini ce sunt necesari pentru utilizarea acestora: Vcc, Trig,Echo, Gnd.Pinul de Vcc se conectează la alimentarea de 5V a plăcii, cei 2 pini și anume Trig și Echo se conectează la pinii digitali 23,24 ai plăcii iar pinul de Gnd la masă.Aceștia funcționează pe următorul principiu: senzorul emite o undă , iar în momentul în care această undă întâlnește un obstacol se va reflecta, senzorul măsurând diferența de timp din momentul în care a fost emis până în momentul în care a fost recepționat.
Figure 23: Conectarea senzorului ultrasonic
Exemplu inițializare sensor:
#include <NewPing.h>// se utilizează exemplu din biblioteca NewPing
#define TRIGGER_PIN 10 // se definește pinul trigger de la senzor în slotul 10
#define ECHO_PIN 9 // se definește pinul echo de la senzor în slotul 9
#define MAX_DISTANCE 200 // se definește distanța maximă ca fiind 200cm
void setup() {
Serial.begin(115200); // se definește rata biților pe secundă
}
void loop() {
delay(50); // se asigură o întârziere pentru a permite funcționarea senzorului
Serial.print("Ping: ");// se afișează mesajul Ping:
Serial.print(sonar.ping_cm()); // se afișează valoarea pingului , 0 dacă depășește valoarea maximă
Serial.println("cm");}// Se afișează cm după valoarea pingului
3.6 Conectarea ledurilor si a buzzer-ului la unitatea de comandă și control Arduino Mega
Figure 24: Conectarea ledurilor și a buzzer-ului
int buzzerPin= 8;// se inițializează pinul 8 pentru buzzer
int ledPin= 9;// se inițializează pinul 9 pentru led
void setup() {
pinMode(buzzerPin,OUTPUT);// se setează pinul ca fiind Output
pinMode(ledPin,OUTPUT);// se setează pinul ca fiind Output
}
void loop() {
digitalWrite(buzzerPin,HIGH);// se trece buzzer-ul în 1 logic pentru activare
digitalWrite(ledPin,HIGH);// se trece led-ul în 1 logic pentru activare
delay(2000);// ciclul durează 2s
}
Proiectarea și implementarea PCB-ului( Printed Circuit Board)
Un PCB reprezintă un cablaj imprimat pe o placă ce are rolul de a ușura interconectarea mai multor componente electronice.Placa pe care se imprimă circuitul este formată dintr-un material izolator, ce are deasupra o folie subțire de cupru, ambele formând o placă de o grosime aproximativă de 1,6mm.Circuitul se poate transfer pe placă prin mai multe metode:chimice, căldură, etc.
Deoarece în schema bloc a proiectului sunt foarte multe componente ce necesită conectarea la microcontroller-ul din cadrul plăcii Arduino, am decis să creez o placă cu circuitul imprimat pentru a putea atașa Arduino pe acesta și a ușura conexiunile din interiorul casei.În cele ce urmează sunt prezentate etapele necesare proiectării și implementării unui PCB.
În prima etapa se proiectează traseul circuitelor in programul Eagle împreună cu dimensiunile traseurilor pentru a asigura o conducție cât mai bună a curentului, curent ce ajunge la valoarea maximă de 1 A.
Figure 25: Proiectarea traseielor in programul Eagle
Se curăță placa pe care urmează să se imprime circuitul cu un burete ușor abraziv, pentru a oferi o suprafață de contact cât mai curată, după care se curăță suprafața cu alchool.
Figure 26: Placa pe care se vor imprima traseele
Se imprimă traseul ce a fost proiectat în Eagle pe carton lucios după care se lipește traseul pe placa ce a fost curățată cu ajutorul fierului de călcat.
Figure 27: Lipirea traseelor printate pe placă
Se elimină excesul de foaie ce rămâne ce rămâne lipit de placă după care se corodează placa pentru a îndepărta resturile de tuș.
Figure 28: Îndepărtarea resturilor după lipirea traseelor
Se găurește placa în locul în care vin lipite componentele, după care se lipesc componentele cu fludor.
Figure 29: Lipirea componentelor pe placă
Astfel rezultând PCB-ul ce va avea rolul de a înlocui breadbordul ce a fost utilizat în momentul în care s-au conectat blocurile proiectului.
Figure 30: PCB-ul final
Modul de funcționarea a proiectului
Figure 31: Proiect final
Tastatura utilizează mai multe butoane ce permit accesarea mai multor funcții din cadrul programului cum ar fi:
Tasta * este utilizat pentru resetarea pinului în cazul în care se greșește o cifră a codului de acces.
Tasta # are rolul de a cofirma codul de acces, acesta fiind utilizat mereu pentru a intra în celelalte moduri de funcționare.
Tasta A este utilizată pentru a introduce codul de acces;aceasta se utilizează mereu când se dorește intrarea în celealte funcții ale programului.
Tasta B este utilizată, după ce inițial a fost apăsată tasta A pentru introducerea codului, pentru dezarmarea sistemului.
Tasta C este utilizată, după ce inițial a fost apăsată tasta A pentru introducerea codului, pentru armarea sistemului.
Tasta D este utilizată ca un sistem de diagnoza a casei,aceasta afișând starea sistemului, fie ca acesta este armat sau dezarmat.
Inițial sistemul este armat.În momentul în care se dorește să se facă accesul în locuință se apasă butonul ”A” de pe tastatură. După apăsarea butonului se va afișa un mesaj pe LCD pentru a introduce codul ce acces în locuință.După introducerea codului de acees se va apăsa tasta # pentru a confirma codul introdus.Codul corect împreună cu tasta # duce la acționarea servomotorului ce va glisa ușa în poziția deschis.În momentul în care codul de acces este corect și se face accesul în locuință, există senzori ultrasonici pentru detectarea prezenței în fiecare cameră.În modul dezarmat a sistemului, dacă senzorii ultrasonici detectează orice prezentă, acest lucru va determina aprinderea unui led ce ar avea echivalentul aprinderii sistemului de iluminat din camera respectivă.Acest lucru va fi valabil pentru fiecare cameră individual.În momentul în care se dorește părăsirea locuinței, se va apăsa tasta A pentru a introduce codul de siguranță.După introducerea codului de siguranță, se va apăsa tasta C, care va duce la armarea sistemului.După armarea sistemului, dacă senzorii ultrasonici vor detecta prezența în oricare incintă a casei, aceștia vor acționa sistemul de siguranță al casei ce va duce la aprinderea tuturor ledurilor și la declanșarea unui buzzer ce va emite un anumit ton de alarmă.
Capitolul 4. Concluzii și îmbunătățiri
În colcuzie, pot spune că principalele scopuri ale lucrării au fost atinse, pe măsură ce am trecut prin toate etapele de dezvoltare. Din punctul de vedere al componentelor, consider că acestea au fost alese bine, deoarece au oferit un punct de plecare foarte bun, având în vederea importanța lor în proiectarea practică a temei de licență.
Interconectarea elementelor mi-a oferit o vizune concretă cu privire la legătura strânsă dintre partea hardware și partea software. Funcționarea sistemului este dependetă atât de corectitudinea legăturilor dintre blocurile componente care alcătuiesc sistemul, cât și de programarea corectă a acestora, fiind necesară o corelație perfectă între cele două părți.
Rezultatele care au fost obținute pe parcursul proiectării și implementării, cât și rezultatele finale conturează exact faptul că sistemul de securitatea corespunde cerințelor pe care ar trebui să le îndeplinească un asemenea sistem.
Principalele avantaje ale sistemului realizat sunt:
Accesibilitatea procurării elementele necesare implementării
Atât conectarea software a acestora, cât și conectarea hardware nu necesită foarte multă experiență în domeniu
Costul redus de implementare în comparație cu un alt sistem ce se află pe piață
Faptul că acesta se poate implementa în orice încăpere, necesitând doar câteva modificări
Principalele dezavantaje ale sistemului sunt:
Utilizarea unui singur microcontroler în sistem reprezintă un dezavantaj deoarece odată ce acesta intră într-o buclă de programare, execută doar programul din acea buclă, restul sistemelor fiind nefuncționale pe moment. Spre exemplu, în momentul introducerii codului de acces, senzorii ultrasonici încetează să mai detecteze mișcarea. Acest lucru poate fi remediat prin utilizarea a 2 microcontrolere, unul fiind folosit pentru programarea tastaturii și a lcd-ului, iar celălalt pentru restul componentelor.
Întârzierea introdusă în sistem de senzorii ultrasonici reprezintă alt dezavantaj. De la emiterea undei și până la recepția acesteia, acest lucru fiind necesar pentru detectarea distanței, există o întârziere. Această întârziere raportată la un număr mai mare de senzori duce la o întârziere mai mare în sistem. Acest lucru poate fi remediat prin utilizarea unor senzori cu un timp de reacție mai bun.
Un alt dezavantaj este reprezentat de posibilitatea unor contacte imperfecte, acest lucru putând fi rezolvat prin lipirea elementelor cu o stație profesională de lipit.
4.1 Rezumat
În primul capitol se explică modul de funcționare a unui sistem de securitatea, elementele ce intră în componența sistemului precum și modurile de implementare a acestuia și domeniile în care poate fi utilizat. De asemenea se prezintă schema bloc a circuitului împreună cu schema electric pentru o mai bună înțelegere a capitolelor ce urmează.
În cel de-al doilea capitol se prezintă componentele și subcomponentele ce alcătuiesc schema bloc a circuitului, cum ar fi: unitatea de comadă și control Arduino, tastatura, display-ul, senzorii ultrasonici, servomotorul, buzzer-ul precum și ledurile.Se explică structura fiecărui componente împreună cu schema electrică a acestora, precum și modul de interconectare a acestora. În continuare este prezentat programul în care s-a realizat partea software a proiectului, împreaună cu interfața ce este necesară pentru programare.
În cel de-al treilea capitol este prezentat modul în care s-a realizat codarea pentru fiecare element în parte precum și modul în care se conectează elementele cu arduino .După conectarea și programarea componentelor s-a recurs la realizarea unui PCB, pentru a ușura conexiunile dintre fiecare component și unitatea de comandă și control.După proiectarea PCB-ului este prezentat proiectul final împreună cu modul de funcționare a sistemului ce va funcționa ca sistem de securitate.
În capitolul al patrulea se prezintă concluzia după finalizarea proiectului, împreună cu principalele avantaje și dezavantaje ale sistemului. În finalul capitolului este formulat un scurt rezumat.
Bibliografie:
Vornicu Liliana , Senzori și traductoare, Editura Pim, 2013
Jonathan Oxer și Hugh Blemings, Practical Arduino, 2012
Robofun.ro, Arduino pentru începători, 2015
Platformă de dezvoltare https://www.arduino.cc/en/Main/ArduinoBoardMega2560
http://www.hmangas.com/Electronica/Datasheets/Arduino/LIBROS%20Y%20MANUALES/%5BArduino.Internals(2011)%5D.Dale.Wheat.pdf
https://www.arduino.cc/en/Main/ArduinoBoardMega2560
https://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf
https://www.arduino.cc/en/Hacking/PinMapping2560
https://www.arduino.cc/en/Tutorial/LibraryExamples
Microcontroler http://electronicamicro.blogspot.ro/p/microcontrolere-avr-atmel-pe-8-biti.html
Servomotor https://www.scribd.com/doc/93204860/SERVOMOTOARE-ELECTRICE
https://www.teguna.ro/wiki/Conectori_Arduino
https://www.arduino.cc/en/Tutorial/Sweep
Tastatură https://www.parallax.com/sites/default/files/downloads/27899-4×4-Matrix-Membrane-Keypad-v1.2.pdf
http://playground.arduino.cc/Code/Keypad
Display http://www.engineersgarage.com/electronic-components/16×2-lcd-module-datasheet
https://www.sparkfun.com/datasheets/LCD/ADM1602K-NSW-FBS-3.3v.pdf
Sensor ultrasonic https://en.wikipedia.org/wiki/Ultrasonic_transducer
http://documents.tips/documents/senzori-55993c5ac767a.html
http://nicolaegheorghesenzori.blogspot.ro/2012/07/caracteristici-functionale-ale.html
Librării https://www.arduino.cc
Anexă
//includerea librariilor folosite in program, in functie de dispozitivele foloste
#include "Keypad.h" //librarie tastatura
#include <LiquidCrystal.h> //librarie LCD
#include<Servo.h>//librarie servomotor
#include<NewPing.h>//librarie senzor ultrasonic
//definirea pinilor senzorilor ultrasonici
#define trig1 43
#define trig2 5
#define trig3 2
#define echo1 41
#define echo2 4
#define echo3 3
//definirea distantei maxime la care emite senzorul ultrasonic
#define d_maxim 200
//initializarea senzorilor ultrasonici
//NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
NewPing senzor1(trig1, echo1, d_maxim);
NewPing senzor2(trig2, echo2, d_maxim);
NewPing senzor3(trig3, echo3, d_maxim);
//initializarea LCD-ului si definirea pinilor de control al acestuia
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
//valori de tip intreg folosite pentru stocarea valorilor citite se senzorii ultasonici
int x1 = 20;
int x2 = 20;
int x3 = 30;
//definirea pinilor ce controleaza led-urile sistemului
int led_c1 = 48;
int led_c2 = 52;
int led_c3 = 50;
int led_inchis = 46;
int led_deschis = 44;
//definirea pinului buzzerului pentru alarma sistemului
int buzzer = 51;
//atasarea servomotorului la program
Servo door;
//initializarea a doua valori de tip intreg, ce reprezinta pozitia servomotorului atunci cand este inchis/deschis
int pos_deschis=120;
int pos_inchis=0;
//variabile de stare a sistemului
boolean verificare = 0; //daca se initializeara modul de introducere
boolean ok = false; //false->PIN gresit //true->PIN corect
boolean sistem = 1; //variabila de stare a alarmei 0-OFF, 1-ON //sistemul initial ON
//initializarea tastaturii
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
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
}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {
31, 33, 35, 37
}; //connect to the column pinouts of the keypad
//definirea unei variabile ce va fi folosita pentru a citi valori de la tastatura
Keypad cheie = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
//valoare de tip char folosita pentru stocarea valorilor citite de la tastatura
char key;
//definirea a doua siruri de catactere, primul reprezinta pinul prestabilit a sistemului, al doilea sir reprezinta un sir tampon ce va fi sters dupa fiecare introducere
char PIN[6] = {
'1', '2', '3', '4', '5', '6'
}; // our secret (!) number
char attempt[6] = {
'0', '0', '0', '0', '0', '0'
}; // used for comparison
//contor pentru a parcurge valorile sirurilor difinite mai sus
int z = 0;
void setup()
{
//starea modului de actionare a fiecarui pin
pinMode(led_inchis, OUTPUT);
pinMode(led_deschis, OUTPUT);
pinMode(led_c1, OUTPUT);
pinMode(led_c2, OUTPUT);
pinMode(led_c3, OUTPUT);
pinMode(buzzer, OUTPUT);
door.attach(7);
Serial.begin(9600); //deschiderea portului serial de date, folosit in principal pentru depanare sistemului
lcd.begin(16, 2);
lcd.print("Booting up");
delay(1000);
lcd.clear();
lcd.print("System ready");
digitalWrite(led_inchis, HIGH);
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
}
//functie accesata in cazul armarii sistemului
void arm_system()
{
door.write(0);
digitalWrite(led_inchis, HIGH);
digitalWrite(led_deschis, LOW);
digitalWrite(led_c1, LOW);
digitalWrite(led_c2, LOW);
digitalWrite(led_c3, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem armed");
delay(2500);
lcd.setCursor(0, 1);
lcd.print("Have a nice day");
delay(2500);
Serial.println("SISTEM ARMAT");
}
//functie accesata in cazul dezarmarii sistemului
void disarm_system()
{
door.write(pos_deschis);
delay(30);
digitalWrite(led_inchis, LOW);
digitalWrite(led_deschis, HIGH);
digitalWrite(led_c1, LOW);
digitalWrite(led_c2, LOW);
digitalWrite(led_c3, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem disarmed");
delay(2500);
lcd.setCursor(0, 1);
lcd.print("Welcome");
delay(2500);
Serial.println("SISTEM DISARMED");
}
void loop()
{
x1 = senzor1.ping_cm();
x2 = senzor2.ping_cm();
x3 = senzor3.ping_cm();
key = cheie.getKey();
lcd.clear();
lcd.print("IstratiAlexandru");
lcd.setCursor(0, 1);
lcd.print("Smart house");
// resetarea parolei dupa nr secunde
if (((millis() / 1000) % 60 == 0) && ok == true)
{
Serial.println("Parola resetata");
ok = !ok;
}
if ((sistem == 1) && (x1 <= 8 || x2 <= 8 || x3 <= 16 ))
{
digitalWrite(led_c1, HIGH);
digitalWrite(led_c2, HIGH);
digitalWrite(led_c3, HIGH);
digitalWrite(buzzer, HIGH);
delay(10);
}
else
{
digitalWrite(led_c1, LOW);
digitalWrite(led_c2, LOW);
digitalWrite(led_c3, LOW);
digitalWrite(buzzer, LOW);
delay(10);
}
if (sistem == 0 && x1 <= 10 )
{
digitalWrite(led_c1, HIGH);
delay(10);
}
else
{
digitalWrite(led_c1, LOW);
}
if (sistem == 0 && x2 <= 10 )
{
digitalWrite(led_c2, HIGH);
delay(10);
}
else
{
digitalWrite(led_c2, LOW);
}
if (sistem == 0 && x3 <= 20 )
{
digitalWrite(led_c3, HIGH);
delay(10);
}
else
{
digitalWrite(led_c3, LOW);
}
//BUCLA PRINCIPALA
if (key != NO_KEY)
{
{
//un fel de for
if (key == 'A')
{
verificare = !verificare;
while (verificare != 0)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Insert PIN");
char pin_test = cheie.getKey();
if (pin_test != NO_KEY)
{
attempt[z] = pin_test;
z++;
Serial.println(pin_test);
switch (pin_test) //face resetare dupa ce apesi * sau # … in caz ca ti-ai dat seama ca ai introdus ceva aiurea
{
case '*': //RESET in caz de greseala in introducere
lcd.setCursor(0, 1);
lcd.print("RESET");
delay(1000);
z = 0;
break;
case '#': //ENTER + reset vector
z = 0;
delay(10);// for extra debounce
//functie de verificare PIN
int correct = 0;
//int i;
for (int i = 0; i < 6; i++)
{
if (attempt[i] == PIN[i])
{
correct++;
}
}
if (correct == 5)
{
ok = !ok;
Serial.println("PIN CORECT");
lcd.setCursor(0, 1);
lcd.print("PIN OK");
delay(2000);
}
else
{
Serial.println("PIN GRESIT");
lcd.setCursor(0, 1);
lcd.print("PIN Gresit");
delay(2000);
}
//resetare string tampon dupa ce a fost corectat !!
for (int zz = 0; zz < 6; zz++)
{
attempt[zz] = '0';
}
//operatii de facut dupa verificare
verificare = !verificare; //iesi din bucla while
break;
}
}
delay(100);
}
}
//cazul pentru B >>> buton pentru dezarmare sistem
if (key == 'B') //daca apesi pe butonul de deblocare
{
if (sistem == 1) //mergi mai departe doar daca sistemul e deja armat, daca nu afiseaza mesaj de eroare
{
if (ok == true) //daca pinul e corect
{
disarm_system();
ok = !ok;
sistem = ! sistem;
}
else //daca pinul nu e corect anunta
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("No PIN");
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Press A to input");
}
}
else //daca sistemul nu e deja armat anunta
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Already OFF");
delay(1000);
}
}
//cazul C >>> buton pentru armare sistem
if (key == 'C') //daca apesi pe butonul de armare
{
if (sistem == 0) //mergi mai departe doar daca sistemul e deja off
{
if (ok == true) //daca pinul e corect
{
arm_system();
ok = !ok;
sistem = !sistem;
}
else //daca pinul nu e corect anunta
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("No PIN");
delay(1000);
lcd.setCursor(0, 1);
lcd.print("Press A to input");
}
}
else //daca sistemul nu e deja armat anunta
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Already ON");
delay(1000);
}
}
//cazul D, verificarea starii sistemului
if (key == 'D')
{
lcd.clear();
if ( sistem == 1 )
{
lcd.setCursor(0, 0);
lcd.print("Sistem armat");
delay(1500);
if (ok == false)
{
lcd.setCursor(0, 1);
lcd.print("NO PIN");
delay(1500);
}
else
{
lcd.setCursor(0, 1);
lcd.print("PIN Status: OK");
delay(1500);
}
}
else
{
lcd.setCursor(0, 0);
lcd.print("Sistem dezarmat");
delay(1500);
if (ok == false)
{
lcd.setCursor(0, 1);
lcd.print("NO PIN");
delay(1500);
}
else
{
lcd.setCursor(0, 1);
lcd.print("PIN Status: OK");
delay(1500);
} }
}
delay(50);
}
delay(50);
}
delay(250);}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Specializarea Electronică Aplicată Lucrare de diplomă Sistem de securitate Coordonator științific Absolvent Conf.dr.ing. Tecla Goraș Istrati… [301996] (ID: 301996)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
