Sisteme de Inchidere Automata a Ferestrelor Existente pe Piata

Cuprins

Capitolul 1 INTRODUCERE

1.1 Prezentarea temei

1.2 Importanța temei

1.3 Prezentarea problemelor

1.4 Prezentarea soluției

1.5 Prezentarea capitolelor

Capitolul 2 PREZENTARE COMPONENTE ȘI OBIECTIVE DORITE

2.1 Obiectivele și rezultatele dorite

2.2 Specificații

Capitolul 3 STUDIUL PIEȚEI

3.1 Sisteme de închidere automatizată a ferestrelor existente pe piață

3.1.1 Control Panel CRM

3.1.2 Butonul KP

3.1.3 Telecomanda RC

3.1.4 Butonul bidirecțional

3.1.5 Termostatul TH

3.1.6 Senzorul pluviometric RS

3.1.7 Detectorul de vânt WS

Capitolul 4 ANALIZĂ ȘI PROIECTARE

4.1 Analiza pieței

4.1.1 Microntroler Arduino Mega 2560

4.1.2 Motor Pas cu Pas

4.1.3 QuadStepper Motor Driver

4.1.5 Senzor de umiditate Brick

4.1.6 Senzor de lumina Brick

4.1.7 Led Brick

4.1.8 Shield LCD 16×2

4.1.9 Kit Senzor Fum și Gaze inflamabile MQ2

4.1.10 Sursă stabilizată de curent continuu

4.1.11 Buzzer pentru avertizare sonoră

4.2 Proiectare

Capitolul 5 IMPLEMENTAREA ȘI CODUL SURSĂ

5.1 Prezentare

5.2 Implementarea

5.2.1 setup()

5.2.2 loop()

5.2.3 pinMode()

5.2.4 digitalWrite()

5.2.5 digitalRead()

5.2.6 HIGH

5.2.7 LOW

5.2.8 tone()

5.2.9 noTone()

5.2.10 Serial

5.2.11 analogRead()

5.2.12 delay()

5.2.13 Funcționalitate și condiții

5.3 Codul sursă

5.3.1 Încărcarea resurselor

5.3.2 Alarmă gaz

5.3.3 Starea ferestrelor

5.3.4 Umiditatea

5.3.5 Temperatura

5.3.6 Luminozitatea

5.3.7 Nivelul Gazului

5.3.8 Implementare setup()

5.3.9 Implementare loop()

Capitolul 6 TESTARE ȘI VALIDARE

Capitolul 7 CONCLUZII

Capitolul 8 BIBLIOGRAFIE

Capitolul 9 ACRONIME

Capitolul 10 ANEXĂ

Capitolul 1 Introducere

1.1 Prezentarea temei

Fiecare dintre noi ne lovim în viața de zi cu zi de utilizarea ferestrelor. Acestea au devenit extrem de utilizate și importante in viața fiecăruia, ne ajută la împrospătarea aerului în fiecare locuință, instituție, hală de productie. Aerisirea este foarte importantă, ne ajută să trăim într-un mediu mai sănătos fără excesul mare de microbi acumulat dar nu in ultimul rând pentru a respira un aer proaspăt dându-ne o energie cât se poate de pozitivă.

Prin deschiderea ferestrelor se produce împrospatarea aerului iar prin acest proces evităm formarea condensului, prevenirea apariției mucegaiului toate acestea apărând mai des în sezonul rece al anului. Deseori găsim ferestre la un nivel destul de înalt în diferite locații: fabrici, depozite; Acestea fiind accesate destul de greu.

Figura 1.1 Exemplu de fereastră tradițională

Sistemele automatizate de închidere le găsim in special la uși, la firmele importante care doresc un mod de primire mai impozant al clientilor dar nu numai, au început sa se răspandească aceste sisteme și la ferestre prin diferite modalițăți de control. O metodă des întalnită fiind controlul la distanta prin telecomanda cu infra roșu sau Bluetooth.

Obiectivele cele mai importante ale unui sistem de închidere-deschidere a ferestrelor sunt : timpul de reacție al sistemului declansat de valorile senzorilor si funcționarea corectă a sistemului în functie de ordinea comenzilor în funcție de fiecare caz în parte.

În acest proiect este prezentat un sistem automatizat de închidere-deschidere a ferestrelor în funcție de valorile senzorilor de umiditate, temperatură, lumină dar nu în ultimul rând în funcție de valorile posibile de detectare a fumului și gazelor.

1.2 Importanța temei

În viața de zi cu zi ne întâlnim cu diferite tipuri de ferestre, cele culisante sunt mai ușor de automatizat iar senzorii care influențează poziția geamului ne simplifică activitațile zilnice și nu mai necesită o atenție a acestuia în funcție de condițiile meteo.

Unele dimineți sunt destul de agitate iar prin automatizarea geamurilor suntem scutiți de deschiderea ferestrelor pentru a împrospăta aerul din camera si pentru a ne revigora. Senzorii folosiți în această lucrare :„ sensor de lumină, umiditate, temperatură„, ne ajuta sa formăm condiții optime în locuință, iar senzorul de gaze și fum previne apariția neplăcerilor în cazul unor defecțiuni la rețeaua de gaze sau a unui incendiu.

1.3 Prezentarea problemelor

Principala problemă la aceasta soluție de automatizare a geamurilor este modul de ansablare și fabricație de către firmele specializate care produc ramele ferestrelor.

Costul componentelor ar mai fi o altă problemă deoarece pentru un rezultat corect al modului în care este programat acest sistem avem nevoie de senzori de foarte bună calitate și foarte bine optimizati care implică costuri mai ridicate.

O ultimă problemă care ar afecta realizarea proiectului ar fi tipul de motor folosit, acesta fiind de tipuri diferite iar bineînteles costul este aferent fiecărui produs.

1.4 Prezentarea soluției

Problemele specificate au și o solutie, aceasta fiind automatizarea ferestrelor unei clădiri pentru o ambianță mai placută în acel spațiu dar și condiții normale de temperatura, umiditate.

Un beneficiu important în acest proiect este pastrarea unei temperaturi optime într-o încapere și o siguranța la aparitia unei defecțiuni la rețeaua de gaze sau neplăcerile unui incediu.

Acest sistem se poate controla cu ajutorul unui microcontroler sau printr-un PLC cu care menținem buna funtionare a sistemului automatizat.

1.5 Prezentarea capitolelor

Capitolul 1 : În primul capitol ne este prezentat scopul acestei lucrări. Explicarea importanței sistemului automatizat folosit, problemele întampinate dar și motivarea lor și soluțiile existente.

Capitolul 2 : Prezentarea componentelor folosite pentru realizarea proiectului dar și obiectivele propuse și rezultatele dorite.

Capitolul 3 : Studiul pieței existente ți soluți asemanatoare deja existente pe piață .

Capitolul 4 : Cuprinde etapele proiectarii, analiza în detaliu a componentelor folosite și schemele electrice.

Capitolul 5 : Etapele de implementare a sistemului, modul de asamblare a componentelor si codul sursă folosit.

Capitolul 6 : Prezentarea unor teste pentru a verifica funcționalitatea optimă a sistemului automatizat.

Capitolul 7 : Concluziile proiectului.

Capitolul 8 : Bibliografie.

Capitolul 2 Prezentare componente și obiective dorite

2.1 Obiectivele și rezultatele dorite

Scopul acestui proiect este de a automatiza ferestrele unei locuințe încât să se deschidă si să se închidă în funcție de valorile indicate de noi prin intermediul unor senzori ținând cont și de condițiile meteo.

Sistemul trebuie să reactioneze în funcție de temperatura optimă setata de catre utilizator. În cazul în care umiditatea din exterior este mai mare ferestrele automatizate vor fi închise sau se vor închide indiferent de valorile indicate de ceilalți senzori cu exceptia kitului de gaze și fum folosit.

