Realizarea Unui Sistem Ce Permite Automatizarea Si Monitorizarea Unor Procese din Cadrul Unei Locuinte
Cuprins
Obiectivul lucrarii
1.Introducere
1.1 Scurt istoric
1.2 Sisteme automate
1.2.1 Problema reglarii
1.2.2 Sisteme de reglare automata
1.2.3 Clasificare
1.2.4 Principul reglarii automate
2. Componente
2.1 Microcontroller
2.1.1 Generalitati
2.1.2 Structura
2.1.3 Arduino
2.1.3.1 Arhitectura
2.1.3.2 Arduino Yun
2.2 Senzori
2.2.1 Senzorul de temperatura
2.2.2 Senzorul de luminozitate
2.2.3 Senzorul de calitatea aerului
2.2.4 Senzorul de praf
2.3 Servomotoare
2.3.1 Servomotorul SG-5010
2.3.2 Servomotorul Feetech FS5106B
2.4 Driver motoare TB6612FNG
2.5 Multiplexorul CD74HC4067
3. Medii de programare
3.1 Arduino/C
3.2 Html/CSS
3.3 Javascript
3.4 PuTTY/SSH
4. Implementare
4.1 Configurarea Arduino Yun cu routerul TP-Link TL-WR818N
4.2 Instalarea IDE-ului Arduino
4.3 Realizarea circuitului
4.4 Scrierea codului sursa
4.5 Accesare Yun dintr-o pagina web
4.6 Realizarea website-ului
4.7 Realizarea machetei si instalarea sistemului
5. Posibilitati de dezvoltare
6. Concluzii finale
Bibliografie
Obiectivul lucrarii
Proiectul ce urmeaza a fi prezentat are ca tema realizarea unui sistem ce permite automatizarea si monitorizarea unor procese din cadrul unei locuinte, favorizand astfel abilitatea utilizatorului de a fi in permanenta in controlul domiciliului.
Locuinta va fi simulata prin proiectarea unei machete din lemn cu 3 incaperi principale iar procesele realizate au ca efect masurarea si controlul temperaturii, actionarea electrica a usilor si ferestrelor, gestionarea calitatii aerului si a nivelului de praf din incinta precum si reglarea nivelului de luminozitate.
Sistemul realizat prezinta 2 regimuri de functionare:
Manual
Automat
In cazul regimului de functionare automat, sistemul actioneaza in functie de valorile primite de la senzorii folositi fiind coordonat de microcontrolerul Arduino Yun.
In regim de functionare manual utilizatorul poate schimba starea proceselor in functie de asteptarile dorite.
In ambele cazuri, procesele pot fi monitorizate prin intermediul unui website ce va dispune de toate uneltele necesare atat pentru controlul sistemului cat si pentru observarea acestuia.
Dupa cum este sugerat si de titlul lucrarii, intregul ansamblu poate fi accesat prin control de la distanta, mai exact utilizatorul se poate conecta la website cu orice aparat ce permite comunicatie wireless: smartphone, tableta, notebook, etc. Datorita acestui avantaj oferit de arhitectura microcontrolerului, manipularea sistemului implementat este mult mai usoara si rapida.
1. Introducere
Sistemele de automatizare a locuintelor si a cladirilor sunt utilizate din ce in ce mai mult in zilele noastre. Pe de-o parte, ele ofera un confort crescut mai ales cand sunt instalate intr-o casa privata iar pe de alta parte, sistemele instalate in cladiri comerciale nu numai ca imbunatatesc confortul, dar si permit controlul centralizat al caldurii, ventilatiei sau a luminii. Prin urmare, aduc o contributie importanta la reducerea costului per total si la economia energiei, lucru ce prezinta o problema majora astazi.
Sistemele existente deja si bine stabilite sunt bazate pe comunicatie cablata. Trecerea la comunicatia wireless nu reprezinta o problema atat timp cat sistemul este planificat inainte si instalat in timpul constructiei fizice a cladirii. Daca o cladire deja existenta necesita un sistem de comunicatie, atunci implementarea pe cablu reprezinta clar o problema in timp ce un sistem wireless poate fi de mai mare ajutor.
In ultimii ani, tehnologiile wireless sunt tot mai des utilizate. Sistemele bazate pe wireless sunt folosite in fiecare zi si pretutindeni, plecand de la retelele de locuinte si telefoane mobile pana la deschiderea usilor de garaj. Echipamentele de intretinere si delectare din cadrul locuintelor au fost subiectul unor schimbari radicale. S-a plecat de la un sistem alcatuit aproape numai din componente analogice si s-a ajuns la unul aproape in totalitate digital. In zilele de astazi, muzica, fotografiile, cartile, ziarele si filmele sunt disponibile in format electronic. De asemenea, televiziunea si radiourile sunt transmise in format digital. De cele mai multe ori, toate aceste informatii se gasesc pe Internet.
Odata cu aceasta dezvoltare, dispozitivele care acceseaza informatiile de mai sus au evoluat si ele. Noile televizoare pot afisa formate digitale de inalta definitie, unele radiouri folosesc difuzarea audio digitala, playerele media portabile sunt in totalitate digitale. Calculatoarele si consolele de jocuri video pot stoca si utiliza cantitati enorme de informatie digitala. Exista, de asemenea, o moda de a conecta aparatele digitale la Internet. Calculatoarele din tarile mai dezvoltate au aproape intotdeauna acces la Internet prin intermediul conexiunilor broadband. La fel se poate spune si despre telefoanele mobile sau echipamentele de muzica portabile.
Aceste tipuri de echipamente interactioneaza intre ele din ce in ce mai mult. In locuintele unde exista mai multe calculatoare, conexiunea la Internet sau imprimanta sunt distribuite prin intermediul unei retele locale.
Toate aceste tehnologii fac parte dintr-o locuinta moderna si schimba drastic obiceiurile utilizatorului. Acum realizam ca revolutia sistemulelor de divertisment a fost doar inceputul unei revolutii mai mari.
1.1 Scurt istoric
Primul document descoperit care prezinta un sistem de control automat dateaza inca din anul 270 inainte de Hristos si ilustreaza un ceas pe apa. Mai tarziu, in anii 1700, Rene-Antoine Ferchault de Reaumur (1683-1757) a avut niste idei pentru controlul temperaturii din incubatoare. Ideile lui Reaumur erau bazate pe o inventie de-a lui Cornelius Drebbel (1572-1663) care folosea un vas in forma de U ce continea mercur. Acesta, masurand temperatura, actiona un maner al unui furnal care controla refluxul de caldura.
Controlul automat al unui motor pe aburi si numeroasele incercari de a mentine o precizie dorita, au ajutat la dezvoltarea ulterioara a sistemelor automate, spre exemplu lucrarea lui James Clark Maxwell (1831-1879) intitulata „On Governors” care viza ecuatiile diferentiale pentru controlul vitezei.
Viitoare imbunatatiri au avut loc cand au aparut arme noi, nave mai mari si sistemele de propulsie. Acestea foloseau puterea pneumatica pentru a controla mecanismele de pozitie. Aproape de anii 1900, un rol important in sistemele automate l-a avut electricitatea. Unul din primele exemple de regulatoare PID a fost dezvoltat de ELmer Sperry. In anul 1911, acest tip de sistem a fost utilizat pentru manevrarea unei nave. Dispozitivul lui Sperry compensa pentru perturbatiile din apa pe masura ce conditiile marii se schimbau.
Chiar daca Elmer Sperry a folosit un regulator PID in anul 1911, legea de reglare cu care asociem bucla regulatorului PID a venit de la Nicholas Minorsky (1885-1970). In 1922 a propus tipul de control proportional, integrativ si derivativ cu care suntem obisnuiti. Factorul proportional este necesar pentru a orienta nava bazat pe directia acesteia comparativ cu destinatia dorita. Factorul integrativ reprezinta corectia unei cantitati de eroare iar factorul derivativ este tentativa de a vedea cat de mult poate varia un proces si de a anticipa unde va fi nevoie de corectarea erorii in viitor.
In 1936, a fost creata prima organizatie profesionala care se ocupa cu controlul automat numita „Industrial Instruments and Regulators Commitee” si a avut ca obiectiv principale standardizarea metodelor de control automat.
Intre anii 1940 si 1950 diverse companii au continuat sa le imbunatateasca produsele, spre exemplu „Foxboro Instrument Company” sau „Taylor Instrument Company”. In acest timp au fost publicate lucrari care au descris cum sa fie ajustate valorile regulatorului PID pentru setari optime.
Sistemele de control au evoluat rapid, au existat multe intorsaturi de situatie mai ales in proiectele militare, toate au dus la realizarea pe scara mica a electronicelor, a calculatoarelor inca din anii 1950 pana astazi. Calculatorul care il folosim zilnic si electronicele utilizate in controlerele digitale fac posibil controlul mediului intr-o cladire moderna.
1.2 Sisteme automate
Un sistem este un ansamblu de elemente ce interactioneaza intre ele si cu exteriorul, in vederea atingerii unei finalitati. In cazul sistemelor reale interactiunea se realizeaza prin intermediul fluxurilor de masa si energie, purtatoare de informatie.
Sistemul automat este un sistem tehnic cu ajutorul caruia se realizeaza supravegherea si comanda proceselor si instalatiilor tehnologice, fara interventia directa a omului. Un sistem automat este alcatuit din doua parti principale : procesul de automatizat si dispozitivul de automatizare.
Un sistem este caracterizat de trei tipuri de marimi fizice si anume : marimi de intrare, marimi de stare si marimi de iesire.
Marimile de intrare sunt independente de sistem si influenteaza din exterior starea si evolutia sistemului.
Marimile de stare sunt dependente de marimile de intrare si au rolul de a caracteriza starea interna curenta a sistemului.
Marimile de iesire sunt dependente de marimile de stare, uneori si direct de marimile de intrare, si au rolul de a transmite in exterior, sistemelor invecinate, informatie referitoare la starea curenta a sistemului. Marimile de stare ale unui sistem au doua proprietati esentiale :
de mediere a transferului intrare-iesire
de acumulare intr-o forma concentrata a intregii informatii privind evolutia anterioara a sistemului, adica a istoriei trecute a sistemului.
Sistemele pot fi impartite in clase si categorii de sisteme cu trasaturi si comportamente asemanatoare, cum ar fi de exemplu: sistemele continue si discrete, sistemele liniare si neliniare, sistemele cu si fara memorie, sistemele stationare si nestationare, sistemele monovariabile si multivariabile, sistemele cu parametri concentrati si distribuiti, sistemele cu si fara timp mort, sistemele deterministe si stochastice, sistemele deschise si inchise.
Sistemele automate se pot clasifica dupa mai multe criterii, astfel:
dupa natura elementelor din componenta dispozitivului de automatizare si a semnalelor de comunicatie intre acestea, sistemele automate pot fi: electronice, pneumatice, hidraulice, mecanice si mixte. Cand sistemul automat contine elemente de natura diferita, interconectarea acestora se face prin intermediul elementelor convertoare;
dupa gradul de universalitate a elementelor din componenta dispozitivului de automatizare, sistemele automate pot fi unificate sau specializate. Sistemele unificate contin elemente universale ce functioneaza cu semnal unificat (standard), cum ar fi : 4 .. 20 mA c.c., tensiune in gama 1 .. 5 V, semnal pneumatic in domeniul 0,2 … 1,0 bar. Sistemele automate specializate sunt utilizate in cazul unor automatizari de mai mica amploare, cand nu se pune problema transmiterii semnalelor la distanta;
in raport cu functia indeplinita, sistemele automate se clasifica in:
sisteme automate de supraveghere, prin masurare si/sau semnalizare
sisteme automate de protectie care au ca scop oprirea partiala sau totala a procesului (instalatiei), atunci cand un parametru iese in afara domeniului admisibil de functionare, afectand calitatea produsului finit si/sau securitatea instalatiei respective;
sisteme automate de comanda directa, dupa un program prestabilit;
sisteme automate de reglare ce au ca scop aducerea si mentinerea valorii iesirii procesului la o valoare dorita (referinta), in conditiile modificarii in timp a valorii referintei si a actiunii perturbatiilor asupra procesului reglat;
sisteme automate de conducere (prin supraveghere, protectie, comanda, reglare).
1.2.1 Problema reglarii
In figura 1 este reprezentat schematic un proces supus reglarii automate, punandu-se in evidenta marimile de intrare (c, v1, v2) si de iesire (y).
Fig. 1 Marimile fizice asociate unui proces reglat
Marimile de intrare ale unui proces sunt de doua tipuri: comenzi si perturbatii. Prin intermediul comenzilor se poate interveni asupra procesului astfel incat acesta sa evolueze dupa o traiectorie dorita. Perturbatiile actioneaza arbitrar asupra procesului avand drept consecinta devierea procesului de la traiectoria dorita.
Reglarea este operatia de mentinere a marimii de iesire a unui proces la o valoare cat mai aproapiata de cea a unei marimi de referinta, in conditiile modificarii in timp a marimii de referinta si a actiunii perturbatiilor asupra procesului reglat. Problema reglarii consta in elaborarea unei comenzi asupra procesului reglat, astfel incat marimea de iesire a procesului sa urmareasca cat mai aproape o marime de referinta data, in conditiile actiunii perturbatiilor asupra procesului. Comanda este elaborata de catre un element decizional, numit regulator, dupa un algoritm adecvat (legea de reglare), pe baza valorii curente a marimii reglate (iesirea procesului), a referintei si a perturbatiilor masurate.
1.2.2 Sisteme de reglare automata
Un sistem de reglare automata este un sistem tehnic cu ajutorul caruia se urmareste aducerea sau mentinerea valorii marimii de iesire dintr-un proces la o valoare de referinta in mod automat, fara interventia omului, pe baza unei legi de reglare. Un astfel de sistem este format dintr-un dispozitiv de automatizare (DA) si procesul de automatizat (P).
Fig. 2 Schema bloc simplificata a unui SRA (a –dupa efect, b – dupa cauza)
Dispozitivul de automatizare are rolul de a primi informatie referitoare la starea curenta a procesului reglata (P), si de a genera comenzi convenabile asupra procesului, in vederea mentinerii sau aducerea starii acestuia intr-o anumita stare dorita.
Dispozitivul de automatizare cuprinte in structura sa traductorul (T) ce furnizeaza informatia cu privire la starea curenta a procesului, prin masurare, regulatorul (R) ce genereaza comenzile astfel incat sa se indeplineasca obiectivul reglarii (mentinerea sau aducerea starii curente a unui proces la o anumita stare de referinta) si elementul de executie (EE) ce are rolul de a aplica comanda regulatorului in proces.
Fig. 3 Schema bloc detaliata a unui SRA (a – dupa efect, b –dupa cauza)
Sistemul de reglare realizeaza,in cazul ideal, conditia de reglare y(t) = r(t), oricare ar fi intrarea de referinta r(t) si perturbatiile v1(t) si v2(t). Problema reglarii poate fi descompusa in problema rejectiei efectului perturbatiilor si problema urmarii referintei.
Problema rejectiei exacte exprima cerinta ideala ca in ipoteza r(t) = 0 si v2(t) = 0 sa avem y(t) = 0, oricare ar fi v1(t).
Problema urmaririi exacte exprima cerinta ideala ca in ipoteza v1(t) = 0 si v2(t) = 0 sa avem y(t) = r(t), oricare ar fi r(t).
In aplicatiile practice, problema reglarii trebuie relaxata, in sensul inlocuirii conditiei rigide ca marimea reglata (y) sa urmeasca exact marimrea de referinta (r), cu conditia ca iesirea sa urmareasca referinta cu un anumit grad de precizie. Un SRA poate functiona pe baza a doua principii de reglare, si anume principiul reglarii dupa cauza si principiul reglarii dupa efect.
1.2.3 Clasificarea sistemelor de reglare automata
Exista mai multe posibilitati de clasificare a unui SRA, in functie de criteriul adoptat, si anume :
Dupa dependentele, in regim stationar, dintre marimile de iesire si de intrare ale elementelor componente se deosebesc :
SRA liniare – cand dependentele sunt liniare; din punct de vedere matematic sistemele liniare sunt descrise prin ecuatii liniare;
SRA neliniare – cand cel putin una din dependente este neliniara; din punct de vedere matematic sistemele neliniare sunt descrise prin ecuatii neliniare;
Dupa caracterul prelucrarii semnalelor se deosebesc:
SRA continue – cand toate marimile care intervin sunt continue in timp;
SRA discrete – cand cel putin una dintre marimi are o variatie discreta in timp;
Dupa viteza de raspuns a procesului reglat la un semnal aplicat la intrare se deseosebesc:
SRA pentru procese rapide – cand constantele de timp are procesului nu depasesc 10 secunde
SRA pentru procese lente – cand procesul are constante de timp mai mari si, de cele mai multe ori au si timp mort;
Dupa principiul de functionare, pot fi:
SRA dupa efect – care mentin sau aduc valoarea iesirii procesului la valoarea marimii de referinta prin masurarea permanenta a iesirii si compararea valorii acesteia cu valoarea marimii de referinta;
SRA dupa cauza – mentin sau aduc valoarea iesirii procesului la valoarea marimii de referinta prin masurarea permanenta a perturbatiilor si/sau a referintei astfel incat la modificarea perturbatiilor iesirea sa nu se modifice, iar la modificarea referintei iesirea sa devina egala cu aceasta;
Dupa caracteristicile constructiei dispozitivelor de automatizare se deosebesc:
SRA unificate – cand toate marimile sunt semnale unificate, adica au aceeasi gama si aceeasi natura;
SRA specializate – nu folosesc semnale standardizate;
Dupa agentul purtator de semnal se deosebesc:
SRA electronice
SRA pneumatice
SRA hidraulice
SRA mixte
In functie de evolutia strategiilor de reglare, se disting:
SRA conventionale avand la baza strategii clasice de reglare;
SRA avansate avand la baza strategii clasice de reglare;
SRA avansate avand la baza strategii moderne de reglare;
SRA avansate avand la baza modele complexe
SRA avansate avand la baza tehnici inteligente
1.2.4 Principiile reglarii automate
Sistemele de reglare pot functiona pe baza principiului actiunii dupa efect (eroare, abatere) sau pe baza principiului actiunii dupa cauza. Sistemele cu reglare dupa efect se numesc sisteme cu actiune inversa (cu reactie sau cu „feedback”) iar sistemele cu reglare dupa cauza se mai numesc sisteme cu actiune directa (cu precompensare sau cu „feedforward”).
Principiul reglarii dupa efect presupune interventia asupra sistemului reglat, pe baza informatiei obtinute prin masurarea marimii reglate, in vederea mentinerii acestei marimi la o valoare cat mai apropiata de valoarea referintei. La sistemele cu actiune dupa efect, aparitia erorii (diferenta dintre valoarea referintei si valoarea marimii reglate) nu poate fi prevenita, dar actiunea de reducere a acesteia incepe din momentul producerii celei mai mici erori sesizabile, indiferent de cauza care a provocat eroarea.
Principiul reglarii dupa cauza presupune interventia asupra procesului reglat, pe baza cunoasterii valorii curente a intrarii perturbatoare (cazul reglarii dupa perturbatie) sau a intrarii de referinta (cazul reglarii dupa referinta). La reglarea dupa perturbatie urbareste mentinerea constanta a marimii de iesire a procesului, prin compensarea efectului produs de perturbatie, iar la reglarea dupa referinta se urmareste aducerea si mentinerea marimi reglate la o valoare apropiata de cea a referintei.
2. Componente
In acest capitol voi prezenta aspecte teoretice despre fiecare componenta folosita in realizarea proiectului, plecand de la microcontroller pana la traductoarele, respectiv sensorii folositi si driver-ul de motoare. Sistemul realizat in cadrul acestui proiect poate fi structurat pe trei module, si anume dispozitivul cu care ne conectam, dispozitivul la care ne conectam, in acest caz fiind un ruter si mecanismul de controlat fiind reprezentat de placa Arduino si toate perifericele legate la aceasta ( servomotoarele, senzorii, driverul pentru ventilatoare, ventilatoarele in sine, multiplexorul si led-urile). O reprezentare a acestor componente cat si modul in care ele sunt conectate se pot observa in figura 4 intr-o maniera simplista.
Fig. 4 Vedere generala a proiectului
2.1 Microcontroller
2.1.1 Generalitati
La inceputuri a fost electricitatea. Oamenii erau fericiti si nu erau constienti ca ea exista peste tot in jurul lor si putea fi utilizata. Primele masinarii care foloseau un nou tip de energie au aparut rapid. Ceva vreme trecuse de atunci, si chiar cand oamenii se obisnuisera cu ideea si nu mai acordau atentie noilor generatii de specialisti, cineva a venit cu notiunea ca electronicele pot reprezenta o jucarie foarte utila. Era o idee foarte buna de la care nu a mai existat drum de intoarcere.
O noua stiinta a insemnat noi specialisti. In timp ce restul umanitatii priveau cu neincredere ce se intampla, planurile s-au impartit in doua grupe: „orientare software” si „orientare hardware”, ambele evouluand pe cai diferite. In timp ce primul grup se dezvolta constant si treptat, oamenii din bransa hardware, condusi de succes, au incalcat limitele sigurantei si au inventat tranzistoarele.
Pana la acel moment, lucrurile puteau fi tinute sub control mai mult sau mai putin, dar o publicitate larga nu era constienta de ceea ce se intampla de fapt, fapt ce a condus la o greseala fatala. Naivi, crezand ca niste trucuri ieftine puteau incetini dezvoltarea tehnologiei si ca puteau da timpul inapoi in zilele bune, piata de atunci si-a deschis portile pentru produse din industria electronica. O scadere rapida a preturilor afacut posibila disponibilitatea acestor componente pentru publicul larg.
Primele circuite integrate si procesoare au aparut curand, fapt ce a cauzat o diminuare si mai mare a preturilor calculatoarelor si celorlalte produse electronice. Astfel, puteau fi cumparate de pretutindeni, si oamenii de rand puteau avea in posesie un calculator.
In timp ce aceasta evolutie se manifesta, atat profesionistii cat si cei pasionati lucrau din greu la proiectele lor. Apoi, cineva si-a pus intrebarea de ce sa nu faca o componenta universala. De ce sa nu faca un circuit integrat universal, ieftin, care putea fi programat si folosit in orice domeniu al electronicii oricand era nevoie ? Tehnologia s-a dezvoltat la fel de mult ca si piata, atunci de ce nu ? Astfel, a luat nastere primul circuit integrat numit microcontroller.
Ca toate lucrurile bune, aceasta componenta puternica este de fapt foarte simpla. A luat nastere si s-a dezvoltat plecand de la urmatoarele idei:
Cel mai simplu procesor de calculator este folosit pe post de „creier” al intregului sistem;
In functie de gusturile producatorului, se poate adauga putina memorie, niste convertoare A/D. temporizatoare, dispozitive de intrare-iesire, etc;
Toate acestea sunt plasate in niste module standard;
Existenta unui software simplu care sa fie in stare sa controleze totul si care sa fie usor de dezvoltat pentru toata lumea.
Pe baza acestor reguli, au fost dezvoltate numeroase tipuri de microcontrollere care au devenit imediat insotitorul invisibil al omului. Simplitatea si flexibilitatea lor incredibila ne-au cucerit cu mult timp in urma, iar aproape orice noua inventie cu referire la ele a fost probabil deja incercata de altcineva. Urmatorii factori au avut o influenta cruciala asupra dezvoltarii si succesului microcontrollerelor:
Electronicele puternice si alese cu atentie din microcontroller pot controla procese variate si aparate (automatizari industriale, curentul electric, temperatura, performantele unui motor, etc), fie independent sau prin dispozitive de intrare-iesire(intrerupatoare, butoane de apasat, senzori, afisare LCD, relee);
Preturile scazute au permis ca ele sa fie implementate in aparate in care pana de curand nu meritau timpul alocat. Datorita acestui fapt, lumea astazi este mai mult decat incarcata de aparate automate simple cu aplicabilitati variate;
Nu este nevoie de cunostinte aprofundate in domeniu, fiind suficient sa se dispuna de un calculator si un device simplu numit programator care este folosit pentru a incarca programele in microcontroller.
2.1.2 Structura
Un microcontroller contine de obicei:
unitate centrala
memoria volatila (RAM)
generatorul de tact
memoria nevolatila (ROM)
dispozitive I/O seriale si paralele
controller de intreruperi, controller DMA, numaratoare/temporizatoare, convertoare A/D, D/A, etc
periferice
Fig. 5 Schema simplificata a unui microcontroller
Ca intrari se folosesc de obicei semnale provenind de la comutatoarele individuale sau de la traductoare (de temperatura, de presiune, foto, traductoare specializate). Intrarile pot fi digitale sau analogice. Intrarile digitale vehiculeaza semnale discrete, informatia citita fiind informatia ce se esantioneaza la momentul citirii liniei respective. Intrarile analogice vehiculeaza informatii exprimabile prin functii continue in timp. Citirea acestora de catre microcontroller presupune prezenta unori circuite capabile sa prelucreze aceste informatii, fie comparatoare analogice, fie convertoare analog-numerice, ale caror iesiri sunt citite de catre acesta.
Iesirile sunt fie analogice, caz in care reprezinta de fapt iesiri ale convertoarelor numeric-analogice, fie sunt digitale, caz in care informatia este general memorata pe acestea pana la o noua scriere operata de catre unitatea centrala la un port am microcontrollerului. Iesirile pot comanda dispozitive de afisare, relee, motoare, difuzoare, etc.
Memoria Read Only (ROM) este un tip de memorie ce este folosita la salvarea in permanenta a programului de executat. Marimea programului care poate fi scris depinde de marimea acestei memorii. Memoria poate fi implementata in microcontroller sau poate fi adaugata ca chip extern, lucru ce depinde de tipul microcontrollerului. Ambele variante au dezavantaje. Daca ROM este adaugata ca chip extern, atunci microcontrollerul este mai ieftin iar programul poate fi considerabil mai lung. In acelasi timp, numarul de pini disponibili este redus deoarece porturile de intrare/iesire sunt folosite pentru a conecta chipul. Memoria ROM interna este de obicei mai mica si mult mai scumpa, dar microcontrollerul dispune de mai multi pini pentru a fi conectati cu mediul periferic. Marimea memoriei ROM variaza intre 512B si 64kB.
Memoria Random Access (RAM) reprezinta un tip de memorie folosita pentru stocarea temporara a informatiei si a rezultatelor intermediare create si folosite in timpul operatiei cu microcontrollerul. Continutul acestei memorii este eliberat odata ce circuitul este oprit.
Memoria EEPROM este un tip special de memorie care nu se regaseste in toate microncontrollerele. Continutul ei poate fi schimbat in timpul executiei programului, similar cu RAM, dar ramane in permanenta salvat chiar dupa oprirea circuitului. Este folosita de obicei pentru a stoca valori create si folosite in timpul operatiei (valori de calibrare, de contorizare, etc), care trebuiesc salvate neaparat dupa inchiderea circuitului. Un dezavantaj al acestui tip de memorie este incetinirea procesului de programare, masurat in milisecunde.
Registrii speciali SFR fac parte din memoria RAM. Scopul lor este predefinit de producator si nu poate fi schimbat. Deoarece bitii lor sunt conectati fizic la circuite din cadrul microcontrollerului, ca de exemplu convertorul A/D sau modulul de comunicatie seriala, orice schimbare a starii lor afecteaza operatia de pe microcontroller sau alte circuite. Spre exemplu, scrierea 0 sau 1 intr-un SFR ce controleaza un port intrare/iesire are ca efect configurarea portului respectiv ca intrare sau ca iesire. In alte cuvinte, fiecare bit din acest registru controleaza functia unui singur pin.
Contorizatorul de program PC este un motor care ruleaza programul si pointeaza catre adresa de memorie ce continte urmatoarea instructiune de executat. Dupa fiecare instructiune executata, valoarea contorului este incrementata cu 1. Din acest motiv, programul executa doar o instructiune la un moment dat, la fel cum este scrisa. Valoarea contorului poate fi schimbata oricand, fapt ce cauzeaza un salt intr-o locatie noua de memorie, astfel sunt executate subrutinele. Dupa salt, contorul reia numaratoarea.
Unitatea centrala de procesare CPU, dupa cum ii sugereaza si numele, reprezinta o unitate care monitorizeaza si controleaza toate procesele ce au loc in microcontroller iar utilizatorul nu poiate influenta acest proces. Consta din mai multe subunitati mai mici, dintre care cele mai importante sunt :
Decodorul de instructiuni este acea parte care recunoaste instructiunile programului si pe baza acestora opereaza alte circuite. Abilitatile acestui circuit sunt exprimate in setul de instructiuni care difera pentru fiecare familie de microcontrollere;
Unitatea logica aritmetica ALU se ocupa cu toate operatiile matematice si logice asupra datelor;
Acumulatorul care este un SFR in strans legatura cu ALU.
Porturile de intrare/iesire reprezinta niste registri conectati la pinii microcontrollerului care sunt necesari pentru a se conecta la dispozitivele periferice. Ele se cheama intrare/iesire deoarece se poate schimba functia unui pin in conformitate cu cerintele utilizatorului. Acesti registri sunt singurii registri din microcontroller a caror stare se poate verifica cu un voltmetru.
Oscilatorul este de obicei configurat sa foloseasca cristal de quartz sau rezonator ceramic pentru stabilitatea frecventei. De asemenea, poate opera si fara aceste stabilizatoare, ca de exemplu oscilatorul RC. Este important de zis ca instructiunile din program nu sunt executate la o rata impusa de oscilator, ci de cateva ori mai incet. Asta se intampla deoarece fiecare instructiune este executata in cativa pasi. Pentru unele microcontrollere, orice instructiune necesita acelasi numar de cicluri de executat, cat pentru altele este diferit. Prin urmare, daca sistemul foloseste cristal de quartz la o frecventa de 20 MHz, atunci timpul de executie al unei instructiuni nu este asteptatul 50nS, ci 200, 400 sau chiar 800 nS, depinzand de tipul microcontrollerului.
Temporizatorul Watchdog este conectat la un oscilator RC complet separat din cadrul microcontrollerului. Daca acesta este pornit, de fiecare data cand numara pana la sfarsitul programului, are loc resetarea circuitului iar programul isi incepe executia de la prima instructiune. Ideea este de a preveni acest lucru prin folosirea unei comenzi speciale. Aceasta idee este bazata pe faptul ca fiecare program este executat in bucle mai lungi sau mai scurte. Daca instructiunile care reseteaza watchdog sunt setate in locatiile corespunzatoare are programului atunci operatia temporizatorului nu va afecta executia programului.
2.1.3 Arduino
Arduino reprezinta o platforma open-source folosita pentru proiectele electronice. Ea consta dintr-o parte fizica, o placa programabila (de multe ori referita ca microcontroller) si o parte de software, sau IDE (Integrated Development Environment), folosita pentru a scrie si incarca codul scris pe placa propriu-zisa.
Platforma Arduino a devenit foarte populara pe masura ce oamenii au experimentat din ce in ce mai mult cu electronicele. Spre deosebire de placile de circuite progrababile anterioare, Arduino nu are nevoie de o piesa separata de hardware (numita programator) pentru a incarca codul nou pe placa, ci mai simplu, se foloseste un cablu USB sau mai nou, in cazul lui Arduino Yun, codul se poate incarca wireless.
2.1.3.1 Arhitectura
Exista o varietate de placi Arduino care pot fi folosite pentru scopuri diferite, dar majoritatea acestora au urmatoarele componente in comun:
Alimentarea (USB / Jack)
Fiecare placa Arduino are nevoie sa se conecteze la o sursa de tensiune. La toate tipurile de placi aceasta se face fie printr-un cablu USB fie Jack. De asemenea, conexiunea printr-un cablu USB permite si incarcarea codului pe placa. Se recomanda a nu se folosi o sursa de tensiune mai mare de 20 Volti deoarece voltajul recomandat pentru majoritatea placilor Arduino variaza intre 6 si 20 Volti.
Pinii (5V, 3.3V, GND, Analog, Digital, PWM, AREF)
Pinii de pe Arduino sunt locurile unde se conecteaza firele pentru a realiza un circuit, de obicei in concordanta cu o placa breadboard. De obicei prezinta capete de plastic care permit atasarea cu usurinta a firului in placa. Arduino are cateva tipuri diferite de pini, fiecare fiind folosit pentru functii specifice.
GND provine de la Ground care inseamna masa. Exista cativa pini GND pe placa, fiecare putand fi folosit pentru a lega la masa circuitul in sine.
5V si 3.3V reprezinta doua surse diferite de alimentare care pot fi folosite pentru circuite care nu necesita o tensiune mare;
Pinii analogici pot citi semnale de la senzori analogici, de exemplu senzorul de temperatura si il convertesc intr-o valoare digitala pe care o putem citi. Numarul lor, de asemenea, difera de la placa la placa;
Pinii digitali, spre deosebire de pinii analogici, pot fi folositi atat ca intrari digitale (apasarea unui buton) cat si ca iesiri digitale (aprinderea unui led) iar numarul lor nu este fix, ci variaza cu modelul placii;
Pinii PWM se comporta ca niste pini digitali obisnuiti dar pot fi folositi si pentru modulatia in frecventa a pulsurilor, lucru ce va fi detaliat mai tarziu la sectiunea „Arduino Yun”;
Pinul AREF, numele venind de la „Analog Reference” este folosit uneori pentru a seta o tensiune externa de referinta (intre 0 si 5 Volti) pentru limita superioara a pinilor analogici de intrare.
Butonul de reset
Orice placa Arduino prezinta un buton de reset, care, daca apasat, acesta va conecta pinul de reset si va restarta orice cod incarcat pe placa. Acesta poate fi foarte folositor daca codul dorit nu se repeta, si se poate folosi de mai multe ori.
Indicatorul LED de alimentare
Langa cuvantul indicator „ON” se placa de circuit, se afla un LED mic care se aprinde de fiecare data cand Arduino este conectat. Reprezinta un bun indicator in cazul in care circuitul realizat prezinta o problema.
Ledurile TX si RX
TX provine de la transmisie iar RX de la receptie. Aceste notatii apar destul de des in electronica pentru a indica pinii responsabili pentru comunicatia seriala. Aceste leduri vor oferi o indicatie clara atunci cand Arduino primeste sau transmite date, spre exemplu cand incarcam un nou program pe placa.
IC (Integrated Circuit)
Il putem considera „creierul” placii Arduino. Acesta difera in functie de tipul placii dar de obicei este un circuit seria ATmega de la compania ATMEL. Tipul acestuia este destul de important, deoarece, ca si tipul placii Arduino, este necesar sa se cunoasca inainte de incarcarea unui program.
Regulatorul de tensiune
Nu este indicat sa se opereze cu aceasta componenta, dar cand este necesar el are rolul de a controla cata tensiune lasam sa intre pe placa Arduino. Cum era de asteptat, are limitele lui, dar el ignora tensiunea extra care ar putea dauna circuitului.
O placa obisnuita Arduino consta dintr-un microcontroller AVR de tipul Atmel pe 8, 16 sau 32 de biti la care adauga componente complementare care faciliteaza programarea si incorporarea in alte circuite. Un aspect important al lui Arduino sunt conectorii standard, care permit conectarea placii la o varietate de module cunoscute sub denumirea de „shield-uri”. Unele module comunica cu placa Arduino direct prin intermediul pinilor dar multe dintre acestea sunt adresabile individual printr-o magistrala seriala, de unde vine si avantajul de a utiliza mai multe module in paralel.
Placile Arduino oficiale folosesc seria de chipuri megaAVR, mai exact ATmega8, ATmega168, ATmega 328, ATmega 1280 si ATmega 2560. Majoritatea placilor includ un regulator de tensiune de 5 Volti si un oscilator pe cristal de 16 MHz (sau rezonator ceramic in unele cazuri), desi unele design-uri cum ar fi „LillyPad” opereaza la 8 MHz.
La nivel conceptual, toate placile sunt programate printr-o conexiune seriala RX-232, dar modul in care este implementat difera in functie de varianta hardware. Placile Ardino pe serial contin un circuit care face nivelarea intre RS-232 si semnalele TTL.
Exista multe placi compatibile si derivate din Arduino. Unele au o functionalitate echivalenta cu aceasta si pot fi folosite in paralel. Altele imbunatatesc placa clasica prin adaugarea altor drivere, in special pentru proiectele scolare sau constructia de roboti.
2.1.3.2 Aduino Yun
Arduino Yun este o placa Arduino diferita de toate celelalte. Pe langa faptul ca programarea ei se face similar cu Arduino Leonardo si foloseste acelasi procesor, Atmel ATmega32U4, ea contine un procesor aditional, Atheros AR9331, care opereaza Linux si setul wireless OpenWrt. Incarcarea codului se realizeaza similar cu celelalte placi dar, odata configurat la o retea WiFi, Atmega32U4 poate fi programat wireless.
In continuare voi prezenta componentele principale ale acestei placi. Voi incepe printr-o ilustratie cu figura 5.
Fig. 6 Componentele principale ale lui Arduino Yun
In comparatie cu modelele mai vechi, Yun are un numar de caracteristici fizice si conectori suplimentari, cum ar fi un slot pentru card de tip microSD, un jack pentru Ethernet sau un conector USB. Pe acest model nu exista un conector standard, alimentarea facandu-se prin intermediul cablului USB.
De asemenea, nu exista un regulator 5V pentru a impiedica supratensiunea. Daca alimentam Yun cu o ternsiune mai mare de 5V, cel mai probabil acesta se va defecta. Legarea la sursa de tensiune se poate realiza si prin intermediul pinilor VIN sau 5V aflati pe placa dar se recomanda folosirea conexiunei USB de cate ori este posibil.
Conectorii SD, Ethernet si USB nu sunt conectati fizic la procesorul 32U4 ci la AR9331. Un avantaj puternic il reprezinta prezenta modului WiFi preinstalat pe placa, fapt ce ne permite conectarea la un router wireless sau folosirea placii pe post de punct de comunicatie (access point).
Fiecare dintre cele trei module, 32U4, WiFi si AR9331 au propriile lor butoane de reset. Exista cateva indicatoare LED pe Yun pentru alimentare, conexiunea WLAN, conexiunea WAN si USB. Pinul aditional 13 este conectat la unul dintre indicatoarele luminoase.
Fig. 7 Indicatoarele de pe Arduino Yun
Placa Yun ruleaza o distributie de Linux numita OpenWrt-Yun, baza pe OpenWrt. In timp ce este posibila configurarea sistemului din linia de comanda, exista de asemenea o pagina web de unde se pot configura multitudinea de optiuni disponibile. Interfata, numita LuCi, ofera acces la aproape toate optiunile necesare pentru intretinerea interfetei WiFi.
Datorita numarului limitat de scrieri ce pot fi facute in memoria non-volatila a placii Yun, se recomanda folosirea unei memorii externe cum ar fi cardul microSD pentru propriile scripturi, pagini web, etc. Pentru ca Yun sa acceseze si sa stocheze informatie pe drive prin procesorul 32U4, trebuie sa existe un director numit „arduino” in volumul root. Legat de serviciile web, OpenWrt-Yun foloseste arhitectura software REST pentru client si server, care expune parti diferite din hardware-ul Arduino prin intermediul unor adrese URL. Mai multe detalii se vor prezenta in capitolul „Medii de programare”.
2.2 Senzori
Un senzor este un traductor al carui scop este de a detecta unele caracteristici din mediul inconjurator. Poate detecta evenimente sau schimbari in cantitate si poate oferi un rezultat corespunzator, in general ca un semnal electric sau optic.
Senzorii sunt folositi in obiectele de uz zilnic, ca de exemplu butonul liftului (senzor tactil) sau in sistemele de siguranta pentru incendii (senzor de fum), printre nenumaratele aplicatii de care majoritatea oamenilor nu sunt constienti. Avand avantaje in industria circuitelor integrate si o utilizare flexibila pe platformele cu microcontrollere, folosirea senzorilor a evoluat dincolo de necesitatile esentiale (temperatura, presiune sau controlul debitului). Un exemplu de senzori mai avansati il reprezinta cei folositi in aviatie, pe trei axe, meniti sa ofere informatii legate de altitudine, directie si orientare, destinati sa inlocuiasca instrumentele giroscopice si sa ofere acuratete si siguranta. Pe de alta parte, senzorii analogici cum ar fi potentiometrele au inca un uz larg.
Sensibilitatea unui senzor indica cat de mult se schimba iesirea senzorului atunci cand cantitatea la intrarea masurata difera. Un senzor ideal indeplineste urmatoarele trei reguli:
– este sensibil la proprietatea masurata
– este insensibil la orice alta proprietate care poate aparea
– nu influenteaza proprietatea masurata
Astfel, sensibilitatea se poate defini ca fiind raportul dintre semnalul de iesire si proprietatea masurata. Pentru ca un senzor analogic sa fie procesat sau folosit intr-un echipament digital, semnalul trebuie convertit in semnal digital, folosind un convertor analog-digital. Rezolutia unui senzor reprezinta cea mai mica schimbare pe care acesta o poate detecta in masa pe care o masoara. Rezolutia este strans legata de precizia cu care masuratoarea este facuta.
Un senzor chimic reprezinta un dispozitiv analitic care poate oferi informatie despre compozitia chimica a mediului sau, fie in stare lichida sau gazoasa. Informatia este oferita sub forma unui semnal fizic masurabil care este corelat cu concentratia unei anumite compozitii chimice. Functionarea unui senzor chimic are de obicei doua etape principale: recunoastere si traducere. In faza de recunoastere, moleculele interactioneaza selectiv cu moleculele de receptionare incluse in structura elementului de recunoastere al senzorului. Consecutiv, un parametru fizic variaza iar aceasta variatie este raportata de catre traductorul care genereaza semnalul de iesire.
In biomedicina si biotehnologie, senzorii care pot detecta analitice datorita unei componente biologice, cum ar fi celule, proteine sau acid nucleic se numesc bio-senzori. Incapsularea unei componente biologice intr-un bio-senzor, prezinta o problema aparte fata de senzorii obisnuiti.
In prezentul proiect, am folosit patru senzori: de temperatura, de luminozitate, de calitatea aerului si de praf. Voi continua prin a prezenta pe fiecare dintre acestia.
2.2.1 Senzorul de temperatura
Senzorul de temperatura folosit in acest proiect este LM50. Acesta reprezinta un circuit integrat de precizie care poate masura valori cuprinse intre -40 grade Celsius si +125 grade Celsius folosind o singura sursa de tensiune. Voltajul la iesire al lui LM50 este proportional cu temperatura in Celsius si are o variatie de 500 mV. Aceasta variatie permite citirea temperaturilor negative fara a fi nevoie de o sursa de tensiune negativa. Tensiunea ideala de iesire a acestui senzor variaza de la +100 mV pana la +1.75V pentru o temperatua cuprinsa intre -40 si 120V.
Senzorul LM50 poate fi aplicat cu usurinta in acelasi mod ca oricare alt senzor de temperatura pe circuit integrat. Poate fi lipit de o suprafata iar temperatura lui va fi de aproximativ 0.2 grade Celsius peste temperatura suprafetei, asta presupunand ca temperatura ambientala este aproape egala cu temperatura suprafetei.
Daca temperatura aerului este mult mai mare sau mai mica decat cea a suprafetei, temperatura masurata de catre senzor ar fi o temperatura intermediala intre cea a aerului si cea a suprafetei. Pentru a asigura o conductivitate termica buna, partea din spate a senzorului este direct atasata la pinul GND.
Alternativ, senzorul poate fi montat intr-un tub de metal inchis la capat si poate fi scufundat intr-un tanc cu apa. Ca in cazul oricarui senzor, circuitul trebuie intretinut incapsulat si uscat pentru a evita scurgerile si coroziunea, mai ales cand acesta este folosit la temperaturi scazute cand poate aparea condensarea.
Pentru o analiza mai detaliata a performantelor acestui senzor se pot observa graficele din figura 4.
Fig. 8 Raspunsul termic al senzorului in aer liber si mediu inchis
Senzorul LM50 poate gestiona surplusul de capacitate foarte bine, nefiind necesar un condensator suplimentar. Fara alte precautii, acest senzor poate conduce orice incarcare capacitiva. El are un o impedanta nominala de iesire de 2 kOhmi. Coeficientul de temperatura al rezistoarelor de iesire este in jur de 1300ppm/grade Celsius.
Luand in calcul acest coeficient de temperatura si toleranta initiala a rezistoarelor, impedanta de iesire nu va depasi 4 kΩ. Intr-un mediu unde apare zgomotul s-ar putea sa fie necesara adaugarea unui condensator intre iesire si ground. Un condensator de 1 μF cu o impedanta de iesire de 4 kΩ va forma un filtru trece-jos la 40 Hz. Din moment ce constanta de timp termica a senzorului LM50 este mult mai mica decat constanta de timp de 25 milisecunde a filtrului RC, timpul de raspuns total al senzorului nu va fi afectat semnificativ. Pentru condensatoare mult mai mari, acest timp aditional va influenta timpul total de raspuns.
Fig. 9 Placa cu senzorul LM50
2.2.2 Senzorul de lumina
Senzorul de luminozitate folosit in acest proiect este fototranzistorul Evelight PT15-21C/TR8. Acesta, printre multe alte aspecte, ofera in special un timp de raspuns rapid, o sensibilitate crescuta si o capacitanta scazuta.
Fig. 10 Caracteristicile electro-optice senzorului PT15
Acest senzor a fost incorporat intr-o placa de comanda, cum se poate vedea in figura 10, prin adaugarea unor rezistente pentru protectie si sudarea legaturilor in pinii de tip „tata” pentru a usura conectarea acestuia. Este de recomandat folosirea lui sub o temperatura de 30 de grade Celsius si nu la mai mult de sapte zile de la expunerea in aer liber. Daca materialul absorbant (gel de silicon) a disparut sau senzorul nu a fost folosit la timp, este indicat sa fie tinut pentru 24 de ore intr-un mediu cu o temperatura de aproximativ 60 de grade Celsius.
Fig. 11 Senzorul de lumina
2.2.3 Senzorul de calitatea aerului
Senzorul pe care l-am ales pentru a monitoriza calitatea aerului din mediul inconjurator a fost „Grove Air Quality Sensor”. Acesta a fost fabricat pentru masurarea conditiei aerului dintr-un mediu inchis. Este responsabil pentru detectarea unei game largi de gaze nocive, cum ar fi monoxidul de carbon, alcoolul, acetona, lacul, formaldehida, s.a.
Datorita mecanismului de masurare, acest senzor nu poate sintetiza informatii specifice despre fiecare concentratie de gaz in parte, dar este suficient pentru a fi folosit in aplicatii care necesita doar rezultate calitative cum ar fi reimprospatarea automata a aerului sau recircularea automata a aerului.
Fig. 12 Senzorul de calitatea aerului
Marile avantaje ale acestui senzor sunt raspunsul la o gama larga de gaze, costul redus de achizitionare si durabilitatea. Se recomanda ca mediul sa fie curat la prima monitorizare a acestuia si desigur, expunerea pe lunga durata in aer foarte poluat poate slabi semnificativ sensibilitatea acestuia.
2.2.4 Senzorul de praf
Senzorul folosit pentru monitorizarea concentratiei de praf din atmosfera este „Grove Dust Sensor”. Acesta masoara nivelul de materie din aer calculand timpul LPO („Lo Pulse Occupancy”) in raport cu unitatea de timp. Timpul LPO este proportional cu concentratia particulelor de materie. Acest tip de senzor poate oferi informatii foarte precise pentru sistemele de purificare a aerului deoarece detecteaza si particulele ale caror diamentru este 1µm.
Acesta opereaza la o tensiune intre 4.75 V si 5.25 V, avand un curent in modul de asteptare de 90 mA iar raza de detectare a concentratiei de praf variaza intre 0 si 28000 pcs/litru. Temperatura maxima la care aceasta poate functiona corect este de 45 °C.
Fig. 13 Senzorul de praf
Se recomanda a se pozitiona cu fata in sus, un timp de incalzire de 3 minute inainte de folosire si a nu se interactiona cu acesta in timpul functionarii.
2.3 Servomotoare
Servomotoarele exista de ceva vreme printre noi si sunt folosite in numeroase aplicatii. Ele sunt mici ca marime dar ofera o putere mare si sunt foarte eficiente din punct de vedere al energiei. Datorita acestor trasaturi, ele pot fi folosite pentru a opera masini de jucarie, roboti sau avioane controlate de la distanta printr-o telecomanda sau unde radio. Ele sunt utilizate de asemenea in aplicatii industriale, in robotica, fabricarea pe linie, farmaceutica sau diverse servicii.
Servomotoarele sunt folosite mai ales pentru pozitia lor precisa si pentru controlul vitezei la cupluri mari. Ele pot fi caracterizate in funcite de motorul controlat de mecanismul servo, de exemplu daca este un motor de curent continuu atunci servomotorul se numeste servomotor de curent continuu, acelasi principiu aplicandu-se si pentru cele de curent alternativ.
Acestea sunt disponibile in game largi de puteri, de la o factiune de Watt pana la 100 Watti si prezinta cupluri ridicate. Rotorul unui servomotor este mic in diametru si cu o lungime mare astfel incat sa aiba o inertie scazuta. Pentru a intelege pe deplin cum functioneaza un servomotor, trebuie sa aruncam o privire inauntrul acestuia. Aici gasim o structura destul de simpla alcatuita dintr-un motor de curent continuu mic, un potentiometru si un circuit de control. Motorul este atasat printr-un ax la roata de control. Pe masura ce motorul se roteste, valoarea rezistentei potentiometrului se schimba astfel incat circuitul de control poate regla cu precizie cat de multa miscare sa existe si in ce directie.
Fig. 14 Componentele unui servomotor
Cand axul motorului se gaseste la pozitia dorita, alimentarea motorului este oprita. Altfel, motorul este intors in directia corespunzatoare. Pozitia dorita este trimisa prin pulsuri electrice prin firul de semnal. Viteza motorului este proportionala cu diferenta dintre pozitia actuala si pozitia dorita astfel incat daca motorul este aproape de pozitia destinata, acesta se va invarte incet, altfel el se va invarte repede. Acest lucru se numeste controlul proportional si inseamna ca motorul se va roti cu orice viteza necesara pentru a indeplini sarcina propusa.
Servomotoarele sunt controlate prin transmiterea unui puls electric de latime variabila, care se mai numeste si PWM, prin firul de control. Exista un puls minim, un puls maxim si o rata de repetare. De obicei un servomotor poate intoarce doar 90° in orice directie pentru o miscare totala de 180°. Pozitia neutra a motorului este definita ca pozitia unde servomotorul se poate roti cu acelasi numar de grade in sensul acelor de ceasornic si invers. Semnalul PWM trimis la motor determina pozitia axului, si bazandu-se pe durata pulsului prin firul de control, rotorul se va intoarce in pozitia dorita.
Un servomecanism este de fapt un sistem cu bucla inchisa fiind alcatuit dintr-un dispozitiv controlat, un dispozitiv de control, un senzor de iesire si un sistem de feedback. Termenul se aplica in general sistemelor unde pozitia si viteza reprezinta variabile ce pot fi controlate. Aici, in loc de a controla dispozitivul aplicand un semnal de intrare variabil, acesta este controlat printr-un semnal de feedback generat prin compararea semnalului de iesire cu semnalul de referinta.
Fig. 15 Mecanismul unui servomotor
Servomotorul asteapta un puls la fiecare 20 milisecunde iar lungimea pulsului va determina cat de mult acesta se va roti. Spre exemplu, un puls de 1.5 milisecunde va face motorul sa se intoarca la pozitia de 90°. Mai putin de 1.5 milisecunde il va roti la 0° iar mai mult la 180° dupa cum se poate observa si in figura de mai jos.
Fig. 16 Caracteristicile servomotorului la pulsuri diferite
Cand un servomotor este comandat, el se va misca la pozitia dorita si va mentine acea pozitie. Daca o forta exterioara apasa impotriva acestuia cand mentine pozitia, atunci servomotorul va rezista si nu va iesi din acea pozitie. Forta maxima pe care acesta o poate exercita se cheama cuplul servomotorului.
Dupa cum am mentionat mai sus, exista doua tipuri de sevomotoare: de curent continuu si de curent alternativ. Cele de curent alternativ pot face fata la cerinte mai mari si se folosesc de obicei la masinariile industriale in timp ce servomotoarele de curent continuu nu sunt menite pentru fluctuatii mari de curent si sunt folosite in aplicatii mai mici. General vorbind, motoarele de curent continuu sunt mult mai ieftine decat cele de curent alternativ. Exista si servomotoare care au fost construite doar pentru o rotatie continua, facilitand astfel miscarea unui robot. Acestea prezinta doua seturi de rulmenti pe partea exterioara a axului pentru a reduce frecarea si acces usor in ajustarea potentiometrului.
2.3.1 Servomotorul SG-5010
Acest servomotor este unul standard, cu un cuplu mare, care se poate roti la aproximativ 180 de grade (90 in fiecare directie). Acesta are o tensiune de alimentare intre 4.8 si 6 V maxim de curent continuu, la 4.8 V avand o viteza de 0.2 secunde/60 de grade iar la 6 V avand viteza de 0.16 secunde/60 de grade.
Raportul greutate/cuplu este impresionant, cantarind numai 39 de grame, fiind din plastic, si avand un cuplu de 5.5 kilograme / centimetru la o tensiune de alimentare de 5V. Dimensiunile acestui servomotor sunt de 40 milimetri lungime, 20 latime si 38 inaltime.
Fig. 17 Servomotorul SG-5010
2.3.2 Servomotorul Feetech FS5106B
Acest servomotor este asemanator cu cel prezentat mai sus, prezentand performate putin mai scazute. Cu un cuplu de 5 kilograme/cm la tensiunea de alimentare 5V, acesta are o viteza de rotatie de 0.18 secunde la 4.8V si 0.16 secunde la 6V. Dimensiunile acestuia sunt aceleasi ca la SG-5010 cantarind doar cu un gram mai mult.
Fig. 18 Servomotorul FS5106B
2.4 Driver motoare TB6612FNG
TB6612FNG este un driver dublu de motoare care este perfect pentru a interfata cu doua motoare de curent continuu mici, mai ales in aplicatiile cu microcontrollere, dar poate fi folosit de asemenea pentru a controla un singur motor pas cu pas bipolar. Puntile H bazate pe MOSFET sunt mult mai eficiente decat cele bazate pe BJT folosite in versiuni mai vechi ale driverelor, si permit ca o cantitate mai mare de curent sa ajunga la motoare si mai putina tensiune consumata de la sursa de alimentare.
Placa ce sustine acest driver, ofera acces direct la toate beneficiile de care dispune TB6612FNG si adauga condensatoare pe alimentare si protectie impotriva scurtcircuitului. Intr-o aplicatie tipica, conexiunile de alimentare sunt facute o parte a placii iar conexiunile de control pe cealalta. Toate intrarile de control sunt puse intern in starea „low”. Fiecare canal al motoarelor are doi pini pentru controlul directiei si un pin pentru controlul vitezei care accepta ca intrare un semnal PWM cu o frecventa de pana la 100kHz. Pinul STBY trebuie trecut in starea logica „1” pentru a scoate diverul din modul de asteptare.
Fig. 19 Driver-ul TB6612FNG
Tensiunea de alimentare logica (VCC) poate varia intre 2.7 si 5.5 V curent continuu in timp ce alimentarea motorului (VM) este limitata la un maxim de 15 V curent continuu. Curentul de iesire este clasat la 1.2A pe canal (sau maxim 3.2A pentru un puls rapid).
2.5 Multiplexorul CD74HC4067
Un multiplexor (denumit uneori si „selector”) este un circuit logic combinational care in cazul general prezinta 2^n intrari de date, I0, I1, …, I2^n-1, n intrari de selectie, S0, S1,…,Sn-1 si o iesire Z. Starea iesirii circuitului la un moment dat este aceeasi cu starea intrarii Ik, unde indicele k este echivalentul zecimal al numarului binar reprezentat de starile 0 si 1 ale intrarilor de selectie.
Fig. 20 Circuit multiplexor reprezentare
Pentru ca la iesire sa apara mereu numai intrarea selectata trebuie ca selectia sa se faca dupa stabilizarea intrarilor de adresa. Din acest motiv, multiplexoarele sunt prevazute cu o intrare suplimentara, intrarea de validare/strobare, G, care conditioneaza selectia fiecarei intrari. Ea are de fapt rolul de a comanda inhibarea/dezinhibarea functionarii circuitului. Aceasta intrare suplimentara poate fi folosita si la extinderea numarului de intrari, prin legarea mai multor circuite de multiplexare.
Multiplexorul pe care l-am ales in acest proiect este CD74HC4067 de la Texas Instruments si este un multiplexor analog pe 16 canale, fiind integrad pe o placa de comanda cum se poate vedea si in figura 7. El ne permite sa folosim 4 pini digitali pentru a controla starile celorlati 16 pini. Poate fi folosit in ambele directii si chiar cu alte interfete digitale. El foloseste tehnologia CMOS pentru a obtine viteze de operare asemanatoare cu LSTTL, avand un consum redus de putere.
Fig. 21 Multiplexorul 74HC4067
3. Medii de programare
In cadrul dezvoltarii unui produs software, un mediu de programare reprezinta un set de procese si unelte de programare folosite pentru a realiza programul software. De cele mai multe ori, se face referire si la termenul „IDE” care inseamna mediu de dezvoltare integrat. Acesta reprezinta un mediu care a fost impachetat ca o aplicatie software, de obicei fiind alcatuit dintr-un editor de cod, un compilator, un debugger si o interfata grafica (GUI). IDE-ul poate fi o aplicatie separata sau poate fi inclus ca parte in una sau mau multe aplicatii compatibile.
3.1 Arduino
Mediul de programare de la Arduino reprezinta o aplicatie cross-platform scrisa in limbajul de programare Java si care deriva din IDE-ul lui „Processing” si din platforma „Wiring”. A fost dezvoltat sa introduca notiunea de programare oricarui tip de utilizator, fie mai experimentat fie novice. Acesta include un editor de cod avand diverse proprietati ajutatoare, cum ar fi evidentierea sintaxelor, inchiderea/deschiderea parantezelor pentru functii sau alinierea automata a randurilor, fiind de asemenea capabil sa compileze si sa uploadeze codul scris pe placa Arduino cu doar o singura apasare. Un program sau o bucata de cod scrisa pentru Arduino poarta numele de „sketch”.
Programele Arduino sunt scrise in limbajul de programare bine cunoscut C/C++. De asemenea, acesta are implementat o librarie software numita „Wiring” care permite ca operatiile obisnuite de intrare/iesire sa fie mult mai usoare. Pentru a produce un program executabil ciclic, utilizatorul trebuie sa defineasca doua functii, care obligatoriu trebuie sa poarte numele de „setup()” si „loop()” pentru a fi recunoscute de compilator.
Functia „setup()” se ruleaza doar o singura data si are rolul de a initializa diversele setari pe care utilizatorul le impune cum ar fi declararea variabilelor, setarea pinilor sau initializarea comunicatiei seriale, in timp ce functia „loop()”, dupa cum sugereaza si numele, se executa repetitiv, citind valori, afisand iesiri, pana ce placa Arduino nu mai este alimentata la o sursa de tensiune. Ea este centrul oricarui program Arduino si realizeaza sarcina cea mai consistenta.
Pe langa aceste doua functii standard, utilizatorul poate implementa si functii proprii. O functie este o bucata de cod cu un nume si o serie de instructiuni care sunt executate atunci cand functia respectiva este apelata. Acestea pot fi scrise pentru a executa sarcini repetitive si pentru a reduce dezordinea intr-un program. Functiile sunt declarate mai intai prin declararea tipului functiei, acesta fiind reprezentand tipul valorii returnate, spre exemplu un intreg „int”. Daca nici o valoare nu va fi returnata, atunci tipul functiei va fi „void”.
Datorita asemanarii cu limbajul de programare C/C++ nu voi intra in detalii legate de structura si sintaxa, acestea fiind bine cunoscute in mediul de programare orientata pe obiect.
3.2 HTML/CSS
HTML (de la HyperText Markup Language) este un limbaj de marcare standard folosit pentru a crea pagini web. Browserele web poate citi fisierele HTML si le pot reda ca pagini cu continut visual sau audio. Acestea nu afiseaza codul HTML, mai exact tag-urile sau scripturile, ci le folosesc pentru a interpreta continutul unei pagini web. Acesta reprezinta o recomandare formala al „World Wide Web Consortium”, sau W3C, si in a fost adoptat in general de browserele majore, cum ar fi Internet Explorer de la Microsoft, sau Navigator de la Netscape, Chrome de la Google, Opera sau Mozilla Firefox.
Acest limbaj de marcare consta din cateva componente cheie (cum ar fi tag-urile si atributele lor), tipuri de date bazate pe caracter, referinte de caracter si referinte de entitate. O alta componenta importanta este declararea tipului documentului. Un document HTML prezinta o structura de elemente inlantuite, acestea putand fi recunoscute dupa simbolul cheie „<>” care apare la inceputul unui element si „</>” reprezentand inchiderea unei instructiuni. Exista o sumedenie de astfel de cuvinte cheie, cum ar fi „<p>” pentru inceperea unui paragraf, „<title>” pentru definirea titlului paginii, „<b>” pentru text ingrosat, s.a. pe care nu le voi enumera aici, fiecare avand atributele lor.
Pentru a usura munca dezvoltatorului web, de-alungul timpului au fost introduse un numar de editoare HTML, marea majoritate avand o interfata grafica prietenoasa care permit operatii destul de complexe micsorand astfel timpul realizare al unui proiect. Ultimul standard aparul se numeste HTML5 si a fost finalizat in anul 2014 reprezentand a cincea revizie completa a lui HTML. Acesta a fost menit sa imbunatateasca limbajul oferind suport pentru ultimele aparitii in domeniu in timp ce se mentine usor de citit de catre utilizatori si clar inteles de catre dispozitivele pe care opereaza.
CSS (Cascading Style Sheets) este un limbaj bazat pe etichete folosit pentru formatarea paginilor web. Desi cel mai des folosit pentru a schimba stilul paginilor web si a interfetelor scrise in HTML, limbajul poate fi aplicat la orice tip de document XML. CSS reprezinta o tehnologie populara folosita de aproape toate website-urile pentru a crea pagini vizuale atragatoare, interfete pentru aplicatiile web sau pentru cele mobile.
Acesta a fost dezvoltat avand ca scop primar separarea continutului documentului de prezentarea documentului, elemente ca fontul, culorile sau asezarea. Aceasta separare poate imbunatati accesibilitatea continutului, poate oferi mai multa flexibilitate si control, poate uni mai multe pagini web sa foloseasca acelasi fisier CSS si poate reduce complexitatea si repetitia intr-un continut structural, cum ar fi o enumerare de tablouri. Deoarece nu toate browserele recunosc corect codul CSS, au luat nastere tehnici de codificare care fie filtreaza anumite browsere fie se concentreaza pe unele specifice, ambele tehnici numindu-se filtre CSS.
Fara limbajul CSS, programatorii web ar trebui sa-si structureze paginile in limita puterilor limbajului HTML, spre exemplu ca niste tabele, fapt ce se poate realiza mult mai usor prin introducerea tuturor acestor proprietati intr-un singur fisier extern.
3.3 JavaScript
JavaScript, cunoscut si sub numele de ECMAScript, este un limbaj dinamic de programare. El este cel mai des folosit ca parte a browserelor web, ale carui implementari permite scripturilor de pe partea de client sa interactioneze cu utilizatorul, sa controleze browserul, sa comunice asincron si sa altereze continutul documentului afisat. De asemenea, el este considerat ca un limbaj de asambare al web-ului, o tinta a compilatoarelor sursa-la-sursa pentru ca poate realiza aplicatii web de partea clientului folosind alte limbaje de programare fiind suportat de toate browserele majore fara a necesita prezenta unor plugin-uri aditionale.
Este folosit de altfel si in programarea pe partea de server, in dezvoltarea jocurilor sau in crearea aplicatiilor mobile sau desktop. Javascript este clasificat ca un limbaj de script bazat pe prototip cu scriere dinamica si functii de prima-clasa. Amestecul acestor trasaturi il face un limbaj multi-paradigma, el fiind in stare sa suporte stiluri de programare orientata pe obiect, imperatigva si functionala.
In ciuda numelui asemanator, JavaScript si Java nu au nici o legatura intre ele si prezinta o semantica foarte diferita. Unele diferente majore ar fi ca Java are o scriere statica in timp ce JavaScript are una dinamica, Java este incarcat din cod compilat in timp ce JavaScript este incarcat ca un cod sursa ce poate fi citit de utilizator sau ca obiectele din Java sunt bazate pe clase in timp ce in JavaScript ele sunt bazate pe prototip.
Sintaxa limbajului Javascript deriva de fapt din limbajul C, in timp ce semnatica si design-ul sunt influentate de limbaje de programare „Self” si „Scheme”. JavaScript de asemenea este folosit in medii de programare care nu sunt bazate pe dezvoltarea web, cum ar fi documentele PDF, browsere pentru site-uri specifice sau aplicatii desktop. Masinile virtuale noi si rapide bazate pe JavaScript si platformele construite pe ele au crescut de asemenea popularitatea limbajului pentru aplicatiile web pe partea de server. Pe partea de client, JavaScript a fost implementat ca un limbaj interpretabil dar browserele mai recente sunt in stare sa realizeze compilare in timpul executiei.
In cadrul JavaScript, accesul la un debugger devine nesemnificativ atunci cand se dezvolta programre mari, non-triviale. Deoarece pot exista diferente de implementare intre multitudinea de browsere, este util sa existe acces la un debugger pentru fiecare browser vizat de o anumita aplicatie web. Astfel, debuggere de scripturi sunt disponibile pentru Internet Explorer, Firefox, Safari, Google sau Opera. Pentru Internet Explorer sunt disponibile trei debuggere si anume Microsoft Visual Studio, Microsoft Script Editor si Microsoft Script Debugger, ultimul fiind mai clasic decat celelalte doua.
Pe masura ce JavaScript a devenit cel mai popular limbaj pe partea de client care poate rula intr-un browser, el a evoluat intr-un limbaj intermediar pe care alte limbaje au pus tinta. Asta include atat limbajele nou create cat si cele deja existente, cum ar fi: „Objective-J”, „Processing.js”, „CoffeScript”, „Scala”, „Dart” sau „TypeScript”.
3.3 PuTTY/SSH
PuTTY este un emulator open-source, o consola seriala si o aplicatie pentru manipularea fisierelor pe retea. El suporta cateva protocoale de retea, cum ar fi SCP (Secure copy), SSH (Secure Shell), Telnet, rlogin sau conexiunea directa „Raw socket”. Se poate conecta de asemenea la un port serial. Initial a fost realizat pentru platforma Microsoft Windows, dar ulterior a fost portat si pe alte sisteme de operare, cum ar fi Linux.
PuTTY suporta diverse terminale remote si ofera control utilizatorului la cheia criptata SSH sau versiunea de protocol. Acesta poate simula secvente de control si permite un port forwarding local, de la distanta sau dinamic prin SSH. Nivelul de comunicatie in retea suporta IPv6 iar protocolul SSH suporta schema de compresie de la [anonimizat].
SSH reprezinta un protocol criptografic de retea pentru initierea sesiunilor shell pe masinile virtuale intr-un mod securizat. Asta permite utilizatorului sa ruleze comenzi pe in linia de comanda de pe masina fara ca acestea sa fie prezente fizic acolo. De asemenea, permite realizarea unui canal securizat la o retea nesecurizata intr-o arhitectura client-server prin conectarea unei aplicatii SSH pe partea de client cu un server SSH. Aplicatiile obisnuite includ autentificarea in linia de comanda si executarea comenzilor, dar in principiu orice serviciu de retea poate fi securizat cu SSH.
SSH a fost dezvoltat ca o inlocuire pentru Telnet si pentru alte protocoale nesecurizate care trimit informatii, mai ales parole, intr-un context deschis, facandu-le astfel susceptibile. Criptarea folosita de SSH intentioneaza sa ofere integritate si confidentialitate a datelor intr-o retea nesecurizata, cum ar fi Internetul.
Acest protocol foloseste o criptografie pe baza de cheie publica pentru a autentifica calculatorul de la distanta si pentru a permite utilizatorului sa acceseze informatia dorita. Exista mai multe cai de a utiliza SSH, una din ele fiind folosirea unor perechi de chei publice-private generate automat pentru a cripta o conexiune de retea iar apoi autentificarea prin parola. Alta metoda ar fi folosirea unei chei publice-private generate manual pentru autentificare, permitand astfel utilizatorilor sau programelor sa se autentifice fara a folosi o parola. In acest caz, oricine poate produce o pereche potrivita de chei diferite. Cheia publica este plasata pe toate calculatoarele care trebuie sa ofere acces proprietarului cheii potrivite. In timp ce autentificarea este bazata pe cheia privata, cheia in sine nu este transferata prin retea in timpul autentificarii. SSH verifica doar daca persoana care ofera cheia publicului este aceeasi persoana care detine cheia potrivita.
SSH este un protocol ce se poate utiliza pentru multe aplicatii pe multe platforme, incluzand majoritatea variantelor bazate pe Unix (Linux, OS X sau Solaris) cat si la fel de bine pe Microsoft Windows. Acesta poate fi folosit chiar si pentru implementarea unei conexiuni VPN (Virtual Private Network) fiind insa nevoie de server OpenSSH si o implementare pe partea de client.
4. Implementare
In aceasta sectiune voi expune realizarea practica a acestui proiect, intr-o ordine cronologica a enenimentelor, plecand de la configurarea microcontrollerului cu routerul si pana la realizarea machetei si asamblarea finala a circuitului.
4.1 Configurarea Arduino Yun cu ruterul TP-Link TL-WR818N
Arduino Yun are abilitatea de a se comporta ca un punct de acces, dar se poate conecta de asemenea la o retea existenta. El se poate conecta atat la retele necriptate cat si la cele care suporta securitate de tip WEP, WPA sau WPA2. Prima oara cand am alimentat placa Arduino, acesta a creat o retea WiFi numita „ArduinoYun-XXXXX” ce putea fi vazuta cu orice dispozitiv cu o placa de retea wireless.
Odata conectat la aceasta retea, acesta se poate accesa in orice browser fie adresa „http://arduino.local” fie pe ip-ul „192.168.240.1” unde se poate gasi panoul de control al placii.
Fig. 22 Accesare panou configurare Yun
Dupa cateva momente o pagina web va aparea ce va solicita o parola de autentificare, care initial este „arduino”. Apoi, isi va face prezenta un panou de control similar cu cel al unui ruter standard cu informatii de diagnosticare despre conexiunile curente ale retelei. Prima informatie oferita este despre interfata WiFi a lui Arduino iar a doua despre conexiunea Ethernet. Pentru urmatorul pas in proces, se apasa butonul de configurare.
Fig. 23 Panou configurare Yun
In pagina nou aparuta, voi configura placa Arduino Yun, dandu-i un nume unic si voi identifica reteaua la care acesta se va conecta. In campul „Yun Name” am introdus numele „Arduino Yun”, am ales o parola care va suprascrie parola standard „arduino”. De asemenea se poate seta si fusul orar in functie de tara aleasa. Mai jos se afla panoul unde putem conecta placa Arduino la ruterul ales, in cazul meu, numele ruterului fiind „YunNetwork”. Tot aici trebuie introdusa si parola routerului pentru a verifica ca utilizatorul care vrea sa se conecteze este acelasi cu detinatorul retelei.
Pentru a finaliza procesul, Arduino trebuie resetat apasandu-se butonul „Configure & Restart”, dupa care el se va alatura retelei principale.
Fig. 24 Configurarea retelei pentru Yun
In acest moment, Yun se afla in reteaua principala si ne putem conecta la el prin intermediul ruterului wireless accesand intr-o pagina web adresa ip pe care acesta o furnizeaza pentru placa Arduino. Datorita faptului ca de fiecare data cand Yun va fi repornit (fie intentionat sau nu) acestuia i se va aloca o alta adresa ip si din cauza inconvenietei de a afla mereu acea adresa pentru a accesa placa, am ales sa rezerv o adresa IP unica special pentru Arduino. Acest lucru se realizeaza foarte usor din panoul de control al ruterului, sectiunea „DHCP” iar apoi „Address Reservation” unde este necesara cunoasterea adresei MAC a placii de retea a lui Arduino. Aceasta se poate afla din interfata grafica unde am facut configurarea mai devreme. Acum, indiferent de situatie, adresa IP „192.168.0.100” va fi adresa pe care voi accesa Arduino Yun.
Fig. 25 Rezervare adresa IP
4.2 Instalarea IDE-ului Arduino
Urmatorul pas a fost instalarea aplicatiei oferita de Arduino pentru scrierea codului si incarcarea acestuia pe microcontroller. Acesta este open-source si se poate descarca dupa website-ul oficial. Se instaleaza foarte usor, nefiind nevoie de cunostinte aditionale. Arduino Yun fiind un model aparut recent, se recomanda descararea ultimei versiuni de IDE pentru ca aceasta sa includa librariile necesare.
La pornire se creeaza o fisa de lucru, numita sketch, automat. De fiecare data cand scriem cod sau manipulam un sketch, trebuie verificat daca in meniul „Tools” este ales modelul corespunzator si daca portul selectat este cel corect. In cazul in care alimentarea placii se face de la calculator printr-un cablu usb, atunci exista doua variante de incarcare a codului, pe doua porturi diferite, unul prin usb, celalalt prin intermediul ruterului, lucru ce va aparea si in IDE. Adresa care am setat-o mai devreme va trebui sa apara in submeniul „Ports”.
In acest moment se poate scrie cod ce poate fi incarcat cu usurinta in memoria microcontrollerului printr-o conexiune wireless.
4.3 Realizarea circuitului
Pentru a ilustra mai bine structura circuitului ce urmeaza a fi implementat, voi enumera mai intai piesele componente si utilitatea acestora in cadul proiectului. Componenta de baza a sistemului o reprezinta placa Arduino Yun ce are ca obiectiv principal colectarea de date de la diversii senzori folositi si coordonarea unor procese in functie de dorintele utilizatorului. Deoarece acest subiect a mai fost abordat in alte contexte, voi trece mai departe la urmatoarele componente.
Fara a fi nevoie de circuit auxiliar, cele trei servomotoare folosite (unul SG-5010 si doua Feetech FS5106B) sunt alimentate direct de la sursa de tensiune prin pinii „GND” si „VCC” (firele negru si rosu din figura x) iar al treilea pin, pinul se semnal, marcat cu verde in figura, este conectat direct la pinul PWM de pe Arduino. Ordinea celor trei este dupa cum urmeaza: primul servomotor este legat la pinul 5 PWM al placii, al doilea este legat la pinul 10 PWM iar cel de-al treilea la pinul 11 digital PWM. In functie de pulsul primit pe pinul de semnal, fiecare dintre cele trei servomotoare se va roti intr-o directie sau alta cu o anume viteza. Unghiul maxim de rotatie al axului unui servomotor este de maxim 180 de grade, adica 90 de grade intr-o directie si 90 intr-alta. Pentru a evita limitele de 0 si 180 de grade, am ales sa operez cu fiecare servomotor undeva intre 10 si 170 de grade rotatie. Tensiunea de alimentare pe care aceste motoare opereaza este intre 4.8 V si 6V. Daca aplic o tensiune mai ridicata decat valoarea suportata, acestea se vor arde iar o tensiune sub limita inferioara nu va oferi suficienta putere pentru ca motorul sa actioneze.
Aceste trei servomotoare prezinta un rol esential in dezvoltarea proiectului, fiecare dintre ele avand scopul de a inchide si a deschide o fereastra sau usa. Un servomotor va opera pe intrarea principala a casei, altul va fi responsabil pentru mobilitatea usii de garaj iar cel de-al treilea se va ocupa cu inchiderea si deschiderea ferestrelor. Aceste procese pot fi observate mai bine in capitolul legat de realizarea machetei.
Urmatorul set de componente importante il reprezinta senzorii. Fiecare dintre acestia opereaza diferit fata de ceilalti si ofera date ce trebuiesc interpretate in functie de anumiti factori, dar avand un singur lucru in comun si anume montarea pe circuit. Sistemul proiectat are implementat patru senzori, unul de temperatura, unul de luminozitate, unul pentru indicarea nivelului de praf si unul pentru masurarea calitatii aerului intr-un mediu inchis. Specificatiile tehnice ale acestora au fost prezentate in prima parte a acestui proiect. Fiecare dintre acesti senzori, dispune de trei pini, doi pentru alimentare (marcati cu negru, GND, si cu rosu VCC) si unul de semnal. Acesta are rolul de a furniza informatie legata de mediul inconjurator microcontrollerului, interpretarea acestei informatii facandu-se de catre utilizator.
Datorita faptului ca informatia pe care o furnizeaza acesti senzori este analogica, conectarea pinului de semnal se face pe pinii analogici ai placii Arduino. Primul senzor a fost conectat pe pinul „A0”, al doilea pe „A1”, al treilea pe „A2” si ultimul pe pinul „A3”. Fiindca acesti senzori nu necesita o tensiune mare de alimentare, ei nu au fost legati la o sursa externa ci la alimentarea interna a placii Arduino Yun, folosindu-se pinii „5V” si „GND” dupa cum se poate observa si in figura x.
Acesti senzori au rol atat in monitorizarea interiorului locuintei cat si in actionarea unor procese. Senzorul de temperatura intervine in reglarea turatiei celor doua ventilatoare (ce urmeaza a fi prezentate), senzorul de luminozitate influenteaza miscarea servomotorului pentru actionarea obloanelor pentru ferestre, senzorul de praf si cel de calitatea aerului, avand un rol deosebit de important asupra sanatatii persoanelor aflate in incinta, influenteaza de asemenea ventilatoarele pentru aerisire.
Cele doua ventilatoare pentru aerisire reprezinta, de altfel, o parte importanta in ceea ce priveste intretinerea calitatii aerului. Ele sunt de fapt, doua motorase de curent continuu, alimentate la o tensiune de 5 V si care nu necesita decat un curent de 0.2 A fiecare. Spre deosebire de servomotoarele prezentate mai devreme, acestea nu prezinta un circuit de control al turatiei. Din acest motiv, in implementarea lor, am ales folosirea unui driver pentru motoare pentru a controla directia si viteza cu care acestea invart.
Driverul folosit se cheama TB6612FNG, un driver pentru doua motoare mini, ale carui specificatii au fost prezentate in al doilea capitol al proiectului. Acesta dispune de 16 pini in total, fiecare avand functii diferite. Trei dintre acestia sunt pinii de „GND”. Nu este necesara conectarea tuturor trei, ci doar a unuia dintre ei. Pinii care sunt conectati la Arduino pentru control sunt in numar de 7 si anume: pinii „PWMA”, pentru motorul A, si „PWMB”, pentru B, sunt pinii care preiau semnalul PWM transmis de microcontroller si sunt conectati la pinii digitali PWM 3 si 9 ai placii; pinii „AIN1”, „AIN2”, „BIN1” si „BIN2” sunt in seturi de cate doi si influenteaza directia pe care fiecare ventilator se invarte, acestia fiind conectati la pinii digitali simplu 2, 4, 7, 8; si nu in cele din urma pinul „STBY” are o functie aparte si anume de a pune in asteptare functiile driver-ului, acesta fiind conectat la pinul 12 digital al placii Arduino.
Dupa cum se poate observa si in figura x, pe partea cealalta a placii de driver sunt dispusi pinii necesari pentru legarea celor doua motorase si pinii pentru alimentarea placii in sine. Pinii „A01”, „A02”, „B01” si „B02” (fire rosii si negre) reprezinta, in seturi de cate doi, alimentarea celor doua ventilatoare, in timp ce pinul „VMOT” (marcat cu rosu) realizeaza alimentarea driver-ului cu o tensiune de pana la 13.5 V. Acesta poate oferi un curent de 1 A pentru fiecare canal la o frecventa PWM de maxim 100kHz. Aceste specificatii au fost mai mult decat suficiente pentru a oferi un exemplu de functionare in sistemul realizat.
Pentru partea de iluminare a locuintei, am ales simularea simplista prin intermediul a cinci led-uri brick (cu rezistenta incorporata), de culori diferite. Functionarea acestora este rudimentara, fiecare avand doi pini, unul pentru masa, altul pentru nul.
Datorita numarului redus de pini ramasi pe placa Arduino, am optat pentru implementarea unui multiplexor pentru a mari acest numar. Astfel, am ales multiplexorul CD74HC4067 care ofera 16 canale de iesire (notate de la C0 la C15) fiind nevoie doar de patru pini legati la Arduino. Atat pinul „SIG” de semnal (care se foloseste doar in cazul in care dorim sa citim date de la cei 16 pini) cat si pinul „EN” se leaga la nul, sau la un pin care are nivelul logic „0”. Pinii „S0”, „S1”, „S2” si „S3” i-am legat la pinii digital 0, 1, 6 si 13 de pe placa Arduino, fiind evidentiati cu albastru deschis in figura x. Mai departe, aprinderea celor 5 led-uri se face in functie de combinatia logica a celor patru pini, lucru ce va fi descris in capitolul urmator.
Pentru o realizare mai putin incurcata a circuitului si pentru reducerea numarului de fire implicate, am folosit un breadboard de pentru interconectarea tuturor componentelor. Toate lucrurile descrise mai sus se poat observa cu usurinta in figura de mai jos ce prezinta arhitectura intregului circuit.
Fig. 25 Ilustrarea circuitului
Alimentarea circuitului se face de la o sursa externa de curent continuu de 6 Volti. Se recomanda folosirea unei alimentari externe deoarece placa Arduino nu poate intretine intregul circuit cu doar cei 5 V ai sai. Acestea fiind spuse si avand circuitul electric implementat, am sa trec mai departe la programarea microcontroller-ului.
4.4 Scrierea codului sursa
Pentru efectua operatiile corespunzatoare controlului motoarelor sau pentru implementarea corecta a comenzilor ce vor fi accesate mai tarziu prin intermediul unui browser, trebuie asigurat in primul rand ca avem librariile corespunzatoare incluse in prima parte a codului Arduino. Asadar, pentru controlul ventilatoarelor, respectiv a driver-ului, vom avea nevoie de libraria „Servo.h” iar pentru realizarea conexiunii client-server intre microcontroller-ul ATmega si microprocesorul AR9331 va fi nevoie de libraria „Bridge”.
Libraria „Servo” permite placii Arduino sa controleze servomotoarele de tip „hobby”. Acestea au integrate rotite si un ax ce poate fi manipulat cu precizie. Servomotoarele standard permit axului sa fie pozitionat la diferite unghiuri, de obicei intre 0 si 180 de grade si sa fie invartit cu o viteza variata. Aceasta librarie suporta pana la 12 motoare pe aproape toate placile Arduino si 48 pe placa Mega, fiind in stare de o coordonare simultana. Spre deosebire de versiunile mai vechi de placi, acum nu mai este nevoie de reimprospatarea manuala a servomotoarelor, aceasta facandu-se automat in interiorul librariei. Cateva comenzi standard sunt: „attach(int)” care transforma un pin intr-un driver pentru servo, apeleaza „pinMode” pentru a specifica starea pinului, si returneaza valoarea „0” daca este vreo problema; „detach” elibereaza pinul respectiv; „write(int)” seteaza unghiul in grade dupa care se face rotatia; „read()” returneaza ultima valoare setata cu functia „write”; „attached()” returneaza 1 daca servomotorul este atasat. Aceasta librarie ocupa in jur de 850 bytes din memoria flash. Chiar daca se ataseaza un servomotor, acesta nu va primi semnal de control pana cand prima pozitie nu va fi transmisa prin comanda „write”, acest lucru fiind necesar pentru a nu sari la o valoare arbitrara.
Libraria Bridge este o librarie standard pentru Yun, inclusa in IDE-ul Arduino, care face comunicarea intre OpenWRT si Arduino foarte usoara. Astfel, facilitand cumunicarea dintre cele doua procesoare, sketch-urile Arduino pot rula scripturi, comunica cu interfete de retea si primi informatii de la procesorul AR9331. Host-ul USB, interfetele de retea sau cardul SD nu sunt direct conectate la microcontroller-ul 32U4 ci la AR9331, libraria Bridge interfatand cu cele doua periferice, cum se poate observa mai clar in figura de mai jos.
Fig. 26 Rolul librariei Bridge
Acestea fiind spuse, prima parte a codului Arduino va arata in felul urmator:
Fig. 27 Header-ul codului in Arduino
Urmatorul pas il reprezinta instantierea unui server pentru a permite Yun-ului sa asculte dupa clientii conectati. Aceasta se face cu sintaxa „YunServer myserver”. Pentru controlul servomotoarelor am instantiat doua obiecte de tipul „Servo”, cate unul pentru fiecare ventilator. In functia „setup()”, am spus instantei de YunServer sa asculte dupa conexiuni venit numai de la localhost prin sintaxa „myserver.listenOnLocalhost()”. Conexiunile facute catre Linux vor fi pasate procesorului 32U4 pentru parsare si controlul pinilor. Acest lucru are loc pe portul 5555. Pornirea serverului se face prin comanda „myserver.begin()”. Tot aici am configurat toti pinii digitali folositi ca iesire si am atasat pentru fiecare servomotor un pin de semnal.
In functia care se executa la infinit, numita „loop()” am creat o instanta de YunClient pentru managementul conexiunii. Daca clientul se conecteaza, acesta va procesa cererea si va inchide conexiunea cand operatia s-a terminat.
Fig. 28 Crearea unei instante „Client”
Apoi voi face o verificare a clientului, prin comanda „if (client)” si in caz afirmativ voi prelua comanda pe care acesta o transmit intr-o variabila de tip String si voi elimina eventualele spatii libere care pot ingreuna interpretarea acesteia.
Fig. 29 Comanda de citit
De aici in colo voi implementa secvente de cod in functie de fiecare comanda primita de la client, spre exemplu daca textul primit si verificat este „temperatura” atunci voi afisa valoarea temperaturii direct in pagina web corespunzatoare, adica la adresa „192.168.0.100/arduino/temperatura” va aparea valoarea citita de la senzor. Pe acest principiu am tratat toate comenzile primite, si, dupa caz, trimit inapoi o valoare interpretata de mine.
Fig. 30 Structura generala a unei comenzi
Spre exemplu, pentru temperatura, valoarea citita de la senzor este doar o valoare analogica, cuprinsa intre 0 si 1023. Pentru a obtine parametru dorit masurat in grade Celsius am implementat o functie care preia aceasta valoare si in urma unor operatii matematice returneaza valoarea dorita.
Fig. 31 Convertirea valorii citite in grade Celsius
Datorita faptului ca toti senzorii se comporta la fel, pentru fiecare dintre ei am realizat o functie de interpretare a valorii citite asemanatoare cu cea de mai sus. Pentru senzorul de luminozitate spre exemplu am transformat rezultatul in lucsi cat despre senzorul de praf si cel de calitate a aerului am ales o exprimare in procente a valorii si setarea unor anumite praguri de siguranta prin implementarea unor valori de threshold.
Un alt lucru de mentionat este faptul ca, pentru usurarea comenzilor trimise catre servomotoare, am introdus functii de pornire, franare, reglare directie / viteza si o functie de asteptare. Implementarea acestora se poate observa mai amanuntit in cadrul atasamentului acestui proiect, sectiunea cod Arduino.
Pentru manipularea multiplexorului, implicit a led-urilor conectate, trebuie stiuta combinatia tabelului de adevar al unei functii cu patru variabile de intrare. Acest lucru este prezentat in figura x, unde „0” reprezinta starea „LOW” a pinului atasat iar „1” starea „HIGH”. In cazul meu, daca am un led conectat pe pinul 6 de iesire al multiplexorului, atunci pinul de pe Arduino atasat canalului S0 trebuie sa fie 0, pentru S1 sa fie 1, si asa mai departe. Aceasta se reflecta in codul scris prin sintaxa :
Fig. 32 Apriderea led-ului 6
unde s0 este pinul digital 0, s1 este 1, s2 este 6 iar s3 este pinul 13. Datorita faptului ca placa cu CD74HC4067 poate fi folosita atat ca multiplexor cat si ca demultiplexor, canalele „E” si „SIG” de pe aceasta trebuie sa fie setate pe „0” logic, sau pe starea „LOW”, fie legandu-le la nul fie la un pin de pe Arduino. Datorita numarului redus de pini disponibili, eu am ales legarea acestora la nul, pe placa breadboard in circuit (figura x).
Fig. 33 Tabelul de adevar al multiplexorului
La fel ca si mai sus, pentru o implementare mai clara, am realizat o functie care ia ca parametru direct canalul dorit si realizeaza comutarea starii pinilor corespunzatori.
Toate aceste structuri de instructiuni au fost impartite in doua module principale. Dupa cum am specificat in introducere, sistemul realizat are doua regimuri de functionare, si anume manual si automat. Pe mod automat, servomotoarele si ventilatoarele cat si led-urile actioneaza pe baza valorilor citite de la senzori. Utilizatorul poate schimba asta, prin accesarea unei comenzi ce va trece tot procesul pe mod manual, unde se pot controla procesele. Un exemplu bun este reglarea turatiei ventilatoarelor daca se doreste o aerisire mai puternica decat cea programata in mod normal. La fel si cu celelalte procese.
4.5 Accesare Yun dintr-o pagina web
Dintre toate beneficiile aduse de Arduino Yun, unul dintre cele mai interesante este folosirea acestuia pe post de server. Asta inseamna ca odata ce Yun a fost configurat prin WiFi, se poate crea o pagina web ce va fi urcata cu usurinta pe cardul SD (unde exista destul spatiu) si poate fi accesata prin intermediul unui browser. De asemenea, toti pinii obisnuiti ai lui Yun pot fi controlati din pagina web folosind limbajul JavaScript.
Din moment ce voi folosi HTML si JavaScript, dispozitivul client poate fi orice dispozitiv ce se poate conecta la o retea, deci calculatoare, tablete, Iphone, dispozitive cu Android, telefoane cu Windows, practic orice.
Cum am mentionat mai sus, Yun poate fi folosit prin intermediul unui cablu USB ca orice alta placa Arduino dar eu am ales o abordare prin wireless. In primul rand, fisierul care contine codul Arduino, ce are extensia „.ino”, trebuie sa se afle continut intr-un director cu acelasi nume. Tot in acest director, trebuie creat un alt director cu numele de „www” ale carui continut vor fi urcate automat pe cardul SD la momentul incarcarii codului. Aceasta este o sintaxa standard pe care Arduino o recunoaste doar daca incarcarea codului se face prin WiFi si nu prin cablul USB. De exemplu daca fisierul cu codul Arduino se cheama „mysketch”, directorul „www” va fi creat pe cardul SD in locatia „SD/arduino/www/mysketch”. Acest proces se poate realiza si manual si rezultatul va fi acelasi.
Important de mentionat este faptul ca in lipsa cardului SD pe placa Arduino, IDE-ul va returna eroare in care va mentiona ca doar codul sursa a fost incarcat nu si continutul directorului „www”, adica website-ul.
Continutul directorului „www” poate fi accesat de pe cardul SD mergand la adresa „http://arduinoyun.local/sd/mysketch” sau „192.168.0.100/local/sd/mysketch”.
Fig. 34 Ierarhia webserver-ului
Microprocesorul AR9331 de pe placa Arduino ofera distributie de Linux si mai exact OpenWrt. Acesta este inalnit de obicei la rutere si ofera un manager de pachete inclus care permite instalarea pachetelor dintr-o sursa externa. De asemenea este utilizat si ca un server SSH, o conexiune VPN sau chiar ca un client BitTorrent. Fiind foarte flexibil el poate fi instalat pe orice tip de ruter.
OpenWrt include un server SSH, al carui terminal poate fi accesat, si o interfata web. Accesarea terminalului se poate face folosind un client SSH cum ar fi PuTTY pe platforma Windows, sau direct linia de comanda pe Linux. OpenWrt include programe utile cum ar fi editorul de text si se pot rula scripturi diverse cu o mare usurinta. De asemenea, accesand managerul de pachete cu numele de „opkg” se pot alege cu simplitate dintre miile de pachete disponibile in „depozit”.
De asemenea, pachetele se pot instala si prin interfata web inclusa, numita „LuCI”, care permite accesul la operatii mai complexe cum ar fi cautarea unui pachet specific, ordonarea unei liste sau instalarea printr-o simpla apasare de buton a pachetului respectiv.
In prezentul proiect, am accesat des terminalul SSH, prin PuTTY, pentru a gestiona fisierele de pe cardul microSD, intrucat la fiecare revizie a codului urcat, am preferat sa fac un nou director si fisier pentru a evita eventualele conflictele de suprascriere. Astfel, s-a ivit problema aparitiei unui numar mare de fisiere pe cardul SD, fisiere ce nu imi mai foloseau si care trebuiau sterse.
Aceasta operatie include cativa pasi simpli. In primul rand accesarea terminalului se face prin introducerea in PuTTY a adresei IP a Yun-ului pe care am setat-o mai devreme (figura x).
Fig. 35 Fereastra de comanda PuTTY
Dupa care aceea terminalul cere o autentificare, id-ul standard fiind „root” iar parola reprezinta parola aleasa de noi pentru accesarea placii Arduino. Dupa care urmeaza o serie de comenzi pentru accesarea directorului unde se afla fisierele ce trebuiesc sterse, si anume am folosit comanda „cd sda1/arduino/www” pentru accesarea directorului corespunzator si comanda „rm –r nume_director” pentru a inlatura directorul dorit; unde „sda1” reprezinta numele cardului microSD (figura x). In acest fel putem gestiona cu usurinta si in siguranta continutul cardului SD.
Fig. 36 Accesare SDcard prin SSH
Pentru accesul comenzilor implementate in codul Arduino, JavaScript ofera o implementare destul de simpla prin introducerea scripturilor. Spre exemplu, urmatoarea functie incarca continutul paginii „192.168.0.100/arduino/aprindereLed” si, implementata intr-un container cum ar fi un buton, poate executa comanda pe care am scris-o in Arduino.
Fig. 37 Crearea unui script
In schimb, pentru afisarea unei valori citite de la un senzor trebuie retinut id-ul continutului cand se implementeaza functia JavaScript si trebuie apelat oriunde in pagina web dupa sintaxa care urmeaza:
Fig. 38 Folosirea continutului dintr-o functie JavaScript
Avand aceste cunostinte de baza despre cum se citesc sau scrie comenzi prin intermediul unei interfete web catre Arduino, am sa trec mai departe la partea de dezvoltare a website-ului unde vor fi incluse mai multe elemente, fie ce tin strict de partea vizuala, fie ce tin de comandarea si monitorizarea proceselor.
4.6 Realizarea website-ului
Pentru a facilita comunicarea dintre sistemul realizat si utilizator, este necesara o interfata web simpla, usor de inteles. Aceasta a fost realizata prin expunerea tuturor elementelor cheie ce tin de functionalitatea sistemului. Pentru a fi cat mai reprezentative, acestea sunt prezentate prin intermediul unor imagini sau animatii sugestive, lucru ce se poate observa si in figura x.
Prin urmare, panoul principal este alcatuit din patru parti principale si anume: sectiunea unde sunt afisate toate valorile primite de la senzori si cu unitatile lor de masura, sectiunea de aprindere/stingere a led-urilor din cele trei camere ale machetei, sectiunea de control al servomotoarelor ce actioneaza usile si ferestrele si sectiunea de reglare a ventilatoarelor pentru controlul temperaturii si aerisirea camerei.
Dintre aceste patru sectiuni, trei pot fi manipulate de utilizator, dupa cum urmeaza:
Controlul luminozitatii dintr-o camera este simulat prin aprinderea sau stingerea led-urilor, lucru ce poate fi realizat prin apasarea pe imaginea ce sugereaza un bec. Dupa apasare, in dreapta acestuia, apare o alta imagine care indica daca becul este aprins sau nu, sugerat de cele doua valori „ON” si „OFF”.
Reglarea ventilatiei se face prin manipularea turatiei celor doua ventilatoare, fixate in partea din fata si spate sus a machetei. Acestea pot fi actionate individual dar este de recomandat ca cele doua sa aiba aceeasi viteza de rotatie. Practic, aceasta control este realizat prin ajustarea unui slider avand o sensibilitate de cinci procente in reglarea turatiei. Mai mult, intregul mecanism este sugerat de doua animatii, doua ventilatoare, care se rotesc cu viteza impusa de slider.
Monitorizarea machetei este sugerata de sectiunea alcatuita din patru elemente, cate unul pentru fiecare senzor. Pentru temperatura valoarea este reprezentata in grade Celsius, pentru iluminarea camerei in lucsi iar pentru nivelul de praf si calitatea aerului am ales o reprezentare in procente deoarece nu exista o unitate de masura specifica pentru acestea. Aceste valori au o perioada de reimprospatare foarte mica, de sub 1 secunda, astfel se poate verifica daca manipularea celorlalte procese au efect.
In final, actionarea usii principale a machetei, a usii de garaj si a ferestrelor se poate realiza la fel de usor ca si la celelalte elemente. Fiecare dintre acestea dispun de o imagine sugestiva si cu un buton reprezentat printr-un lacat, care, in functie de starea procesului, arata inchis sau deschis.
Toate aceste elemente sunt incluse intr-o pagina a website-ului realizat, impreuna cu alte sectiuni de descriere a proceselor, de prezentare a unei galerii foto sau altor caracteristici.
De asemnea, exista si o categorie numita „chart-uri” unde sunt realizate niste grafice pe baza valorilor senzorilor intr-o unitate de timp.
Fig. 39 Interfata de control
Realizarea codului in HTML si CSS cat si implementarea imaginilor si a animatilor necesare, adica lucrul ce tine strict de partea vizuala au fost realizate in editorul HTML intitulat „WYSIWYG”, numele reprezentand de altfel si tehnica in sine. Acesta pune la dispozitie o diversitate de elemente pentru crearea unei pagini web dinamice, bine pusa la punct.
Aplicand acestor elemente vizuale toate comenzile specifice realizate in limbajul JavaScript (detalierea lor fiind capitolul anterior) a rezultat o interfata clara, simplista, ce poate fi folosita cu usurinta pentru a monitoriza si controla intregul sistem.
4.7 Realizarea machetei si instalarea sistemului
Cu exceptia fundatiei care este din lemn de brad, intreaga macheta a fost realizata din lemn de balsa, un material lemnos rigid ce prezinta o rezistenta medie si o capacitate de prelucrare decenta. Acesta este cel mai des folosit in realizarea machetelor de orice tip si se gaseste pe piata la grosimi intre 1 mm si 10 mm in fie dimensiuni standard de 10×100 cm fie ca baghete patratoase.
Dimensiunile machetei realizate sunt urmatoarele: 45 cm lungime, 30 cm latime, 30 cm inaltime corpul principal, 25 cm inaltime corpul secundar si 20 inaltime corpul mic (garajul). Usa principala si cea a garajului sunt prinse pe interior cu niste balamale flexibile, pentru o actionare usoara de catre servomotorul respectiv.
Procesul realizarii machetei a necesitat o diversitate de unelte cum ar fi holzsuruburile pentru fixarea fundatiei si a foilor de lemn pentru pereti, corniere din brad pentru colturile corpurilor si pentru acoperis, cutter pentru taierea lemnului de balsa, aracet de lemn pentru lipere, plastic transparent pentru geamurile ferestrelor, bormasina cu acumulator pentru fixarea surburilor, ruleta pentru masurare, compas pentru trasarea unghiurilor, cleme pentru fixarea circuitului in interiorul machetei, prelungitoare de fire si multe altele. Toate acestea au contribuit la realizarea unei locuinte ideale in miniatura (figura x) avand suficient spatiu pentru instalarea circuitului realizat in capitolele anterioare.
Fig. 40 Macheta proiectului
5. Posibilitati de dezvoltare
Pe masura ce am avansat in dezvoltarea proiectului, am realizat ca aceasta tematica permite o dezvoltare pe viitor destul de diversificata. Plecand de la inlocuirea senzorilor sau introducerea altor noi, ca de exemplu senzor de fum sau de umiditate, pana la inlocuirea servomotoarelor cu unele mai puternice pentru a realiza alte sarcini, acest proiect poate suferi o schimbare majora daca se doreste.
O idee pe care o consider interesanta si utila, este alimentarea intregului sistem de la o sursa pe baterii, reincarcabila, astfel incat in eventualitatea unei pene de curent, el sa ramana complet functinal in regim automat. Desigur, in acest caz, controlul manual nu ar functiona deoarece este nevoie de un ruter pentru a face comunicarea posibila.
O alta imbunatatire ar fi instalarea unui sistem de incalzire, fie inclus in podea, fie pe pereti, care impreuna cu senzorul de temperatura si cu instalatia de aerisire ar constitui un modul intreg ce ar avea ca scop strict intretinerea temperaturii.
In ceea ce priveste autonomia, o alternativa la alimentarea circuitului pe baterii, ar fi instalarea unor panouri solare pe acoperisul machetei care sa incarce un generator de unde va fi alimentat circuitul. Aceasta metoda este mai costisitoare, dar atat timp cat exista suficienta lumina reflectata pe acoperisul machetei, nu se va pune problema unei pene de curent sau a descararii bateriilor.
Macheta in sine, permite introducerea unor instalatii suplimentare, cum ar fi spre exemplu un sistem de irigare, care este responsabil de udarea unei portiuni de gazon, sau a unui ghiveci cu flori, pe baza unor valori citite de la senzorul de umiditate montat pe suprafata de pamant. De asemenea, lemnul utilizat pentru realizarea machetei este foarte usor de manipulat, acest lucru permitand adaugarea unor noi sectiuni in peretii machetei sau pe acoperis, ca de exemplu un cos de fum cu un sistem de ventilatie propriu.
Dezvoltarea pe viitor acestui proiect este limitata doar de imaginatia utilizatorului, exitand o multitudine de posibilitati, unele mai usor de implementat fara multe schimbari in schema circuitului electric sau in programarea microcontroller-ului, altele putin mai dificile ce necesita un minim de cunostinte pentru a putea fi realizate.
6. Concluzii finale
Din ce in ce mai multe aparate din uzul zilnic al intregii populatii sunt bazate pe calculatoare. Aceasta moda se poate vedea in sectiuni diferite ale echipamentului folosit in locuinte. Cele mai multe sisteme de comunicatie sunt bazate pe componente electronice care ruleaza programe specifice.
Prin urmare, aparatele bazate pe electronice sunt mai de incredere decat cele mecanice, acestea neavand parte de acelasi nivel de deteriorare fizica. De asemenea prezinta posibilitatea modificarii comportarii unui sistem dupa ce acesta a fost construit mai usor.
Directia de dezvoltare, destul de izolata si specifica la inceput, a devenit colaborativa bazandu-se pe dispozitive cu scopuri multiple. In ziua de astazi, majoritatea telefoanelor mobile pe langa functia de apelare, pot de asemenea sa se conecteze la Internet, sa realizeze fotografii, sa ruleze diverse aplicatii sau sa interactioneze cu alte dispozitive prin intermediul Internetului sau a unor retele wireless de comunicare. Producerea cator mai multe aparate digitale s-a realizat intr-o maniera haotica, multe tehnologii dezvoltandu-se in paralel rezultand astfel o diversitate de standarde de comunicare. Astfel, pentru a realiza o legatura intre acestea este nevoie de un sistem care poate interfata cu orice tehnologie necesara.
Acest proiect ilustreaza o abordare moderna a automatizarii unei locuinte prin simularea la scara mica a unui sistem automatizat de monitorizare si intretinere prin control de la distanta. In cadrul acestuia au fost prezentate atat descrierea unor mecanisme de comunicare moderne intre dispozitive cat si implementarea fizica a circuitului electric realizat. Proiectul si-a atins toate obiectivele propuse, printre cele mai importante fiind realizarea unei comunicari usoare intre sistem si utilizator sau implementarea flexibila a sistemului in orice incinta.
In final, performantele sistemului au fost analizate, limitarile hardware evidentiate, specificandu-se de asemenea o directie de dezvoltare pe viitor a acestuia.
Bibliografie
[1] „A Brief History of Automatic Control”, Stuart Bennet, 1996
[1] „Tehnica reglarii automate”, Alina-Simona Baiesu, Ed. Matrixrom, 2012
https://en.wikipedia.org/wiki/Arduino
http://www.arduino.cc/en/Guide/ArduinoYun
http://www.ti.com/lit/ds/symlink/lm50.pdf
http://www.everlight.com/file/ProductFile/PT15-21C-TR8.pdf
http://www.seeedstudio.com/wiki/Grove_-_Air_Quality_Sensor
http://www.seeedstudio.com/wiki/Grove_-_Dust_Sensor
http://www.jameco.com/jameco/workshop/howitworks/how-servo-motors-work.html
[3] „Circuite logice si comenzi secventiale”, F. Moldoveanu, D. Floroian, Ed. Universitatii Transilvania, Brasov, 2003
https://en.wikipedia.org/?title=JavaScript
https://en.wikipedia.org/wiki/Secure_Shell
https://en.wikipedia.org/wiki/Cascading_Style_Sheets
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: Realizarea Unui Sistem Ce Permite Automatizarea Si Monitorizarea Unor Procese din Cadrul Unei Locuinte (ID: 163330)
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.
