Sistem automat de numărare a persoanelor dintr-o incintă, prevăzut cu afișaj LCD [302544]
Universitatea “Politehnica” [anonimizat] a persoanelor dintr-o incintă, prevăzut cu afișaj LCD
Proiect de diplomă
prezentat ca cerință parțială pentru obținerea titlului de
Inginer în domeniul Inginerie Electronică și Telecomunicații
programul de studii de licență Electronică Aplicată (ETC – ELA)
Conducători științifici Absolvent
Ș.L.Dr.Ing. [anonimizat].Ing. Alexandru BUTURUGĂ
2017
Listă figuri
Figura 1.1. Schema simplificată a unui microcontroler……………………………………………………….16
Figura 1.2.Schema bloc a unui microcontroler…………………………………………………………………..16
Figura 2.1. Principiul de funcționare al unui senzor……………………………………………………………21
Figura 2.2 Exemplu de funcționalitate al unei bariere optice……………………………………………….22
Figura 2.3 Exemplu de funcționare a barierei optice…………………………………………………………..23
Figura 3.1 Generator de 38 de kHz…………………………………………………………………………………..27
Figura 3.2 Timer NE555N……………………………………………………………………………………………….27
Figura 3.3 Timer PinOut………………………………………………………………………………………………….27
Figura 3.4 Top View specific unui Timer NE555N…………………………………………………………….28
Figura 3.5 Secțiune printr-o diodă LED convențională………………………………………………………..29
Figura 3.6 Schema unui semiconductor …………………………………………………………………………….30
Figura 3.7 Receptor TSOP1738………………………………………………………………………………………..31
Figura 3.8 Diagrama pinilor …………………………………………………………………………………………….32
Figura 3.9 Diagrama bloc a receptorilor TSOP 17……………………………………………………………….32
Figura 3.10 ESP8266……………………………………………………………………………………………………….33
Figura 3.11 Schema electrică a modulului ESP8266……………………………………………………………34
Figura 3.12 WEMOS D1………………………………………………………………………………………………….35
Figura 3.13 Afișaj LCD 16×2……………………………………………………………………………………………36
Figura 3.14 PCF8574……………………………………………………………………………………………………….37
Figura 3.15 Vedere detaliată a dispozitivului PCF8574………………………………………………………..37
Figura 3.16 Schema electrică a sistemului………………………………………………………………………….38
Figura 3.17 Realizarea oscilatorului de 38 de kHz………………………………………………………………39
Figura 3.18 Dioda Laser utilizată ……………………………………………………………………………………..39
Figura 3.19 Varianta finală……………………………………………………………………………………………….39
Figura 3.20 Realizarea oscilatorului de 38 kHz…………………………………………………………………..40
Figura3.21 Realizarea barierelor optice (a)…………………………………………………………………………40
Figura 3.22 Realizarea barierelor optice (b)………………………………………………………………………..41
Figura 3.23 Placa de dezvoltare WEMOS D1……………………………………………………………………..41
Figura 3.24 Afișajul LCD utilizat………………………………………………………………………………………42
Figura 3.25 Macheta finală……………………………………………………………………………………………….42
Figura 4.1 Mediul de dezvoltare Arduino IDE…………………………………………………………………….43
Figura 4.2 Exemplu de linie I2C………………………………………………………………………………………..44
Figura 4.3 Modul de funcționare al UART-ului…………………………………………………………………..45
Figura 4.4. Uttilizarea tehnologiei Wi-fi…………………………………………………………………………….46
Figura 4.5 Funcționarea tehnologiei Wi-fi………………………………………………………………………….46
Figura 4.6 Exemplu afișaj LCD………………………………………………………………………………………..47
Figura 4.7 Captură din contul ThingSpeak………………………………………………………………………….49
Figura 4.8 MyChanellNumber…………………………………………………………………………………………..50
Figura 4.9 Exemple de date ajunse la server………………………………………………………………………..50
Figura 4.10 Organigrama codului (a)………………………………………………………………………………….51
Figura 4.11 Organigrama codului (b)………………………………………………………………………………….51
Figura 4.12 Explicarea funcționării organigramei întreruperilor…………………………………………….52
Listă acronime
ADC- Analog to Digital Converter ( Convertor Analog Digital)
AGC- Automatic Gain Control (Control Automat al Câștigului)
CAN- Controller Area Network (Controler de rețea)
CMOS- Complementary Metal-Oxide-Semiconductor
CPU- Central Processing Unit (Unitatea Centrală de Procesare)
DMA- Direct memory access (Acces direct la memorie)
EEPROM- Electronically Erasable Programmable Read Only Memory (Memorie read only programabilă și anulabilă)
GND-Ground (Împământare)
I/O–In/Out (intrare/ieșire)
I2C- Interface to Communicate (Interfață de Comunicare)
kHz- Kilo Hertzi
LASER – light amplification by stimulated emission of radiation (Amplificarea luminii prin emisia stimulată de radiație)
LCD- Liquid Crystal Display (Display cu cristale lichide)
MC- Microcontroller (Microcontroler)
PROM- Programmable read-only memory (Memorie read only programabilă)
RAM – Random Access Memory (Memorie cu acces aleatoriu)
ROM – Read-Only Memory (Memorie numai pentru citire)
SCL – Serial Clock Line (Linia serială de ceas)
SDA- Serial Data Line (Linia de date seriale)
TTL- Transistor-Transistor Logic (Tranzistor-tranzistor Logic)
UART- Universal Asynchronous Receiver and Transmitter (Magistrală Universală Asincronă Receptor și Emițător)
USB- Universal Serial Bus (Magistrală Universală Serială)
VCC- Power Supply Pins (Pin de alimentare)
Wifi- Wireless Fidelity (Fidelitate fără fir)
Introducere
Proiectul de diplomă reprezintă, pentru mine, o primă oportunitate de a dobândi cele învățate pe parcursul celor patru ani de licență și, îndeosebi, de a-mi antrena cunoștințele, de a le evidenția și, în același timp, de a-mi testa abilitatea de expunere a celor învățate. Totodată, realizarea practică a acestui proiect este unul dintre testele la care, ca viitor inginer în Electronică, Telecomunicații și Tehnologia Informației, trebuie să mă supun și să îl promovez pentru a dovedi calitatea cursurilor predate pe parcursul anilor de studiu și interesul propriu acordat acestora.
Ajungând în ipostaza de a învăța cursuri precum Arhitectura Microprocesoarelor, Microcontrolere, te împiedici de întrebările referitoare la utilizarea lor în practică. Poate că acele noțiuni generale prezentate la curs nu sunt suficiente pentru a-ți satisface curiozitățile și, în asemenea situații, înclini spre a descoperi, bineînțeles cu ajutorul cadrelor universitare, numeroasele și utilele lucruri, aplicații pe care le poți realiza.
Așadar, proiectul de diplomă intitulat “Sistem automat de numărare a persoanelor dintr-o incintă, prevăzut cu afișaj LCD” reflectă una dintre aceste curiozități. Gândindu-mă la necesitatea sau cerința tot mai mare a automatizării pentru perioada actuală și, cu siguranță, mult mai dezvoltată în viitor, am considerat că a proiecta și a implementa un sistem automat care să fie capabil de a cntoriza numarul de persoane din anumite spații comerciale, săli de fitness, denumite în cadrul proiectului “incinte”, reprezintă o soluție în ceea ce privește monitorizarea și controlul unor astfel de incinte. De multe ori, apare necesitatea realizării unor statistici care să reflecte gradul de aglomerație în anumite centre comerciale sau necesitatea monitorizării numărului de persoane, poate pentru că spațiul respectiv nu are o suprafață suficientă pentru a satisface cerințele clienților. În astfel de situații, consider ca implementarea unui sistem automat care să realizeze acest lucru este soluția.
Ideea de a implementa un sistem automat derivă și din proiectele anterioare realizate pe parcursul anilor universitari, mult mai puțin complexe, însă cu o utilitate diversificată în practică. Spre exemplu, în cadrului materiei Proiect 2, implementarea unui sistem automat de control al unui semafor m-a ajutat să îmi dezvolt cunoștințele despre microcontrolere, despre utilizarea lor în realizarea aplicațiilor. De asemenea, pe parcursul anului IV, la disciplina Proiect 3, am avut posibilitatea de a studia modul de implementare al unui sistem automat de comandă a ștergătoarelor unui autovehicul, foarte utilizat în viața de zi cu zi.
Deși funcționalitatea aplicației este realizată într-o variantă minimizată, sunt convinsă că este deja utilizată de anumite firme al căror scop este de a monitoriza aglomerarațiile din centrele mari, de a controla fluxul de persoane din incinte. Faptul că acest sistem va transmite datele unui server de tip cloud, bazat bineînțeles pe conectarea la o rețea Wi-fi, reprezintă o modalitate de a ușura activitatea de monitorizare și de elaborare a diverselor statistici. Ca în orice situație, pot exista și perioade de suprasolicitare, iar a cere dispozitivului să transmită datele indiferent de situație, de volum, poate cauza suprapuneri ale datelor și înregistrarea unor date incomplete sau incorecte. În astfel de cazuri, valoarea afișată pe display va fi transmisă după un interval prestabilit, cu scopul de a limita traficul de date și a respecta constrângerile server-ului.
Capitolul 1- Noțiuni generale de microcontrolere
1.1 Scurt istoric
Apariția microprocesoarelor a constat într-o schimbare drastică în ceea ce privește evoluția electronicii implementată cablat, luând în calcul avantajele celei implementată programat. M. E. Hoff a fost cel care a marcat apariția suprinzătoare a microprocesorului, conceput ca un procesor simplificat pentru a putea fi implementat pe un singur chip în siliciu. Conceptul de microprocesor s-a dezvoltat și spre alte implementări specifice, precum: microcontroller, microcalculator, procesoare de semnale, etc. Însă, chiar dacă vorbim despre avantajele acestor circuite, despre utilitatea lor în ceea ce privește electronica programată, este de la sine înțeles că este necesar un proces de proiectare, bazat în egală măsură atât pe partea hardware, cât și pe partea software, pentru ca acestea să devină parte a unui sistem.
Așadar, la modul general, un controler („controller”- termen de origine anglo-saxonă, cu un domeniu vast de cuprindere ) reprezintă un sistem folosit pentru a comanda și a prelua stări ale unui proces sau aspecte ale mediului înconjurător, fără ca intervenția umană să fie necesară. Primele controlere au fost realizate în tehnologii pur analogice, folosind componente electronice discrete și componente electromecanice, însă cele care fac apel la tehnica numerică modernă au fost realizate pe baza logicii cablate și a unei electronici analogice uneori complexe, motiv pentru care aveau dezavantajul unor dimensiuni mari și consum energetic considerabil. Din dorința de a miniaturiza aceste dimensiuni, s-a ajuns la ideea de a integra toate componentele unui controler pe un singur chip, rezultând astfel calculatorul pe un singur chip, specializat pentru implementarea operațiilor de control, denumit „microcontroler”.
Marea majoritate a aplicațiilor în care este utilizat microcontroler-ul fac parte din categoria sistemelor numite „embedded systems” , nume ce sugerează faptul că existența unui sistem de calcul încorporat este aproape transparenta pentru utilizatori. Pornind de la ideea de control, microcontrolerele sunt tot mai des utilizate în robotică și în mecatronică. De asemenea, avansând spre dorința de automatizare al procesului de fabricație și de producție, microcontrolerele sunt tot mai des utilizate și de CNC. Printre varietatea de domenii în care utilizarea unui microcontroler este esențială, se pot enumera: în electronica de consum (telefonie mobilă, jocuri electronice, GPS-uri, televizoare, etc), în tot ceea ce înseamnă aparatură electrocasnică (frigidere, aspiratoare, mașini de spălat), în industria automobilelor (climatizare, sisteme de alarmă), în industria aerospațială, în medicină, ș.a.m.d.[1]
1.2 Schema bloc a unui microcontroler. Considerații generale. Rolul blocurilor funcționale
Pornind de la ideile expuse mai sus, putem imagina faptul că un microcontroler este un circuit realizat pe un singur chip, care, la nivel standard, conține:
Unitatea centrală, incluzând un oscilator intern pentru ceasul de sistem;
Generatorul de tact- la care trebuie adăugat din exterior un cristal de cuarț sau un circuit RC pentru aplicații mai avansate;
Memoria volatilă (RAM);
Memoria nevolatilă (ROM, PROM, EPROM, EEPROM);
Dispozitive I/O seriale și paralele, după necesitate;
Controler de întreruperi, controller DMA, timere, convertoare A/D, convertoare D/A, ș.a.m.d;
Periferice.
În figura de mai jos, figura 1.1, se poate remarca o structură simplificată a unui microcontroler, evidențiindu-se fluxul informațional în relație cu mediul extern.
Figura 1.1. Schema simplificată a unui microcontroler [1]
Ca observații, se pot menționa câteva aspecte referitoare la blocurile denumite pe schema „Intrări” și „Ieșiri”:
În general, intrările consituie semnalele provenite de la traductoare sau comutatoare, intrări ce pot fi fie digitale, însemnând faptul că semnalele sunt discrete, informația culeasă fiind informația ce se eșantionează la momentul citirii liniei respective, fie analogice, caz în care existența unor circuite capabile de a prelucra informații ce pot fi exprimate prin funcții continue în timp, este necesară.
La fel ca intrările, ieșirile pot fi la rândul lor analogice, reprezentând în esență ieșirile convertoarelor numeric-analogice sau digitale.
Ceea ce am evidențiat în figura 1.1. este însă o variantă simplificată a conceptului de microcontroler. Schema detaliată a acestuia este evidențiată în figura 1.2.
Figura 1.2.Schema bloc a unui microcontroler [1]
Arhitectura unui MC cuprinde cinci elemente fundamentale: unitatea de intrare, unitatea de memorie, unitatea aritmetică și logică, unitatea de control și unitatea de ieșire. Analizând rolurile fiecărui element, putem afirma faptul că unitatea aritmetică și logică împreună cu unitatea centrală formează unitatea centrală de prelucrare (UCP). De remarcat este modul cum sunt vehiculate semnalele de adresă, cele de date și cele de control. În cazul microcontroler-ului, un rol fundamental îl are magistrala internă (bus-ul din figura 1.2), mărimea sa reprezentând una dintre principalele caracteristici ale unui MC. Modul de funcționare este următorul: prin magistrala de adrese, UCP selectează o locație de memorie sau un dispozitiv I/O, iar pe magistrala de date se face schimbul de informație între UCP și memorie sau între UCP și dispozitivele I/O.
Unitatea centrală de prelucrare
Așa cum este menționat mai sus, unitatea centrală de prelucrare este compusă din unitatea aritmerică și logică și din unitatea de control. Unitatea aritmetică și logică este secțiunea responsabilă cu efectuarea operațiilor aritmetice și logice asupra operanzilor care îi sunt furnizați. Foarte important este timpul de execuție al fiecărei operații pentru a verifica sau a aprecia dacă timpul necesar procesării complete satisface cerințele de timp ale aplicației. În ceea ce privește decodificarea codului operației conținut de codul unei instrucțiuni, rolul îi revine unității de control, analizând semnalele pentru a comanda celelalte blocuri funcționale, în vederea finalzării execuției instrucțiunii.
Memoria:
Când aducem în discuție memoria, trebuie să lămurim rolul fiecăreia și, în mod special, tipul acesteia. Așa cum se cunoaște, memoriile sunt de două tipuri: volatile și nevolatile. Gândindu-ne la tipurile de informații pe care MC le utilizează, constatăm că avem nevoie de ambele tipuri: în cadrul instrucțiunilor ce controlează funcționalitatea MC-ului, trebuie luat în considerare și faptul că vom mai avea nevoie de acele informații, așadar, ele trebuie să fie stocate într-o memorie de tip nevolatil, pentru ca, indiferent de starea sursei de alimentare, ele să poată fi accesibile și unei ulterioare utilizări. Pe de altă parte, în cadrul rezultatelor, al variabilelor, unde viteza de scriere și de citire este mai importantă pentru a satisface cerințele exterioare, se poate utiliza o memorie de tip volatil. Ca memorie volatilă, memoria RAM este cea utilizată, însă, pe langă avantajul pe care îl aduce privind accesibilitatea locațiilor în orice ordine, precum și scrierea și citirea de unitatea centrală, dezavantajul costului de implementare și al spațiului ocupat pe chip, face ca MC-ul sa conțină puțin RAM. În cazul memoriilor nevolatile, poate fi reamintită memoria ROM, ale cărei avantaje include prețul și simplitatea.
Dispozitivele I/O:
MC-ul se evidențiază prin modul de a interacționa cu exteriorul, cu mediul, în procesul pe care îl conduce. Astfel că, dispozitivele I/O reprezintă un aspect de maxim interes, luând în considerare funcția lor în raport cu MC-ul: reduce sarcinile acestuia privind aspectele de comandă și de conrol în respectiva funcție prin implementarea unor funcții speciale. Însă, doar o parte din aceste resurse, din aceste dispozitive, contribuie la funcțiile de control propriu-zise; cealaltă parte asigura funcțiile necesare aplicațiilor rulate în timp real, precum: timere, sisteme de întreruperi. De asemenea, o parte din aceste dispozitive se găsesc în configurația fiecarui MC sau sunt întâlnite des, însă o parte se întâlnesc doar în MC-urile consturite pentru optimizarea aplicațiilor, cu grad mare de particularitate.[1]
1.3 Sisteme automate. Utilizarea sistemelor automate
Noțiunea de sistem este foarte des întâlnită, în special în domeniul științei și al tehnicii, în domeniul rațiunii și al acțiunii umane. Însă, de cele mai multe ori, această noțiune vine în asociație atribute de specificare: sisteme automate, sisteme informaționale, sisteme de semnalizare, sisteme filozofice, sisteme sociale, sisteme de transmisie, ș.a.m.d.
Practic, concepul de sistem a aparut ca rezultat al evidențierii unor trăsături și comportamente comune pentru o serie de procese și fenomene din diferite domenii, fapt ce a permis tratarea acestora, din punct de vedere structural-funcțional, într-un mod unitar, sistemic.[2].
Un astfel de sistem este alcătuit din anumite elemente, elemente care, la rândul lor, sunt considerate sisteme sau, mai concret spus, subsisteme. Modul de a interacționa al elementelor conduce la comportamente noi ale sistemului propriu-zis, la trăsături noi, complet diferite de cele ce caracterizează fiecare astfel de componenta în parte.
Sistemele automate (automat= mașină care efectuează o anumită operație fără intervenția omului), reprezintă sisteme tehnice de comanda, supraveghere și de control al anumitor procese sau instalații, fără intervenția directă a omului. Un astfel de sistem automat este alcătuit din două părți principale: procesul automatizat și dispozitivul de automatizare.
Vor fi subliniate, în continuare, câteva trăsături fundamentale ale sistemelor:
Caracterul structural-unitar, ce reflectă proprietatea unui sistem de a fi reprezentat ca o conexiune de subsisteme a căror acțiune este orientată spre un anumit scop/sens;
Caracterul cauzal-dinamic, ce refectă proprietatea unui sistem de a evolua în timp sub acțiunea factorilor interni și externi, cu respectarea principiului cauzalității (conform caruia, orice efect este rezultatul unei cauze, efectul este întârziat față de cauză și, în plus, două cauze identice generează în aceleași condiții efecte identice);
Caracterul informațional, care reflectă proprietatea unui sistem de a primi, prelucra, memora și transmite informațiile.[2]
1.4 Legătura dintre sistemele automate și microcontroler
Când se dorește a se vorbi despre înțelesul și beneficiile cuvântului „automatizare”, microcontrolerele dețin un rol aparte, date fiind capabilitățile acestora. Într-un mod automat, MC-urile au grijă de interpretarea corectă a datelor, de intercalarea lor acolo unde este nevoie, astfel încat activitatea programatorului sa fie redusă la o simplă scriere (datele ce trebuie a fi transmise), respectiv citire a informațiilor (datele primite).
De ce microcontrolere în realizarea sistemelor automate? Pentru că:
În esență, un microcontroler este un computer plasat pe un singur chip, compus din memorie, procesor și interfețe intrare-ieșire;
Microcontrolerele sunt programate pentru a executa o anumită sarcină, ceea ce înseamnă că, dacă va fi necesar să schimbe ceva sau să se îmbunătățească funcționalitatea, va trebui instalat un nou program pe chip;
Toate funcțiile sun plasate pe acel singur chip, într-o scară mai mică și mai compactă;
Este programat pentru o anumită sarcină, pentru a-și îmbunătăți funcționalitatea, trebuie instalat un nou software;
Consumă mult mai puțină putere, întrucât toate caracteristicile fizice sunt mai mici și mai puțin solicitante de energie, comparativ cu un PC, server sau laptop.
Dezvoltatorii de microcontrolere se concentrează pe o cerere redusă de energie, astfel încât aplicațiile mobile care utilizează bateriile, și nu numai, să aibă un timp de funcționalitate mult mai mare;
Dețin intrări și ieșiri cu un singur scop; microcontrolerele au așa numitele periferice, care stabilesc conexiunile între un microcontroler și alte microcontrolere sau computere (câteva exemple sunt UART, USB, CAN), ce ajută la înțelegerea proceselor din lumea reală, fizică.
Ingineria modernă de automatizare a zilelor este un domeniu relativ nou de studiu care a câștigat o atenție deosebită în ultima perioadă.Acesta poate fi în mare măsură definit sau clasificat ca aplicație practică a teoriei de control. Controlul ingineriei are un rol esențial într-o gamă largă de sisteme de control, de la mașini simple de spălat rufe de uz casnic la avioane de înaltă performanță. Se caută să înțeleagă sistemele fizice, folosind modelarea matematică, în termeni de intrări, ieșiri și diverse componente cu comportamente diferite, să utilizeze instrumente de proiectare a sistemelor de control pentru a dezvolta controlorii pentru acele sisteme și a implementa controlorii în sistemele fizice care folosesc tehnologia disponibilă.
Un sistem poate fi mecanic, electric, fluid, chimic, financiar și chiar biologic, iar modelarea matematică, analiza și designul controlerului utilizează teoria controlului într-unul sau mai multe domenii de timp, frecvență și complexe, în funcție de natura problemei de proiectat.
1.5 Evoluția sistemelor automate. Exemple de aplicații
În ceea ce priveste evoluția sistemelor automate, se poate spune că, la momentul actual, ideea de automatizare, de a ușura munca omenească, de a spori timpul de execuție al unei anumite acțiuni / task, de a micșora energia necesară, de a obține performanțe mult mai stabile într-un timp record, a căpătat proporții uriașe și a devenit tot mai adoptată în tot ceea se înseamnă aplicație.
Astfel că, regăsim utilizarea de sisteme automate în majoritatea domeniilor din prezent. Câteva exemple de aplicații sunt prezentate în cele ce urmează:
a. Sistem automat de irigații:
Sistemele automate de irigații sunt total automatizate, fiind dotate chiar cu senzori de umiditate. Astfel că, acestia vor detecta prezența ploii și, în asemenea situații, nu vor declanșa pornirea apei.
Pe lângă piesele auxiliare de care dispun, cele mai importante elemente ale unui astfel de sistem sunt: programatorul (cel care memorează programul de udare și transmite semnal pentru pornire prin elementele corespunzătoare), senzorul despre care spuneam mai sus care, în cazul în care detectează existența precipitațiilor peste cantitatea necesară suprafeței de interes, transmite semnal la programator ca să nu mai pornească, țevi și legăturile acestora pentru sistemul în care apa circulă.
b.Sistem automat de stingere a incendiilor:
Sistemele automate de surprimare a focului pot acoperi o gamă foarte largă de obiective, care necesită protecție anti-incendiu. Partea principală a oricărui sistem automat de stingere a incendiilor este tubul termosensibil special care acționează ca un detector linear de căldură și foc. Tubul este presurizat permanent și este complet flexibil la instalare. În momentul influenței căldurii și a flăcării, tubul termosensibil se sparge în locul cel mai fierbinte, pierzând presiunea din circuit. Prin depresurizare, valva cilindrului este activată pentru operarea sistemului, descărcând agentul de stingere în locul în care tubul s-a spart. Nu sunt necesare surse de energie sau de curent electric externe pentru detecție sau acționare.[3]
c.Sistem automat/inteligent de acces într-o clădire:
Pe baza unui astfel de sistem funcționează foarte multe clădiri, fie ca sunt ele clădiri de birouri, fie că sunt efectiv clădiri locuibile.
d.Sistem automat de detecție a furtului pe baza pornirii alarmei
Sistemele automate de detecție a alarmelor este unul dintre cele mai utilizate dintre sistemele automate, date fiind beneficiile aduse de acestea. Fie ca este vorba despre împiedicarea unui furt, fie că este vorba despre siguranța propriului bun, de exemplu despre siguranța propriei mașini, sistemele automate de pornire a alarmelor, pe baza anumitor senzori, sunt pe zi ce trece soluția cea mai des adoptată în domeniul industrial.
Capitolul 2: Senzori
În capitolul 2, vor fi prezentate principalele categorii de senzori utili în implementarea unor astfel de sisteme automate de numărare, de contorizare a distanței, urmând ca, spre final, atenția să fie fixată asupra barierelor optice, cele utilizate de altfel în implementarea sistemului automat de numărare.
În linii mari, senzorul poate fi considerat un dispozitiv cu proprietăți specifice, capabil de a furniza o reacție cantitativă sau calitativă, ca răspuns pentru proprietățile chimice sau fizice ale mediului în care operează.
2.1 Senzorii ultrasonici
Ca și principiu de funcționare, senzorii ultrasonici funcționează în felul următor: emit impulsuri de sunet scurte și de o frecvență considerabilă, la intervale regulate, prestabilite, iar acestea se propagă în aer cu o viteză egală cu viteza sunetului.
Figura 2.1. Principiul de funcționare al unui senzor ultrasonic [4]
În situația în care un obiect este detectat sau, mai precis, în situația în care acestea lovesc un obiect, sunt reflectate înapoi ca semnale-ecou la senzor, care de altfel și calculează distanța până la țintă pe baza intervalului de timp dintre emiterea semnalului și primirea ecoului. Pe măsură ce distanța până la obiectul în cauză este determinată prin intermediul măsurării acestui interval de timp și nu prin intermediul intensității sunetului.
Senzorii ultrasonici sunt excelenți la suprimarea interfețelor de fundal. Acest lucru înseamnă că, în mod practic, toate materialele care reflectă sunetul pot fi detectate, indiferent de culoarea lor. Până și materialele transparente sau foliile subțiri nu reprezintă o problemă pentru un astfel de senzor. Senzorii ultraso-nici microsonici sunt potriviți pentru distanțe de la 30 mm la 10 m și, măsurând acel timp de pro-pagare, aceștia pot stabili o măsurătoare cu precizie ridicată. Senzorii ultrasonici pot vedea până și prin aer afectat de praf. De remarcat este faptul că nici depunerile subțiri de pe membrana senzorului nu afectează rolul său.
De ce am omis utilizarea acestui senzor în cazul proiectului de față?
Acest lucru s-a datorat dorinței ca acest sistem să funcționeze cât mai bine. Astfel că, luând ca exemplu situația în care ușa este deschisă, una dintre persoane ține ușa deschisă, iar o alta așteaptă să părăsească incinta, un astfel de senzor va depista cele două persoane și nimic mai mult. Altfel spus, am luat în calcul posibilitatea aparției erorilor de contorizare. Cu ajutorul barierelor optice, aceste erori sunt minimale, întrucât, pentru a contoriza o persoană, este nevoie ca aceasta să „treacă” prin acele bariere pentru a considera realizată o ieșire, respectiv o intrare, în incintă.
2.2 Senzorii Sharp
Familia Sharp este renumită pentru producerea lungimii de undă în infraroșu (IR), utilirând senzori de distanță, cu ieșire analogică de tensiune. Astfel că, senzorii sharp au led-uri IR echipate cu lentile emit fascicule de lumină îngustă, care, după reflectarea de la obiect, va fi direcționat prin cea de-a doua lentilă pe un detector sensibil la poziție (PSD-position sensitive detector). Conductivitatea acestui detector este influențată de poziția unde cade fascicolul, este convertită în tensiune și, ulterior, dacă această tensiune este convertită în digital utilizând un convertor analogic-digital, distanța poate fi calculată.
Ieșirea acestor senzori este invers proporțională cu distanța, ceea ce înseamnă că, atunci când distanța creșste, ieșirea scade treptat. Însă, acest grafic al relației dintre distanță și ieșire este furnizat, de obicei, pe fișa tehnică a senzorului.
Distanța maximă măsurată este limitată de două aspecte: fie cantitatea de lumină reflectată este în descreștere, fie detectorul este incapabil de a înregistra mici modificări ale locației razei reflectate.
De ce am omis utilizarea acestui senzor în cazul proiectului de față?
Acest lucru s-a datorat dorinței ca acest sistem să funcționeze cât mai bine. La fel ca în cazul senzorilor ultrasonici, am luat în calcul posibilitatea aparției erorilor de contorizare. Cu ajutorul barierelor optice, aceste erori sunt minimale, întrucât, pentru a contoriza o persoană, este nevoie ca aceasta să „treacă” prin acele bariere pentru a considera realizată o ieșire, respectiv o intrare, în incintă.
2.3 Barierele optice
Dacă luăm în considerare semnificația acestor bariere optice, gândul nostru ar fi îndreptat spre ceva ce „detectează” printr-o modalitate optică un anumit fenomen, ceea ce este și adevărat într-o oarecare măsură în ceea ce privește sistemul automat supus discuției.
Ideea de contorizare, de numărare a unui anumit număr de persoane, implică de multe ori și depășirea anumitor probleme sau, mai corect spus, găsirea unor metode prin care erorile de contorizare să fie minimale. Există numeroase situații în care chiar și număratul devine o problemă, una dintre ele fiind situația în care o anumită persoană rămâne în dreptul senzorului, „așteptând pe cineva”. Într-o astfel de situație, sistemul nu va știi cum să contorizeze corect acest fenomen: fie ca intrare, fie ca ieșire, iar datele transmise către server vor tinde sa fie incorecte.
Astfel că, am găsit utilă utilizarea barierelor optice pentru a preveni apariția unor astfel de probleme. Ca și utilitate, barierele optice oferă un control ridicat în ceea ce privește direcția de trecere, pentru a elimina riscul unei utilizări neautorizate.
Luând în calcul multitudinea de beneficii aduse de utilizarea acestor bariere optice, de amintit este și faptul că au un cost redus de insalare, de configurare și, in fond, de utilizare, astfel că sunt foarte utilizate în cadrul sistemelor automate de siguranță, de numărare, etc.
Figura 2.2 Exemplu de funcționalitate a unei bariere optice[5]
În figura 2.2 am expus, în linii mari, componența unei bariere optice. Se poate observa faptul că aceste bariere optice constau dintr-un emițător (Emitter) și un receptor (Receiver). Însă, această componență nu este tocmai cea utilizată în toate aplicațiile; o altă variantă este existența unui grup emițător- receptor pe partea sa activă și, de ce nu, de oglinzi reflectorizante pe partea sa pasivă.
Funcționare:
Emițătorul emite un fascicul fin laser, care e receptat de receptor. Se evaluează întreruperea fasciculului laser. Prin micul diametru de radiație este posibilă recunoașterea obiectelor foarte mici respectiv poziționarea corectă a acestora. [6]
Lumina pulsată a diodei emițătoare este focalizată doar de o lentilă și este direcționată pe un reflector prin filtrul de polarizare (principiul oglinzilor triple). O parte a luminii reflectate ajunge la receptor printr-un filtru suplimentar de polarizare. Filtrele sunt selectate și orientate astfel încât numai lumina reflectată de reflector ajunge la receptor. Acest aranjament evită semnale false pentru obiecte strălucitoare și lucioase din cauza reflecției directe. Un obiect care întrerupe calea optică între expeditor și receptor (prin intermediul reflectorului) determină comutarea ieșirii.
Utilizarea barierelor optice se regăsește în:
Monitorizarea poziției, numărarea, detectarea obiectului și a locației;
Monitorizarea ușilor și a pozițiilor în lifturi;
Controlarea și dirijarea intrărilor și ușilor din garaj, precum și a rulourilor,ș.a.m.d.
În figura 2.3 este prezentată o aplicație tipică pentru bariera optică. Transmițătorul emite un semnal modulat de lumină către detector. Dacă nu există niciun obstacol între emițător și detector, lumina transmițătorului modulat poate fi recepționată de către detector. Dacă un obstacol blochează traiectoria luminii, nu se poate recepționa niciun semnal de transmisie. Schimbarea între semnalul recepționat și semnalul nu poate fi utilizat pentru a controla o mașină, o ușă automată sau, de asemenea, pentru a număra obiecte. [7]
Figura 2.3 Exemplu de funcționare a barierei optice [7]
În ceea ce privește sistemul automat de numărare, barierele optice au un rol fundamental: practic cu ajutorul lor se ia decizia de a incrementa contorul sau de a decrementa. Bazate pe receptorii TSOP, despre care amintim în capitolul următor, barierele optice vor detecta sensul de deplasare al persoanelor. În cazul în care se va detecta cel de-al doilea receptor TSOP, urmat de primul, se va considera că o persoană a pătruns în incintă; pe de altă parte, dacă ordinea va fi inversată, se va considera că persoana în cauză a părăsit incinta.
Capitolul 3-Descrierea părții Hardware a proiectului
3.1 Obiectivul proiectului
Proiectul de față propune o soluție pentru problema supraaglomerării spațiilor mici, monitorizând traficul persoanelor care pătrund în incintă sau părăsesc respectiva incintă. Bazându-se pe bariere optice succesive pentru a detecta sensul de deplasare al persoanelor, sistemul va incrementa, respectiv va decrementa valoarea contorului, a cărui valoare va fi afișată în timp real cu ajutorul unui display. În funcție de detecția senzorului, sistemul va fi capabil de a lua anumite decizii pentru contorizare. Totodată, valoarea afișată cu ajutorul display-ului va fi transmisă unui server de cloud, iar în cazul evenimentelor mult prea frecvente, va fi transmisă dupa un interval prestabilit, cu scopul de a limita traficul. Acest dispozitiv se poate conecta la rețeaua locală cu ajutorul unei conexiuni Wifi integrate. Astfel că, realizarea practică a proiectului va implica următoarele: studiul caracteristicilor microcontroler-ului utilizat, precum și modul de funcționare, studiul posibilităților de implementare a unui sistem de numărare prevăzut cu display, realizarea unei machete pentru demonstrarea funcționalității aplicației minimizată.
În acest capitol, ne rezumăm la descrierea părții Hardware a proiectului.
Partea Hardware a proiectului va conține în linii mari transmițătorul, receptorii de prezență, respectiv de contorizare, placa WEMOS D1, bazată pe ESP8266 și, nu în ultimul rând, afișajul LCD.
3.2 Schema bloc a proiectului și descrierea funcționalității
………………………………..
…………………………………
Perete Perete
IN
Descrierea funcționalității:
Așa cum se poate vedea în schema bloc, proiectul se bazează pe cei doi senzori, respectiv în cazul nostru barierele optice. Presupunând că o persoană va patrunde în incintă (aceeași manifestare și în cazul unei ieșiri din incintă), barierele optice vor fi capabile de a detecta sensul de deplasare al persoanei în cauză și, în momentul transmiterii informației, sistemul va fi capabil de incrementare (respectiv decrementare) a contorului, valoarea acestuia fiind afișată în timp real pe un LCD.
În funcție de detecția senzorilor, sistemul va fi capabil de a lua anumite decizii pentru contorizare; valoarea afișată pe display va fi transmisă unui server de tip cloud, iar in cazul evenimentelor mult prea frecvente, va fi transmisă după un interval prestabilit, cu scopul de a limita traficul de date și a respecta constrângerile serverului. Acest dispozitiv se poate conecta la rețeaua locală, folosind o conexiune wireless de tip Wi-Fi.
Pe scurt, ordinea Receptor2+Emițător2—Receptor1+Emițător1 semnalează o intrare, iar Receptor1+Emițător1—Receptor2+Emițător2, semnalează o ieșire din incintă.
3.3 Descrierea componentelor părții Hardware
3.3.1 Senzori de proximitate
Un senzor de proximitate este un senzor capabil să detecteze prezența obiectelor din apropiere fără contact fizic.Un senzor de proximitate emite adesea un câmp electromagnetic sau un fascicul de radiații electromagnetice (de exemplu, în infraroșu) și caută schimbări în câmp sau semnal de revenire. Obiectul care este detectat este deseori denumit țintă a senzorului de proximitate. Scopurile diferite ale senzorilor de proximitate necesită senzori diferiți. De exemplu, un senzor capacitiv sau fotoelectric ar putea fi adecvat pentru o țintă din plastic; Un senzor de proximitate inductiv necesită întotdeauna o țintă metalică.
Distanța maximă pe care acest detector o poate detecta este definită ca "interval nominal". Anumiți senzori au ajustări ale intervalului nominal sau mijloace pentru a raporta o distanță de detecție gradată.
Senzorii de proximitate pot avea o fiabilitate ridicată și o durată lungă de funcționare datorită absenței părților mecanice și a lipsei de contact fizic între senzor și obiectul detectat.
3.3.1.1 Transmițătorul
În cazul proiectului de față, am folosit drept transmițător un generator reglabil, reglat la o valoare de 38 de kHz. Așa cum se poate vedea în figura următoare, acest generator este realizat cu ajutorul unei diode laser, al unui modul Timer 555, precum si al unor rezistențe, respectiv condensatoare.
Figura 3.1 Generator de 38 de kHz [8]
În linii mari, acest dispozitiv poate genera impulsuri pe o gamă foarte largă de frecvențe, prin ajustarea valorilor unui resistor și a unui condensator. În cazul în care se utilizează un resistor variabil sau un pontențiometru, se poate ajusta cu ușurință frecvența la o valoare cât mai precisă. În schema de mai jos, D1 reprezintă LED-ul în infraroșu, iar C1, R2, respective R3 determină frecvența impulsurilor. R3 reprezintă un resistor sau un potențiometru variabil, care poate fi ajustat pentru a obține o frecvență exactă.
3.3.1.1.1 555 Timer
xx555 este un dispozitiv extrem de stabil pentru generarea precisă a întârzierilor de timp sau a oscilațiilor. Terminale suplimentare sunt pregătite, după caz, pentru declanșare sau resetare. În modul de întârziere al funcționării, timpul este controlat cu precizie de un rezistor extern și de un condensator. Pentru o funcționare stabilă ca oscilator, frecvența liberă de funcționare și ciclul de funcționare sunt controlate cu exactitate cu ajutorul a două rezistențe externe și al unui condensator.
În cele ce urmează, este prezentată , pe scurt, funcționarea unui astfel de dispozitiv. De asemenea, în figurile următoare este exemplificată o structura a unui timer 555, atât din perspectiva design-ului său, cât și din cea a exemplicării celor 8 pini.
Figura 3.2 Timer NE555N [9] Figura 3.3 Timer PinOut [9]
Pragul și nivelurile de declanșare sunt în mod normal două treimi și, respectiv, o treime din VCC. Când intrarea trigger-ului scade sub nivelul de trigger, flip-flop-ul este setat și ieșirea are o valoare ridicată. Dacă intrarea trigger.ului este superioară nivelului de trigger și intrarea pragului este peste nivelul pragului, flip flop-ul este resetat și ieșirea este scăzută. Intrarea reset (RESET) poate suprascrie toate celelalte intrări și poate fi utilizată pentru inițierea unui nou ciclu de sincronizare. Când RESET se micșorează, flip-flop-ul este resetat și ieșirea este scăzută. Când ieșirea este scăzută, există o cale de impedanță redusă între descărcare (DISCH) și masă. Circuitul de ieșire este capabil să furnizeze curent până la 200 mA. Funcționarea este justificată pentru consumabile de la 5 V la 15 V. Cu o sursă de 5 V, nivelurile de ieșire sunt compatibile cu intrările TTL.
În cele ce urmează, vor fi prezentate detaliat rolurile și îndeosebi funcțiile fiecăruia dintre acești pini. Așadar, în figura 3.4 se va prezenta o vedere „de top” a unui Timer NE555N, cel utilizat și în proiectul de față, urmând ca, în tabelul 3.1 să fie expuse funcțiile propriu zise.
Figura 3.4 Top View specific unui Timer NE555N [9]
Tabelul 3.1 Funcțiile pinilor Timer NE555N [9]
De ce este acest acest dispozitiv atât de important în realizarea generatorului?
555 timer este una dintre cele mai importante dispozitive și utilizate pe scară largă. Design-ul a rămas neschimbat de peste 40 de ani, ceea ce face ca acesta să fie unul dintre cele mai utilizate si mai autentice dispozitive. A fost folosit în orice, de la jucării la nave spațiale.
Este în esență un circuit de sincronizare monolitică care produce întârzieri sau oscilații precise și foarte stabile. Este, de asemenea, foarte fiabil și ieftin din punctul de vedere al prețului. Pe lângă multe alte aplicații, un timer 555 poate fi folosit și în convertoarele DC-DC, sonde logice digitale, generatoare de forme de undă, frecvențe analogice și tahometre, măsurători de temperatură și dispozitive de control, regulatoare de tensiune,ș.a.m.d. Date fiind toate acestea, importanța sa în cazul proiectului de față este justificată.
3.3.1.1.2 Dioda Laser
În cele ce urmează, vor fi prezentate diodele laser, îndeosebi evoluția acestora. Vom începe prin a defini, înainte de toate, acest termen sau mai bine zis proveniența sa.
Pentru început, acronimul LASER provine de la Light Amplification by Stimulated Emission of Radiation și reprezintă un laser semiconductor pompat electric, în care mediul laser activ este format dintr-o joncțiune p-n a unei diode semiconductoare, similară cu cea găsită într-o diodă emițătoare de lumină.
La rândul său, o astfel de diodă emițătoare de lumină sau, mai corect spus, o diodă electroluminiscentă, reprezintă o componentă ce face realizabilă transformarea electricității în lumină, de unde îi provine și numele. „Construcția unei diode LED este un pseudo-sistem (figura 3.5), ce satisface cerințele unui dispozitiv microelectronic, dar care are cerințe funcționale, materiale și interfețe care fac ca modurile și mecanismele sale de defectare să fie unice.”[10]
Figura 3.5 Secțiune printr-o diodă LED convențională [10]
„Principiul de funcționare al dispozitivelor LED se bazează pe polarizarea unui semiconductor prin aplicarea unei tensiuni care provoacă emisiunea de fotoni. Câțiva electronii și câteva găuri se recombină în regiunea activă (joncțiunea p-n), unde electronii se mișcă dintr-o bandă de energie în alta. Procesul acesta este cunoscut sub numele de recombinare radiantă. Când are loc recombinarea radiantă, energia este eliberată sub formă de fotoni, cu o lungime de undă depinzând de schimbul din banda de energie. Se produce o radiație cvasimonocromatică a cărei lungime de undă depinde de semiconductorul folosit. Nu există semiconductor care să emită el însuși lumină albă; există, totuși, trei metode diferite pentru a produce indirect lumină albă cu ajutorul unei LED. Ținând seama de imperativele de randament energetic și de limitele tehnologice, cea mai răspândită metodă de producere a luminii albe utilizează astăzi transformarea unei părți a luminii emise de o diodă albastră, cu ajutorul unui luminofor galben. ”[10]
O diodă laser este o diodă PIN electrică. Regiunea activă a diodei laser este în regiunea intrinsecă (i), iar purtătoarele (electroni și găuri) sunt pompate în acea regiune din regiunile n și respectiv p, din figura 3.6.
Figura 3.6 Schema unui semiconductor[11]
În timp ce cercetarea laserului cu diode inițiale a fost efectuată pe diode simple P-N, toate laserele moderne utilizează implementarea dublei heterostructuri, în care purtătorii și fotonii sunt limitați pentru a maximiza șansele lor de recombinare și generare de lumină.
Spre deosebire de o diodă obișnuită, obiectivul pentru o diodă laser este de a recombina toți purtătorii din regiunea I și de a produce lumină. Astfel, diodele laser sunt fabricate folosind semiconductori direcți de bandgap. Structura epitaxială a diodei laser este crescută utilizând una dintre tehnicile de creștere a cristalului, de obicei pornind de la un substrat dopat cu N și crescând stratul activ dopat I, urmat de placarea cu dop dopant și un strat de contact. Stratul activ constă cel mai adesea din puțuri cuantice, care oferă un prag mai scăzut și o eficiență mai mare..
Avantajele diodelor laser:
În comparație cu majoritatea tipurilor de laser, diodele cu laser sunt mai puțin costisitoare și compacte, făcându-le ideale pentru dispozitivele electronice mici. Diodele cu laser folosesc mult mai puțină putere comparativ cu alte dispozitive cu același scop. În timp ce laserele de gaz și de stare solidă necesită o sursă de alimentare în kilo-volți, diodele cu laser funcționează în mod obișnuit pe bateriile cu voltaj mic. Unul dintre cele mai importante avantaje ale actor dispozitive este siguranța. Multe tipuri de lasere prezintă un risc semnificativ de siguranță din cauza puterii pe care o distribuie. Diodele cu laser sunt considerate unul dintre cele mai sigure tipuri de astfel de echipameente. Pentru a obține o putere mai mică, diodele cu laser prezintă un minim de pericol de șoc electric.
Dezavantajul diodelor laser:
Grinzile cu diode laser sunt extrem de divergente, adică "în formă de pană", în loc de drept și paralel, și au distanțe coerente mai scurte, ceea ce face ca performanțele optice să fie mai scăzute. Ele nu sunt la fel de potrivite ca laserele de heliu-neon pentru o holografie de înaltă calitate. În plus, semiconductorii, în dispozitivele electronice, sunt predispuși la descărcări electrice statice, ceea ce înseamnă că laserele diode din aceste dispozitive pot fi deteriorate de o sursă de alimentare instabilă și fluctuantă. De asemenea, predispuse la îmbătrânire treptată, diodele cu laser, cu timpul, utilizează cantități tot mai mari de energie, cu eficiență scăzută.
3.3.1.2 Receptorii TSOP1738
Așa cum am descris la începutul capitolului, barierele optice prezintă emițători și receptori. Drept urmare, în cele ce urmează vor fi prezentați receptorii TSOP1738, cei utilizați în cadrul proiectului de față.
În figura 3.7, este prezentat un astfel de receptor.
Figura 3.7 Receptor TSOP1738 [12]
În linii mari, TSOP 1738 este membru al seriei de receptori IR de la distanță. Una dintre particularitățile acestei familii, este aceea că acest modul de senzor IR este alcăutuit dintr-o diodă PIN și un preamplificator, care sunt incorporate într-un singur „pachet”. De remarcat este faptul că exista mai multe tipuri de astfel de receptori TSOP; ceea ce face ca aceste tipuri să difere este chiar frecvența purtătoare. Cum am ales utlizarea unui generator reglat la 38 kHz, receptorii utilizați for fi caracterizați de frecvența purtătoare de 38 kHz. În tabelul 2.x sunt furnizate, cu scop doar informativ, și celelalte tipuri de receprori, aparținând marii famiii TSOP17…
Tabelul 3.2 Tipuri de receptori TSOP pentru diferite frecvențe purtătoare[12]
Marele avantaj al acestei familii este că semnalul de ieșire demodulat poate fi direct decodat de un microprocesor. TSOP17 este seria standard de receptor IR de la distanță, care suportă toate codurile majore de transmisie.
Se poate vedea încă din figura 3.7 existența a trei pini, urmând ca în figura 3.8 să fie detaliată această diagramă a pinilor.
Figura 3.8 Diagrama pinilor [12]
Modul de funcționare este următorul:
Iesirea receptorului este activă scăzut și oferă + 5V în starea OFF. Atunci când undele IR, provenite de la o sursă, cu o frecvență centrală de 38 kHz, pătrunde prin ea, ieșirea sa scade. Luminile provenite de la lumina soarelui, lămpile fluorescente, ș.a.m.d. pot cauza o perturbare a acestuia și pot duce la o ieșire nedorită chiar și atunci când sursa nu transmite semnale IR. În acest scop, pentru a suprima astfel de perturbări, sunt utilizate un filtru de bandă, un stadiu de integrator și un control automat al câștigului. Modulul TSOP are un circuit de control încorporat pentru amplificarea impulsurilor codate de la emițătorul IR. Un semnal este generat când fotodioda PIN primește semnalele. Acest semnal de intrare este recepționat printr-un control automat al câștigului (AGC). Pentru o serie de intrări, ieșirea este alimentată înapoi la AGC pentru a regla câștigul la un nivel adecvat. Semnalul de la AGC este trecut la un filtru de bandă pentru a filtra frecvențele nedorite. După aceasta, semnalul se duce la un demodulator și această ieșire demodulată conduce un tranzistor npn. Ieșirea colectorului a tranzistorului este obținută la pinul 3 al modulului TSOP. Membrii seriei TSOP17xx sunt sensibili la diferite frecvențe centrale ale spectrului IR. De exemplu, TSOP1738 este sensibil la 38 kHz, în timp ce frecvența centrală TSOP1740 la 40 kHz.
În cele ce urmează este expusă și diagrama bloc a unui astfel de receptor, conținând blocurile discutate în modul de funcționare, urmată de câteva caracteristici esențiale.
Figura 3.9 Diagrama bloc a receptorilor TSOP 17..[12]
Caracteristici:
Detector foto și preamplificator într-un singur pachet;
Filtru intern pentru frecvența PCM;
Îmbunătățirea ecranării împotriva perturbării câmpului electric;
Compatibilitate TTL și CMOS;
Ieșire activă scăzută;
Consum redus de putere;
Imunitate ridicată împotriva luminii ambientale.
3.3.2 Familia Arduino
Când discutăm despre marea familie Arduino, ne referim la multitudinea de plăci realizate, fiecare caracterizată de propria capacitate. Unul dintre marile avantaje ale acestei familii, avantaj ce o face atât de utilizată în zilele noastre, este acela că o parte a hardware-ului este „open source”, ceea ce înseamnă că alte companii sau chiar ingineri pot modifica și produce derivate ale plăcilor Arduino, care pot oferi mult mai multe funcționalități. Avem mai jos câteva dintre opțiunile marii familii Arduino:
Arduino Uno;
LilyPad Arduino;
Arduino Mega;
Arduino Leonardo, ș.a.m.d
3.3.2.1 ESP8266
Întrucât aveam nevoie de un „ajutor” în ceea ce privește transmiterea datelor în timp real către un server de tip cloud, am ales să folosesc beneficiile aduse de modulul ESP8266, mai exact de WEMOS D1.
ESP8266 oferă o soluție completă și autonomă de rețea WiFi; Acesta poate fi folosit pentru a găzdui aplicația sau pentru a descărca funcțiile de rețea WiFi de la un alt procesor de aplicații. Când aplicația ESP8266 „găzduiește” aplicația, aceasta se încarcă direct de la un flash extern. Alternativ, servind ca un adaptor WiFi, accesul la internet wireless poate fi adăugat la orice design bazat pe microcontrolere cu conectivitate simplă (interfață SPI / SDIO sau I2C / UART). ESP8266 se numără printre cele mai integrate cipuri WiFi din industrie; Acesta integrează întrerupătoarele de antenă, amplificatorul de putere, amplificatorul de zgomot redus, filtrele, modulele de gestionare a alimentării, necesită circuite externe minime, iar întreaga soluție, inclusiv modulul frontal, este proiectată să ocupe zona minimă de PCB. [17]
În figura 3.10 se regăsește design-ul unui astfel de modul, urmat de exemple de aplicații în care este utilizat.
Figura 3.10 ESP8266[13]
Domeniile majore ale aplicațiilor ESP8266 la IoT includ:
Electrocasnice;
Automatizarea locuinței;
Smart Plug și lumini;
Control industrial wireless;
Monitoare pentru copii;
Rețele de senzori;
Dispozitive Wi-Fi compatibile cu localizarea, ș.a.m.d.
Schema electrică a acestui modul este furnizată în figura următoare.
Figura 3.11 Schema electrică a modulului ESP8266 [13]
3.3.2.2 WEMOS D1
În linii mari, am preferat să prezint pentru început funcționalitatea modulului ESP8266, întrucat placa utilizată în cadrul proiectului prezentat este WeMos D1, o placă mini Wi-fi, bazată în fond pe ESP8266.
În figura 3.12, este prezentată placa utilizată, urmată de semnificația pinilor și de funcționalitățile acestora.
Figura 3.12 WEMOS D1 [14]
Caracteristici:
11 pinii de intrare / ieșire digitală, toți pinii au întrerupere / pwm / I2C / cu un singur fir (cu excepția D0);
O intrare analogică (intrare maximă de 3.2 V);
O conexiune Micro USB;
Power Jack 9-24V power input
Compatibil cu Arduino;
Compatibil cu NodeMCU. [57]
Tabelul 3.3 Funcțiile pinilor WEMOS D1[17]
3.3.3 Afișajul LCD 16×2
Termenul de cristal lichid esti folosit pentru a descrie o substanță într-o stare între lichid și solid, dar care prezintă proprietăți din ambele stări. Moleculele de cristale lichide au tendința de a se aranja singure până când toate se îndreaptă în aceeași direcție. Acest aranjament de molecule permite mediului să curgă ca un lichid. In funcție de temperatură și natura specifică a substanței, cristalele lichide pot exista în una sau mai multe faze distincte. Cristalele lichide într-o fază nematică, în care nu există nicio ordonare spațială a moleculelor, de exemplu, sunt utilizate în tehnologia LCD (Liquid Crystal Display).[16]
Ecranul LCD-ului este un modul de afișare electronică și are o gamă largă de aplicații. Un afisaj LCD 16×2 este un modul de bază și este foarte frecvent utilizat în diverse dispositive și circuite. Aceste module sunt preferate în defavoarea celor cu șapte segmente sau modulelor multi-segment, motivele fiind: LCD-urile sunt economice, ușor de programat, nu au nicio limitare în a afișa caractere speciale și chiar și personalizate, etc. acest LCD fiecare caracter este afișat într-o matrice de 5×7 pixeli. LCD-ul are două registre numite Comandă și Date.
Registrul de comandă stochează instrucțiunile comenzilor date LCD-ului. O comandă este o instrucțiune dată LCD-ului pentru a face o sarcină predefinită cum ar fi inițializarea, ștergerea ecranului, stabilirea poziției cursorului, controlul afișajului etc. Registrul de date stochează datele ce urmează să fie afișate pe ecranul LCD-ului. Datele sunt valorile ASCII ale caracterelor ce urmează să fie afișate pe ecran. [16]
Pentru a afișa numărul de persoane care se regăsesc la un moment dat în respectiva incintă sau pur și simplu pentru a afișa conorizarea, am ales utilizarea unui LCD 16×2, ce se folosește de comunicarea I2C pentru legătura cu modulul care actualizează periodic aceste informații.
În linii mari, LCD-ul permite afișarea a 16 caractere pe două rânduri, dispune așa cum am menționat de un backpack I2C, ce va permite conectarea la plăcuța utilizată prin doar două fire și, nu în ultimul rând, deține un backlight de culoare albastră.
Figura 3.13 Afișaj LCD 16×2 [18]
3.3.3.1 PCF8574
Dispozitivul PCF8574 oferă extensie I/O de la distanță pentru majoritatea familiilor de microcontrolere prin intermediul interfeței I2C (ceas serial-SCL, date seriale-SDA).
Dispozitivul dispune de un port I / O cvasi-bidirecțional pe 8 biți (P0-P7), care include ieșiri blocate cu capacitate ridicată de acționare pentru LED-uri direcționate direct. Fiecare intrare / ieșire cvasi-bidirecțională poate fi utilizat ca intrare sau ieșire fără utilizarea unui semnal de control al direcției de date. La pornire, I / Os sunt ridicate. În acest mod, este activă doar o sursă de curent la VCC.
Acest extensor de intrare / ieșire pe 8 biți (I / O) pentru magistrala bidirecțională pe două linii (I2C) este proiectat pentru funcționarea VCC între 2,5 V și 6 V.
Caracteristici:
Consum redus în așteptare-curent de 10 μA
I2C la Expander de port paralel
Ieșire întreruptă de scurgere deschisă
Compatibil cu majoritatea microcontrolerelor
Ieșiri strânse cu unitate de curent înalt
Capacitatea de a conduce direct LED-uri
Performanța de blocare depășește 100 mA [19]
Figura 3.14 PCF8574 [19]
Aplicații ale PCF8574-ului:
Servere
Routere (echipamente de comutare a telecomunicațiilor)
Calculatoare personale
Electronică personală
Automatizare industrială
Figura 3.15 Vedere detaliată a dispozitivului [19]
3.4 Schema electrică a sistemului:
Figura 3.16 Schema electrică a sistemului
3.5 Realizarea Hardware a proiectului
În subcapitolele anterioare, au fost descrise caracteristicile componentelor utilizate. În cele ce urmează, vor fi expuși pașii necesari pentru realizarea proiectului:
3.5.1 Realizarea oscilatorului de 38kHz
Figura 3.17 Realizarea oscilatorului de 38 de kHz
Adăugarea diodei laser: Varianta finală a ocilatorului:
Figura 3.18 Dioda Laser utilizată Figura 3.19 Varianta finală
Figura 3.20 Realizarea oscilatorului de 38 kHz
Rolul său:
Având în vedere că am ales utilizarea receptorilor TSOP1738, ce lucrează pe o frecvență egală cu 38 de kHz, acest oscilat, generează frecvența purtătoare necesară receptorilor TSOP, motiv pentru care l-am reglat la această frecvență.
3.5.2 Realizarea barierelor optice
Figura 3.21 Realizarea barierelor optice (a)
Figura 3.22 Realizarea barierelor optice (b)
Se pot remarca în figura anterioară existența receptorilor TSOP1738. Pentru depanare rapidă, am ales utilizarea a două led-uri ce indică starea senzorilor: în momentul în care o persoană va trece prin fața barierei, led-ul se va aprinde.
3.5.3 WeMos D1
Figura 3.23 Placa de dezvoltare WEMOS D1
Am ales utilizarea acestei plăci în mod special pentru conectivitate: WeMos D1 reprezintă o placă mini Wi-fi, bazată în fond pe ESP8266. Având conexiune Wi-fi, aceasta se poate conecta la rețeaua locală de internet, trimițând datele către server. Un alt avantaj este faptul că această placă permite alimentarea la 9-24V, spre deosebire de plăcile celelalte, ceea ce înseamnă că poate fi alimentată și de la un acumulator de UPS.
3.5.4 Afișajul LCD
Figura 3.24 Afișajul LCD utilizat
Rolul afișajului LCD este prezentat în subcapitolul 3.3.4. Pe scurt, pe LCD va fi afișată valoarea curentă a numărului de persoane aflate în incintă.
3.5.5 Macheta finală
Figura 3.25 Macheta finală
Capitolul 4 – Descrierea părții software a proiectului
4.1 Mediul de dezvoltare Arduino IDE
Mediul de dezvolotare Arduino IDE este o platformă de prototipuri open-source ușor de utilizat atât hardware cât și software. Software-ul Arduino este ușor de utilizat pentru începători, dar suficient de flexibil pentru utilizatorii avansați, rulând pe mai multe sisteme de operare (Windows, Linux). Limbajul poate fi extins prin intermediul bibliotecii C++, iar pentru înțelegere detaliilor tehnice se poate face saltul de la Arduino la limbajul de programare AVR C, pe care se bazează.
Softul conține un editor de text pentru scrierea de cod, o zonă de mesaj, o consolă de text, o bară de instrumente cu butoane pentru funcții comune și o serie de meniuri , evidențiate în figura 4.1. Acesta se conectează la harware-ul Arduino pentru a încărca programe și pentru a comunica cu el. [20]
Un program Arduino are două funcții principale ce trebuie să existe în fiecare program:
Void setup()
{
// cod inițializare- rulează o singură dată
}
Void loop()
{
// bucla pincipală- rulează cât timp plăcuța este alimentată
}
Figura 4.1 Mediul de dezvoltare Arduino IDE
4.2 Programarea și comunicația cu calculatorul
4.2.1 Protocolul I2C
I2C este un protocol multipunct multimaster inventat de către Phillips.
Este un protocol care suportă viteze de transfer și distanțe de comunicație destul de mici, fiind utilizat în special pentru comunicația între dispozitive aflate pe aceeași placă de circuite imprimate (telefoane mobile, plăci de bază, sisteme embedded). Avantajele sale principale sunt ușurința de implementare, și posibilitatea de a lega mai multe echipamante pe aceeași linie. Acest tip de comunicație este cel mai des întâlnit la dispozitivele de tipul: memorii EEPROM, ceasuri de timp real (RTC), ș.a.m.d..
Din punct de vedere electric protocolul I2C se poate implementa pe 2 fire numite SDA (pentru date) și SCL (pentru ceas). Ambele linii sunt conectate la sursă de alimentare prin rezistențe de pull-up deoarece porturile dispozitivelor conectate la o linie I2C sunt de tip open-collector. Valorile rezistențelor nu reprezintă un factor critic, ele pot avea orice valoare de la 1,8 kΩ până la 47 kΩ sau chiar mai mult. Rezistențe mai mici sunt recomandate pentru viteze de comunicație mai mari, dar în aplicații low-power trebuie utilizate rezistențe cât mai mari. Pentru a scrie “1” logic pe o linie un dispozitiv o lasă liberă și pentru a scrie “0” logic trage linia la masă. De obicei pe o linie se regăsește un singur master, deși protocolul permite existența mai multora. Doar masterul poate să inițieze comunicația și el este cel care controlează linia de ceas. Un exemplu de linie de comunicație I2C este prezentat în Figura 4.2.[15]
Dacă e necesar un dispozitiv slave poate să oprească masterul din comunicație ținând linia SCL jos (în “0” logic). Această facilitate se numește clock-stretching (“întinderea” timpului), și este necesară atunci când un dispozitiv slave are nevoie de timp ca să poată interpreta/procesa ce i-a trimis masterul sau pur și simplu să-i pună anumite date la dispoziție acestuia. Nu toate dispozitivele slave suportă această facilitate, dar orice master ar trebui să o poată utiliza.
Comunicația pe o linie I2C începe cu o secvență de start și se termină cu o secvență de stop, ambele transmise de către master. În momentul în care masterul transmite secvența start toate circuitele slave încep să asculte. Un octet se transmite în nouă cicli de ceas
„Caracteristicile protocolului I2C:
Așa cum este specificat și mai sus, magistrala I2C deține numai două linii de magistrală:o linie serială de date, respectiv o linie serială de clock;
Fiecare dispozitiv conectat la magistralăeste adresabil software în orice moemnt printr-o adresă unică și relații simple de tip master/slave;
Oricare dintre circuitele master poate funcționa atât ca transmițător master, cât și ca receptor master;
Reprezintă o adevărată magistrală multi-master, care include detecția ciocnirii și procedura de arbitrare, în scopul prevenirii falsificării sau pierderii datelor în cazul în care două sau mai multe circuite de tip master inițiază simultan un transfer de date;
Transferul de date serial, bidirecțional, se poate face cu mai multe viteze, alese în funcție de modul de lucru stabilit de proiectant.”[21]
4.2.2 UART
UART (Universal Asynchronous Receiver / Transmitter) este microchipul de programare care controlează interfața unui computer cu dispozitivele sale seriale atașate. În mod specific, acesta furnizează computerului interfața RS-232C Data Terminal Equipment (DTE), astfel încât să poată "vorbi" și să facă schimb de date cu modemuri și alte dispozitive seriale.[21]
Cum funcționează?
UART-ul care va transmite date primește datele de la o magistrală de date. Bus-ul de date este folosit pentru a trimite date către UART de către un alt dispozitiv, cum ar fi CPU, memorie sau microcontroler. Datele sunt transferate din magistrala de date către UART-ul de transmisie în formă paralelă. După ce UART-ul de transmisie primește datele paralele din magistrala de date, acesta adaugă un bit de pornire, un bit de paritate și un bit stop, creând pachetul de date. Apoi, pachetul de date se emite în serie, bit-by-bit la pinul Tx. UART-ul de recepție citește pachetul de date biți pe bit la pinul său Rx. UART-ul de recepție convertește apoi datele în formă paralelă și elimină bitul de pornire, bitul de paritate și biții de oprire. În cele din urmă, UART-ul de recepție transferă pachetul de date în paralel cu magistrala de date de la capătul receptorului:
Figura 4.3 Modul de funcționare al UART-ului[21]
4.2.3 Utilizarea tehnologiei Wi-fi
Wi-Fi este numele unei tehnologii populare de rețea wireless care utilizează unde radio pentru a furniza internet wireless de mare viteză și conexiuni de rețea. Altfel spus, tehnologia wi-fi reprezintă o tehnologie pentru rețelele locale fără fir cu dispozitive bazate pe standardele IEEE 802.11.
Printre dispozitivele care utilizează tehnologia Wi-Fi putem include:computerele personale, consolele pentru jocuri video, smartphone-urile, camerele digitale, tabletele, televizoarele avansate, imprimantele moderne, ș.a.m.d.. Dispozitivele compatibile Wi-Fi se pot conecta la Internet printr-o rețea WLAN și un punct de acces fără fir. Un astfel de punct de acces (sau hotspot) are o gamă de aproximativ 20 de metri în interior și o gamă mai mare în aer liber. [22]
Figura 4.4. Uttilizarea tehnologiei Wi-fi
Tehnologia Wi-Fi poate fi utilizată pentru a oferi acces la Internet pentru dispozitive care se află în raza unei rețele fără fir conectată la Internet. Acoperirea unuia sau mai multor puncte de acces interconectate (hotspot-uri) se poate extinde dintr-o zonă la fel de mică ca și câteva camere până la un număr de kilometri pătrați. Acoperirea în zona mai mare poate necesita un grup de puncte de acces cu acoperire suprapusă. De exemplu, tehnologia publică Wi-Fi în aer liber a fost utilizată cu succes în rețelele de rețele fără fir din Londra, Marea Britanie.
Un semnal Wi-Fi ocupă cinci canale în banda de 2,4 GHz. Orice număr de două canale care diferă de cinci sau mai multe, cum ar fi 2 și 7, nu se suprapun.
Figura 4.5 Funcționarea tehnologiei Wi-fi [22]
În cadrul proiectului de față, am utilizat tehnologia Wi-fi pentru conectarea la rețeaua locală a dispozitivului, în vederea transmiterii datelor în timp real sau la un interval prestabilit, către un server de tip cloud, în cazul nostru fiind ThingSpeak.
ThinkSpeak reprezintă un serviciu de platformă de analiză IoT care ne permite agregarea, vizualizarea și analiza fluxurilor de date live în cloud. ThingSpeak oferă vizualizări instantanee ale datelor trimise de dispozitive proprii către ThingSpeak. Cu abilitatea de a executa codul sursă în ThingSpeak, se pot efectua analize online și prelucrarea datelor în timp ce apar. Unele dintre capabilitățile cheie ale ThingSpeak includ:
Configurarea cu ușurință a dispozitivelor pentru a transmite date către ThingSpeak, utilizând protocoale populare IoT;
Vizualizarea datelor în timp real;
Rularea propriilor analize IoT în mod automat pe baza programelor sau a evenimentelor; ș.a.m.d.
4.3 Algoritmul de funcționare al sistemului automat de numărare
În acest subcapitol vor fi detaliate părțile realizării software a sistemului automat de numărare. În linii mari, așa cum am specificat în cadrul introducerii, sistemul automat va fi capabil de a afișa datele de contorizare pe un afișaj LCD, prezentat în capitolul anterior și, fiind bazat pe placa de dezvoltare WEMOS D1 și conectat la rețeaua wi-fi locală, datele vor fi transmise către un server de tip cloud gratuit, https://thingspeak.com.
Vom începe să detaliem modul în care datele de contorizare vor fi afișate pe ecranul LCD.
Fiind vorba despre caractere „personalizate”, am creat un număr maxim de opt caractere speciale în memoria alocată microcontroler-ului LCD-ului, cu ajutorul funcției lcd.createChar, caractere care vor fi folosite în diferite combinații pentru afișarrea cifrelor pe două rânduri și trei coloane:
LT;
UB;
RT;
LL;
LB;
LR;
UMB;
LMB.
Vom analiza figura 4.6:
Figura 4.6 Exemplu afișaj LCD
Toate caracterele sunt alcătuite din opt topologii de segmente, iar ordinea lor are ca referință caracterul 0.
Spre exemplu, pentru caracterul 9 vom proceda în felul următor: se observă că pozițile 0, 2, 4 și 5 corespund cu cele ale caracterului 0, iar pentru cele două poziții rămase vom folosi unul dintre cele opt caractere personalizate, după caz:
case 9:
lcd.write(0);
lcd.write(6);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(' ');
lcd.write(4);
lcd.write(5);
break;
unde caracterul 6 este: „ lcd.createChar(6,UMB)”, iar la rândul său UMB este:
byte UMB[8] ={
B11111,
B11111,
B11111,
B00000,
B00000,
B00000,
B11111,
B11111
};
În subcapitolele acestui capitol am adus în discuție magistrala I2C și PFC8574. Cu ajutorul magistralei se realizează practic comunicația între placa de dezvoltare și afișajul LCD, iar PFC8574 dispune de un port I / O cvasi-bidirecțional pe 8 biți, ceea ce înseamnă că informațiile de pe fluxul serial al magistralei vor fi transpuse pe cale paralelă.
Depășind ideea de afișare a numărului curent de persoane din incintă, ajungem la comunicația cu server-ul sau, mai corect spus, modul în care datele sunt transmise către server. Conectarea la rețeaua locală are aici rolul esențial. Așadar, în structura codului am „definit” detaliile conexiunii wi-fi:
const char* ssid = "Anap";
const char* password = "anapopescu";
Principala funcție ce reflectă transmiterea datelor către server este send_data_server(void):
int send_data_server(void){
if (last_up > millis()) { digitalWrite(LED_busy, HIGH); Serial.println("Cloud wait"); return 0;}
digitalWrite(LED_com, LOW); // Turn the LED on (inversed logic)
Serial.print("Value: ");
Serial.print(contor);
ThingSpeak.writeField(myChannelNumber, 1, contor, myWriteAPIKey);
last_up=millis() + delay_up;
upload_flag=0;
Serial.println(" send to Cloud");
digitalWrite(LED_busy, LOW);
digitalWrite(LED_com, HIGH); // Turn the LED off by making the voltage HIGH
return 1;
}
Aici intervine și constrângerea server-ului, descoperită pe parcurs. Acesta nu va accepta date care vin la un interval mai mic de 15 secunde. Practic, dacă două persoane vor pătrunde în clădire într-un interval de timp egal cu 5 secunde, server-ul va primi informația că două persoane au intrat, însă nu va primi informația după fiecare persoană în parte.
Foarte important este însă și faptul că programul este realizat în așa fel încât, la momentul alimentării se va face un update la ultima valoare transmisă către server. Astfel că, luând ca exemplu practic pătrunderea în incintă a 200 de persoane urmată de o pană de curent, la momentul realimentării, valoarea afișată pe display va fi 200.
Câțiva parametrii esențiali din structura codului:
ApiKey: cheia de autentificare furnizată la crearea contului pe server-ul thingspeak
Figura 4.7 Captură din contul ThingSpeak
MyChanellNumber: Numărul canalului alocat
Figura 4.8 MyChanellNumber
Upload_Flag: folosit pentru semnalizarea necesității transmiterii datelor;
Last_Update: timpul la care server-ul acceptă date sau timpul la care pot trimite următorul set de date către server;
Delay_Up: constrângerea server-ului pentru contul gratuit de transmisie a unui pachet de date(15 secunde în cazul de față).
În figura 4.9 am atașat câteva dintre rezultatele experimentale obținute pe parcursul realizării proiectului:
Figura 4.9 Exemple de date ajunse la server
4.4 Organigrama codului
Y Y
N N
Figura 4.10 Organigrama codului (a)
Organigrama întreruperilor pe semnal extern descrescător:
Figura 4.11 Organigrama codului (b)
Explicarea funcționării organigramei întreruperilor:
Figura 4.12 Explicarea funcționării organigramei întreruperilor
Presupunem că o persoană pătrunde în incintă, acțiune ce are ca și consecință activarea senzorului 1. Sistemul va fi capabil de a contoriza această acțiune ca o intrare numai după un anumit interval de timp, atunci când, conform figurii de mai sus, se activează și cel de-al doilea senzor. Scopul acestora este de a evita transmiterea datelor incorecte. În cazul în care o persoană pătrunde în incintă până la nivelul senzorului 1, urmând ca să părăsească apoi ieșirea, sistemul nu va contoriza acest fenomen drept o intrare în incintă. Situația este similară și în cazul acțiunii de părăsire a incintei.
Concluzii
Realizarea practică a acestui proiect mi-a adus la cunoștință lucruri noi, utile, interesante. Înainte de toate, în ceea ce privește tema propriu zisă, ceea ce trebuie menționat este faptul că ideea derivă oarecum din aglomerația suportată zilnic în mijloacele de transport în comun și nu numai. „Visul meu” ar fi ca implemenarea unui sistem automat care să fie capabil să contorizeze numărul de persoane care au pătruns într-un mijloc de transport, de exemplu, și, totodată, ar fi capabil să semnaleze atingerea capacității maxime a incintei, ar fi soluția unui mediu mai relaxant și mai avantajos pentru noi.
Tema fiind stabilită, cursul procesului de realizare privea ca următoare etapă alegerea componentelor propriu zise, printre cele de o importanță semnificativă fiind senzorii. Alegerea tipului de senzori a fost poate una dintre cele mai grele decizii, date fiind avantajele și dezavantajele aduse de multitudinea de senzori existenți și utili în astfel de aplicații. Însă, concentrarea este fixată în fond pe corectitudinea datelor, fapt ce elimină posibilitatea utilizării anumitor tipuri de senzori. Barierele optice m-au ajutat să elimin erorile de contorizare, având o „înclinare” spre excactitate. Practic, în cazul în care sunt activați, pe rând, ambii senzori (incrementare sau decrementare a contorului), informația de intrare/ieșire din incintă este ignorată.
Pe parcurs, au intervenit, bineînțeles și contrângeri. Cu intenția de a transfera datele în timp real către server-ul dorit, am constatat la un moment dat că, deși avusese loc o intrare în incintă, afișată și pe LCD, la server informația nu fusese trasnmisă. La o mai bună documentare asupra platformei, am descoperit faptul că, în cazul în care evenimentele sunt mult prea frecvente, informația va fi transferata la un interval prestabilit, în cazul proiectului de 15ms.
Continuând cu testarea funcționalității proiectului, am aprofundat ceea ce protocolul I2C presupune, avantajele utilizării, am aprofundat cunoștințele asupra plăcilor de dezvoltare Arduino, tipul lor și caracteristicile proprii. În acest sens, am înțeles ce presupune sau, mai corect spus, ce este un ESP8266, legătura dintre acest modul și placa de dezvoltare utilizată (WEMOS D1) și, nu în ultimul rând, utilitarea lor în procesul de automatizare. Ne dorim ca, odată cu trecerea timpului, să ne adaptăm cât mai mult cu tehnologia avansată, să înțelegem că scopul ideii de automatizare este strict de a ne ușura activitatea de zi cu zi.
Participând la dezvoltarea și implementarea acestui proiect, mi-am atins scopul propus inițial: acela de a aplica cunoștințele teoretice dobândite pe parcursul studiilor.
Am învățat astfel că, întâi de toate, pentru a avea succes, un proiect trebuie să respecte cerințele clientului, pe lângă cele tehnice și comerciale (cost). Apoi, am înțeles faptul că de cele mai multe ori aplicațiile teoretice au nevoie de adaptări pentru a putea fi implementate și, nu în ultimul rând, proiectul de diplomă m-a făcut să înțeleg faptul că un inginer este acea persoană care caută și oferă soluții implementabile pentru probleme reale, soluții conforme problemei puse și bugetului disponibil.
Bibliografie
[1] Burileanu, C., Arhitectura microprocesoarelor, Editura Tehnică, București, 1997
[2] Paraschiv, N., Introducere în știința sistemelor și a calculatoarelor, . Editura Matrix Rom, București, 2007, capitolul ”Sisteme automate de reglare și control”
[3] http://www.siear.ro/doc/I18.pdf , accesat la data de 20.04.2017
[4] Blitz, J., Fundamental of Ultrasonic, London, 1967
[5] http://romdevices.com/pdf/Safety/sb2arh.pdf , accesat la 27.04.2017
[6] Funcționarea barierelor optice http://www.ifm.com/ifmro/web/pmain/010_070_030.html, accesat la 27.04.2017
[7]Introducere în funcționarea barierelor optice http://www.polytec.com/fileadmin/user_uploads/Products/Optoelektronische_Komponenten/Sensoren/Documents/PH_OEK_Espros_AN01-7.pdf, accesat la 27.04.2017
[8] http://trainelectronics.com/artcles/PulsedIR/index.htm , accesat la data de 30.04.2017
[9] Foi de catalog NE555http://www.ti.com/lit/ds/symlink/ne555.pdf , accesat la data de 02.05.2017
[10] Băjenescu, T-M., Component Reliability for Electronic Systems, Artech House, Boston and London, 2010
[11] Coldren LA., Diode lasers and photonic integrated circuits
[12] Foi de catalog, http://www.micropik.com/PDF/tsop17xx.pdf, accesat la data de 05.05.2017
[13] ESP8266, https://www.itead.cc/wiki/ESP8266_Serial_WIFI_Module, accesat la 05.05.2017
[14] Foi de catalog WEMOS D1 https://www.wemos.cc/, accesat la 07.05.2017
[15]Gray, P., Analysis and design of analog integrated circuits – Fourth edition, Editura John Wiley & Sons, New York, 2001
[16] Mohan, N., Power electronics – A first course, Editura John Wiley & Sons, New York, 2012
[17] Foi de catalogWEMOS D1 https://wiki.wemos.cc/products:d1:d1_mini, accesat 08.05.2017
[18] Dimitriu, L., Aparate electronice de măsurare și control, Editura Univeritatea Tehnică “Gh. Asachi”, Iași, 2009, capitolul “Sisteme de afișare alfanumerică pe afișaj LCD”
[19] Foi de catalog PCF8574 http://www.ti.com/lit/ds/symlink/pcf8574.pdf, accesat la 14.05.2017
[20] David Kushner (2011-10-26). "The Making of Arduino"
[21] Rădescu, R., Echipamente și protocoale de comunicație Internet, Editura Matrix Rom, București, 2003
[22]http://home.ustc.edu.cn/~wfsun/lab/course/wireless/Steve%20Rackley%20-%20Wireless%20Networking%20Technology.pdf , accesat la 20.05.2017
Anexe
Anexa 1: Codul sursă al programului
#include <ESP8266WiFi.h>
#include <ThingSpeak.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20 for a 16 chars and 2 line display
#define LED_com 2 ///ON BOARD
#define LED_busy 14
#define PIN1 12
#define PIN2 13
#define read1 digitalRead(PIN1)
#define read2 digitalRead(PIN2)
const char* ssid = "Anap";
const char* password = "anapopescu";
char x;
int contor=0;
char upload_flag=0;
long last_up=0;
const long delay_up=15000;
unsigned long myChannelNumber = 281108;
const char * myWriteAPIKey = "COBJ4TY66HD2ZRXN";
const char * myReadAPIKey = "298C2EYTDOJMUOPB";
const char* server = "api.thingspeak.com";
WiFiClient client;
// the 8 arrays that form each segment of the custom numbers
byte LT[8] ={
B00111,
B01111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
byte UB[8] ={
B11111,
B11111,
B11111,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte RT[8] ={
B11100,
B11110,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
byte LL[8] ={
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B01111,
B00111
};
byte LB[8] ={
B00000,
B00000,
B00000,
B00000,
B00000,
B11111,
B11111,
B11111
};
byte LR[8] ={
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11110,
B11100
};
byte UMB[8] ={
B11111,
B11111,
B11111,
B00000,
B00000,
B00000,
B11111,
B11111
};
byte LMB[8] ={
B11111,
B00000,
B00000,
B00000,
B00000,
B11111,
B11111,
B11111
};
void numbers(int n){
lcd.setCursor(x, 0);
switch (n){
case 0:
lcd.write(0);
lcd.write(1);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(3);
lcd.write(4);
lcd.write(5);
break;
case 1:
lcd.write(1);
lcd.write(2);
lcd.write(' ');
lcd.setCursor(x,1);
lcd.write(' ');
lcd.write(255);
lcd.write(' ');
break;
case 2:
lcd.write(6);
lcd.write(6);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(3);
lcd.write(7);
lcd.write(7);
break;
case 3:
lcd.write(6);
lcd.write(6);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(7);
lcd.write(7);
lcd.write(5);
break;
case 4:
lcd.write(3);
lcd.write(4);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(' ');
lcd.write(' ');
lcd.write(255);
break;
case 5:
lcd.write(255);
lcd.write(6);
lcd.write(6);
lcd.setCursor(x, 1);
lcd.write(7);
lcd.write(7);
lcd.write(5);
break;
case 6:
lcd.write(8);
lcd.write(6);
lcd.write(6);
lcd.setCursor(x, 1);
lcd.write(3);
lcd.write(7);
lcd.write(5);
break;
case 7:
lcd.write(1);
lcd.write(1);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(' ');
lcd.write(0);
lcd.write(' ');
break;
case 8:
lcd.write(0);
lcd.write(6);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(3);
lcd.write(7);
lcd.write(5);
break;
case 9:
lcd.write(0);
lcd.write(6);
lcd.write(2);
lcd.setCursor(x, 1);
lcd.write(' ');
lcd.write(4);
lcd.write(5);
break;
default:
lcd.clear();
x=-4;
};
x+=4;
}
int send_data_server(void){
if (last_up > millis()) { digitalWrite(LED_busy, HIGH); Serial.println("Cloud wait"); return 0;}
digitalWrite(LED_com, LOW); // Turn the LED on (inversed logic)
Serial.print("Value: ");
Serial.print(contor);
ThingSpeak.writeField(myChannelNumber, 1, contor, myWriteAPIKey);
last_up=millis() + delay_up;
upload_flag=0;
Serial.println(" send to Cloud");
digitalWrite(LED_busy, LOW);
digitalWrite(LED_com, HIGH); // Turn the LED off by making the voltage HIGH
return 1;
}
void get_last_data(void){ //// in caz de defectiune sau la intreruperea curentului, va porni de la ultima valoare transmisa de la server
digitalWrite(LED_com, LOW); // Turn the LED on (inversed logic)
Serial.print("Connecting for last data to ");
Serial.println(server);
contor = ThingSpeak.readIntField(myChannelNumber, 1, myReadAPIKey);
digitalWrite(LED_com, HIGH); // Turn the LED off by making the voltage HIGH
}
void isr_pin1 () {
//Serial.println("^1");
if (read2) {
contor++;
upload_flag=1;
Serial.println(contor);
}
}
void isr_pin2 () {
//digitalWrite(LED_sck,digitalRead(PIN1));
//Serial.println("^2");
if (read1) {
contor–;
upload_flag=1;
Serial.println(contor);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println();
lcd.init();
// assignes each segment a write number
lcd.createChar(0,LT);
lcd.createChar(1,UB);
lcd.createChar(2,RT);
lcd.createChar(3,LL);
lcd.createChar(4,LB);
lcd.createChar(5,LR);
lcd.createChar(6,UMB);
lcd.createChar(7,LMB);
pinMode(LED_com, OUTPUT); // Initialize the LED_BUILTIN pin as an output
digitalWrite(LED_com, HIGH); //turn off
pinMode(LED_busy, OUTPUT);
pinMode(PIN1,INPUT_PULLUP);
pinMode(PIN2,INPUT_PULLUP);
attachInterrupt(PIN1, isr_pin1, FALLING);
attachInterrupt(PIN2, isr_pin2, FALLING);
//attachInterrupt(PIN2, isr_pin2, CHANGE);
Serial.println();
Serial.print("My Channel Number: ");
Serial.println(myChannelNumber);
Serial.print("My Read API Key: ");
Serial.println(myReadAPIKey);
Serial.print("My Write API Key: ");
Serial.println(myWriteAPIKey);
Serial.print("Connecting to ");
Serial.println(ssid);
lcd.clear();
lcd.print("Wi-Fi: ");
lcd.print(ssid);
WiFi.begin(ssid, password);
lcd.setCursor(0,1);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
lcd.print(".");
digitalWrite(LED_com, !digitalRead(LED_com));
}
lcd.clear();
lcd.print("IP:");
lcd.setCursor(0,1);
lcd.print(WiFi.localIP());
Serial.println();
Serial.println("WiFi connected");
Serial.print("IP on local network: ");
Serial.println(WiFi.localIP());
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
digitalWrite(LED_com, HIGH);
ThingSpeak.begin(client);
get_last_data();
///https://thingspeak.com/channels/281108/fields/1/last
lcd.print("Get ");
lcd.print(contor);
Serial.print("GET: ");
Serial.println(contor);
delay(1000);
lcd.clear();
}
void loop() {
lcd.clear();
x=0;
if (contor > 9999)
contor = 9999;
if (contor < 0)
contor = 0;
if (contor>=1000)
numbers(contor/1000);
else x+=4;
if (contor>=100)
numbers(contor/100 %10);
else x+=4;
if (contor>=10)
numbers(contor/10 %10);
else x+=4;
numbers(contor%10);
if (upload_flag) send_data_server();
delay(1000);
}
Anexa 2: Schema electrică a plăcii de dezvoltare WEMOS D1
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: Sistem automat de numărare a persoanelor dintr-o incintă, prevăzut cu afișaj LCD [302544] (ID: 302544)
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.