2.2 Specificații

În scopul realizării acestui proiect au fost utilizate următoarele componente:

Arduino Mega 2560

Două Motoare Pas cu Pas

Senzor de umiditate Brick

Senzor de lumină Brick

Senzor de temperatură Brick

Kit senzor fum și gaze inflamabile MQ2

Quad stepper Motor driver

Led roșu Brick

Led verde Brick

Shield LCD 16×2

Sursa stabilizată de curent continuu

Capitolul 3 Studiul pieței

3.1 Sisteme de închidere automatizată a ferestrelor existente pe piață

În Capitolul 3 al acestei lucrări voi prezenta o firmă care se ocupă cu automatizarea ferestrelor, modul în care implementează acest sistem dar și componentele folosite.

O firmă specializată în automatizari este Siatec existent din 1993 pe piață

Figura 3 Emblema firmei Siatec

3.1.1 Control Panel CRM

Unitatea de control CRM este o unitate meteorologică care are capacitatea de a controla patru actuatoare, de a asigura închiderea sau deschiderea ferestrelor în funcție de condițiile meteorologice în funcție de valoarea indicată de un termostat.

Sursa de alimentare folosita 230 Vac

Ieșirile de alimentare 24 Vdc

Ieșirea (sarcina maximă) 4 de 1 A

Actuatorii conectați au următoarele detalii tehnice:

Conexiunea electrică este de 2 fire

Modul de operare se face prin inversarea polarității

Sarcina maximă folosită este între 4 și 7 A

Figura 3.1 Unitate de control și sistem meteorologic de detecție

3.1.2 Butonul KP

Acest dispozitiv ne oferă posibilitatea de a comanda și selecta separat, concomitent sau în grupuri cele 4 actuatoare folosite.

Figura 3.2 Butonul KP

3.1.3 Telecomanda RC

Butonul KP este prevăzut cu un dispozitiv IR, acesta îi premite utilizatorului să dețină accesul la butonul KP.

Figura 3.3 Telecomanda RC

3.1.4 Butonul bidirecțional

Ne oferă posibilitatea de a acționa toate actuatoarele în același timp prin intermediul unui buton bidirecțional dotat cu un arc de prevenire. Comenzile oferite cele de închidere respectiv deschidere sunt menținute 3 minute pentru terminarea acțiunii actuatoarelor care au un parcurs mai lung pentru finalizarea unei acțiuni.

Figura 3.4 Butonul bidirecțional

Unitatea de control este adaptată pentru conectarea celor trei senzori care controlează evenimentele vremi.

3.1.5 Termostatul TH

În prezența termostatului ne este prioritar controlul manual in cazul în care valoarea temperaturii este mai mare decât valoarea stabilită iar ferestrele se vor închide dacă valoarea este mai mică iar în cazul unei valori mai mari ferestrele se vor deschide. Întrerupătorul cu care este dotat se va folosi în cazul în care vrem să anulăm acțiunile termostatului.

Figura 3.5 Termostatul TH

3.1.6 Senzorul pluviometric RS

Acest senzor trimite un semnal pentru închiderea automatizată a ferestrelor în caz de precipitații, semnal care este indicat de un LED aflat în partea frontală a panoului de control. Se pot dezactiva funcțiile acestuia prin butonul de on/off aflat în partea frontala a panoului. După ce emiterea semnalului către senzor s-a produs, nu mai este diponibilă controlarea manuală a actuatoarelor fără dezactivarea senzorului pe o perioada mai scurtă de 8 minute de la finalizarea acțiunii. Senzorul este adecvat pentru ferestrele cu balamale în partea superioară dar și pentru luminatoare.

Figura 3.6 Senzorul pluviometric RS

3.1.7 Detectorul de vânt WS

În funcție de viteza vântului acesta produce un semnal variabil, asemanarea dintre acest detector și senzorul pluviometric este acțiunea asupra unității de control.

Prin folosirea unui selector rotativ cu 10 poziții cu ajutorul anemometrului se poate selecta viteza vântului la care unitatea de control va comanda închiderea automată a ferestrelor.

Selectarea poziției 0 duce la dezactivarea anemometrului iar pozițiile următoare de la 1 la 9 ne arată intensitatea vântului, corespunzatoare scalei Beauford.

Figura 3.7 Detectorul de vânt WS

Accesoriile folosite pentru actuatoarele electrice prezentate sunt:

unitatea meteorologică a actuatoarelor de 230 V c.a

sursa de alimentare pentru actuatoarele de 24 V

buton de închidere deschidere cu suport

Unitatea meteorologică folosită este cuprinsă din două componente, un element de execuție cu senzor de vânt și un senzor pluviometric care acționează în mod automat care acționează automat în funcție de vântul puternic sau ploaia existentă. Are un consum de curent mai mic de 5 A, poate comanda cu ușurință unul sau mai multe actuatoare de 130 V c.a.

Figura 3.8 Setul care formează unitatea meteorologică

Sursele de alimentare folosite pentru actuatoarele de 24 V sunt de patru tipuri :

Sursa de alimentare de 3 A are un curent nominal și dispune de patru ieșiri, este o sursă de alimentare de 24 V c.c , alimentarea acesteia se face de ltrele cu balamale în partea superioară dar și pentru luminatoare.

Figura 3.6 Senzorul pluviometric RS

3.1.7 Detectorul de vânt WS

În funcție de viteza vântului acesta produce un semnal variabil, asemanarea dintre acest detector și senzorul pluviometric este acțiunea asupra unității de control.

Prin folosirea unui selector rotativ cu 10 poziții cu ajutorul anemometrului se poate selecta viteza vântului la care unitatea de control va comanda închiderea automată a ferestrelor.

Selectarea poziției 0 duce la dezactivarea anemometrului iar pozițiile următoare de la 1 la 9 ne arată intensitatea vântului, corespunzatoare scalei Beauford.

Figura 3.7 Detectorul de vânt WS

Accesoriile folosite pentru actuatoarele electrice prezentate sunt:

unitatea meteorologică a actuatoarelor de 230 V c.a

sursa de alimentare pentru actuatoarele de 24 V

buton de închidere deschidere cu suport

Unitatea meteorologică folosită este cuprinsă din două componente, un element de execuție cu senzor de vânt și un senzor pluviometric care acționează în mod automat care acționează automat în funcție de vântul puternic sau ploaia existentă. Are un consum de curent mai mic de 5 A, poate comanda cu ușurință unul sau mai multe actuatoare de 130 V c.a.

Figura 3.8 Setul care formează unitatea meteorologică

Sursele de alimentare folosite pentru actuatoarele de 24 V sunt de patru tipuri :

Sursa de alimentare de 3 A are un curent nominal și dispune de patru ieșiri, este o sursă de alimentare de 24 V c.c , alimentarea acesteia se face de la 230 V c.a iar dimensiunea ei este de 100x70x188 mm.

Următoarea sursă folosită este de 6.3 A aceasta fiind o sursă de comutație, alimentarea se face de la 24 V c.c, dispune de 2 ieșiri stabilizate de până la 3A curent nominal. Alimentarea se face în mod normal de la 85 264 V c.a, iar dimensiunile acesteia sunt de 199x99x50.

Sursa de alimentare în comutație de 8,4A fiind o sursă de alimentare de 24V c.c. cu 2 ieșiri stabilizate de până la 8,4 A curent nominal . Alimentarea aceseia se face la 85 264 V c.a. Dimensiuni 199x99x50 mm .

Ultima sursă folosită este de 20A fiind tot o sursă de comutație, sursa de alimentare folosită este de 24V c.c. deține 3 ieșiri stabilizate de 20 A curent nominal.

Alimentarea acesteia se face la 88 264 V c.a. dimensiunile fiind de 185x120x92 mm .

Această sursă este dotată cu telecomanda pentru pornire și oprire .

Figura 3.9 Sursă de alimentare de 3 A

