S.I. dr. ing. Andrian PETRARIU [620302]
UNIVERSITATEA “ȘTEFAN CEL MARE” DIN SUCEAVA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI ȘTIINȚA
CALCULATOARELOR
Specializarea: Automatică și Informatică Aplicată
LUCRARE DE LICENȚĂ
Coordonator științific:
S.I. dr. ing. Andrian PETRARIU
Absolvent: [anonimizat]
2018
UNIVERSITATEA “ȘTEFAN CEL MARE” DIN SUCEAVA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI ȘTIINȚA
CALCULATOARELOR
Specializarea: Automatică și Informatică Aplicată
Sistem de monitorizare a presiuni din pneuri cu
ajutorul unei aplicaț ii mobile
Coordonator științific:
S.I. dr. ing. Andrian PETRARIU
Absolvent: [anonimizat]
2018
1
Cuprins
I. Introducere ………………………….. ………………………….. ………………………….. ………………………… 2
1.1 Motiva ția alegerii temei ………………………….. ………………………….. ………………………….. ….. 3
II. Comunicații Wireless ………………………….. ………………………….. ………………………….. …………. 4
2.1 Scurtă introducere în comunicații ………………………….. ………………………….. …………………. 4
2.2 Tehnologia Wireless ………………………….. ………………………….. ………………………….. ………. 6
2.3 Modulul ESP8266 ESP -12E WiFi ………………………….. ………………………….. ………………… 7
III. Traductorul utilizat pentru realizarea sistemului și monitorizarea a presiunii din pneuri …… 10
3.1 Generalități ………………………….. ………………………….. ………………………….. ………………… 10
3.2 Traductorul de presiune utilizat ………………………….. ………………………….. ………………….. 12
IV. Aplica ția software Arduino IDE ………………………….. ………………………….. ……………………. 13
4.1 Generalități ………………………….. ………………………….. ………………………….. ………………… 13
4.2 Programarea microcontrolerului modului ESP -12E ………………………….. ……………………. 14
V. Platforma Firebase ………………………….. ………………………….. ………………………….. …………… 19
5.1 Introducere ………………………….. ………………………….. ………………………….. …………………. 19
5.2 Funcționare aplicație Firebase ………………………….. ………………………….. ……………………. 20
VI. Aplicația mobilă ………………………….. ………………………….. ………………………….. …………….. 22
6.1 Folosirea softului Android Studio ………………………….. ………………………….. ……………….. 22
6.2 Modul de funcționare a aplicației mobile din cadrul sistemului ………………………….. …….. 23
VII. Rezultatele obținute ………………………….. ………………………….. ………………………….. ……….. 25
7.1 Descrierea aplicației la nivel de schemă bloc ………………………….. ………………………….. … 25
7.2 Configurarea și asamblarea senzorilor cu modulul ESP -12E ………………………….. ………… 27
7.3 Descrierea proiectări cablajului ………………………….. ………………………….. ………………….. 30
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. .. 31
Anexe ………………………….. ………………………….. ………………………….. ………………………….. ……. 32
Bibliografie ………………………….. ………………………….. ………………………….. ………………………… 39
2
I. Introducere
Obiectivul lucr ării „Sistem de monitorizare a presiunii din pneuri ”constă în obținerea unui
sistem automat cu ajutorul căruia , pot fi monitorizați parametrii de calitate din interio rul pneurilor
spre exterior.
Prin măsurarea parametrilor din pneuri , evităm eventualele explozi , ce pot duce la
accidente grave dacă conducătorul autovehicului nu cunoaște acest aspect sau la scăderea presiunii
sub valorile necesare la uzura roților și afectarea direcției mașinii , în unele cazuri , când presiunea
din pneuri diferă în cele patru roți. În acest sens , poate fi utilizat sistemul de monitorizare a presiuni
din pneuri , în prezenta lucrare , pentru a evita aceste cazuri sau posibile pericole menționate mai
sus, ce țin de sigur anța noastră cât și a stări mașinii.
Cu ajutorul acestui sistem pot fi măsurați mai mulți parametri , cum ar fi presiunea cu
ajutorul unui traductor de mare precizie , temperatura determinată cu ajutroul unui senzor de
temperatură ce poate măsura temperaturi extreme și bateriile ce sunt de dimensiuni minime , dar
tensiuni și curenți acceptabili .
Valorile obținute sunt transmise pe un telefon mobil de tip „smartphone” , ceea ce aduce un
avantaj celui ce o folosește , pentru că poate verifica de oriunde situația presiunii din prenuri prin
intermediul unui modul de comunicații fără fir (Wireless) , iar afișarea rezultatelor pot fii vizibile
pe aplicația dezvoltată de mine.
3
1.1 Motiva ția alegerii temei
Am ales această temă ,, Sistem de monitorizare a presiunii din pneuri ”, deoarece refletă o
pasiune a mea mai veche pentru mașini , de a aduce noi imbunătățiri industriei de mașini.
Motivul pentru care am ales această temă derivă din dorința de cunoaștere și documentare
în legătură cu acest domeniu de trimitere a datelor , utilizând dispozitive, fără fire prin intermediul
aplicațiilor mobile .
Am fost foarte determinat să realizez acest sistem , deoarece sistemul creat de mine
combină o parte de programare a unui microcontroler folosind un soft de dezvo ltare specific , cu
trimiterea de informații într -o bază de date în timp real , pe o platformă , care se poate sincroniza
și poate actualiza datele primite de la senzor.
Un al doil ea avantaj pentru mine a fost în dezvoltarea aplicației mobile , unde am învățat ,
cum să primesc date de la un microcontroler prin intermediul unei baze date , ce este în conexiune
cu aplicația mea.
În opinia mea , un avantaj adus de mine acestui proiect este modul de conectare a
dispozitivelor, sincronizarea în timp real a datelor și monitorizarea lor de la distanță , cu ajutorul
unui dispozitiv mobil prin intermediul unei aplicații mobile dar și modul de încărcare a bateriilor
cu ajutorul unui mini panou sol ar.
4
II. Comunicaț ii Wireless
2.1 Scurtă introducere în comunicaț ii
Evoluția și dezvoltarea tehnologiei actuale cere tot mai multe facilități de transport de date ,
iar volumul de date , fiind în creștere continuă. Infrastructura comunicațiilor wireless devine tot
mai avansată, facând posibil accesul la servicii publice de date , dar și în sistemele proprii care
contribuie la alcătuirea unei infrastructuri dezvoltate.
O primă interconectare a calculatoarelor aflate la distanță s -a realizat în anu l 1969 , în cadrul
mai multor universități , printre care și Stranford Research Institute. Cinci ani mai târziu sunt
definite câteva elemente fundamentale , care stau la baza conec tărilor a mediilor de comunicație
prin Internet , cum ar fi TCP / IP (Transport Control Protocol și Internet Protocol).
Termenul de comunicare , la nivel general, este reprezentat de un schimb de informații , iar
vehicularea lor trebuie făcută după anumite reguli , privind comunicația , care poate fi prin cablu
sau fără fir. Aceste regul i, poartă numele generic de protocol de comunicație. Mai multe sisteme
interconectate vor crea o rețea de comunicații .
Vehicularea informațiilor de la o sursă ce trimite date la destinație , presupune o abordare
destul de complexă.
Pentru realizarea unei transmiteri de mesaje la distanță , avem nevoie de un emițător , care
să realizeze trei tipuri de operații: traducere, codare și modulare.
Fiindcă aceste mesaje pot fi de la surse foarte diverse sau necunoscute , ele nefiind
întotdeauna de natură electrică , se va realiza transformarea lor cu ajutorul unor traductoare.
Pentru ca semnalul să se propage pe o distanță mare este generat un semnal de înaltă
frecvență , care mai este numit și semnal purtător de informații.
Un canal de transmisiuni poate fi denumit , orice mediu fizic , cu ajutorul căruia informația
se poate propaga. Canalul de transmisiuni poate fi realizat prin cablu sau radio. În orice transmisie
vor exista zgomote care au rolul de a perturba , dar acestea pot fi evitate folosind anumite tehnici.
Un receptor va realiza operațiile inverse față de emițător , pentru a primi informația, aceste
operații fiind: demodu larea, decodarea și traducerea.
Performanțele de comunicație sunt date de cantitatea de informație , ce poate fi vehiculată
prin respectiva secți une a canalului/unitatea de timp. Acest parametru poartă numele de lățime de
bandă.
5
La transmisiile analogice lățimea de bandă este dată de intervalul de frecvențe ocupat pe
spectrul respectiv, iar la transmisiile digitale cantitatea de informație este măs urată în funcție de
volumul binar transferat.
Mediile fizice de comunicație pot fi împărțite în două categorii: medii ghidate și medii
neghidate.
Mediile ghidate se pot realiza prin: cabluri coaxiale, cu perechi de conductoare de tip
torsionat, fibră opti că, gri nduri de undă.
La transmisiile d e tip neghidat propagarea nu este restricționată de un spațiu fizic , deoarece
se propagă prin aer după direcționarea semnalului de către sursă. Tipurile de semnale purtătoare
neghidate sunt: unde radio, microunde, ra diația infraroșie și radiația laser , toate acestea alcătuiesc
un mod de comunicare fără fire.
6
2.2 Tehnologia Wireless
În comunicațiile wireless, transferul de date se realizează , într-un mod simplu fără fir și
fără având nevoie de un conductor sau cablu , prin care să fie transmise informații între două sau
mai multe dispozitie sau puncte de conectare. Tehnologiile wireless deja frecvente utilizează unde
radio în care distanța nu este foarte mare, dar acoperă o arie de câțiva metrii , depinzând de modulul
folosit.
Figura 2.2. Conectare fără fir la distană mare
În cazul servicilor de operațiuni wireless pentru comunicațiile cu rază lungă de acțiune ,
care sunt imposibile sau impracticabile să se realizeze cu ajutorul firelor , se apeleaza la
comunicațiile fără fir prin dispozitive sau module , ce pot realiza operațiunea de trimitere sau
primire a datelor.
Serviciile wireless se impart în două clase importante, cu factorul decisiv , fiind frecvența
de bandă. Tehnologiile moștenite folosesc banda de 2.4 GHz1, în timp ce variantele ulterioare
folosesc bandă mai lată, de 5GHz obținând astfel , o rată nominală de transfer de până la 54 Mbps2.
Figura 2.2.1. Tipurile de bandă de frecvență folosite pe distanțe diferite
1 Gigahertz – unitate de măsură pentru frecvență
2 Mbps -megabiți pe secundă
7
2.3 Modulul ESP8266 ESP -12E WiFi
Modulul ESP8266 ESP -12E este dezvoltat de echipa Ai -thinker cu procesor pe baza de
ESP8266 , în dimensiuni mai mici ale modului și integrează microcontroler -ul MCU micro pe 32
de biți de ultimă generație , ce suportă o viteză a ceasului de 80Mhz si 160Mhz având integrate Wi –
fi(rețea locală de comunicații fără fir) și adresă MAC (Media Access Control) plus antena de bord.
Acest modul acceptă acordul standard IEEE802.11b/g/n3 cu un pachet complet de
protocoa le TCP/IP (Transport Control Protocol și Internet Protocol) acordând utilizatorilor
posibilitatea de -al adăuga la o rețea extinsă de dispozitive sau pot să iși construiască singuri un
controler separat de rețea. Alternativ servește ca un adaptor Wi -Fi, iar accesul la internet poate fi
adăugat la orice dispozitiv , fiind bazat pe un microcontroler cu conectivitate simplă (interfață
SPI(Serial Peripheral Interface)4/SDIO (Secure Digital Input Output) 5sau I2C (Inter -Integrated
Circuit) /6UART (Universal asynchronou s receiver -transmitter) ).7
Figura 2.3. Modulul ESP8266 ESP -12E
Modulul din Figura 2.3. întegrează antena, amplificator de putere, filtre, a mplificator de
zgomot redus, module de gestionare a alimentării , dar necesită circuite externe minime , inclusiv
modulul NodeMCU , fiind proiectat să ocupe o zonă minimă pe cablaj. ESP8266 ESP -12E oferă o
soluție completă pentru rețele de tip Wi -Fi, permițând microcontrolerului sa uite de toate
responsabilitățile legate de rețea.
3 IEEE802.11b/g/n -set de specificații pentru controlul la mass -media în comunicațiile wireless locale și benzile de
frecventă.
4 SPI – este o interfață standard sincronă de mare viteză pentru transmisia de date
5 SDIO – port de ieșire digital și intrare secur izat
6 I2C – tip de transmitere de date serială
7 UART – cominicație serial asincronă unde formatul de date și vitezele de transmisie sunt configurabile
8
Acest modul este ideal pentr u Internet of Things (IoT). Combina conectivitatea Wi -Fi cu
versatilitatea Arduino.
Are 9 pini digitali Input Output (IO) din care 8 suporta PWM (Pulse width Modulation) 8și
unul analogic (do ar intrare). La baza acestei plăci stă c ipul ESP8266 care ruleaza la 26 Mhz, are 4
MB flash si 160 KB RAM.
Cipul ESP8266 ESP -12E necesită o tensiune de alimentare de 3.3V și nu ar trebui , să fie
alimentat cu 5 volți ca și alte plăci Arduino.
Tabel 2.3. Descrierea pinilor modului wifi ESP -12E
NR. Nume Pin Funcție
1 RST Resetare modul
2 ADC Convertor Analog/Digital.
3 EN Pin de activare cip
4 IO16 GPIO16
5 IO14 GPIO14
6 IO12 GPIO12
7 IO13 GPIO13
8 VCC 3.3V
9 CS0 Selectare cip
10 MISO Intrare master,ieșire slave
11 IO9 GPIO9
12 IO10 GPIO10
13 MOSI Ieșire master, intrare slave
14 SCLK Semnal de ceas
15 GND GND
16 IO15 GPIO15
17 IO2 GPIO2
18 IO0 GPIO0
19 IO4 GPIO4
20 IO5 GPIO5
21 RXD UART_RXD;GPIO3
22 TXD UART_TXD;GPIO1
8 PWM -modulație cu durată a impulsului
9
Modulul NodeMCU ESP -12E poate fi conectat la cablu micro USB (5Vus) , iar pinii I/O
de la ESP8266 au la intrare/ieș ire(input/output) max . 3.3V, deci î n nici un caz , nu trebuie alimentat
la 5V doar folosind un stabilizator de tensiune.
NodeMCU este o platform ă deschisă pentru Internet of Things (IoT). Aceasta include
firmware care rulează pe ESP -12E, iar termenul ,, NodeMCU” se referă la firmware nu la kitul de
dezvoltare care utilizează limbajul de scriere „Lua” fiind construit de cei de la Espressif pentru
ESP8266. Acesta utilizând multe proiecte ,,open source”.
Ca s pecificați tehnice , acestă platformă folosește versiunea de firmware DevKit v1.0
pentru a putea recunoaște platforma în softul în care se programază modulul. Este un ,,breadboard”
prietenos cu utilizatorul , având dimensiunii restrânse. Alimentarea se face întotdeauna cu 3.3V
prin pinul de „Vin” , dar și prin intermediul unui cablu USB(Unive rsal Serial BuS), ce poate servi
și pentru încărcarea unor programe dezvoltate de utilizator. Folosește protocolul de comunicații
wireless 802.11b/g/n , fiind capabil de a se conecta la o rețe a de internet sau de a crea una proprie .
Modulul utilizează interfața serială de comunicații CP2102 USB.
Acest modul de dezvoltare poate fi aplicat în diverse domenii , precum a utomatizarea
caselor, rețea locală, control industial fără f ir, tagu -ri de securitate, camere IP (Internet Protocol),
sisteme de închire deschidere de la distanță etc.
Figura 2.3.1. Modulul NodeMCU ESP -12E
Modulul NodeMCU ESP -12E, respectiv plăcuța unde este situat modulul wifi ESP8266
ESP 12E , am folosit -o pentru încărcarea programului și testarea lui cu ajutorul senzorilor.
10
III. Traductorul utilizat pentru realizarea sistemului și monitorizare a a
presiuni i din pneuri
3.1 Generalităț i
Cuvintele senzor sau traductor sunt foarte des folosite în cadrul sistemelor de măsurare ,
reprezentând un dispozitiv ce detectează o schimbare într -un stimul fizic și este transformată într –
un semnal analogic sau digital , care poate fi mă surat sau înregistrat , în timp ce traductorul este un
dispozitiv care transferă puterea de la un sistem sau modul la altul , în aceeași formă sau în alta
diferită.
Mai bine spus, într -un cadru general, traductorul este un dispozitiv care conve rtește un
semnal de o anumită nat ură fizică , într-un semnal de altă natură fizică diferită.
O clasificare sumară a diferitelor tipuri de senzori se poate realiza , în funcție de natura
marimii de ieșire care furnizează la ieșire un semnal electric , ce poate fi modelat prin impenda nța
(R, L , C) pentru senzorii parametricii sau cu o sursă de energie pentru senzorii activi , pe post de
generator.
Senzorul parametric iși schimbă impedanța și are nevoie de o sursă exterioară de energie ,
pentru extragerea unui semnal electric adecvat , pentru a fi transmis de -a lungul lanțului de
măsurare.
Ansamblul senzor ului parametric și sursa de alime ntare este cea care creează semnalul
electric ale cărui caracteristici (amplitudine, frecventă) , trebuie legate de cele ale mărimii de
intrare.
Senzori electrici r eprezintă senzori, care convertesc mărimea de intrare , într-o mărime de
ieșire de natură electrică.
Se pot pun în evidență cinci domeni de energie , care se pot converti unul în celălalt , datorită
unui senzor :
– energie termică ;
– energie mecanică ;
– energ ie electrică ;
– energie m agnetică ;
– energie chimică .
11
Traductoarele de presiune reprezintă una dintre categoriile de traductoare , care cunosc o
largă raspândire în automatizările industriale din diferite domenii, presiunea constituind un
parametru de bază pentru numeroase procese tehnologice sau tehnice.
Sunt prezente în mai multe ramuri industriale, ca de exemplu industria petro lului, chimiei,
termo -energetică și multe alte domeni, care nu pot funcționa fără acestea și reglarea presiunii este
chiar dete rminantă , pentru asigurarea desfășurării corecte și sigure a întregului proces tehnologic.
Este demonstrat , că presiunea este direct proporțională cu forța , ce exercită lichidul în mod
normal pe o unitate de suprafață sau într -un mediu izolat complet.
Măsurarea presiunii poate fi împ ărțită în trei mari categorii: presiunea absolută, presiune
relativă și presiune diferențială.
Presiunea absolută este diferența între presiunea masurată într -un punct , în lichid și între
presiun ea zero absolut sau vid perfe ct creat de cel care face măsurători.
Pentru p resiunea relativă putem spune , că poate fi diferența de presiune între presiunea
absolută ș i presiunea atmosferică locală , iar p resiunea atmosferică locală poate să varieze în funcție
de temperatura mediului înconjurător , de altitudine și de alte condiții meteorologice.
Rămânem de părere , că p resiunea diferențial ă este pur și simplu măsurarea presiuni
necunoscute în referința cu cea de -a doua presiune tot necunoscută.
12
3.2 Traductorul de presiune utilizat
Într-o gamă largă de senzori și traductoare ce sunt puse la dispoziție , se găsesc și
traductoarele de presiune. Aceștia sunt , fie pentru măsurare directă, fie diferențială, cu afișaj sau
fără, iar din punct de vedere dimensional se p ot clasifica în uzuali și miniaturali. Alături de
traductoarele de presiune pot fi identificate și elemente senzoriale de tip switch , pentru presiune
înaltă, medie si joasă. Atunci , când contactul este direct, tipul de traductor folosit va fi cel cu ieșire
directă la presiunea atmos ferică din pneuri, care va fi aplicată pe sup rafața non -activă a
membranei. Atunci cand presiunea este transmis ă către traductor prin conducte de legătură, este
recomandată utilizarea traductorului cu tub de legare la presiunea d e referință, conectarea făcăndu –
se la presiunea atmosferică în zona în care se găsește. Traductoarele acestea pot fi folosite cu orice
fluide , ce nu atacă titanul, dioxidul de siliciu sau sticla. Partea non -activă a membranei poate fi
conectată numai la un gaz uscat și necoroziv, cum ar fi de exemplu , aerul uscat.
Caracteristicile principale sunt liniaritate și histerezis foarte bune, rezistență la
supraîncărcare, stabilitate termică foarte bună (eroare totală aproxm. 5 in plaja de 0 -50°C. Acești
traducto ri acoperă 3 plaje de presi une de la 0 bari la 10 bari, respectiv 12 bar.
Tabel 3.3. Specificații traductor
Tensiunea de lucru
Tensiunea de ieșire DC 5.0 V
DC 0.5 -4.5V
Presiunea max. de lucru
Presiunea maximă
Presiunea de distrugere 0-1.2 Mpa
2.4 Mpa (MegaPascali)
3.0 Mpa
Temperatura de lucru
Temperatura maximă
Temperatura max.de eroare 0-85°C
0-100°C
±3.5 %
Curentul de lucru ≤10 mA
Timpul de răspuns
Cicli de viață
Eroarea de măsurare ≤ 2.0 ms
500,000 pcs
±1.5 %
Material senzor
Lungimea cablului Carbon și oțel
19 cm
Aplicații Măsurare presiune
Figura 3.3. Traductor de presiune
13
IV. Aplica ția software Arduino IDE
4.1 Generalită ți
Programarea unui microcontroler poate fi considerată destul de complicată , în unele cazuri,
dar cu ajut orul unui soft specific precum Arduino IDE(Integrated Development Environment) ,
care de altfel nu e destul de greu d e folosit sau de înțeles și une ori, treburile pot fi simplificate cu
ajutorul lui.
De foarte multe ori , microcontrolerul este programat cu a jutorul unor limbaje de
programare asemănătoare cu C, fiincă limbajul C oferă un control destul de bun pentru
programarea unui microcontroler.
Programe le scrise cu ajutorul mediului software Arduin o IDE sunt numite „sketches” sau
schițe, care pot fi scris e într -un editor text, iar schițele sunt salvate cu extensia „.ino”.
Acest mediu de dezvoltare are mai multe caracteristici , pentru a ajuta la editarea codului
de către programator, precum: opțiunea de copiere și lipire sau de adăugare de proiecte, o bară cu
instrumente unde selectăm plăcuța și portul pe care dorim să încărcăm programul, căutare și
înlocuire lor, adăug area de librării pentru senzori , o zonă de mesaje ce oferă feedback -uri atunci ,
când salvăm sau compilăm un program , dacă are erori sa u s-a compilat cu succes.
Limbajului de programare folosit în Arduino este unul asemănător cu limbajul C, unde se
folosesc variabile, cu ajutorul cărora se pot stoca anumite informați sau dirija anumite
echipamente. Variabila stochează tipuri de date, nume și valori.
Sarcina compilatorului în Arduino IDE este de a transforma programele furnizate de
programator sau dezvoltator din (Nume_fișiere.c și Nume_fișiere.h) în cod mașină respectiv ,
(Nume_fișiere.hex), pentru a putea fi înțelese și executate de către micro controler iar după ce
fișierele sursă (Nume_fișiere.c și Nume_fișiere.h) ajung la compilator, el trebuie sa parcurgă doi
pași, pentru a crea codul mașină înțeles de microcontroler:
• primul pas pe care trebuie să îl parcurgă este procesul de compilare , unde fișierele sunt
transformate în limbaj de asamblare generând fișierul (Nume_fișiere.asm) , iar dacă fișierele conțin
erori de sintaxă , ele sunt raportate programatorului sau dezvoltatorului cu un mesaj, dacă nu trece
la al doilea pas .
• Al doilea pas care constă în continuarea procesului pasând fișierul asamblorului , pentru
a fi transformat în cod mașină, generând fișier (Nume_fișiere.hex) , ce poate fi înțeles de
microcontrolerul plăcii de dezvoltare.[poza]
14
4.2 Programarea microcontrolerului modului ESP -12E
Programarea uneori a unui microcontroler poate fii destul de complicată, dar platforma
dezvoltată de cei de la Arduino , încearcă pe cât posibil , să simplifice l ucrurile. Acest soft oferit de
Arduino.cc poate fi instalat pe orice calculat or și configurat în funcție de placa de dezvoltare , unde
urmeză să se încarce programul. Acest program este echipat din fabrică cu un bootloader , ce ne
permite încărcarea de cod , fără a mai folosi un program de tip hardware extern. O posibilitate de
progra mare a microcontrolerului fără a mai folosi bootloader -ul este prin folos irea porturilor de
tip ICSP(In C ircuit Serial Programming).
Limbajul de programare în care este scris programul pentru modulul ESP -12E are extensia
de salavare .ino și limbajul de pro gramare a microcontrolerului este asemănător cu limbajul C.
Programul aces ta este alcătuit din două părți, necesare în funcționarea lui pentru
microcontroler ce are o parte de inițializare, unde toate librările necesare programului sunt
inițializate, clase le și variabilele folosite. În cadrul acestei inițializări întâlnim și funcția cu numele
„void setup()”, se regăsește în orice program de dezvoltare A rduino și are rolul de a descrie o stare
inițială a programului pentru platforma de dezvoltare.
O a doua funcție care este necesară în program , este denumită „void loop()” și reprezintă
partea de execuție a programului , fiind și o funcție denumit ă buclă infinită în program.
Aplicația „sistemului de monitorizare a presiunii din p neuri” folosește cinci libră rii și
anume librăriile : „Wire”, „ESP8266WiFi”, „FirebaseArduino”, „OneWire” ș i
„DallasTemperature” . Librăriile ESP8266Wifi și FirebaseArduino facilitează conectarea la rețea
fără fir a modului și comunicația dintre modulul ESP -12E cu aplicaț ia bazei de date create în
Fireb ase, unde sunt trimis e datele preluate de la senzori .
Celelate librarii „OneWire” și „DallasTemperature” oferite de producătorul senzorului de
temperatură DS18b20 sunt pen tru a transforma anumite valori în date exacte.
15
În continua re se va încerca explicarea codului sursă, pentru programarea microcontrolerului
, începând cu prima parte a programului, respectiv partea de inițializare:
Table 4.2. Introducerea librărilor necesare senzorilor
Librăriile necesare pentru conectarea și recunoașterea senzorilor
#include <ESP8266WiFi.h> // libaria wifi pentru modulul ESP8266
#include < FirebaseArduino.h> // libră ria ESP8266 pentru a efectua apeluri API Firebase
prin SSL spre baza de date din platfor ma Fireb ase
#include <OneWire.h> //ibră ria i2 c pentru senzorul de temperatură
#includ e <DallasTemperature.h> //libă ria pentru senzorul de temperatura DS18B20
Toate librăriile de mai sus fac parte din inițializare codului.
Mai jos avem definiți parametri pentru logarea la rețea , precum și adresa aplicației
Firebase , unde se v or trimite datele citite de la senzori.
Table 4.2.1 Definirea parametrilor de conectare la rețea
Definirea prarametrior de conectare la rețea și baza de date din Fireb ase
#define WIFI_SSID "Presiune" // WiFi SSID (nume)
#define WIFI_PW "12345678" // Wifi password
#define FIREBASE_APP "licenta -01.firebaseio.com" // adresa aplicatiei Firebase
#define FIREBASE_SECRET "7p8lCcQVuYWZW5wwCocSt7KD39ASQqFfb0tyQde6" //
codul s ecret generat de aplicatia Fireb ase
Pentru a putea primi date de la senzori , trebuie sa definim sau să inițializăm senzorii , astfel
ca programul să știe de unde primește acele date , iar acestea se fac prin definirea unor pini specifici
de pe placa de dez voltare conect ată la softul Arduino.
Table 4.2.2 . Definirea și inițializarea pinilor
Definirea și inițializarea pinilor pentru senzorul de temperatură, traductor de presiune și
citirea nivelui bateriei
#define ONE_WIRE_BUS D4 // definire a pinului pentru senzor ul de temperatură
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
int sensorVal=analogRead(A0); // initalizare pin de citire a traductorului de presiune
int sensorValue = analogRead(D3); // initalizare pin de citire a bateriei
Serial.begin(9600);
Secvența de mai sus , are rolul de a inițializa comunicația pe serială , la o frecvență de 9600
bauds, ce reprezintă(viteza de transmitere a datelor pe magistrală/per secundă).
16
Table 4.2.3 Conectarea la o rețea wireless
Prin această secvenț ă de cod putem verifica , dacă există o rețea wi reless la care ne
putem conecta, care verifică conectivitatea , iar dacă datele coincid , se va face legătura cu
rețeau respectivă.
int x = 0;
while (WiFi.status() != WL_CONNEC TED)
{
Serial.print(".");
delay(500);
if(x++>20) // timeout
break;
}
//aflarea IP -ului, MAC -ul și conectarea la reț ea
if(WiFi.status() == WL_CONNECTED)
{
Serial.println("OK");
Serial.println(WiFi.localIP());
uint8_t MAC_array[6];
WiFi.macAddress(MAC_array);
for (int i = 0; i < sizeof(MAC_array); ++i){
sprintf(MAC_char,"%s%02x:",MAC_char,MAC_array[i]);
}
Serial.println("MAC ");
Serial.println(MAC_char);
}
Else
Serial.println("T IMEOUT");
Firebase.begin(FIREBASE_APP, FIREBASE_SECRET);
Prin secvența de cod , de mai sus putem inițializa aplicația și obiectele , din baza de date , ce
este creată pe platforma Fireb ase.
17
Funcția „void loop() ” ce reprezintă o funcție de execuție a programului , respectiv o buclă
infinită ce va executa în mod repetat programul , trecând , astfel d e nenumărate ori prin variabile
de stare descrise de mine în program.
Pentru în ceput am calculat tensiunea bateriei primite pe portul D3 înmulțind valoarea totală
a bateriei prin u rmătoarea declarație de mai jos:
float volt = sensorValue * VBAT ; //calcularea tensiunii
Serial.print(volt);
În continuare am calculat procentajul bateriei , în funcție de valoarea prim ită de la baterie ,
printr -un sem nal analogic de flash prin portul „D3” a modului.
int batteryPcnt = sensorValue / 4.5; // calcularea nivelului bateriei pe procente)
Serial.print(batteryPcnt); // afisarea nivelului bateriei in procente
În variabila reală „float t” am încercat , să obțin prin in termediul librariei și cu ajut orul
semnalului primit de la senzorul de temperatură să obți n o valoare reală a temperaturi .
float t= getTemperature();
Serial.print("Temperature");
Serial.print(t);
Serial.print("°C");
Am încercat mai jos , să aflu și tensiunea consumată de traductorul de presiune în timpul
efectuări mas urătorii .
Serial.print("Sensor Value: ");
Serial.print(sensorVal);
În fun cție de valoarea primită pe pinul analogic A0 de pe modulul wi -fi, am calculat
valoarea pri mită îmulțită cu tensiunea primită la alimentarea senzorului și împă rțită la rezoluția
maximă de 10 biți , respectiv 1023 , ce o poate primi un pin analogic , unde voi afl a valoarea în volți
cosumați.
float v = (sensorVal*3.0)/1024.0;
Serial.print("Volts: ");
18
Serial.print(v);
În funcție de valoarea volților consumați și de valoarea primită de la variabila reală „float
t” am calculat mai departe presiunea , care va fi trasformată din pascali în bari, prin următoarea
ecuație și anume :
– tensiunea totală aplicată sezorului este 3.0 volți , ce urmează a fi înmulțită cu
valoarea cosumată de senzor ul, de mai sus , scăzând din aceasta tensiunea medie suportată
de senzor de 4.7 volți , iar în final totul se înmulțește cu numarul de pascali transformați
din 10 bari, reprezentat în program de numărul 1000000.0 Pa(Pascal) , presiunea de lucru
suportată de traductor.
float pressure_pascal = (3.0*((float)v -0.47))*1000000.0;
float G = pressure_pascal/10e5;
Serial.print("Pressure = ");
Serial.print(G);
Serial.println(" bars");
Serial.print("Pressure = ");
Adreasa , unde vor ajunge datele citite de la senzori , este prezentă in secvența de mai jos,
care face legătura cu baza de date.
Firebase.set("/licenta -01", JsonVariant(data));
Datele citi te de la senzori sunt trimise prin internet , după conectare la o rețea wireless , în
tabel ul aplicației Fireb ase, unde sunt actualizate și sincronizate în baza de dat e, în timp real și
preluate de aplicația mobilă.
Table 4.2.4 Trimiterea parametrilor în aplicația Firebase
if (WiFi.status() == WL_CONNECTED)
{
StaticJsonBuffer<200> jsonBuffer;
JsonObject& data = jsonBuffer.createObject();
data["temp"] = String(t); // temperatură
data["bat"] = String(volt );//baterie
data["hpa"] = String(G); //presiune
data["voltage"]=String(v); //tensiunea
data["Procent"]=String(batteryPcnt); //nivelul bateriei }
19
V. Platforma Firebase
5.1 Introducere
Firebase este o platformă special creată, pentru a dezvolta aplicații mobile, cât și servicii
web, fiind o soluție gratuită, ce oferă o perspectivă excelentă în utilizarea ei, cât și a implicări
utilizatorului la crearea de baze de date, ce sunt actualizate în timp real, fiind un servicu destul de
bun și are o interfață prietenoasă cu utilizatori.
Acestă platformă oferă siguranță la încărcarea și descărcarea fisierelor pentru aplicațiile
Firebase, indiferent care ar fi calitatea rețelei utilizate.
Cel care dezvoltă aplicația poate folosi această platformă numită Firebase, pentru a stoca
imagini, audio si video sau alte tipuri de conținuturi, ce sunt generate de utilizatori, iar platforma
fiind susținută de Google Could Storage, unde sunt stocate toate informațiile cu privire la aplicația
dezvoltatorului.
Suportă găzduirea de servicii web statice, cât și dinamice. Cum ar fi paginile statice
CSS(Cascading Style Sheets), HTML(Hypertext Markup Language), JavaScript, iar pentru cele
dinamice fiind servicul de rețea Node.js, prin funcțiile de stocare livrând fișie rele printr -o rețea de
distribuție a conținutului prin criptare HTTPS(Hyper Type Text Past Secure și SSL(Secure Socket
Layer).
Platforma oferă disponibilitatea, de a trimite notificări direcționate de dezvoltator pe
aplicațile mobile fără costuri.
Firebase oferă o bază de date în timp real, ceea ce permite dezvoltarea de aplicați, ca datele
din aplicațile lor, să fie actualizate și sincronizate între clienții, apoi stocate pe platformă.
Baza de date este accesibilă pintr -un API REST(aplicație care utilizeaz ă solicitări HTTP),
având legături și pentru JavaScript.
Și nu în cele din urmă autentificarea utilizatorului, pentru un serviciu nou creat pe
platformă, fiind doar cu un cod client, generat tot de serviciul de autentificare din Firebase.
20
5.2 Funcționare aplicație Firebase
Pentru început am creat un cont de utilizator firebase prin logarea cu un email personal ,
unde am creat un dosar cu numele licenta -01, fiind prima versiune creată.
În fisierul licenta -01 am creat o bază de date cu acel asi nume , dar cu o adresă completată
prin extensia .firebaseio.com reprezentând și link -ul de astfel , spre baza mea de date creată.
În DataBase sau baza de date am creat un tabel cu acelasi nume licent -01, unde am adăugat
un nume și o valoare pentru paramentri, ce vreau să î î aflu, iar la conectarea senzorilor , datele din
tabel se sincronizează cu cele primite din softul meu de pe modul și mai apoi , apar în baza de date ,
înlocuind valoarile inițiale cu cele reale primite de la senzor i. Am creat în tabe l, toți parametri și
valori le inițiale pentru acestea , de care aveam nevoie să le aflu la măsurătorile efectuate de mine ,
cu ajutorul senzorilor precum se poate vedea și in figura 5. 2..
Figura 5.2. Baza de date în aplicația Firebase
21
După cum se poate vedea în figura 5.2. în tabelul licenta -01, am adăugat variabile necesare
pentru primirea datelor , ce sunt definite și pentru microcontroler. Am creat o variabilă , pentru
nivelul procentual al bateriei denumit în fi gura 5.2. „Procent” și tensiunile baterie i tot din figura
5.2. denumită „bat”.
În continuare am ad ăugat și o varia bilă pentru aflarea temperaturi denunimită în figura 5.2.
„temp” unde va fi afișată temperatura cu valori reale. Iar în cele din urmă , am ad ăugat două
variabile denumite „hpa” , ce mă soară presiunea și variabila „voltage” , ce afișează curentul, ce este
consumat de traductor în timpul funcționări . Iar toate elementele enumerate , mai sus , alcătuiesc o
bază de date în timp real , ce este actualiză în momentul în care modulul ESP -12E este c onectat la
rețea locală de înternet și dispozitivul este pus la treabă.
Pentru a putea comunica cu modulul ESP -12E, am creat o legătură între platformă și softul
Arduino IDE, unde a trebuit să i -au din setări la do meniul servici, un cod alcătuit din o mult itudine
de cifre și litere puse aleatoriu , ce sunt generate de platformă pentru aplicația mea , după cum se
poate vedea în figura 5.2.1. , iar următorul pas a constat în adăugarea adres a aplicației licenta –
01.firebaseio.com în softul Arduino IDE.
Figure 5.2.1 Generarea codului utilizator din aplicația Firebase
22
VI. Aplicaț ia mobil ă
6.1 Folosirea softului Android Studio
Într-o mică introducere Android Studio este o platformă deschisă , pentru dispozitive
mobile , dezvoltată de Google și este în prezent menți onată de Open Handset Alliance (OHA).
Toate aplicațiile dezvoltate pentru această platformă , au fo st create cu limbajul Java, ce
facilitează numeroși programatori care au cunoștințe în Java (sau alte limbi apr opiate de Java, cum
ar fi C ++ și C #) , să dezvolte aplicați pentru Android.
Această broșură are scopul de a arăta cu ușurință și în mod clar , cum să dezvoltați
aplicațiile pentru dispozitive mobile , care utilizează sistemul de operare Google Android , prin
intermediul instrumentului Android Studio (bazat pe IDE IntelliJ I DEA (Integrated Development
Enviroment Aplication) ).
După i nstalarea programului , descărcat de pe site -ul celor de la Android Developer , trebuie
inclus SDK -ul și Java S DK-ul pentru recunoaș terea libră riilor și a dispozitivelor mobile , pe care
urmează , să fie înstalată aplicația mobilă. Cum putem să facem pasul descris mai sus: prin
selectarea din windows Strat meniu -> Computer ->System Properties ->Advenced System
Properties. Apoi, deschidem Advanced tab ->Environmet Variables și adăugăm o variabilă nouă în
system cu nume JAVA_HOME , unde se va crea un folderul JDK, ca de exemplu C: \Program
Files \Java\jdk1.7.0_21. După ce am i nstalat și am configurat SDK -ul vom intra în Android Studio ,
unde fom face o configurare a meniului , apăsând pe „Configure” , vom continua cu opțiunea
„Project Defaults”, dăm click mai departe pe „Project Structure” , unde vom selecta „SDKs” și
versiunea de platformă android dorită de exemplu „Android 4.2.2” , cu lib răriile atașate platformei.
Următorul pas este să mergem în „Project Settings” , iar meniu vom selecta „Project” , cu
versi unea de android dorită și sdk -ul, iar după acest meniu va aparea un nou meniu cu „Settings” ,
unde vom alege vesiunea de JAVA.
În conti nuare pentru a crea o nouă aplicație , vom da click pe „New Project…” , unde se va
deschide „New Project Winzard” , vom ad ăuga numele aplicației de exemplu „app_name” , fără
spațiu, selectăm API-ul(Application Programmind Interface ), versiunea de android , iar dacă dorim
putem să personalizăm iconița aplicației. A cum trece m la pasul următor prin selectarea unui
„template ” gol, denumit „Blank Activity” , iar după ce am trecut la pasul următor , putem pune un
nume de aplicație „Layout_ Name” , după vom da „Finish” s etărilor.
23
Acum trebuie , să avem o conexiun e la i nternet , pentru a descărca „pluginurile” de găzduire
a aplicației și actualizarea lor în fișierul „Gradle” , după ce actualizările și update -urile sunt gata ,
putem începe dezvoltarea unei noi aplicații A ndroid.
De fiecare dată , când dorim să testăm codul scris , pentru aplicație , trebuie să sincronizăm
proiectul și apoi , să rulăm codul pentru a vedea funcționalitatea lui.
6.2 Modul de funcționare a aplicației mobile din cadrul sistemului
Pentru a monitoriza parametrii, măsurați de la senzori și de a putea face legătura, cu
platforma Firebase, unde am realizat o bază de date cu variabile, ce sunt actualizate și sincronizate
în timp real. Am ales să dezvolt o aplicație mobilă, în programul d e dezvoltare „Android Studio”,
cu care să pot verifica presiunea, temperatura, tensiunea și nivelul bateriei folosind doar telefonul
mobil.
Pentru început am creat un pachet de fișiere „Java„ în care am făcut legătura dintre aplicația
în Android și aplicaț ia Firebase, respective cu baza de date.
Fișierele create de mine, în pachetul Java sunt „FireApp”, „NotificationIDsClass”,
„NotificationMessage”, „ParametersAlertStatus” și „SensorAtributes” iar „MainActivity” a fost
creat chiar la începutul programului.
Pentru început în fișierul java „MainActivity” am declarant variabilele pentru notificări,
aplicația Firebase ce face legătura prin fișierul java „FireApp” creat în pachetul aplicației și switch –
ul de activare a notificărilor. Tot în acest fișier am setat limitele maxime și mine , pentru presiunea
din pneuri și nivelul minim al bateriei. Am creat obiecte care conțin date despre valorile senzorilor
și nivelul bateriei. Mai departe , am făcut o verificare a parametrilor primiții de la senzorii , pentru
generarea de notificări și actualizarea c âmpurilor de date din aplicație iar în final am scris o metodă
care face actualizare la interfața utilizator cu noile date primite di n baza de date Firebase.
În fișierul java „NotificaionIDsClass”, am scris o clasă ce conțin e constante referitoare la
id-urile atribuite notificărilor iar fiecare tip de notificare trebuie să aibă un id unic în acest caz
pentru a se putea diferenția unul de altul și pentru a putea fi recunoscut ca nivel în cazul presiunii
prea mari sau scăzute ș i nivelul minim al bateriei.
Mergem mai departe la fișierul java „NotificationMessage” , unde am creat o clasă pentru
generarea notificărilor, o metordă ce construiește notificarea în funcție de nivelul bateriei și a
presiunii și o trimite spre interfața u tilizator.
24
În următorul fișier java „ParametersAlertStatus”, am scris o clasă ce definește constantele
ce țin de tipul de alertă cum ar fi nivelul scăzut sau maxim al presiunii sau a bateriei. Iar în ulti mul
fișier java „ SensorAtributes”, am scris o cla să ce ține evidența paramentrilor, respective egalitatea
dintre valorile setate pentru aceștia.
25
VII. Rezultatele obț inute
7.1 Descrierea ap licației la nivel de schemă bloc
Figura 7.1. Schema bloc a sistem ului de monitorizare a presiuni din pneuri
În Figura 7.1. am realizat o schemă bloc, cât mai precisă a conectări senzorilor la modulul
ESP 12E , a bate riilor și a mini panoului solar, a aplicației mobile cu modulul wi-fi și afișarea
datelor primite cu aj utorul bazei de date , create în F irebase pe tefefonul mobil.
26
Platforma de dezvoltare Arduino IDE, are inclus prin librari ile ei, bordul de conectare
NodeMCU 1.0 (ESP -12E) ce face posibilă încărcarea programului , pe plăcuță , dar are incluse și
librăriile de recunoaștere a modului .
Prin intermediul modului ESP -12E, se realizează procesele de comunicație spre restul
blocurilor funcționale ale sistemului , iar ac eastă comunicație a blocurilor poate fi de două tipuri:
– prin comunicație unidirecțională, în acest caz , formând o comunicație de tip
analogică, reprezentând un semnal electric cuprins între valorile 0 și 5 V, ce poate
avea în Arduino o rezoluție de 10 biți de la (0 -1023);
– prin comunicație bidirecțională, în aces caz , formân d o comunicație de tip digitală ,
astfel , fiind furnizat un semnal de tip binar , respectiv valori de 0 si 1.
Procesul de comunicație este in sens unidirecțional pentru blocu l traductor de presiune , iar
în cazul comunicației in sens bidirecțional avem senzorul de temperatură și aplicația mobilă .
Senzo rul de temperatură prezintă o co municație de tip bidirecțională , iar comunicația se
realizează digital , cu ajutroul unui port , ce poate citi valori digitale , iar durata de răspuns a
senzorului sau a comun icației durează până la 4 ms ., iar transmiterea de date completă are p ână
la 30 biți, ce trebuie să includă informațiile cu privire la temperatură.
Blocul traductorului de presiune prezintă o comunicație unidirecțională , ceea ce înseamnă ,
că primim un semnal cuprins între valorile 0 și 5 volți , cu o rezoluție de 10 biți , ce poate fi citită
de program.
Blocul smartphone are rolul de a primi datele de la senzor, traductor și baterie , procesate
de microcontroler, trimițând datele prin interme diul modului wireless , aplicației Android , pentru
a fi afișate grafic și numeric. Conexiunea dintre dispozitiv și smartphone se realizează prin hotspot ,
permițând dispozitivului să se conecteze la înternet și sincronizând , astfel datele primite pe
aplicați e.
Pentru încărcarea bateriilor voi folosi un mini panou solar , care va încărca bateriile , prin
captarea de razele luminoase din mediul , unde va fi amplasat dispozitivul , aducând astfel , un plus
acestui dispozitiv.
Blocul funcțional PCB (Printed Circuit Boa rd) este responsabil de alimentarea necesară a
modului wireless , a senzorului de temperatură și a traductorului de presiune. În componența
schemei electrice proiectate în Altium Designer , avem proiectat și un divizor de tensiune pentru
aflarea nivelui bateriei, afișate în aplicația mobilă.
27
7.2 Configurarea ș i asamblarea senzorilor cu modulul ESP -12E
În acest capitol voi descrie , realizarea interconectărilor senzorilor cu modulul ESP -12E,
dar și configurarea pinilor , pentru fi ecare senzor în parte.
Interconectarea senzorilor va fi evidențiată cu ajutorul unor diagrame , ce arată modul de
conectare al pinilor , cu modulu wifi ESP -12E, urmat de un tabel cu conexiunile realizate în
prealabil. În final se va explica motivul , conectări dintre senzori respec tiv modul.
Conectarea senzorului de temperatură
Figure 7.2. Interconectarea senzorului de temperatură
Tabel 7.2. Interconectarea senzorului de temperatură
Pini ESP -12E Pini senzor de temperatură
GND GND
3.3V VCC
D4 S
După cum putem observa în Figura 7.2. și în Tabel 7.2. pinul senzorului cu denumirea
,,GND” , ce poartă rolul de masă și este interconectat cu pinul ,,GND” , ce se găsește în cadrul
modului.
Pinul de semna l „S” al senzorului , se va interconecta cu pinul ,,D4” , ce reprezintă o intrare
digitală de pe modul , iar alimentarea lui se va realiza , prin interconectarea pinului ,,VCC” de
alimentare a senzorului de temperatură , cu pinul ,,3.3V” tot din cardul pinilor de alimentare de pe
modulul ESP -12E.
28
Conectarea traductorului de presiune
Figura 7.2.1 Interconectarea traductorului de presiune
Tabel 7.2.1 Interconectarea traductorului de presiune
Pini ESP -12E Pini traductor de presiune
Analogic „A0” S
3.3V VCC
GND GND
După cum putem observa în Figura 7.2.1 , dar și în Tabel 7.2.1 pinul denumit „S” al
traductorului de presiune este conectat la pinul de intrare „Analog ic A0” , care se găsește la singura
intrare analogică de pe modul, iar alimentarea traductorului , se face prin conectarea pinului „VCC”
cu pinul de 3.3V , găsit în cadrul pinului de alimentare a modului. Și nu în cele din urmă, pinul
sensorului de „GND” având rolul de masă , va avea aceeași conectare cu singurul pin de masă de
pe modulul ESP -12E.
29
Conectarea bateriilor la modulul ESP -12e pentru afarea n ivelului bateriilor
Figure 7.2.2 Interconectare bateriilor la modul ESP -12E pentru aflarea nivelului bateriilor
Tabel 7.2.2 . Interconectarea b ateriilor la modulul ESP -12E prin divizorul rezistiv de pe cablajul
imprimat
Pini ESP -12E Fire baterii
D3 Semnal analogic
VCC –
GND GND
După cum putem observa în Figura 7.2.2. și din Tabel 7.2.2 pinul „D3” de pe modulul
ESP-12E, este conectat printr -un fir , ce duce la divizorul rezistiv , ce este proiectat pe cablajul
imprimat pentru aflarea nivelului bateriilor , ce sunt legate în serie, primind din acel fir un semnal
analogic ce este transformat cu ajutorul pinului ,,D3” , într-un semnal digital.
În cazul pinului „VCC” de pe modulul ESP-12E, nu poate să alimenteze bateriile , astfel
alimentarea modului se face cu aj utorul bat eriilor , unde tensiunea de 7.2V este transformată cu
ajutorul stabilizatoarelor de tensiune modelul ,,AMS1117 5V” , respectiv „AMS1117 3.3V” , care
reduc tensiunea la cea dorită și suportată de modul . Însă avem , totuși o conexiune de masa „GND”
a modului cu bateriile , unde masa este comună pentru tot cablajul imprimat.
30
7.3 Descrierea proiectă ri cablajului
Realizarea c ablajului a fost posibilă datori tă softului , numit Altium Designer , unde am
proiectat circuitul necesar alimentă rii senzorilor , de la cele două baterii de 3.6 V și 120 mAh , care
vor fii legate î n serie și vor alimenta plăcuța realizată.
Programul Altium Designer este dedicat realizării circuitelor d e tip FPGA( Fiel
Programmable Gate Array ), dar și pentru crearea sau simularea diferitelor circuite electronice. În
cadrul acestui program , am folosit doar partea destinată realizării cablajului , atât schematic și
pentru cel imprimat necesar pentru sistemul de monitorizare a presiunii din pneuri. În continuare ,
voi descrie procesul de creare a proiectului, respectiv proiectarea schemei electrice și a cablajului,
descrierea componentelor folosite , cât și cele folosite de mine în cadrul proiectului de față.
Pentru început vom cre a un nou proiect cu numele PCB_Presiune.SchDoc ,unde se vor
adăuga restul de fișiere necesare pentru realizarea cablajului imprimat , respectiv schemei electrice ,
dar și crearea de aprente noi sau folosirea unora deja create.
Trecând ma i departe , se va cre a un fișier PCB_Presiune.SchLib , care este de tipul
schematic library, unde proiectan tul de cablaje poate descrie toate componenetele utilizate în
cadrul sistemului , respectiv pentru alimentarea modului ESP 12E și alimentarea senzorilor de
temp eratură și presiune.
Continuăm prin realizarea schemei electrice și se vor adăuga toate componentele electrice ,
ce vor fi legate între ele alcătui nd schema completă , iar rezultatul , fiind vizibil in Anexa 2.
Următorul pas constă în crearea fișierul ui PSB_presiune.PcbLib , în care putem crea
amprentele necesare componentelor , utilizate în cadrul schemei electrice.
După c e am realizat schema electrică în fișierul PCB_Presiune.SchDoc , am importat
componentele electronice din schemă , în fișierul PCB_Pres iune.PcbDoc și rămâne să construiesc
cablajul imprimat în funcție de regulile de proiectare , a cablajelor , respectiv(lățimea traseului în
funcție de curentul și tensiunea ), ce vor fi aplicate, spațierea dintre trasee și distanța dintre
componentele electro nice.
În situ ația de față nu mai rămâne decât să trecem la partea de realizare a cablajului fizic ,
prin printarea a trei imagini pe hâ rtie fotografică în culoare neagră a cablajului. Voi aplica pentru
stratul inferior (bottom layer), statul superior (top layer) și statul superior extra( top overlay).
31
Concluzii
Prin aceasta lucrare am observa t anumite avantaje ale traductoarelor de presiune , care pot
fi folositi , nu doar in cadrul ac estei lucră ri, dar și la alte aplicații practice , având o flexibilitate
deosebită datorată traductorului utilizat în cadrul lucrări de față.
Sistemul are numeroase avantaje , printre care ușurința utilizării datorită dimensiuni și
formei compacte , dar și a greutăți medii , ceea ce aduce un bonus semnificativ lucrări.
Utilizarea sa nu necesită conectarea la rețeaua electrică, alimentare a realizându -se cu
ajutorul unor bateri de mici dimensiuni.
Un alt avantaj este faptul că transmiterea datelor preluate de la traductorul de presiune , se
realizează prin intermediul tehnologiei wireless avansate , cu consum redus de energie la
transmiterea datelor, nefiind necesară conectarea fizică prin cabluri sa u adaptoare.
Ușurința interpretării datelor constituie , un alt avantaj , acestea fiind afișate în cadrul
aplicației „WheelPressure App”, sub formă grafică , dar și procentual ă (cu excepția temperaturii ,
care este măsurată în grade Celsius).
De asemenea, int erpretarea datelor este ușor accesibilă datorită faptului , că marea
majoritate a populației deține , un telefon mobil de tip „smartphone”.
Sistemul de monitorizare a presiuni din pneuri se deosebește față de cele deja existente pe
piață , prin faptul , că este un sistem complex capabil , să măsoa re mai mulți parametri simultan , în
același timp , iar verificarea lor , se poate face de la distanță prin intermediul internetului doar cu
ajutorul unei aplicatii mobile instalate pe telefonul mobi.
32
Anexe
Anexa 1 – Cod microcontroller
//librările necesare pentru funcț ionarea ș i conectarea cu senzorii
#include < Wire.h> //libră ria pentru protoculul i2c
#include < ESP8266WiFi.h> // libră ria wifi pentru modulul ESP8266
#include < FirebaseArduino.h> // libră ria ESP8266 pentru a efectua apeluri API Firebase prin
SSL
#include <OneWire.h> // librăria i2 c pentru senzorul de temperatură
#includ e <DallasTemperature.h> //libră ria pentru senzorul de temperatură DS18B20
// Parametrii definiți de utilizator pentru aplicațiile WiFI și Fireb ase
#define WIFI_SSID "Presiune" // WiFi SSID (nume)
#define WIFI_PW "12345678" // Wifi password (parolă)
#define FIREBASE_APP "licenta -01.firebaseio.com" // adresa a plicaț iei Firebase
#define FIREBASE_SECRET "7p8lCcQVuYWZW5wwCocSt7KD39ASQqFfb0tyQde6" //
codul secret generat de aplicaț ia Fireb ase
#define ONE_WIRE_BUS D4 // definire pin senzor temperatură DS18B20
//valorile maxime ș i minime pentru nivelul ba teriei
#define VMIN 1.9 // Nivel baterie 0%
#define VMAX 7.2 //Nivel baterie 100%
#define VBAT 0.0070381231 671554 // Tensiunea transformată pe biț i pentru portul D3,
VMAX / 1023 = 7.2 / 1023 = 0.0070381231671554
//definirea pinilor pentru senzorul de t emperatură cu trimitere la libră riile lor
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
int sensorValue = analogRead(D3); // citirea bateriei
int sensorVal=analogRead(A0);
33
char temperatureString[6];
char MAC_char[18];
//setup este funcția care rulează numai odată la resetarea controlerului
void setup()
{
//inițializarea serialei
DS18B20.begin();
Serial.begin(9600);
// conectare la reț eaua wifi
Serial.print("SSID: ");
Serial.println(WIFI_SSID);
Serial.print( "Connecting");
WiFi.begin(WIFI_SSID, WIFI_PW);
int x = 0;
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
if(x++>20) // timeout
break;
}
//aflarea IP -ului, MAC -ul și conectarea la retea
if(WiFi.status () == WL_CONNECTED)
{
Serial.println("OK");
Serial.println(WiFi.localIP());
34
uint8_t MAC_array[6];
WiFi.macAddress(MAC_array);
for (int i = 0; i < sizeof(MAC_array); ++i){
sprintf(MAC_char,"%s%02x:",MAC_char,MAC_array[i]);
}
Serial.println("MAC ");
Serial.println(MAC_char);
}
else
Serial.println("TIMEOUT");
/*dacă modulul a recunoscut rețeaua wifi ș i sa conectat la ea
va merge mai departe spre baza de date din Firebase */
Firebase.begin(FIREBASE_APP , FIREBASE_SECRET); // Va iniț ializa obictele din Firebase
delay(3000); // înârziere de 3 secunde
}
//functia care va accesa librăria ș i va prelua datele despre temperatură transformate în valori reale
float getTemperature() {
Serial.print( "Solicitarea temperaturii…" );
float temp;
do {
DS18B20.requestTemperatures();
temp = DS18B20.getTempCByIndex(0);
delay(100); //întârziere de 100 ms
} while (temp == 85.0 || temp == ( -127.0));
return temp;
}
//funcția loop() sau a șa numita "buclă" care rulează funcț iile definite de mine
void loop()
35
{
float volt = sensorValue * VBAT ; //calcularea tensiunii
Serial.print(volt); // afișarea tensiuni
int batteryPcnt = sensorValue / 10; // calcularea nivelului bateriei pe procen te)
Serial.print(batteryPcnt); // afisarea nivelului bateriei in procente
// aflarea și afișarea temperaturii reale
float t= getTemperature();
Serial.print("Temperature");
Serial.print(t);
Serial.print("°C");
// citirea traductorului de presiune
Serial.print("Sensor Value: ");
Serial.print(sensorVal);
// aflarea tensiuni consumate a traductorului de presiune
float v = (sensorVal*3.0)/1024.0;
Serial.print("Volts: ");
Serial.print(v);
// Calcularea presiuni transformată din pascal i în bari
float pressure_pascal = (3.0*((float)v -0.47))*1000000.0;
float G = pressure_pascal/10e5;
Serial.print("Pressure = ");
Serial.print(G);
Serial.println(" bars");
Serial.print("Pressure = ");
36
/* Datele citi de la senzori l e trimite prin wifi spre aplicaț ia Firebase
unde sunt actualizate și sincronizate în baza de date, î n timp real */
if (WiFi.status() == WL_CONNECTED)
{
StaticJsonBuffer<200> jsonBuffer;
JsonObject& data = jsonBuffer.createObject();
data["temp"] = String(t);
data["bat"] = String(volt);
data["hpa"] = String(G);
data["voltage"]=String(v);
data["Procent"]=String(batteryPcnt);
//Adresa unde vor ajunge datele citite de la senzorii
Firebase.set("/licenta -01", JsonVariant(data));
}
}
37
Anexa 2 – Schema electrică realizată cu ajutorul aplicației Altium Designer
38
Anexa 3
3.1. PCB final
3.1. Cod sursă pentru aplicația “Monitorizarea presiunii din pneuri ”
Codul aferent aplica ției mobile este anexat pe CD -ul atașat lucrării, la locația “Cod
sursă \program monitorizarea presiunii din pneuri ”.
39
Bibliografie
[1] Todos P. & Golovanov C., Senzori și traductoare, Chișinău: Editura ”Tehnică”, 1998.
[2] Cosma Dragoș C., Silviu Andronie, Traductoare, București: CD PRESS, 2011.
[3] Dragoș Ionel C., Florin Mareș, Electronica Circuitelor electrice, București: CD PRESS,
2010.
[4] Gheață Carmen L., Cosma Dragoș I.,Chivu Aurelian,Mușat Carmen, Bazele electronicii
analogice, București: CD PRESS, 2011.
[5] Manolache Irina A., Cosma Dragoș I., Reglarea automată a prametrilor proceselor
tehnologice, București: CD PRESS, 2012.
[6] Vasilescu Aurel C., Constantin Mariana,Spornic Olguța L., Senzori și traductoare,
București: CD PRESS, 2007.
[7] Iordache Valenti,Cormoș Anghel C.,Costea Ilona M., Senzori traductoare și achiziții de date
cu Arduino, București: Techno Media, 2012.
[8] Ai-Thinker, 2015.
https://www.kloppenborg.net/images/blog/esp8266/esp8266 -esp12e -specs.pdf.
[9] http://roboromania.ro/produs/modul -lua-esp8266mod -wireless/.
[10] https://media.readthedocs.org/pdf/arduino -esp8266/docs_to_readthedocs/arduino –
esp8266.pdf.
[11] N. Ionela -Diana, 12 Iul 2011.
https://www.scribd.com/document/57705392/Senzori -Si-Traductoare -de-Temperatura.
[12] A. A., 25 Apr 2015.
https://www.scribd.com/doc/263078477/Apostila -de-Android -Programacao -Basica –
Android -Studio -Free.
[13] C. Chryss, 25 Mai 2017.
https://www.scribd.com/document/349395373/Test -pdf.
[14] STEM Education, 2 Feb 2016.
https://eu.dlink.com/uk/en/service -provider -solutions/technology/wireless -distribution –
system.
[15] Hek, 2016.
https://www.mysensors.org/build/battery.
40
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: S.I. dr. ing. Andrian PETRARIU [620302] (ID: 620302)
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.
