Proiectarea modelului unui sistem de monitorizare si control [303790]
Capitolul 3.
Proiectarea modelului unui sistem de monitorizare si control
Proiectarea modelului unui minisistem de monitorizare si control pornește de la premisele concluziilor capitolului anterior. In partea teoretica a [anonimizat]: traductori, [anonimizat], [anonimizat], Internet (figura 3.1). PC-ul sau sistemul de calcul va necesita o interfața prin intermediul căreia sa poată face monitorizarea si controlul asupra microcontrolerului aflat la distanta.
Figura 3.1 [anonimizat] [5],[6],[10]:
proiectarea si realizarea sistemului mecanic si sistemului de electric;
[anonimizat];
[anonimizat];
testarea si validarea sistemului.
[anonimizat] o prezentare detaliata a [anonimizat].
3.1 Proiectarea si descrierea componentelor utilizate la construcția sistemului
Proiectarea electronica a fost realizata in urmărind precizările din [5], [6], [10].
Electronica sistemului de monitorizare si control are la baza o [anonimizat] 2560 [16]. [anonimizat] o eventuala multiplexare a pinilor de date intr-o dezvoltare ulterioara a proiectului, existând suficienta rezerva. [anonimizat] o dezvoltare ulterioara a programului. Sistemul mai conține o [anonimizat], care este o interfața intre placa cu microcontroler Arduino Mega si o [anonimizat], la internet. [anonimizat], W5100, pentru a putea conecta la rețea întreaga gama de microcontrolere produse de către Atmel si asamblate pe placi de dezvoltare de către Arduino.
Astfel, structura hardware a modelului sistemului de monitorizare si control este prezentă în schema bloc din figura 3.2.
Figura 3.2. Schema bloc a sistemului de monitorizare si control
Din figura 16 [anonimizat]:
unitatea centrală realizată cu o placă de dezvoltare Arduino Mega;
[anonimizat], shield Ethernet pentru conectarea in rețea sau internet;
[anonimizat] ([anonimizat], iluminat, [anonimizat].).
În continuare se vor prezenta pe rând aceste componente.
3.1.1. Unitatea centrală a modelului sistem de monitorizare si control.
Unitatea centrală utilizată este formată dintr-o placă de dezvoltare de tip Arduino. Arduino este o platforma electronica de dezvoltare, bazata pe hardware si software ușor de folosit. Astfel plăcile sunt capabile sa citească intrări, senzori, si sa transforme aceasta intrare in ieșire activând un motor, releu, LED, sau chiar publicând ceva in mediul online. Pentru aceasta Arduino a dezvoltat limbajul de programare si interfața de dezvoltare, bazate pe proiectele Wiring si originalul Processing, proiect dezvoltat de MIT (Massachusetts Institute of Technology). Placa aleasa este Arduino Mega 2560 (Figura3.3) bazată pe microcontrolerul ATmega2560 [16].
Figura 3.3. Placă de dezvoltare Arduino Mega 2560.
Arduino Mega 2560 oferă 54 de intrări/ieșiri digitale (din care 15 pot fi utilizate ca ieșiri PWM (Pulse-Width Modulation). Mega mai conține 16 intrări analogice cu rezoluția de 10 biți (eșantionare pe 1024 nivele), precum și 4 porturi UART, un oscilator de 16 MHZ, o conexiune USB, un conector ICSP, un buton de reset precum si o intrare jack pentru o sursă de alimentare externă care asigură o putere de alimentare mai mare, daca este necesar.
Pinii digitali sunt bidirecționali, sensul de circulație al datelor (de intrare sau ieșire) realizându-se prin folosirea funcțiilor pinMode() pentru stabilirea direcției de circulație a informației, digitalRead() pentru citirea unei intrări digitale, respectiv digitalWrite() pentru scrierea unei ieșiri digitale. Fiecare pin suporta un curent de maxim 40mA.
O parte din pini sunt realizați astfel încât să poată realiza și funcții standard speciale:
Porturi seriale (RX – receiver, T – transmitter):
Serial 0: 0 (RX) și 1 (TX);
Serial 1: 19 (RX) și 18 (TX);
Serial 2: 17 (RX) și 16 (TX);
Serial 3: 15 (RX) și 14 (TX)
Întrerupătoare externe (funcția folosită pentru întreruperi este attachIntreruupt()):
2 (întreruperea 0);
3 (întreruperea 1);
21 (întreruperea 2);
20 (întreruperea 3);
19 (întreruperea 4);
18 (întreruperea 5).
Acești pini pot fi configurați sa declanșeze o întrerupere la nivel jos, o schimbare de nivel, sau un front crescător sau scăzător.
SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Acești pini suportă protocolul de comunicare SPI folosindu-se librăria SPI library.
LED 13: este un LED încorporat pe plăcuța de dezvoltare, conectat totodată la pinul digital 13. Când pinul ia valoarea 1 logic LED-ul este aprins, iar când ia valoarea 0 stins;
I2C: 20 (SDA) și 21 (SCL) pentru comunicația cu alte echipamente care suporta standardul I2C. SDA fiind linia de date, SCL linia de sincronizare – clock. I2C este suportata de către Arduino Mega cu incarcarea librăriei Wire;
AREF: Tensiune de referința pentru intrările analogice, funcția fiind analogReference();
PWM: pinii 2 pana la 13 si 44 la 46 pot fi folosiți ca ieșiri de 8biti PWM;
Reset: Punerea liniei reset la nivel de semnal jos va reseta microcontrolerul;
Alimentarea sistemului: Placa de dezvoltare poate fi alimentată atât prin intermediul USB, cât și prin intermediul unei surse externe de putere. Sursa de putere este selectată în mod automat. La rândul ei, sursa externă de alimentare poate fii atât o sursă dotată cu o punte pentru a redresa curentul alternativ în curent continuu, cât și o baterie. Sistemul poate fi alimentat extern, la o tensiune cuprinsă între 7 și 12 V. Nu se recomandă utilizarea unei tensiunii mai mici de 7V pentru sursa externă deoarece tensiunea la bornele pinilor microcontrolerului ar putea să scadă sub 5 V. Acest lucru se întâmplă din cauza electronii folosite pentru stabilizarea nivelului de tensiune;
Memoria: ATmega2560 are o memorie flash de 256kB, utilizată la stocarea codului sursă (dintre care 8kB sunt rezervați pentru sectorul de boot al sistemului), 8kB SRAM și 4KB de EEPROM (pentru scrierea acestei memorii se folosește librăria EEPROM).
3.1.2 Interfața de comunicație Ethernet
Interfața Arduino Ethernet conectează orice placa de dezvoltare Arduino la o rețea LAN, sau la internet.
Figura 3.4. Shield Ethernet W5100
Interfața aleasa pentru sistem este o interfața intre Arduino si Ethernet bazata pe cipul W5100, de la Wiznet (figura 3.4). Cipul Wiznet W5100 furnizează o stiva de rețea capabila sa suporte protocoalele TCP si UDP. El suporta maximum patru conexiuni socket simultane. W5100 folosește librăria Arduino Ethernet pentru a scrie programele de conexiune la rețea si internet.
Interfața se conectează la Arduino folosind conexiunile de pe conectorul ICSP, lăsând astfel pinii de semnale analogice si digitale liberi. Tot pe placa de interfața aleasa mai exista si un slot de card micro-SD, care poate fi utilizat pentru stocare fișiere. Cititorul de SD card este disponibil după încărcarea librăriei SD. Interfața W5100 are modul PoE (Power over Ethernet) care permite conectarea cu cablu tip Cat5:
compatibilitate cu standardul IEEE802.3af
ieșire de zgomot mic (100mVpp)
tensiune de intrare intre 36 si 57V
protecție la supraîncărcare si scurtcircuit
ieșire de 9V
convertor DC/DC de eficienta ridicata, tipic 75% la 50% incarnare
izolație intre intrare si ieșire: 1500V
Placa de dezvoltare Arduino Mega comunica cu cipul de Ethernet W5100, cat si cu controlerul de SD card prin busul SPI. Pentru selecția (SS) chipului Arduino Mega va selecta pinul 10 pentru Ethernet, pinul 4 fiind dedicat SD card-ului. Daca unul din cele doua controlere nu este folosit , este bine sa fie neselectat din program, aceasta se poate face punând pinul respectiv in stare 1 logic.[17]
3.1.3 Senzorii
Pentru a putea controla mediul care este monitorizat am folosit mai mulți senzori:
Senzor de temperatura (DHT22)
Senzor de umiditate (DHT22)
Senzor de lumina (PT15-21C/TR8)
Senzor de mișcare pasiv cu infraroșu HC-SR501
3.1.3.1 Senzorul de temperatura si umiditate DHT22
Senzorul pe care l-am ales pentru sistemul dezvoltat este un senzor de tip capacitiv care poate sa citească temperatura si umiditatea cu o precizie destul de buna pentru aplicații domestice. Senzorul este produs de Aosong Electronics Co. Ltd, si este distribuit de cel mai mare dealer online de electronice pentru dezvoltatori, Sparkfun Electronics (figura 3.5).
Figura 3.5. Senzorul AM2302 (DHT22 varianta cu cabluri)
Senzorul DHT22 are următoarele caracteristici si aplicații:
compensare completa in temperatura, pe toata gama citita;
măsurare umiditate relativa si măsurare temperatura;
semnal digital de ieșire calibrat;
stabilitate mare pe termen lung;
transmisie semnal digital de ieșire pe distanta mare;
consum redus de putere;
pachet cu patru pini, interschimbabil, nu necesita alte componente;
conectare directa la controler sau procesor de 8 biți.
DHT22 are semnal digital de ieșire calibrat, utilizând un bus cu o line, elementul sensibil fiind un capacitor polimer. Specificațiile tehnice sunt conform tabelului 2.
Tabelul 2. Specificațiile tehnice ale senzorului DHT22
DHT22 comunica pe un singur fir cu microcontrolerul, durata unei comunicații fiind de 5 ms. O transmisie completa este de 40 biți, iar senzorul transmite bitul de date mai mare (MSB).Formatul de date este reprezentat in figura 3.6.
Figura 3.6. Transmisie completa de 40 biți a senzorului DHT22
Când microcontrolerul începe sa trimită semnal , DHT22 trece de la starea de consum redus, la starea de funcționare normala. Atunci când controlerul termina de trimis semnalul de start, DHT22 va trimite răspunsul cu cei 40 biți de date care vor reflecta umiditatea relativa RH si temperatura către microcontroler. Un semnal de start este necesar pentru fiecare citire de umiditate si temperatura de la DHT22. După ce a transmis citirea de date, daca nu mai primește alt semnal de la microcontroler, DHT22 va trece din nou in modul de consum redus, ca in figura 3.7.
Figura 3.7. Ciclu de comunicație completa intre microcontroler si DHT22.[19]
Caracteristicile electrice ale DHT22 sunt: tensiune de alimentare intre 3.3V si 6V, un consum normal intre 1 si 1.5 mA, in modul de consum redus intre 40 si 50 uA, intervalul de colectare a datelor trebuie sa fie mai mare sau egal cu 2 secunde.
3.1.3.2 Senzorul de lumina. Fototranzistorul PT15-21/TR8
Senzorul de lumina este bazat pe fototranzistorul PT15-21/TR8, care este un model SMD in miniatura, care are montata peste partea sensibila o lentila clara. Tranzistorul este sensibil la lumina normala si la infraroșu. In figurile 3.8a este prezentat fototranzistorul PT15-21C/TR8 in varianta SMD, iar in figura 3.8b in varianta brick (montat pe o plăcuta cu rezistor si conector pentru conexiuni).
Figura 3.8a. varianta SMD Figura 3.8b.varianta brick
Acesta nu este un senzor calibrat, el fiind necesar detecției luminii in zona unde este amplasat, pragul de acționare urmând a fi stabilit prin program, ieșirea fiind analogica, microcontrolerul va citi pe o scala de la 0 la 1023, diverse valori. Daca valorile sunt mici corespund unei lumini slabe, sau lipsa acesteia, iar daca valorile se apropie de maxim acestea indica prezenta luminii.
3.1.3.3 Senzorul de mișcare PIR HC-SR501
Senzorul HC-SR501 este bazat pe sonda infraroșie LHI778, de înalta sensibilitate, fiabilitate, cu tensiune de alimentare scăzuta si consum redus, este utilizat pe produse care necesita consum foarte mic, in special cele alimentate la acumulatori. HC-SR501 este destinat sa fie folosit in interior sau exterior. Acesta are următoarele specificații:
Tensiunea de alimentare 5V – 20V;
Curentul maxim consumat 65mA;
Ieșire TTL 3.3V, 0V;
Timp întârziere 0.3 pana la 5 minute;
Timp de blocare 0.2 secunde;
Metode de declanșare: L – declanșare repetata dezactivata, H – declanșare repetata activata;
Raza sensibilității: 120 grade, la maximum 7 metri distanta;
Temperatura de funcționare: -15 la +70;
Figura 3.9.Senzorul HC-SR501
După cum se poate vedea in figura 3.9, senzorul are posibilitatea de reglare atât a distantei, cat si a temporizării acționării si jumper de selecție a declanșării, după cum se poate vedea mai bine in figura 3.10.
Figura 3.10. HC-SR501 conectica si ajustări
Ajustarea distantei de acționare a senzorului se poate face după cum urmează:
rotirea potențiometrului in sensul acelor de ceasornic creste distanta de sensibilitate pana la maximum 7 metri
rotirea potențiometrului in sens invers acelor de ceasornic scade distanta de sensibilitate pana la minimum 3 metri
Ajustarea intervalului de timp intre doua citiri se poate face rotind potențiometrul din dreapta după cum urmează:
in sensul acelor de ceasornic creste temporizarea pana la maximum 300 secunde
in sens invers acelor de ceasornic scade temporizarea pana la minimum 5 secunde
Jumperul de declanșare are doua poziții:
in poziția H, după un eveniment (detecție mișcare), detecția rămâne activa
in poziția L, detecția este dezactivata după un eveniment.
Modulul are nevoie de aproape un minut pentru inițializare si auto calibrare. In acest timp el va activa ieșirea de la zero la trei ori, după care va intra in așteptare, de acest lucru trebuie ținut cont la prima citire.
Figura 3.11.Poziția L. Detecție dezactivata după eveniment.
In exemplul din figura 3.11 este exemplificata detecția cu jumperul in poziția L, adică detecția este setata la o singura detecție, iar temporizarea de detecție este setata la 3 secunde. Se poate observa si in diagrama de timp ca exista o perioada de șase secunde in care mișcarea nu poate fi detectata, chiar daca exista mișcare.
Figura 3.12. Poziția H. Detecție repetabila după eveniment
In cel de-al doilea exemplu (figura 3.12) temporizarea este setata tot la trei secunda si jumperul de trigger este in poziția H, detecție repetabila. In diagrama din figura 24 se poate vedea ca temporizarea este repornita, dar oricum rămân doar trei secunde, timp in care nu se poate face detecția.[21]
3.1.4 Placa de comanda cu relee
Placa cu relee aleasa pentru acest minisistem este o placa cu patru canale, sau se pot folosi plăcute cu un singur canal in funcție de necesitățile de comanda (figura 3.13).
Figura 3.13. Placa cu relee. Comanda de putere
Placa poate fi folosita pentru a controla diverse echipamente cu un curent mare. Este echipata cu relee de curent mare, care lucrează in curent alternativ pana la 250VAC si 10A, si in curent continuu pana la 30VDC si 10A. Fiecare canal având nevoie de 15-20mA curent pentru driverul releului. Placa are o interfața standard care poate fi controlata cu ușurința de către microcontroler. Fiecare releu este comandat de către un tranzistor driver, care la rândul lui este comandat de către un optocuplor care are tensiunea de alimentare de 5V si necesita un curent de 5mA. Tot modulul este alimentat la 5V, iar daca puterea acestora nu este suficienta, pe baza schemei de principiu se pot realiza module la alte tensiuni de alimentare, si alte puteri.
Figura 3.14.Schema electronica de principiu a unui canal de comanda releu 5V
In figura 3.14 se poate vedea ca intrarea IN0 este activa pe semnal jos. In momentul in care microcontrolerul comanda cu semnal jos intrarea IN0, Led-ul IN1 deschizându-se , fiind polarizat prin Led-ul din optocuplor si rezistenta R1. Led-ul optocuplorului va ilumina fototranzistorul, care la rândul lui se va deschide, polarizând baza tranzistorului driver, care in momentul deschiderii va pune la masa un capăt al înfășurării bobinei releului, care va comuta. Contactele releului sunt 2 comun, 3 închis când releul nu este comandat, si 1 închis atunci când releul este comandat.
Pentru conectarea la minisistemul pe care îl realizez plăcuta cu relee are marcate intrările ca in figura 3.15a si ieșirile ca in figura 3.15b.
Figura 3.15a. Intrările comanda Figura 3.15b. Ieșirile releelor
3.2 Proiectarea, realizarea si asamblarea sistemului
Pentru realizarea schemei detaliate si a modelului de conexiune intre componentele sistemului am utilizat un program open source numit Fritzing.[18] Acest program conține o multitudine de librarii pentru diverse componente, dar este concentrat mai ales pe crearea documentației pentru prototipuri diverse, utilizând in special plăcile de dezvoltare cum este cea pe care am prezentat-o in decursul acestui capitol. Din multitudinea de funcții ale programului am ales sa utilizez doua din cele mai importante, si anume proiectarea schemei, si funcția de prototip cu conexiuni (breadboard). O funcție importanta in lucrul cu programul Fritzing care trebuie amintita este acea de rutare a conexiunilor. Programul iți aduce aminte tot timpul daca mai ai conexiuni de făcut. Schema de conectare este prezentata in figura 3.16.
Figura 3.16. Schema electronica de conectare a componentelor sistemului
Am conectat Placa de dezvoltare Arduino Mega cu shieldul Ethernet prin intermediul busului SPI. Conexiunile fiind făcute după cum urmează: la Arduino Mega pinii 50, 51, 52 (MISO, MOSI, SCK) la pinii corespunzători ai shieldului Ethernet, din conectorul ICSP, 5V si GND la pinii corespunzători, iar pentru pinul SS de pe Ethernet am conectat D10 de pe Arduino Mega, ca sa poată fi selectata funcția Ethernet a plăcii. Singura intrare analogica de care am avut nevoie ca sa conectez senzorul de lumina, este A6 care se conectează la emitorul fototranzistorului, care are curentul limitat prin intermediul unui rezistor de 10kΩ.[20]
Senzorul DHT22 funcționând cu semnal digital a este conectat la pinul D2, si bineînțeles la tensiunea de alimentare de +5V, precum si la masa(GND).
Senzorul de mișcare pasiv de infraroșu HC-SR501 este conectat la pinul D4 al plăcii Arduino Mega, la +5V si masa, acesta de asemenea oferind conform specificațiilor ieșire digitala.
Ieșirile de comanda a releelor sunt conectate la Arduino Mega pe pinii de la D5 pana la D8, pe plăcuta cu cele 4 relee pe intrările IN1, IN2, IN3 si IN4. Plăcuta cu relee mai este conectata la masa si tensiunea de alimentare de +5V. Exemplul de conectare tip breadboard al programului Fritzing este prezentat in figura 3.17.
Figura 3.17. Schema de principiu. Conectarea componentelor
3.3. Proiectarea și implementarea părții software.
Proiectarea software se referă la stabilirea arhitecturii software a sistemului. Aceasta se realizează conform principiilor prezentate în [5], [6], [10], [22], [23] În acest sens, se pornește de la cerințele impuse ca principiu de funcționare a sistemului monitorizare si control:
sistemul trebuie să poată fi controlat atât local cât și de la distanta.
sistemul va avea o parte de control automat acesta trebuie să aibă o funcție automata de control si decizie, schimbările asupra sistemului fiind doar temporare, nicidecum permanente;
partea de control manual de la distanta, sau local lasă decizia in seama utilizatorului.
3.3.1 Mediul de dezvoltare software
Mediul de dezvoltare folosit in programarea microcontrolerului Arduino Mega este tot un produs al companiei Arduino, care pe lângă plăcile de dezvoltare furnizează si un software open source Arduino IDE, care vine cu librarii si biblioteci de drivere pentru toate plăcile dezvoltate de Arduino, dar si pentru multe din echipamentele cu care se poate interconecta o placa produsa de ei. Arduino IDE furnizează suport si pentru limbajele de programare C si C++.
Pentru realizarea unui proiect se deschide programul Arduino IDE, după care se selectează portul folosit de către placa pe care intenționam sa o programam, in meniul Tools > Serial Port , iar după selecția portului Tools > Board selectam microcontrolerul folosit (figura 3.18).
Figura 3.18. Selecția plăcii folosite
La scrierea unui program (Arduino IDE le numește Sketch), exista secțiuni ale programului care nu trebuie sa lipsească, astfel este necesara includerea de librarii care se vor folosi, se declara variabilele utilizate, constantele daca sunt folosite. Programul are doua secțiuni:
setup() – care este executat o singura data la început si este folosit pentru inițializări;
loop() – acesta conține programul principal care rulează pe platforma de dezvoltare in mod repetat.
După cum menționam mai sus, librăriile pe care le includem sunt dedicate echipamentelor si componentelor pe care le folosim, iar programul trebuie sa le folosească pentru a ne ușura munca de comunicație intre controler si periferice. Câteva exemple de librarii: EEPROM.h, Ethernet.h, Servo.h, Wire.h, etc.
Figura 3.19. Realizare aplicație in mediul de dezvoltare Arduino IDE
După scrierea sketchului in Arduino IDE se rulează Sketch > Verify/Compile,programul compilează si se leagă cu GNU tool chain (care este inclus in IDE), iar după aceea Arduino IDE trimite o comanda către programul avrdude care încărca codul executabil si pornește o conversie intr-un fișier text codat hexazecimal, care poate fi încărcat pe placa Arduino pentru care s-a făcut compilarea prin intermediul unui program de încărcare, Sketch > Upload in mediul Arduino IDE.
3.3.2 Proiectarea software
Proiectarea sistemului de monitorizare si control am făcut-o in urma unei analize. Am analizat modul general de rezolvare, împărțirea problemelor in subcategorii unde a fost nevoie, precizând structura bloc a programului, relaționarea modulelor, stabilirea funcțiilor de executat de către module, testarea funcțiilor modulelor precum si a programului ca întreg, pentru validarea acestuia. Activitatea de proiectare a ansamblului software a fost direct relaționata cu activitatea de programare in sine. Astfel in urma proiectării a rezultat arhitectura software din figura 3.20.
Figura 3.20 Arhitectura software. Schema bloc.
După cum se observa in schema bloc a arhitecturii software in urma inițializării si conectării la rețea a sistemului de monitorizare si control, acesta trece si rulează partea main de program, practic executa bucla void loop din program (prezentata in Anexa 1). Aceasta bucla asigura citirea periodica a senzorilor conectați la intrările digitale si analogice ale microcontrolerului, stocarea acestor valori pe perioada dintre doua citiri si asigura transmisia lor către blocul de control si afișare, de unde poate fi accesat de către utilizator. Tot funcția main așteaptă si comenzi dinspre blocul de control si afișare pentru a le trimite blocului funcție manuala, pregătind pentru acesta si parametri care vor fi executați. Funcția automata, cu blocul de decizie, respectiv bucla senzor – releu acționat automat este comandata tot de către funcția main , dar strict in legătura directa cu funcția automata. In figura 3.21 este prezentata schema logica de funcționare a sistemului.
Figura 3.21 Schema logica de funcționare
După pornirea „Start” se produce inițializarea variabilelor si constantelor locale, se inițializează microcontrolerul si placa Ethernet, încercând sa se obțină o adresa IP de la router, prin intermediul protocolului DHCP (Dynamic Host Configuration Protocol). Daca obținerea adresei IP prin DHCP nu este posibila, se va aloca prin program o adresa IP din rețeaua locala a routerului.
Obținerea unei adrese IP prin DHCP poate deveni importanta, in momentul in care utilizam o conectare la un router care primește automat IP de la furnizorul de servicii de internet, IP care poate sa varieze, este important daca furnizorul de servicii internet oferă posibilitatea sa-ti alegi si o adresa dinamica DNS (Domain Name System). DNS este un sistem distribuit de interogare si memorare a unor date oarecare intr-o structura ierarhica organizata. Principala caracteristica ale acestuia este faptul ca tine baza de date cu numele si adresele IP, implementarea software a TCP/IP conține rutina name resolver, care s-a specializat pe interogarea serverului de nume DNS in vederea obținerii adresei IP, si mai rar invers. Astfel chiar daca IP-ul local se mai schimba, serverul nostru creat in cadrul sistemului de monitorizare si control sa poată fi accesat de oriunde din lume via adresa dinamica DNS, si nu prin IP. Modul de obține a adresei IP al interfeței de rețea este demonstrat in ordinograma din figura 3.22
Figura 3.22. Ordinograma de obținere adresă IP
După cum se observa in programul din Anexa 1 serverului web creat i se asociază doar un singur port pe care sa poată fi accesat. Din rațiuni de securitate, nu este folosit portul normal de conectare http 80, ci un alt port, in programul din anexa este portul 84. Accesarea DNS-ului fiind urmata de adresa portului, pentru conectare. (de exemplu: http://acatri.go.ro:84). La fel trebuie procedat si la accesarea din cadrul rețelei proprii, respectiv atunci când accesam prin intermediul unei adrese locale (de exemplu: 192.168.0.111:84).
Portul respectiv utilizat de program pe post de intrare in server trebuie sa fie setat in router sa accepte portul respectiv ca „port forward”, exemplu in figura 3.23.
Figura 3.23 Port forward
După cum am menționat mai sus programul main este accesat din exterior printr-o interfața HTML (HyperText Markup Language) care este un limbaj de programare pentru pagini web accesibile dintr-un browser prin intermediul protocolului http (HyperText Transfer Protocol). HTTP este un protocol mic si foarte rapid, este un protocol de tip text, si este protocolul implicit al World Wide Web. Http oferă o buna tehnica de comunicare intre diverse pagini aflate la distanta si calculatorul personal. Când este ceruta afișarea unei pagini la o anumita adresă, adresa respectiva este convertita de către protocolul DNS intr-o adresa IP. Odată ce exista IP-ul, urmează transferul fișierului prin intermediul protocolului TCP pe portul standard al serverului (80), in urma cererii HTTP-Get (sendGET in cadrul proiectului). In cazul in care serverul nu poate răspunde cererii, si informațiile solicitate nu pot fi transmise, atunci serverul va trimite un mesaj de eroare, care este stabilit in specificațiile protocolului HTTP.
Web consta in multitudinea de pagini care conțin informații de pe gazdele care software de tip web server. Web server este programul care oferă la cerere pagini web. Atunci când un utilizator oarecare de la o anumita adresa IP solicita un anumit fișier de la web server, acesta încearcă sa obțină acel fișier si sa-l trimită înapoi utilizatorului. Acest fișier solicitat poate fi o pagina HTML, o imagine png, un fisier video avi, document docx. Solicitarea o va face browserul, el determinând ceea ce cere, si nu serverul web.
Tot in programul main este inclusa partea de interfața cu utilizatorul, respectiv o pagina Html, care poate fi accesata prin internet, sau pe adresa locala a sistemului. Aceasta este construita si încărcată tot in microcontroler, neocupând prea mult din spațiul de stocare al acestuia. In figura 3.24 este o fotografie a paginii Html in timpul dezvoltării acesteia, odată cu sistemul.[24]
Figura 3.24 Pagina HTML a web serverului sistemului
3.4 Sistemului mecanic si asamblarea acestuia. Conexiunile sistemului electric
Partea mecanica a modelului unui sistem de monitorizare si control conține partea de suport sau carcasa pentru partea de microcontroler si partea suport pentru partea de sistem electrica de putere. Partea mecanica de protecție a microcontrolerului este o carcasa acrilica transparenta cu decupaje in toate zonele conectorilor, care este oferita de un furnizor de componente electronice si placi de dezvoltare. Carcasa este livrata după cum se vedea in figura 3.25a, neasamblata. Aceasta se asamblează si oferă protecție buna plăcii Arduino Mega (figura 3.25b).
Figura3.25a Carcasa acrilica kit Figura3.25b Carcasa acrilica montata
După montarea carcasei si fixarea plăcii de dezvoltare in carcasa am procedat la montarea shieldului Ethernet pe placa de dezvoltare, având mare grija ca pinii lungi ai shieldului sa intre ferm in conectorii tip mama ai plăcii de dezvoltare, iar alinierea conectorilor ICSP de pe cele doua placi sa fie perfecta. Shieldul este in așa fel conceput încât sa aibă cablul de Ethernet după montare pe aceiași parte cu cablul USB sau de alimentare al plăcii (figura 3.26).
Figura 3.26 Arduino Mega cu Ethernet Figura 3.27 Relee montate
Pentru partea de putere, plăcutele cu relee le-am montat doua relee pe un mini breadboard, deoarece producătorul nu a prevăzut nici un sistem de fixare, iar ulterior le-am fixat direct pe carcasa finala. Aceleași probleme le-am întâlnit si la senzorul PIR, acesta neavând decât doua găuri de 3mm, cu componente pe amândouă părțile plăcutei, a trebuit sa concep un sistem de prindere, ca sa stea sau pe platforma montajului, sau in locația unde va fi amplasat. Ca urmare am conceput suportul din figurile următoare:
Figura 3.28a Suportul senzorului PIR Figura3.29b Suportul montat
Odată ce am avut sistemul de prindere am procedat la fixarea acestuia pe un plexiglas de la un disc Cdrom vechi, aceasta servind drept suport pentru tot montajul. Fixarea a fost făcuta provizoriu, întrucât fiind vorba de un senzor, mai pot interveni reglaje, in funcție de amplasare, si de altfel, ca senzor de prezenta, locul acestuia ar trebui sa fie undeva mai ascuns, ceea ce este posibil doar daca nu este împreuna cu restul montajului. Montarea tuturor componentelor pe suport poate fi observata in figura 3.30.
Figura 3.30 Sistemul asamblat
Si in final un test al funcționarii in mod asamblat in figura 3.31.
Figura 3.31 Sistemul asamblat funcțional
3.5 Testarea sistemului
Testarea sistemului a început de fapt cu testarea parțiala a fiecărei componente in programe de sine stătătoare, pe măsura ce au fost implementate, astfel au fost făcute următoarele teste:
testarea senzorului de lumina – cu programul 1 din Anexa 2
testarea senzorului PIR – cu programul 2 din Anexa 2. Aici au apărut ceva probleme, după cum este specificat in documentația senzorului ar trebui sa meargă cu temporizare 0.3 la 5 minute, la peste 2 minute nu mai funcționează stabil. Este posibil din cauza potențiometrului de reglaj, acesta nefiind de o calitate deosebita.
testarea senzorului de temperatura si umiditate – programul 3 din Anexa 2
testarea plăcii de rețea cu chipset W5100, si obținerea unei adrese IP prin intermediul DHCP server – programul 4 din Anexa 2. Aici au fost probleme, deoarece nu am achiziționat de la Arduino placa originala, ci am folosit clona din China. Problema a apărut la lungimea de cablu ethernet folosita. Daca am folosit cablu ethernet scurt (1.2m), nu am avut problema, dar in momentul in care am folosit un cablu mai lung de 5-6 m am întâmpinat deconectări si neconectări la router, deși cablul era bun. A fost identificata problema, perechile răsucite de cablu de transmisie au nevoie de rezistente terminatoare de 100 de ohmi, cate 49.9 sau 51 ohm in schema originala. Producătorul chinez al plăcii se pare ca nu a identificat corect marcarea rezistoarelor terminatoare, si in loc sa folosească pe placi rezistente marcate 510, au folosit marcate cu 511, adică 510ohm, iar măsurătorile cu ohmmetrul confirma aceasta. Problema respectiva a mai fost întâlnita si de alți electroniști pe placi la fel, se pare ca sunt serii întregi de placi care vor funcționa doar cu cabluri mai scurte de rețea.
In final a fost testat întregul sistem. Mai trebuiesc făcute ajustări minime, este funcțional, si permite o larga posibilitate de dezvoltare ulterioara.
Capitolul 4.
Concluzii
Lucrarea de față implementează un model funcțional al unui minisistem de monitorizare si comanda, controlabil în mod manual în care operatorul are decizia totală în ceea ce înseamnă ce se executa la comanda sa, cât și în mod automat în care programatorul setează funcțiile pe care trebuie să le îndeplinească iar acestea se vor executa în consecință.
Lucrarea începe cu un o prezentare teoretică atât a tehnologiei de comunicație cat si a sistemelor profesionale de monitorizare si control. În cadrul acestei prezentări teoretice s-a determinat care sunt elementele pe care trebuie să le conțină modelul realizat, astfel încât comportarea acestuia să fie cea așteptata si apropiata de un sistem real. Practic s-au identificat toate funcțiile pe care un sistem profesional le poate avea, dintre care doar cele independente de utilizatorul normal sa îl facă sa difere de un sistem profesional.
Proiectarea modelului s-a executat în mai multe etape. În primul rând s-a analizat posibilitatea de realizare electronica a sistemului, in special partea de comunicație. În acest scop s-au analizat mai multe soluții de realizare părți de comunicare, soluția finală aleasă fiind comunicarea prin intermediul internetului, practic având acces la sistem de oriunde din lume. Astfel utilizatorul sistemului proiectat va avea acces la facilitățile programului si de acasă, făra a se ridica de pe canapea ca sa stingă un bec (TV, radio, clima, etc.) sau sa vadă daca acel bec a rămas aprins, si sa poată sa-l stingă, cu un singur click de mouse sau un touch pe ecranul smatphone-ului.
Soluția aleasă pentru acest sistem este un microcontroler, cu posibilitate de conectare la o rețea (router) și electronica aferentă monitorizării si comenzii elementelor de execuție. Datorită ușurinței in utilizare si răspândirii din ce in ce mai mult, s-a ales folosirea platformei Arduino. Comanda de putere care acționează asupra mediului de controlat fost efectuată cu ajutorul unor relee de putere comandate de drivere electronice specifice.
Proiectarea software a sistemului a pornit de la proiectarea interfeței de comunicație prin internet, dat fiind ca multe minisisteme comunica prin interfața seriala sau Ethernet si perpetuare a ideii Internet of Things, dar controlat de către cineva.
Ultima etapă de execuție a fost aceea de verificare a funcționării modelului sistemului. S-au testat toate funcțiile implementate și s-au prezentat poze demonstrative a funcționării acestora. În partea de testare nu s-au identificat probleme majore de funcționare care sa împiedice sistemul sa funcționeze la parametri proiectați.
Analizând cele prezentate până acum se poate spune că proiectul și-a atins scopul. Au fost implementate toate funcțiile principale ale sistemului, iar acestea funcționează în condiții corecte. În plus se poate spune că pe durata realizării sistemului s-au atins diverse noțiuni de utilizarea a microcontrolerelor. Astfel:
au fost utilizate toate funcțiile de comandă a pinilor: intrări și ieșiri digitale, intrări analogice.
s-au utilizat modurile de realizare a unei pauze: o pauza software care împiedică rularea altor funcții (delay), pauze software pe baza ceasului intern (millis) care permite rularea altor funcții pe durata pauzelor, pauze hardware nu au fost necesare dar se pot implementa cu ajutorul unui timer;
a fost realizata comunicația in mai multe moduri, ethernet, serial, dar au fost încercate si alte variante, dar fiind mai puțin utila s-a renunțat la folosirea acestora (Wi-Fi, Bluetooth, GSM, etc.)
Modelul de sistem realizat se va folosi în activitatea monitorizare, comanda si control de la distanta a unor echipamente si utilități de acasă.
Limitări și posibile implementări ulterioare
Modelul sistemului de monitorizare si control are mai multe limitări. În primul rând, modelul este construit pe baza unui controler capabil, dar totuși din categoria pentru amatori, si care nu poate fi montat sau pus in funcțiune intr-un mediu neprielnic așa cum sunt cele profesionale, dar având in vedere ca dezvoltarea poate fi canalizata pe sectorul pentru acasă se poate spune ca si aceasta varianta pentru amatori isi poate atinge scopul. În aceste condiții modelul va putea fi dezvoltat în primul rând axându-l pe dezvoltarea pentru acasă, „casa cu Internet of Things” sa zicem. Sa fie implementat sistem de comanda dublu de iluminat, pornire sau oprire a diverse aparate si utilități din casa si din jurul acesteia. De asemenea și partea de interfață Html poate fi îmbunătățită. De exemplu se poate utiliza o afișare cu ajutorul căreia să se poată urmării situația reală a fiecărui obiect comandat de la distanta.
Bibliografie
[1]. The International Telecommunications Union – Recommendation ITU-T Y.2060 Overview of the Internet of Things (06/2012), http://www.itu.int/rec/T-REC-Y.2060-201206-I
[2]. https://en.wikipedia.org/wiki/Internet_of_things
[3]. Hwang, Jong-Sung; Choe, Young Han (February 2013). "Smart Cities Seoul: a case study" https://www.itu.int/dms_pub/itu-t/oth/23/01/T23010000190001PDFE.pdf
[4]. Gartner Says 6.4 Billion Connected "Things" Will Be in Use in 2016, Up 30 Percent From 2015". Gartner. (2015). http://www.gartner.com/newsroom/id/3165317
[5]. Stanciu, I.R., Molnar-Matei, F., Sisteme de monitorizare și control în timp real, Editura Eurostampa, Timișoara 2013
[6]. Stanciu, I.R., Șorândaru, C., Instrumentație virtuala, automatizări si control cu calculatorul, Editura Eurostampa, Timișoara 2015
[7]. www.scritub.com/stiinta/fizica/traductoare252017149.php
[8]. http://cndiptfsetic.tvet.ro/materiale/Materiale_de_invatare/GD/06_Sisteme de reglare automata I.doc
[9]. Mastacan, Lucian , Elemente de execuție in sistemele automate, Universitatea tehnica Iași, Note curs 2016. http://www.ac.tuiasi.ro/~lmastacan/wp-content/uploads/C5.2_EE-in-SRA.pdf
[10]. Molnar-Matei, F., Sisteme încorporate, notițe de curs, 2013
[11]. Gunther Gridling, Bettina Weiss, Introduction to Microcontrollers, Courses 182.064 and 182.074 Viena University of Technology, Institute of Computer Engineering, 2007, https://ti.tuwien.ac.at/ecs/teaching/courses/mclu/theory-material/Microcontroller.pdf
[12]. Romanca M., Microprocesoare si microcontrolere, Editura Universitatii Transilvania din Brașov, 2015, ISBN: 978-606-19-0683-3
[13]. Ogrutan, Petre, Interfețe, protocoale si semnalizări, Universitatea Transilvania Brasov, Note curs, 2014. http://vega.unitbv.ro/~ogrutan/Interfete si protocoale/Curs/5b-Interfete seriale- RS232 si circuite.pdf
[14]. Romanca M, Proiectarea sistemelor cu calculator integrat, Universitatea Transilvania Brașov, Note curs 2008, http://vega.unitbv.ro/~romanca/psci/4-PSCI-Interf-Comm-MC-4spp.pdf
[15]. https://en.wikipedia.org/wiki/SCADA
[16]. https://www.arduino.cc/en/Main/ArduinoBoardMega2560
[17]. https://www.arduino.cc/en/Main/ArduinoEthernetShieldV1
[18]. Software proiectare electronică, http://fritzing.org/home/
[19]. https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf
[20]. https://www.robofun.ro/bricks/senzor-lumina
[21]. https://www.mpja.com/download/31227sc.pdf , Datasheet senzor HC-SR501
[22]. Ciocârlie, Horia., Universul limbajelor de programare. Ed. A 2-a rev. – Timișoara: Orizonturi Universitare, 2013
[23]. Brian W. Evans, Arduino programming notebook, August 2007
[24]. Frank Salim, Peter Moskovits, Paul S. Wang, The Definitive guide to HTML 5WebSocket, Apress, 2013
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: Proiectarea modelului unui sistem de monitorizare si control [303790] (ID: 303790)
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.