Figura 3.10 Sursă de alimentare de 6,3 A

Figura 3.11 Sursele de alimetare de 8.4 A respectiv 20 A

Butonul de închidere-deschidere cu suport este de 4 tipuri :

Receptorul radio folosit cu buton închidere deschidere controleaza actuatoarele de 230 V c.a. are o conexiune formată din 3 fire cu un consum maxim de curent de pâna la 8 A fiind dotat cu un întrerupator intergat si cu un buton radio pentru receptor avand dispozitiv pentru montarea pe pereți permitând controlul actuatoarelelor de catre receptor la o distanță de până la 100 m în spațiu deschis, acesta are si un transmițător radio pentru receptor. Asemanator cu butonul de închis/deschis acesta poate controla până la 3 receptoare radio.

Butonul dublu cu închidere-deschidere este folosit pentru toate actuatoarele cu 3 fire.

Butonul bipolar cu închidere-deschidere este folosit pentru toate tipurile de actuatoare care funcționează pe baza schimbării polaritații.

Butonul de închidere deschidere cu transformator încorporat la 230 V c.a/ 24 V c.c alimentează și comandă actuatoarele de 24 V c.c cu consum de curent de până la 1 A, având o legatură electrica pe 2 fire și funcționează pe baza inversării polarității.

Figura 3.12 Receptor radio cu buton de închidere deschidere, buton radio pentru receptor,transmitator radio pentru receptor

Figura 3.13 Buton dublu închidere deschidere înecat

Figura 3.14 Buton dublu cu transformator încorporat

Sistemele electrice pentru evacuarea fumului a căldurii permit controlul ferestrelor pentru evacuarea căldurii cât si a fumului existent în cazul produceri unui incendiu permițând și ventilarea constantă a încaperii.

Figura 3.15 Sistem electric de evacuarea fumului și al căldurii

Unitatea de control EFC 4A prezentă în imaginea de mai jos(Figura 3.15) cu ajutorul acuatoarelor de 24 V c.c permite inchiderea si deschiderea ferestrelor, aceasta unitate are in dotare si baterii. Aceasta unitate permite si controlul manual simultan cu ajutorul unor butoane. Evacuarea fumului se face prin deschiderea ferestrei activate de un detector de fum sau a unui buton de urgentă.

Actuatoarele sunt alimentate direct de la sursa de curent, acumulatoarele fiind utilizate doar în scopul unor urgențe.

Defecțiunile posibile sunt semnalizate prin leduri.

Alimentarea se face la 230 V c.a, tensiunea de ieșire fiind de 24 V c.c cu schimbarea polaritații, curentul nominal este de 4 A, acumulatorii sau bateriile folosite sunt de 12 V.

Figura 3.16 Unitatea de comanda EFC de 4A

Unitatea de comanda EFC 10-20A

Un alt model de unitate de comanda este EFC 10-20A, are controlul deschiderii sau închiderii ferestrelor cu ajutorul actuatoarelor de 24 V c.c. Închiderea sau deschiderea se poate realiza prin urmatoarele moduri:

de urgență comandate de senzorul de fum sau de butonul de urgență.

conditiile atmosferice , comandate de senzori ca : senzorul de vânt , de ploaie sau termostatul.

Unitatea de comanda permite de asemenea controlul manual al ferestrelor din anumite butoane . În cele 2 versiuni de putere disponibila ,unitatea de comanda poate comanda direct un mare numar de actuatoare .

Actuatoarele sunt alimentate si prin intermediul bateriilor care sunt conectate iîn permanenta la un sistem de iîncarcare. Defectiunea unitatii de control , alarma sau defectiunea sursei de alimentare a unitatii de comanda EFC sunt semnalizate prin ledurile de pe butonul de urgenta.

Alimentarea este de 230 V c.a, tensiunea de iesire fiind de 24 V c.c. cu schimbarea polaritatii.

Curentul absorbit de acuatoarele în funcțiune este de 4 A.

Figura 3.17 Unitatea de comanda EFC 10-20A împreună cu acuatoarele conectate și alte componente

Buton de urgență are funcție de resetare, pentru acționarea acestuia geamul trebuie spart. Ledul verde ne semnalează existența semnalului de control, iar cel roșu indică semnalul de alarmă. Aprinderea ledului galben semnalează defecțiunea sursei de alimentare.

Figura 3.18 Buton de urgență

Elementul acustic de alarmă este defapt o sirena exterioară de 24V. Materialul din care este concepută este oțel inoxidabil, iar capacul fiind fabricat din policarbonat,având o intensitate sonoră de 115 decibeli. Suportă o sursă de alimentare de 24V-2A.

Dimensiunile elementului acustic sunt 236x280x99 mm.

Figura 3.19 Element acustic pentru alarmă

Senzorul de fum optic detectează fumul prin difuzia fascicolului IR bazat pe efectul Tyndall.

Evidențierea semnalului de alarmă se face prin aprinderea ledului roșu. Acesta trebuie curățat într-un mod frecvent, mai ales în mediile industriale.

Figura 3.20 Senzor de fum optic.

Capitolul 4 ANALIZĂ ȘI PROIECTARE

4.1 Analiza pieței

Piața din ziua de azi a componentelor electronice a crescut considerabil în compararație cu piața componentelor de acum 20 de ani. Din acest motiv multe companii au dezvoltat sisteme și componente care pot ajuta omul în viața de zi cu zi. O compania care a pus in aplicare aceste sisteme a fost mentionată mai sus. Nu doar companiile au fost cele care au pus în aplicare tehnologia ci și oameni din jurul nostru care au avut inițiativa să integreze tehnologia in viețile lor deoarece avem la îndemână orice sursă de implementare si de structurare a componentelor electronice.

Pe lângă aceste companii s-au dezvoltat companii care pun la dispozitie microcontrolere si platforme bazate pe microcontrolere mai accesibile pentru un buget mai redus. Unele din acestea sunt:

Arduino

Raspberry Pi

Parallax Basic Stamp

Phidgets

Pentru acest proiect am ales să folosesc componentele oferite de cei de la Arduino deoarece acestea oferă sursele de manipulare și de integrare într-un sistem prietenos, ingenios și rapid.

4.1.1 Microntroler Arduino Mega 2560

Figura 4.1 Arduino Mega 2560

Este un microcontroler controlează toate componentele care sunt conectate la el printr-un procesor integrat. Are 54 de pini digitali atât de intrare cât și de iesire din care 15 se pot folosi ca și ieșiri de tip PWM, 16 ieșiri analogice, 4 porturi seriale, un oscilator electronic de 16 MHz, un conector USB, un conector de încărcare, un conector ICSP și un buton de resetare. Toate acestea împreună susțin funcționalitatea microcontrolerului. (Figura 4.3 Maparea pinilor Arduino Mega )

Arduino Mega poate fi alimentat printr-o conexiune USB sau printr-o sursă de alimentare externă, sursa de alimentare fiind aleasă automatic.

Microcontrolerul se poate alimenta la un curent intre 6V – 20V. Este recomandat ca aceasta să fie alimentată la o sursă aflată la limitele indicate deoarece pinul de 5V poate reda mai puțin de 5V la o alimentare mai mica iar dacă microcontrolerul ajunge sa folosească mai mult de 12V, regulatorul de voltaj poate să se supraîncălzească și să afecteze funcționarea plăcii.

Pinii folosiți pentru alimentare sunt:

VIN – pin de alimentare pentru încărcarea externă

5V – acest pin redă 5V regulat din regulatorul plăcii

3V3 – reprezintă o alimentare de 3.3 V generată de regulatorul plăcii. Curentul maxim generat este de 50mA

GND – pini de împamântare

IOREF – pinul de pe placă care oferă un voltaj de referință cu care microcontrolerul funcționează. Un microcontroler configurat corect poate citii prin acest pin voltajul și poate să selecteze sursa de alimentare corectă sau sa activeze translatorii pe ieșiri pentru a funcționa cu 5V sau 3,3 V.

Datorită faptului că microcontrolerul se bazează pe ATmega2560 configurația acestuia este următoarea:

256 KB de memorie flash pentru stocarea codului din care 8KB sunt folosiți pentru interpretarea codului pentru compilare.

8 KB SRAM

4 KB EEPROM

Fiecare pin funcționează la o alimentare de 5V și oferă sau primește un maxim de 40mA.

Fiecare este dotat cu un resistor de 20-50 kOhms în plus unii dintre pini au funcții speciale

Mai există și alți pini pe microcontroleri precum:

AREF: referința de voltaj folosită pentru ieșirile analogice. Se folosește cu funcția analogReference()

Reset: resetează microcontrolerul prin setarea pinilor pe valoarea LOW.

Microcontrolerul oferă un număr de căi care facilitează comunicarea cu un calculator, un alt microcontroler Arduino sau orice alt tip de microcontroler. ATmega2560 oferă 4 componente UART pentru comunicarea TTL de 5V.

Implementarea unui microcontroler Arduino permite transmiterea textuală la și de la un microcontroler printr-un monitor serial simplu.

Microcontrolerul are încorporată o component electronică pasivă care protejează USB calculatorului de fluctuații de tensiune, dacă mai mult de 500 mA trec prin portul USB conexiunea va fi blocată până la terminarea fluctuațiilor de curent.

Figura 4.2 Schema logica Arduino Mega 2560

Figura 4.3 Maparea pinilor Arduino Mega

4.1.2 Motor Pas cu Pas

Figura 4.4 Schema Motorului pas cu pas

Un motor pas cu pas este un dispozitiv electromecanic care convertește impulsurile electrice în mișcări mecanice discrete. Axul unui motor pas cu pas se rotește în incrementări pas cu pas când sunt aplicate pulsuri de comenzi electrice în secvențe adecvate. Secvențele pulsurilor aplicate sunt într-o relație directă cu directia rotațiilor axului motorului.

Una dintre cele mai importante avantaje ale unui motor pas cu pas este stabilitatea de a-l controla într-un mod exact într-un sistem repetabil, iar poziția este cunoscută din simplul fapt că se ține cont de numărul de pași introduși.

Exista trei tipuri de motoare de bază:

Motoare cu reluctanță comutată (variable-reluctance VR). Acest tip de motor este alcătuit dintr-un rotor cu mai multi dinți.

Motoare cu magnet permanent (permanent magnet PM). Acest tip de motoare nu sunt costisitoare și rotorul nu mai este dințat.

Hybrid (HB)- acest tip de motor este mult mai scump dar oferă o performanță mai bună în ceea ce privește cuplajul viteza și pașii. Acesta combină tot ce e mai bun din PM și VR

Avantaje:

Are un răspuns excelent în pornire, oprire și inversarea pașilor.

Unghiul de rotație al motorului este proportional cu pulsul transmis acestuia.

Poziționare precisă și repetabilitate a mișcării.

Este posibilă obținerea unei rotații la o viteză foarte mică și sincronă cu o încărcătura direct cuplată cu axul.

Dezavantaje:

Pot avea loc vibrații dacă motorul nu este controlat corect.

Nu este ușor de a-l manipula la viteze foarte mari.

4.1.3 QuadStepper Motor Driver

Driverul unui motor QuadStepper ne dă posibilitatea de a controla simultan până la patru motoare pas cu pas folosind pinii de ieșire și de intrare.

Figura 4.5 QuadStepper Motor Driver

Driverul are capacitatea de a controla motoarele în următoarele moduri:

Un pas.

O jumatate de pas .

O pătrime de pas.

O optime de pas.

O șaisprezecime de pas.

Bus header permite controlarea celor patru motoare cu numai 6 pini de intrare ieșire controlând pinul de activare pentru fiecare motor, chiar dacă fiecare motor va fi activat în parte și nu concomitent. Fiecare driver de motor are capacitatea de a transmite de 35V și 2Amps.

Alimentarea folosită trebuie să fie sub 30V și trebuie să permită aprovizionarea cu sufient curent motoarelor controlate. Driverul va funcționa numai cu motoare pas cu pas.

Figura 4.6 Schema electrica a QuadStepperului

4.1.4 Senzor de temperatură Brick

Este un circuit integrat precis care poate simți temperaturi între -40º C și +125º C folosind o singură alimentare pozitivă. Ieșirea de voltaj este proportional liniară cu temperatura Celsius și are un offset DC de +500 mV. Acest offset oferă citirea valorilor negative fără nevoia unei alimentări negative. Nu necesită orice calibrare externă pentru a oferi acuratețe de +/- 3º C la temperatura camerei.

Ieșirea liniară, + 500mV offset și calibrarea din fabrică simplifică circuitul necesar într-un singur mediu de alimentare unde citirea temperaturilor negative este necesară.

Funcționează de la 4,5V pănă la 10V, este potrivit pentru aplicațiile remote.

Are aplicații in următoarele domenii:

Automobile

Calculatoare

Imprimante

Managementul bateriilor

Instrumente medicale portabile

Evaluarea maximului absolut indică limitele peste care senzorul poate fi avariat

Acest senzor se poate folosi foarte ușor în același fel ca și alt circuit integrat de temperature.

Poate fi lipit sau cimentat pe o suprafață iar temperature lui va fi până în 0,2º C față de temperature suprafeței. Aceasta presupune că temperatura aerului ambiental este aproape aceeași cu temperatura suprafeței. Dacă temperatura ar fi mult mai mare sau mai mică decât cea a suprafeței, temperatura reală a senzorului ar fi la o temperatură intermediară între temperatura suprafeței și temperatura aerului.

Pentru a asigura o bună conductivitate termică spatele senzorului este atașat direct de pinul GND.

Mai jos sunt prezentate curbele generate de senzor în diferite condiții, după cum urmează:

Figura 4.7 Constanța timpului termic Figura 4.8 Legătura dintre rezistența

termică cu aerul

Figura 4.9 Răspunsul termic într-o baie de ulei Figura 4.10 Răspunsul termic într-un aer

agitată cu dispersarea căldurii constant cu dispersarea căldurii

Figura 4.11 Senzorul de temperatură Brick

4.1.5 Senzor de umiditate Brick

Acesta sesizează nivelul de umiditate al mediului înconjurător, poate interpreta pe portul analogic valori intre 300 și 900. 300 însemnând un mediu foarte uscat iar 900 indică un mediu cu vapori de apa.

Senzorul nu este calibrat deoarece acesta nu oferă direct o valoare a umidității relative în procente, în consecință acesta trebuie echilibrat după datele următoare.

Umiditatea joacă un rol important în confortul personal dar și în caliatea controlului materialelor, a mașinilor si a multor aletele.

Figura 4.12 Senzor de umiditate

Caracteristici:

Figura 4.13 Curbă caracteristică pentru umiditate relativă

4.1.6 Senzor de lumina Brick

Acesta înregistrează gradul de luminozitate din mediul înconjurător, a cărui valoare variază linear între 0 și 1024, care reprezintă valorile numierice direct proporționale cu intensitatea luminii. Neavând o unitate de măsură indică faptul că acest senzor nu este echilibrat, iar valorile indicate nu sunt exacte.

Figura 4.14 Senzor de lumină

Caracteristi:

Figura 4.15 Collector Current vs. Collector-Emitter Voltage

Figura 4.16 Collector Dark Current vs. Ambient Temperature

Figura 4.17 Collector Current vs. Irradiance

Figura 4.18 Relative Collector Current vs. Ambient Temperature

4.1.7 Led Brick

Ledurile sunt foarte comune ele fiind utilizate într-o mulțime de forme și mărimi, cel mai probabil ele au 2 picioare (pini) unul pozitiv unul negative. Deși sunt greu de manipulate au firele foarte lungi și pot fi conectate la pini. Un fir reprezintă anodul și celălalt catodul din care unul va intra în pinul de voltaj negativ iar celălalt în pinul de voltaj pozitiv.

Curentul merge într-o singură direcție de la anod la catod.

Figura 4.19 Schemă LED

Culoarea emisă de led are legatură cu materialul din care este făcut ledul, dimensiunile fiind de 3 mm, 5 mm și 10 mm. Cele mai folosite întrebuințări ale ledurilor sunt iluminarea și indicarea. Pentru indicare sunt folosite ledurile difuze pentru că pot fi observate din orice unghi.

Pentru iluminare sunt folosite ledurile clare pentru că lumina este directă și puternică

Figura 4.20 Dimensiunile și culorile ledurilor

4.1.8 Shield LCD 16×2

LCD-urile le folosim în viața de zi cu zi pentru a afișa mesaje informaționale necesare, tocmai de aceea la fel folosim LCD-urile pentru a ne informa de starea unei componente dintr-un sistem mai complex cum ar fi o casă inteligentă. Au o interfață paralelă ceea ce înseamnă că microcontrolerul trebuie să manipuleze mai mulți pini în același timp pentru a controla mesajele afișate.

Figura 4.21 Shield LCD 16×2

Conexiunea de la LCD la Arduino se face prin următorii pini:

Pentru a afișa mesajele fără a depune prea mult efort LCD este integrat pe Shield care conține toate componentele necesare pentru conectarea la microcontrolerul Arduino.

Pinii necesari pentru conectare sunt deja atașați de Shield.

Figura 4.22 Schemă cablaj Adruino – Shield LCD

4.1.9 Kit Senzor Fum și Gaze inflamabile MQ2

Senzorul MQ2 este o combinație între un senzor de fum și un senzor de gaze inflamabile, poate fi alimentat usor la o sursă de curent continuu de 5 V. Declanșarea acestuia se face foarte repede datorită receptivitații sensibile la orice sursă de fum sau gaz din mediul înconjurator.

Figura 4.23 Kit senzor de fum și gaze inflamabile

Componentele necesare pentru asamblarea acestui dispozitiv sunt următoarele:

Resistor de 10 K

Placă PCB

Potențiometru de 10 K

Conector în unghi cu 3 pini

Senzor MQ2

Figura 4.24 Componentele necesare pentru realizarea kitului

Figura 4.25 Structura și configurare MQ2

4.1.10 Sursă stabilizată de curent continuu

Acest alimentator poate oferi o tensiune de încărcare reglabilă, care poate fi de la 3 V până la 12 V. Tensiunea recomandată este de 7,5 V sau 9 V. Mufa alimentatorului este special făcută pentru a se potrivi cu orice mufă rotundă mamă de pe microcontrolerelor Arduino.

Figura 4.26 Alimentator extern Arduino

4.1.11 Buzzer pentru avertizare sonoră

Acesta este un traductor de sunet piezoelectric nu are un generator încorporat, folosește un curent de 5 mA, tensiunea de lucru este de la 1 la 30 V a.c iar nivelul acustic este de 80 dB. Diametrul acestuia fiind de 23mm iar înălțimea de 5mm.

Figura 4.27 Buzzer pentru avertizare sonoră

4.2 Proiectare

Pentru realizarea proiectului am avut nevoie de un cadru destul de solid și real din punct de vedere al designului, dar importanța cea mai mare a avut-o rezistența machetei pentru a asigura o functionalitate fără dificultăți a proiectului.

Figura 4.28 Macheta proiectului

Pentru realizarea machetei am folosit placaj MDF cu furnir de stejar, grosimea materialului fiind de 0,4mm.

Dimensiunile machetei:

Lungimea este de 34,5 cm

Latimea este de 26,6 cm

Macheta este compartimentată în mai multe încăperi cu dimensiunile de 8,4 cm/ 8,4 cm.

Pentru realizarea ferestelor automatizate am folosit doar două încăperi pentru o demonstrație mai amplă.

Ferestrele folosite au dimensiunile de 4 cm/ 4 cm respectiv 6 cm/ 4 cm.

Automatizarea sistemului a fost făcută cu ajutorul componentelor descrise mai sus la subcapitolul 4.1 .

Capitolul 5 Implementarea și codul sursă

5.1 Prezentare

Ideea de la care am pornit implementarea unei case inteligente a venit de la nevoia de a pune în practică lucruri care nu le putem face când nu suntem acasă, sau care din motive medicale nu ne putem deplasa pentru a le face. Spre exemplu un om paralizat nu o sa se poată mișca până la întrerupător pentru a aprinde lumina, dar cu ajutorul unui senzor de lumină nu o să mai aibă această grijă.

5.2 Implementarea

În acest capitol voi prezenta mai detailat pașii urmați pentru realizarea proiectului dar și observațiile facute după testare.

Am început această lucrare cu proiectarea machetei realizata din MDF cu furnir de stejar cu grosimea de 0,4 mm pentru o rezistență mai mare la vibrații încât sistemul realizat să funcționeze în condiții optime dar și pentru un aspect mai real al unei locuințe.

Următorul pas făcut a fost amplasarea motoarelor pas cu pas care pe care au fost montate ferestrele, amplasarea senzorilor folosiți dar nu în ultimul rând a microcontrolerului.

După terminarea amplasării componentelor în machetă am continuat cu cablarea componentelor. O importanță destul de mare trebuie oferită modului în care facem legăturile componentelor din cauza spațiului foarte mic din încăpere.

Microcontrolerul Arduino mega 2560 folosit este unitatea de comandă a întregului sistem.

Acesta dispune de cunoașterea a mai multor limbaje de programare dar principalul limbaj fiind C, urmat de:

Java

C#

C++.

Limbajul de programare C datează din anul 1970 și a fost înființat de către Ken Thompson și Dennis Ritchie pentru dezvoltarea sistemului Unix. Acest limbaj a devenit un standard pentru alte limbaje de programare cum sunt de exemplu cele menționate mai sus, din cauza simplității modului de lucru. Limbajul a fost construit la un nivel mai scazut iar acest lucru îl propulsează ca fiind un limbaj de programare portabil si folosit pe majoritatea gadget-urilor de pe piață.

Programele dezvoltate folosind un microcontroler arduino pot fi împărțite în 3 categorii: structura, valorile însemnând varibilele și constantele, si nu în cele din urmă funcțiile.

Structura principală a unui program de acest gen constă din două funcții principale:

setup()

loop()

5.2.1 setup()

Funcția setup() este apelată atunci când un plan de proiect este la început. Defapt aceasta inițializează variabile, modul pinilor (LOW sau HIGH) precum și încărcarea librăriilor necesare pentru apelarea si rularea funcțiilor utilizarea la rularea programului.

Figura 5.1

5.2.2 loop()

Funcția loop() este invocată întotdeauna dupa aceea de setup(). Rolul acesteia este de a repeta consecutiv un anumit număr de linii de cod, si permite acestuia sa modifice variabile si modul pinilor in funcție de alti senzori sau componente care l-ar putea influneța. Prin aceasta se poate controla întregul sistem al microcontroler-ului Arduino Mega 2560.

Figura 5.2

5.2.3 pinMode()

Funcția pinMode() configurează comportamentul pinului specificat ca fiind unul de ieșire sau de intrare. Aceasta primește ca si intrare doi parametrii

pin

mode

Pin reprezintă numărul pinului a cărui mod se dorește setat.Mode reprezintă modul pinului selectat. Poate fi de 3 feluri:

INPUT acest mod este considerat a fi într-o stare de înaltă impedanță. Pinii configurați pe acest mod nu au cereri exagerate din partea circuitului pe care acționează.

OUTPUT acest mod este considerat a fi într-o stare de joasă impedanță. Aceasta înseamnă că sunt capabili să alimenteze alte circuite cu o cantitate substanțială de curent.

INPUT_PULLUP acest mod oferă acces la rezistori care au capabilitatea de a se conecta la puterea internă, în nici un fel de la sursă de alimentare externă.

Figura 5.3 Funcția pinMode()

5.2.4 digitalWrite()

Funcția digitalWrite() scrie o valoare HIGH sau LOW pe un pin digital.

Dacă pinul este configurat ca fiind un pin de ieșire voltajul acestuia va fi setat la valoarea corespunzătoare de 5V pentru HIGH și OV(gnd) pentru LOW. Dacă pinul este configurat ca fiind un pin de intrare, funcția va activa (adică valoarea scrisă va fi HIGH) sau va dezactiva (adică valoarea scrisă va fi LOW) pinul de intrare. Funcția are ca parametrii 2 valori:

pinul

valoarea ( HIGH sau LOW)

Excluzând setarea explicită a funcțiilor pinMode() și digitalWrite() duce la activarea rezistorului care se conectează la alimentarea internă, care ajunge să se compoarte ca un resistor ce reduce o mare parte din curentul de pe microcontroler.

Figura 5.4 Reprezintă un program Arduino care setează pinul cu numărul 13 pe valoarea HIGH , apelează metodă care forțează rularea să aștepte o secundă, după care setează pinul 13 pe valoare LOW.

5.2.5 digitalRead()

Această funcție citește valoare de pe un anumit pin, care poate fi HIGH sau LOW. În comparație cu numărul parametrilor funcției digitalWrite(), aceasta are un singur parametru care este exact pinul a cărui valoare se vrea citită. La apelarea acesteia valoarea pinului va fi returnată.

Figura 5.4 Reprezintă un program Arduino care copiază valoarea pinului numărul 7 în pinul cu numărul 13

5.2.6 HIGH

Semnificația valorii HIGH este influențată de modul pinului pe care aceasta este setată, adică daca pinul este de ieșire sau de intrare.

Când un pin este configurat cu funcția pinMode() ca fiind unul de intrare, și valoarea acestuia este citiă cu funcția digitalRead() atunci aceasta va returna HIGH dacă:

pinul de 5V este alimentat cu un voltaj mai mare de 3V

pinul de 3.3V este alimentat cu un voltaj mai mare de 2V

Când un pin este configurat cu funcția pinMode() ca fiind unul de ieșire, și valoarea acestuia este citiă cu funcția digitalRead() atunci când pinul are o valoare de:

5V

3.3V

5.2.7 LOW

Semnificația valorii LOW este influențată de pinul pe care este setată (pin de ieșire sau pin de intrare).

Dacă valoarea LOW este setată pe un pin de intrare, funcția digitalRead() va returna:

pinul 5V conține o valoare a voltajului mai mică decât 3V

pinul 3.3V conține o valoare a voltajului mai mică decât 2V

Dacă valoarea LOW este setată pe un pin de ieșire, cu funcția digitalWrite() pinul va avea întotdeauna o alimentare de 0V.

5.2.8 tone()

Funcția generează valuri patrate, adică un val periodic non-sinuisodal, în funcție de valoarea specificată ca și parametru.

Singurul parametru care îl deține funcția este absolut necesar. Daca acesta nu este specificat, valurile nu se vor opri numai decât la întâlnirea funcției noTone().

Aceasta nu poate fi apelată de mai multe ori, dacă acesta rulează deja pe un anumit pin. În cazul în care este apelată pe același nod, frecvența sinusoidală se va actualiza cu cea de-a doua valoare specificată la a doua apelare a funcției.

Nu se pot genera tonuri mai mici decât 31Hz. Poate avea între 2 si 3 parametrii, precum:

pin reprezentând pinul pe care se va genera tonul

frequency(frecvența) care reprezintă frecvența tonului in herți

durata reprezentând durata tonului în milisecunde

Nu va returna niciodată o anumită valoare.

Figura 5.5 Val periodic non-sinusoidal

5.2.9 noTone()

Oprește generarea valurilor periodice non-sinuisodale. Nu se activează nici o acțiune dacă în momentul rulării funcției nu se generează nici un val periodic sinusoidal.

Singurul parametru care îl care ca și input este pinul pe care se dorește generarea tonului.

5.2.10 Serial

Este o librărie folosită la folosită la comunicarea dintre mocrocontreler-ului Arduino și alte component extern precum un calculator. Conexiunile necesate pentru comunicare se pot face pe pinii 0 sau RX cât și pe 1 sau TX. La momentul de față majoritatea conexiunilor se fac prin intermediul USB-ului, așa că are suport de conectare la calculator și prin USB.

Microcontolerul Arduino Mega dispune de următoarele porturi pentru Serial:

Serial 1 pe pinii 19 și 18

Serial 2 pe pinii 17 și 16

Serial 3 pe pinii 15 și 14

Acești pini nu sunt conectați la USB-ul microcontrolerului. Din acest motiv, pentru ca serialul să răspundă comenzilor într-o conexiune cu un calculator, este nevoie de o extra conexiune cu USB-ul calculatorului.

5.2.11 analogRead()

Funcția citeste valoarea de pe pinul de citit. Valorile citite între 0V și 5V sunt transpuse in valori de tip integer între 0 și 1023. Citirea unei ieșiri analogice ține aproximativ 100 de microsecunde, iar rata maximă de citire este de 10.000 ori pe secundă.

Singurul parametu este pinul de citit. Dacă pinul analog nu este conectat la nimic, rezultatul funcției va varia în funcție de factorii ce influențează rezultatul, de ex: cât de aproape sau departe este un obiect față de senzorul de aproximitate.

Figura 5.6 Reprezintă un program Arduino care citește analog valoare pinului 3

5.2.12 delay()

Această funcție oprește rularea programului pentru un anumit timp, specificat în milisecunde. O secundă conține 1000 de milisecunde.

Singurul parametru este numărul de milisecunde pentru care programul va fi pus pe pauză.

După ce timpul indicat a trecut programul îsi reia rularea acestuia din punctul în care a fost întrerupt.

Figura 5.7 Reprezintă un program Arduino care apelează funcția de delay() de 2 ori a cate 1 secundă fiecare.

5.2.13 Funcționalitate și condiții

Aspectele principale la realizarea proiectului au fost date de senzorii folosiți astfel încât:

Senzorul de temperatură se va activa iar motorul pas cu pas va deschide ferestrele la o temperatură între 15 º – 30º C. La temperaturi care nu sunt încadrate între aceste valori ferestrele vor fi închise.

Senzorul de umiditate va fi activ și va coordona motoarele pas cu pas spre a deschide ferestrele la o umiditate între 30 – 60%.

Senzorul de lumină: Ledul atașat acestui senzor va porni când senzorul nu primește lumină.

Senzorul de fum: se va activa și va porni buzzerul care emite sunete la un grad mai ridicat de fum în interiorul locuinței.

În continuare voi atașa câteva imagini pentru a prezenta și vizual legăturile făcute între componente, amplasarea lor dar și macheta pe care funcționează toate cele prezentate.

În prima imagine după cum se vede este prezentată vederea din față a machetei, în prim plan observăm Shieldul împreună cu LCD-ul dar și buzzerul pentru avertizarea în caz de exces mare de fum.

În continuare vă prezint conexiunile făcute între QuadStepper Driver și microcontrolerul Arduino Mega 2560 împreună cu BreadBoard-ul, amplasarea senzorilor pe machetă și varianta finală de prezentare a proiectului făcut.

Figura 5.8 Imaginea din față a machetei cu Shieldul LCD și buzzerul

Figura 5.9 Conexiuni dintre QuadStepper – Arduino Mega 2560 și BreadBoard

Figura 5.10 Amplasarea senzorilor de umiditate temperatură și lumină

Figura 5.11 Varianta finală a proiectului

5.3 Codul sursă

În această secțiune vă voi prezenta codul folosit pentru implementarea casei inteligente:

librăriile folosite

metodele folosite pentru implementarea funcționalității

inițializarea variabilelor cât și a pinilor asignați anumitor senzori

5.3.1 Încărcarea resurselor

Fiecare proiect are nevoie de anumite librării care stau la baza implementării programului droit. Acestea fac legătura, oferă suport și acces la funcținalitățile si proprietăților microcontroler-ului.

Pentru acest proiect am avut de nevoie de librăriile:

quadstep.h care face legătura cu microcontroler-ul motoarelor

LiquidCrystal.h care face legătura cu ecranul LCD

Pentru a face conectarea ecranului cu microcontrolerul, pinii shield-ului de la 2 până la 7 sunt necesari pentru o comunicare eficientă.

Pentru a putea controla si folosi librăria quadstep, este necesară o instanțiere a clasei quadstep. Ne vom folosi de acest obicet, cu același nume, pentru folosirea funcțiilor.

Codul sursă:

#include <quadstep.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(38,39,40,41,42,43);

quadstep quadstep;

int windowOpen = 1;

int windowClosed = 1;

5.3.2 Alarmă gaz

Deoarece încălzirea casei pentru și prepararea mâncarii necesită ca sursă de căldură gazul, am decis să adaug un senzor care detectează nivelul gazului din casă. Atunci când nivelul gazului este mai mare decât limitele normale, un buzzer are emite un semnal sonor ce avertizează nivelul excesiv de gaz. Declanșarea suntelui se face folosind metoda tone care emite un ton periodic non sinusoidal, iar oprirea acestuia se face cu metoda noTone() care oprește tonul pornit mai devreme pe pinul numărul 4, având o frecvență de 5000 Hz.

Codul sursă:

void gasAlarm(void){

tone(4,5000,200);

noTone(4);

}

5.3.3 Starea ferestrelor

Pentru a putea închide sau deschide ferestrele în funcție de luminozitatea sau umiditatea de afară sunt necesare motoare.

Am folosit variabile constante pentru alocarea pinilor pentru starea ferestrelor.

Pentru a afla dacă ferestrele sunt deschise folosim funcția digitalRead() pe pinii 46 și 48 pentru a verifica dacă aceștia înregistrează valoarea HIGH, ceea ce înseamnă ca ferestrele sunt deschise. Toată această logică a fost integrate în metoda windowsOpen().

Pentru a afla dacă ferestrele sunt închide folosim aceeași funcției, dar de această dată pe pinii 47 și 49 pentru a verifica dacă aceștia înregistrează aceeași valoare (HIGH), ceea ce înseamnă ca ferestrele sunt închise. Toată această logică a fost integrate în metoda windowsClosed().

Codul sursă:

int windowAOpen = 46;

int windowBOpen = 48;

int windowAClosed = 47;

int windowBClosed = 49;

int windowsOpen(void){

if( (digitalRead(windowAOpen) == HIGH) && (digitalRead(windowBOpen) == HIGH) )

return 1;

else

return 0;

}

int windowsClosed(void){

if( (digitalRead(windowAClosed) == HIGH) && (digitalRead(windowBClosed) == HIGH) )

return 1;

else

return 0;

}

5.3.4 Umiditatea

De multe ori se întâmplă să plecăm de acasă și sa uităm geamurile deschise, iar dacă afară începe să plouă, apa de ploaie poate să intre în casă fără nici o problemă. Din acest motiv am adăugat și senzori de umiditate care măsoara umiditatea aflată înafara limitelor normale, adică mai mare sau egală cu 30 și mai mică sau egală cu 60. În aceste condiții ferestrele vor fi închise sau deschise pentru aerisire automat, fără să ne facem probleme.

Pentru a determina valoarea parametrilor returnați de senzor, am folost algoritmul interpolării lineare. Cu ajutorul acesteia și a parametrilor senzorilor am reușit să deduc valoares umidității folosind ecuația lineară.

Codul sursă:

int extHumidity(void){

int sensorParameters[2][9] = {{2890,900,270,81,33,13,5,2,1},{20,30,40,50,60,70,80,90,95}};

int resistance = analogRead(A0);

int humidity;

int yUpper, yLower;

int xUpper, xLower;

int count;

for(count = 0; 10 > count; count++){

if((sensorParameters[0][count] >= resistance) && (sensorParameters[0][count+1] <= resistance)){

yUpper = sensorParameters[0][count];

yLower = sensorParameters[0][count+1];

xUpper = sensorParameters[1][count];

xLower = sensorParameters[1][count+1];

}

}

humidity = ((resistance-yUpper) / ((yLower-yUpper)/(xLower-xUpper)))+xUpper;

if((30 <= humidity) && (60 >= humidity)){

return 1;

}else{

return 0;

}

}

5.3.5 Temperatura

Temperatura exterioară este citită folosind funcția analogRead de pe pinul A și calculată cu voltajul de pe pin cât și cu ajutorul offsetului specificat în specificațiile senzorului de temperatură.

Dacă temperatura rezultată nu se încadrează în limita de temperatură de 15 și 30 atunci ferestrele se vor închide iar mesaje de avertizare vor fi afișate pe ecranul LCD.

Codul sursă:

int extTemp(void){

int reading = analogRead(A2);

float voltage = 5000/1024;

voltage *= (float)reading;

int offset = 600;

float temp = (voltage – (float)offset)/10;

if(15.0 <= temp && 30.0 >= temp){

return 1;

}else{

return 0;

}

}

5.3.6 Luminozitatea

Metoda de mai jos testează luminozitatea din exterior, citind analog valoarea de pe pinul cu numărul A6, iar dacă aceasta este mai mică decât 200 returnează ‘true’ ceea ce înseamnă că luminozitatea este scăzută. În acest caz un led asociat senzorului de lumină se va aprinde, iar dacă lumina este crescută ledul se va stinge. Această logică este implementată începând cu rândul 10.

Codul sursă:

int extLight(void){

int extLight = analogRead(A6);

if(200 > extLight){

return 1;

}else{

return 0;

}

}

if(extLight()){

digitalWrite(53, HIGH);

}else{

digitalWrite(53, LOW);

}

5.3.7 Nivelul Gazului

Pentru o bună funcționare în detectarea nivelului de gaz am implementat o logică aflată în metoda readGas(), care citește analog valoarea de pe pinul A4, după care printează în consolă un mesaj care face vizibil nivelul citit folosind metoda gasValue().

Codul sursă:

void readGas(void){

int gasValue = analogRead(A4);

Serial.println("/**********GAS*********/");

Serial.println(gasValue);

}

5.3.8 Implementare setup()

Pentru ca să nu existe erori la compilarea codului, trebuie ca mai întâi să se compileze funcția setup() care inițializează

display-ul LCD,

pinii motoarelor,

modurile pinilor la care sunt conectați senzorii,

pinii de închidere și deschidere a ferestrelor,

modul piniilor asociați cu ferestrele,

pinii ledurilor.

Codul sursă:

void setup() {

Serial.begin(9600);

lcd.begin(16,2);

int m1_dir = 22;

int m1_MS1 = 23, m1_MS2 = 24, m1_MS3 = 25;

int m1_en = 26;

int m2_dir = 31;

int m2_MS1 = 30, m2_MS2 = 32, m2_MS3 = 33;

int m2_en = 34;

quadstep.motor_pins(1, m1_en, m1_dir, m1_MS1, m1_MS2, m1_MS3);

quadstep.motor_pins(2, m2_en, m2_dir, m2_MS1, m2_MS2, m2_MS3);

pinMode(A0, INPUT);

pinMode(A2, INPUT);

pinMode(A4, INPUT);

pinMode(A5, INPUT);

int LED = 53;

pinMode(LED, OUTPUT);

int windowAOpen = 46;

int windowAClosed = 47;

int windowBOpen = 48;

int windowBClosed = 49;

pinMode(windowAOpen, INPUT);

pinMode(windowAClosed, INPUT);

pinMode(windowBOpen, INPUT);

pinMode(windowBClosed, INPUT);

}

5.3.9 Implementare loop()

Pentru a putea verifica starea pinilor am folosit a doua parte din structura principală a unui program Arduino, adică funcția loop(). În aceasta se verifică nivelul gazului, apoi intensitatea luminii. Codul care verifică starea ferestrelor necesită mai mulți pași atunci când se execută închiderea sau deschiderea ferestrei:

se setează cursorul ecranului la început

urmează mesajul ce avertizează închiderea sau deschiderea ferestrei

se setează din nou cursorul pe ecran alături de un mesaj care avertizează că geamul va fi cel deschis sau închis

motoarele sunt puse în funcțiune

se actualizează starea ferestrelor

se curăță ecranul LCD pentru a putea rescrie mesaje la următoarea acțiune de închidere sau deschidere a ferestrelor.

Codul sursă:

void loop() {

if(600 < analogRead(A4)){

tone(4, 4000, 5000);

delay(100);

}

if(extLight()){

digitalWrite(53, HIGH);

}else{

digitalWrite(53, LOW);

}

if( extTemp() && extHumidity() && windowClosed){

lcd.setCursor(0, 0);

lcd.write("Deschidere");

lcd.setCursor(3, 1);

lcd.write("geamuri!!!");

quadstep.motor_go(1,1,-300,7);

quadstep.motor_go(2,1,-300,7);

windowOpen = 1;

windowClosed = 0;

lcd.setCursor(0, 0);

lcd.write(" ");

lcd.setCursor(0, 1);

lcd.write(" ");

}else if( (!extTemp() || !extHumidity()) && windowOpen/*&& windowsOpen()*/){

lcd.setCursor(0, 0);

lcd.write("Inchidere");

lcd.setCursor(3, 1);

lcd.write("geamuri!!!");

quadstep.motor_go(1,1,300,7);

quadstep.motor_go(2,1,300,7);

windowOpen = 0;

windowClosed = 1;

lcd.setCursor(0, 0);

lcd.write(" ");

lcd.setCursor(0, 1);

lcd.write(" ");

}

Capitolul 6 Testare și validare

Proiectul de față este prezentarea unui concept și nu un produs finit, astfel am ales să testez 3 module în condiții favorabile fără a simula și condiții defavorabile funcționării modulelor.

Prezentarea celor 3 module folosite în testare:

Legătura dintre senzorul de lumina și led : la detectarea luminii de către senzor ledul e stins iar la insuficienta de lumină ledul e pornit.

Pentru senzorul de fum am obținut date empirice , suflând fum pe senzor și măsurând datele returnate prin interfața serială.

Pentru senzorul de temperatură am ales un prag personal de confort între 15 -30̊º C , iar pentru umiditate am luat valorile normale considerate între 30 – 60%.

Capitolul 7 Concluzii

Din ceea ce am prezentat în aceste rânduri am evidențiat destul de bine faptul că tehnologia de care dispunem în momentul de față ne dă o mare varietate precum și un câmp larg de desfășurare a acesteia.

Nu doar funcționalitățile pe care le putem implementa cu ajutorul tehnologie sunt importante, ci și ajutorul pe care ni-l oferă, precum și gradul foarte mare de ușurarea a muncii noastre de zi cu zi.

Domeniile în care se poate aplica tehnologia sunt largi, cele mai importante ar fi:

Medicina

Agricultura

Fabrici

Case

Aici v-am prezentat o soluție foarte minimalistă a ceea ce se poate cu tehnologia într-o casă.

Alte funcționalități care s-ar fi putut implementa sunt:

Închiderea robinetului în caz că rămane deschis

Eliminarea oxigenului în caz de incediu

Închiderea automată a ușilor atunci când nimeni nu mai este acasă

Trimiterea pe email a unor imagini de pe camere video atunci când în casă este detectată mișcare atunci când proprietarii nu sunt acasă

Toate aceste funcții să poată fi controlate de pe o interfață web sau de pe mobil

Capitolul 8 Bibliografie

http://www.robofun.ro/senzor-umiditate-brick?search=senzor%20umiditate%20brick

http://www.robofun.ro/senzor-lumina?search=senzor%20lumina%20brick

http://www.robofun.ro/kit-senzor-fum-gaze-inflamabile-mq2?search=kit%20fum

http://www.robofun.ro/quadstepper_driver?search=quad

https://www.sparkfun.com/datasheets/Robotics/SM-42BYG011-25.pdf

http://bildr.org/2011/06/easydriver/

http://www.robofun.ro/docs/RC1602B-BIW-CSX.pdf

http://www.arduino.cc/en/Main/ArduinoBoardMega2560

http://www.siatec.ro/Document_Files/Produs/00000011/physy_Green%20Line-Centrale.pdf

http://www.ti.com/lit/ds/symlink/lm50.pdf

http://www.robofun.ro/senzor-temperatura-brick?search=senzor%20temperatura%20brick

http://forum.arduino.cc/index.php?topic=22132.0

http://store.iteadstudio.com/images/produce/Sensor/Smoke_Sensor/MQ-2.pdf

http://www.arduino.cc/en/Reference/HomePage

https://arduino-info.wikispaces.com/LCD-Blue-I2C

https://learn.adafruit.com/all-about-leds/the-led-datasheet

http://bildr.org/2011/06/easydriver/

Capitolul 9 Acronime

LED Light Emitting Diode

USB Universal Serial Bus

LCD Liquid Crystal Display

FTDI Future Technology Devices International

IOREF In Out Reference

AREF Analog Reference

GND Ground

VIN Voltage In

MOSI Master Out Slave In

MISO Master In Slave Out

SCK Serial Clock

A Amper

V Volt

Vcc Voltage controlled current

Vca Voltage controlled amplifier

Capitolul 10 Anexă

Figura 10.1 Schema electrica LCD

Figura 10.2 Schema pinilor Arduino Mega 2560

Figura 10.3 Motorul pas cu pas

Figura 10.4 Senzorul de fum

Figura 10.5 Schema finală a proiectului

Bibliografie

http://www.robofun.ro/senzor-umiditate-brick?search=senzor%20umiditate%20brick

http://www.robofun.ro/senzor-lumina?search=senzor%20lumina%20brick

http://www.robofun.ro/kit-senzor-fum-gaze-inflamabile-mq2?search=kit%20fum

http://www.robofun.ro/quadstepper_driver?search=quad

https://www.sparkfun.com/datasheets/Robotics/SM-42BYG011-25.pdf

http://bildr.org/2011/06/easydriver/

http://www.robofun.ro/docs/RC1602B-BIW-CSX.pdf

http://www.arduino.cc/en/Main/ArduinoBoardMega2560

http://www.siatec.ro/Document_Files/Produs/00000011/physy_Green%20Line-Centrale.pdf

http://www.ti.com/lit/ds/symlink/lm50.pdf

http://www.robofun.ro/senzor-temperatura-brick?search=senzor%20temperatura%20brick

http://forum.arduino.cc/index.php?topic=22132.0

http://store.iteadstudio.com/images/produce/Sensor/Smoke_Sensor/MQ-2.pdf

http://www.arduino.cc/en/Reference/HomePage

https://arduino-info.wikispaces.com/LCD-Blue-I2C

https://learn.adafruit.com/all-about-leds/the-led-datasheet

http://bildr.org/2011/06/easydriver/

Anexă

Figura 10.1 Schema electrica LCD

Figura 10.2 Schema pinilor Arduino Mega 2560

Figura 10.3 Motorul pas cu pas

Figura 10.4 Senzorul de fum

Figura 10.5 Schema finală a proiectului

Similar Posts