Sistem de coordonare a funcțiilor unui computer de bord [605102]
Universitatea POLITEHNICA din București
Facultatea de Electronică, Telecomunicații și Tehnologia Informației
Sistem de coordonare a funcțiilor unui computer de bord
Proiеct dе diplomă
prezentat ca cerință parțială pentru obținerea titlului de
Inginer în domeniul Electronică și Telecomunicații
programul de studii de licență Еlеctronică Aplicată
Conduc ător științific Absolvеnt
Prof. dr. ing. Alexandru VASILE Georgiana Elena ROBAN
2017
Anexa1
Declaratia de onestitate academica
Cuprins
Lista figurilor ………………………….. ………………………….. ………………………….. ………………………….. …………. 9
Lista tabelelor ………………………….. ………………………….. ………………………….. ………………………….. ……….. 11
Lista acronime ………………………….. ………………………….. ………………………….. ………………………….. ………. 13
Introducere ………………………….. ………………………….. ………………………….. ………………………….. …………… 15
Capitolul 1. Computere de bord ………………………….. ………………………….. ………………………….. …………… 17
1.1 Generalități ………………………….. ………………………….. ………………………….. ………………………….. ….. 17
1.2 Evoluția computerelor de bord ………………………….. ………………………….. ………………………….. ……. 17
1.3 Senzori utilizați ………………………….. ………………………….. ………………………….. ………………………… 18
1.3.1 Senzori de temperatură ………………………….. ………………………….. ………………………….. ………… 19
1.3.2 Senzor fotosensibil ………………………….. ………………………….. ………………………….. ……………… 19
1.3.3 Senzor ultrasonic pentru măsurarea distanței ………………………….. ………………………….. ………. 20
1.3.4 Senzor tactil ………………………….. ………………………….. ………………………….. ……………………….. 21
1.4 Componente auxiliare ………………………….. ………………………….. ………………………….. ……………….. 22
1.4.1 Modul buzzer pasiv ………………………….. ………………………….. ………………………….. …………….. 22
1.4.2 Afișaj cu 7 segmente ………………………….. ………………………….. ………………………….. …………… 23
Capitolul 2. Arduino și limbajul de programare C ………………………….. ………………………….. ………………. 25
2.1 Generalități ………………………….. ………………………….. ………………………….. ………………………….. ….. 25
2.2 Structură ………………………….. ………………………….. ………………………….. ………………………….. ……… 26
2.3 Microcontroller AVR ………………………….. ………………………….. ………………………….. ………………… 27
2.4 Limbajul de programare ………………………….. ………………………….. ………………………….. …………….. 28
2.5 Dezvoltare ………………………….. ………………………….. ………………………….. ………………………….. …… 29
Capitolul 3. Realizarea practică ………………………….. ………………………….. ………………………….. …………… 31
3.1 Componente utilizate ………………………….. ………………………….. ………………………….. ………………… 31
3.2 Descrierea sistemului ………………………….. ………………………….. ………………………….. ………………… 32
3.2.1 Hardware ………………………….. ………………………….. ………………………….. ………………………….. . 32
3.2.2 Software ………………………….. ………………………….. ………………………….. ………………………….. .. 37
3.3 Modul de funcționare ………………………….. ………………………….. ………………………….. ………………… 39
Concluzii și dezvoltări ulterioare ………………………….. ………………………….. ………………………….. …………. 41
Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. ………….. 43
Anexa ………………………….. ………………………….. ………………………….. ………………………….. ………………….. 45
Lista f igurilor
Figura 1.1 "Structura sistemelor de tip ECU" [1] ………………………….. ………………………….. ……………….. 17
Figura 1.2 Senzor de temperatură DHT -11 [8] ………………………….. ………………………….. …………………… 19
Figura 1.3 Senzor de lumină LM393 [10] ………………………….. ………………………….. ………………………….. 20
Figura 1.4 Senzor ultrasonic HC -SR04 [13] ………………………….. ………………………….. ………………………. 21
Figura 1.5 Senzor tactil [15] ………………………….. ………………………….. ………………………….. ………………… 22
Figura 1.6 Modul buzzer pasiv [17] ………………………….. ………………………….. ………………………….. ……… 22
Figura 1.7 Ecran afișare informații – TM1637 [19] ………………………….. ………………………….. …………….. 23
Figura 2.1 Arduino [21] ………………………….. ………………………….. ………………………….. ……………………… 25
Figura 2.2 Arduino IDE ………………………….. ………………………….. ………………………….. ……………………… 26
Figura 2.3 Configurația pinilor ATmega328 [23] ………………………….. ………………………….. ……………….. 28
Figura 2.4 Schema electrică a montajului ………………………….. ………………………….. ………………………….. 37
Figura 3.1 Senzori pentru Arduino [25] ………………………….. ………………………….. ………………………….. … 31
Figura 3.2 Conectarea senzorului tactil ………………………….. ………………………….. ………………………….. …. 32
Figura 3 3 Conectarea modulului de afi șare ………………………….. ………………………….. ………………………. 33
Figura 3.4 Conectarea senzorilor de temp eratură ………………………….. ………………………….. ……………….. 33
Figura 3.5 Conectarea butoanelor și a senzorului fotosensibil ………………………….. ………………………….. 34
Figura 3.6 Atașarea modulului pentru semnale acustice ………………………….. ………………………….. ………. 35
Figura 3.7 Sistemul complet ………………………….. ………………………….. ………………………….. ……………….. 36
Lista tabelelor
Tabel 2.1 Clasificarea microcontrolerelor în subfamilii ………………………….. ………………………….. ………. 27
Tabel 2.2 Parametrii microcontrolerului Atmega328 [22] ………………………….. ………………………….. ……. 27
Lista acronime
A
ABS – Anti-lock Braking System
ASR – Antislip Regulation
B
C
CLK – Clock input
CPU – Central Processing Unit
D
DIO – Data input/output
E
ECU – Electronic control unit
EEPROM – Electrically Erasable Programmable Read Only Memory
EPROM – Erasable Programmable Read Only Memory
ESP – Electronic Stability Control
F
G
GND – Ground
GPS – Global Positioning System
H
I
IDE – Integrated Development Environment
I/O – Input/Output
J
K
L
LCD – Liquid Cristal Display
LDR – Light Dependent Resistors
LED – Light -Emitting Diode
M
MEMS – MicroElectroMecanical System
N
O
P
Q
R
RAM – Random Access Memory
RISC – Reduced Instruction Set Computer
S
T
THT – Through -hole technology
U
USB – Universal Serial Bus
V
VCC – Common Colector Voltage
W
X
15
Introducere
Această lucrare își propune să prezinte aspectele teoretice și practice, legate de simularea
realizării unui computer de bord al unui autovehicul. Lucrarea descrie detaliat fiec are componentă
folosită în alcătuirea acestui sistem, oferă toate informațiile necesare în legătură cu activitatea
desfășurată, rolul aplicației în cadrul tehnologiei autovehiculare și în același timp o analiză a
avantajelor utilizării unui computer de bor d în vederea sporirii siguranței și al confortului în cadrul
autovehiculelor.
Siguranța și confortul reprezintă doi dintre cei mai importanți factori în deplasarea cu un
autovehicul și pentru ca acești factori să aibă un grad cât mai ridicat, aplicarea un ui computer de bord în
cadrul autovehiculului a devenit un strict necesar.
Lucrarea de față va analiza câteva dintre dispoziti vele utilizate în alcătuirea unui computer de
bord, cum ar fi: controllerul sistemului, senzorul de temperatură, senzorul de lumină, argumentând cum
anume contribuie la îmbunătățirea sistemelor de tip computer de bord.
În acest proiect se va simula, cu ajutorul microcontrollerului Arduino UNO și al senzorilor
atașați la acesta comportamentul unui computer de bord și mesajele pe care acesta le oferă
utilizatorului.
Scopul acestui proiect dat este elaborarea unui sistem bazat pe procesarea informațiilor primite
de la senzori externi prin controlul funcționalităților pentru realizarea unor simulări pentru observarea și
îmbunătățir ea performanțelor actualelor sistem de tip computer de bord.
16
17
Capitolul 1. Computere de bord
1.1 Generalități
Computerul de bord al unui autovehicul sau ECU reprezintă denumirea generică pentru orice sistem
comandat electronic. În cadrul autevehi culelor din producție modernă exista peste 80 de astfel de
sisteme ECU care controleaza și monitorizeaza diverse componente ale autovehiculului. Cele mai
cunoscute dintre aceste ansambluri sun t sistemele de antiblocare a roț ilor (ABS) , controlul de stabili tate
electronic (ESP) și sistemul de reglare a forței de tracțiune (ASR) .
Elementele cheie ale sistemelor de tip ECU sunt descrise în figura 1.1.
Figura 1. 1 "Structura sistemelor de tip ECU" [1]
Din punct de vedere al dezvoltării, aceste sisteme utilizează componente atât de tip hardware cât și
software. De asemenea pentru construirea acestora trebuiesc respectate anumite standarde precum
standardul ISO 26262 pentru siguranța funcțională a vehicul elor rutiere.
Acest standard a fost definitivat în anul 2011 și cuprinde mai multe etape de dezvoltare și anume:
vocabular, managementul siguranței funcționale, faza de concept, dezvoltarea produsului la nivelul
sistemului, dezvoltarea la nivel hardwar e, dezvoltarea la nivel software, producția și exploatarea,
procese de sprijin și analize pentru integritate și siguranță. [2]
1.2 Evoluția computerelor de bord
Într-un timp foarte scurt de la integrarea sistemelor electronice în autovehicule, acestea au evoluat de
la sisteme simple care puteau estima distanța care mai poate fi parcursă cu combustibilul din rezervor,
la sisteme complexe care oferă informații despre consumul mediu, consumul instantaneu, timpul de la
începutul deplasării , temperatura interioară și exterioară și diverse capacități de diagnosticare.
Computerele de bord au evoluat pentru asigura confortul conducătorului auto și pentru a asigura
diverse necesități, cujm ar fi: siguranța sporită în trafic, minimizarea consumului de ener gie, furnizarea
a diverse informații și asistența la conducere.
18
Istoria electronicii auto moderne [3], a debutat în jurul anilor 1950, odată cu introducerea
tranzistorilor cu semiconductori în aparatele de radio și a diodelor de putere în alternatoare. În anii 1980
a apărut în centrul atenției și integrarea de sisteme electronice precum sisteme de management al
motorului sau sisteme de control al frânării. În următorii ani s-a dorit realizarea unei legături mult mai
strânse între autovehicu le și mediul înconjurător. Dezvoltarea computerelor de bord a fost posibilă
datorită tehnologiilor electronice și de comunicații care au susținut creșterea digitalizării și integrării
dispozitivelor electronice.
Electronica auto [4], a evoluat conside rabil de -a lungul anilor:
• Anii 1970 – electronica în controlul motorului
• Anii 1980 – sistemul anti -blocare al frânelor
• Începutul anilor 1990 – airbagurile au devenit dotări standard
• Sfârșitul anilor 1990 – iluminarea panoului frontal, sisteme de blocare au tomată,
deschidere/închidere centralizată
• Începutul anilor 2000 – sisteme sofisticate atât audio, cât și video, semnale transmise prin
satelit, GPS, radio prin satelit
• Sfârșitul anilor 2000 – conectivitate fără fir
1.3 Senzori utilizați
Autovehiculele în producție recentă beneficiază de tehnologii foarte dezvoltate ce utilizează foarte
mulți senzori pentru diverse funcții ale mașinii. Majoritatea senzorilor sunt percepuți și afișați pe un
ecran specific sau printr -un martor LED pe bordul autovehiculului.
Autovehiculele care nu beneficiază de un ecran LCD pentru afișarea informațiilor primite de la
computerul de bord avertizează conducătorii auto prin aprinderea unor leduri în spatele unor marcaje.
De asemenea aceste aprinderi ale ledur ilor sunt controlate tot de către computerul de bord și de senzorii
atașați acestuia.
Un senzor este un dispozitiv care recepționează un stimul (de natură fizică, chimică sau biologică) și
răspunde cu un semnal, de regulă electric, compatibil cu circu itele electronice cărora îl transmite. [5]
Senzorii sunt utilizați în obiectele folosite în viața de zi cu zi, cum ar fi senzorii tactili în cazul
butoanele lifturilor sau al lămpilor a căror intensitate luminoasă se modifică prin atingerea bazei și în
multe alte aplicații necunoscute de mulți oameni.
Odată cu evoluția tehnologiilor și a platformelor cu microcontroller ușor de utilizat, domeniile de
utilizare a senzorilor s -au extins dincolo de domeniile tradiționale de măsurare a temperaturii, pres iunii
sau debitului. De asemenea, senzorii analogici, precum potențiometrele, sunt în continuare folosiți la
scară largă în diverse aplicații ce includ: instalații mecanice, industria aerospațială, mașini, robotică și
medicină.
Sensibilitatea unui senz or arată cât de mult variază ieșirea senzorului, atunci când cantitatea măsurată
la intrare se modifică. Senzorii [6], sunt concepuți de obicei astfel încât să aibă un efect minim asupra
măsurătorilor. De exemplu, un senzor de dimensiuni mai mici âmbunătăț ește acest lucru și poate aduce
și alte avantaje.
19
Dezvoltarea tehnologică permite ca tot mai mulți senzori să fie fabricați la scară microscopică . Un
astfel de exemplu este reprezentat de microsenzorii rea lizați folosind tehnologia MEMS , tehnologie a
dispozitivelor microscopice realizate prin tehnici de microfabricație . În majoritatea cazurilor, un
microsenzor atinge o viteză și o sensibilitate mult mai mare în comparație cu senzorii fabricați la nivel
macroscopic.
1.3.1 Senzori de temperatură
Fiecare material sau corp omogen are o condiție termică al cărui indicator este temperatura. Pentru a
putea reliza transmiterea temperaturii între un senzor si mediu este necesar un contact direct.
Senzor ul de temperatură este foarte utilizat în proie ctarea sistemelor electronice. În cazul aplicațiilor
din domeniul auto a fost necesară o performanță ridicată ceea ce a dus la adoptarea senzorilor pe bază
de siliciu sau cei pe bază de carbură de siliciu.
Senzorul de temperatură DHT -11, utilizat în a ceastă lucrare , folosește un termistor pentru masurarea
temperaturii aerului din jurul său. Unul dintre avantajele termistoarelor este dat de faptul că prezintă o
sensibilitate ridicată în comparație cu alți senzori. În trecut, acestea prezentau dezavantaj ul neliniarității
caracteristicii termice, însă acesta a fost eliminat de către circu itele numerice de prelucrare. [7 ]
Senzorii de temperatură comerciali prezintă mai multe avantaje precum faptul că sunt relativ ieftini și
interschimbabili, sunt furniz ați cu conectori standard și pot măsura o gamă largă de temperaturi.
Figura 1. 2 Senzor de temperatură DHT -11 [8]
Modul de conectare al senzorului la microcontroler este realizat pe baza celor 3 pini. Pinul numărul 1
corespunde alimentării la 3.3V sau 5V, pinul numărul 2 corespunde comunicării cu microcontrolerul iar
cel de -al treilea pin reprezinta potențialul de referință.
1.3.2 Senzor fotosensibil
20
Senzorul fotosensibil LM393 este realizat cu ajutorul unui fot orezistor și transmite semnalul către
microcontroler atât in format analogic cât și digital. În cazul utilizării digitale se utilizează un
potențiometru pentru reglarea unui nivel de prag.
Un fotorezistor (sau LDR) [9], este un rezistor al cărui rezis tență depinde de intensitatea luminii.
Variația rezistenței este datorată eliberării de electroni ce are loc prin efect fotoelectric. Fotorezistorii
sunt fabricați din materiale semiconductoare, astfel încât la întuneric să prezinte o rezistentă ridicată,
datorită numărului mic de electroni liberi, iar la lumină, electronii să fie eliberați, rezistența scăzând.
În ceea ce privește sensibilitatea la lumină, fotorezistoarele sunt mai puțin sensibile în comparație cu
fototranzistorii sau fotodiodele. Dezav antajul fotorezitoarelor este dat de faptul că rezistența lor poate
varia în funcție de temperatura ambiantă, ceea ce îi face nepotriviți pentru aplicații în care sunt necesare
măsurători exacte.
Fotorezistorii pot fi folosiți în circuitele detectoare sensibile la lumină sau în circuitele ce comută
atunci când este lumină sau întuneric. Cel mai des sunt folosiți ca senzori de lumină, în aplicațiile în
care este necesară detectarea prezenței și absenței luminii.
Figura 1. 3 Senzor de lumină LM393 [10]
Senzorul se conectează la microcontroler cu ajutorul celor 4 pini: GND, VCC, A0 și D0. Pinul A0
trebuie conectat la un pin analogic, iar pinul D0 la unul digital. Pinul VCC corespunde alimentării de
3.3V – 0 5V, iar pinul GND reprezintă potențialul de referință.
1.3.3 Senzor ultrasonic pentru măsurare a distanț ei
Senzorii ultrasonici [11 ], sunt dispozitive care funcționează conform principiului radarelor care
interpretează ecoul undelor radio și evaluează astfel atributele unei ținte. Un senzor ultrasonic
generează unde de sunet de frecvențe înalte și evaluează ulterior ecoul recepționat înapoi de către
senzor. Senzorii sunt capabili să măsoaare distanța față de obiect prin calcularea intervalului de timp de
la transmiterea semnalului la recepționarea ecoului.
21
Limitările acestei tehnologii sunt date de formele suprafețelor și consistența obietelor față de care se
face măsurarea. De exemplu, materialul din spumă poate distorsiona citirile realizate de către se nzorii
ultrasonici. Această tehnologie este utilizată în diverse aplicații, cum ar fi: umidificatoare, sonar,
ultrasonografie medicală, alarme antifurt și senzori de parcare.
Senzorul ultrasonic HC -SR04 este compatibil cu placa de dezvoltare Arduino și este considerat unul
dintre cei mai ușor de utilizat. [12] În comparație cu senzorii analogici de distanță, acesta prezintă ca șo
avantaj e imunitatea mai mar e la zgomot și faptul că necesită doar pini digitali de intrare și ieșire .
Figura 1. 4 Senzor ultrasonic HC -SR04 [13]
Acest senzor emite unde ultrasonice de frecvențe de 40000 Hz . La întâlnirea unui obstacol în calea
sa, sunetul se întoarce și este captat de către senzor. Gama de detecție a acestui senzor se situează ân
intervalul 2cm – 400 cm și are o precizie de 2mm.
Modulul prezintă patru pini denumiți: GND, VCC, Trig și Echo. Cei doi pini, Trig și Echo, pot fi
conectați la oricare doi pini digitali de intrare/ieșire de pe placa de dezvoltare, pinul GN D la unul din
pinii GND, iar pinul VCC trebuie conectat la pinul de 5V.
1.3.4 Senzor tactil
Senzorii tactili sunt dispozitive ce măsoară informația rezultată din interacțiunea fizică cu mediul
său, [14]. Pentru îmbunătățirea măsurătorilor este de p referat ca senzorii să aibă sensibilități foarte
ridicate pentru a putea detecta chiar și modificările foarte mici. Senzorii tactili sunt foarte răspândiți în
activitățile de zi cu zi, ca de exemplu la butoanele unui lift sau la lămpile care își modifică i ntensitatea
prin atingerea bazei. De asemenea, sunt utilizați în robotică și sisteme de securitate, dar cea mai
comună aplicație a senzorilor tactili este dată de dispozitivele touchscreen de pe calculatoare și
telefoane mobile.
Modulul senzor tactil capacitiv (Digital Touch) TTP223B este proiectat astfel încât să permit
înlocuirea butoanelor tradiționale . Senzorul tactil capacitiv permite detectarea degetului la apropierea
de câțiva milimetrii față de suprafața sa pentru a imita apăsarea unui buton.
22
Figura 1. 5 Senzor tactil [15 ]
Modul de conectare al senzorului la microcontroler este realizat pe baza celor 3 pini : I/O , GND,
VCC . Pinul VCC corespunde alimentării la 2V – 5.5V, pinul I/O corespunde comunicării cu
microcontrolerul iar cel de -al treilea GND pin reprezinta potențialul de referință .
1.4 Componente auxiliare
1.4.1 Modul buzzer pasiv
Un buzzer este un dispozitiv de semnalizare audio și poate fi mecanic, piezoelectric s au
electromecanic. Buzzerele [16], sunt în general folosite în cadrul dispozitivelor de alarmă,
cronometrelor, echipamentelor electronice pentru automobile sau pentru confirmarea acționării de către
utilizator a unor butoane la telefoane și calculatoare.
Figura 1. 6 Modul buzzer pasiv [17]
23
Modulul se conecteaz ă cu ajutorul a 3 pini după cum urmează: I/O reprezintă pinul de comandă,
VCC este pinul associat alimentării de 3.3V – 5V, iar GND reprezintă potențialul de referință.
1.4.2 Afișaj cu 7 segmente
Display -ul de șapte segmente (denumit și afișaj LED cu 7 segmente) oferă posibilitatea de
reprezentare a cifrelor în sisteme electronice. Este alcătuit din șapte segmente de forma unor linii
scurte, ce pot fi activate individual.
Afișajele pe șapte segmente sunt deseori utlizate în ceasuri digitale, controare electronice,
calculatoare de bază și alte dispozitive electronice ce afișează diverse informații. [ 18]
Modulul folosit în această lucrare permite un afișaj cu led -uri roșii a patru cifre cu câte șapte
segmente. Având patru cifre, acest modul poate fi folosit pentru afișarea unui ceas sau timer.
Figura 1. 7 Ecran afișare informații – TM1637 [19]
Acest modul are două conexiuni de semnal denumite CLK și DIO . Acești pini pot fi conectați la
orice pereche de pini digitali de pe placa de dezvoltare Arduino UNO. De asemnea, ecranul de afișare
mai conține și pinii VCC, corespunzător alimen tării de 3,3V – 5V și GND, fiind potențialul de referință.
24
25
Capitolul 2. Arduino și l imbajul de programare C
2.1 Generalități
Arduino [20], este o companie producătoare de plăci de dezvoltare bazate pe microcontrolere. Alături
de microcontrolere în cadrul placuțelor de dezvoltare se afla și porturile ce realizează comunicarea cu
diverse dispozitive periferice.
Proiectul Arduino a apărut î n anul 2005 în cadrul Institutului de Proiectare din Ivrea, Italia ce și -a
propus realizarea unei plăcuțe de dezvoltare ce poate interacționa cu mai multe periferice. În urma
acestui proiect s -a realizat un produs finit, iniațial destinat studenților a căp ătat un preț de aproximativ
100$ ceea ce ar fi fost destul de mult pentru studenți. Ulterior au reușit să atragă atenția unor
producători de microcontrolere și astfel au reușit sa reducă costurile.
Figura 2. 1 Arduino [21]
Denumirea de Arduino pe care o poartă placuța de dezvoltare a fost dată de inițiatorii proiectului
după numele unui bar în care aceștia se întâlneau ”Arduin of Ivrea” .
Pentru programarea microcontro lerului, platforma Arduino furnizează un mediu de dez voltare
integrat (IDE) ce include suport pentru limbajele de programare C și C++. De asemenea acest mediu de
dezvoltare a fost dezvoltat initial in 2001 de catre unul din inițiatorii proiectului Arduino .
26
2.2 Structură
Arduino, în prezent produce plăci de dezvoltare de tip open -source cu microcontrol er Atmel de 8, 16
sau 32 de biți și alte componente ce facilitează dezvoltarea. Arduino conține câțiva conectori standard
foarte importanți prin care utilizatorii co nectează unitatea de procesare ( CPU ) la diverse module.
Majoritatea modulelor se conectează la Arduino cu ajutorul unor pini. Conform ultelor tehnologii
utilizate in producția Arduino, s -a atașat un regulator de tensiune liniară de 5V și un oscilator cu o
frecvență de 16MHz sau 8MHz.
De asemenea orice componentă ce se leagă de Arduino este conectată și programată cu ajutorul
standardului de comunicare RS -232, un standard utilizat pentur transemiterea searială a datelor. Acest
standard definește caracteristicile electrice și temporale ale semnalelor și de asemenea rolul fiecărui
semnal și sensul fizic al pinilor.
Actualele plăci de dezvoltare Arduino sunt programate cu ajutorul portului USB. Anumite variații
produse, precum Arduino Mini sau versiunea neoficial ă Boarduino utilizează un cablu detașabil USB –
to-serial -adapter.
Mediul de dezvoltare integrat, IDE, este de asemenea o aplicație open -source, furnizată oricărui
utilizator indiferent dacă acesta a achizitionat o placă de dezvoltare. Înainte de crearea unei interfețe
intiutive pentru programarea Arduino, erau folosite terminale sau console.
Pentru microcontrol erul Arduino exista diverse dispozitive atașabile denumite generic ”shield” ce pot
furniza date, funcționalități precum LCD, Ethernet sau un control al unor servo -motoare. Datorita
conceptului de realizare a acestor s hield -uri, acestea oc upa preponderent toți pinii de comunicare ai
Arduino și astfel acestea au fost contstruite pentru a putea fi stivuite.
Figura 2. 2 Arduino IDE
27
2.3 Microcontroller AVR
Familia de microcontrol ere AVR a fost dezvoltată de compania Atmel de la începutul anului 1996.
Aceste microcontrolere utilizeaza o arhitectura Harvard modificata și a făcu t parte din primele
microcontro lere care includeau o memorie flash pe ntru stocarea programului surs ă față de celelalte
microcontro lere care utilizau o memorie de tip EPROM sau EEP ROM.
Arhitectura AVR a fost concepută de către doi studenți de la Institutul Norvegian de Tehnologie și
mai tarziu rafinată și actualizată de compania Atmel Norvegia, companie dezvoltată de către cei doi
studenți.
Tehnologia apărută ulterior a permis clasificarea microcontrol erelor în trei subfamilii:
Cel mai utilizat microcontrol er din familia AVR este ATmega328, un microcontrol er din gama 8 -bit
cu arhitectură RISC ce combină capacitățile de citire în paralel cu scrierea și o memorie flash de 32KB.
Parametri VALORI
Flash 32 Kbytes
RAM 2 Kbytes
Cantitate Pini 28
Frecvență maximă de funcționare 20 MHz
CPU 8-bit AVR
Numărul de variabile Canale 16
Pini maximi de E/S 26
Întreruperile externe 24
Tabel 2. 2 Parametrii microcontrolerului Atmega328 [22] Subfamilie Memorie program Pachet pini Periferice
AtinyAVR 0.5-16kB 6-32 pini Set periferice limitat
megaAVR 4-512kB 28-100 pini Set periferice extins
XMEGA 16-384kB 44-64-100 pini Set periferice extins cu
convertoare analog –
digital
Tabel 2. 1 Clasificarea microcontrolerelor în subfamilii
28
Microcontrol erul functionează la o tensiune de alimentare cuprinsă între 1.8 și 5.5 volți. ATmega328
este microcontro lerul cel mai utilizat în proiecte cu sisteme autonome deoarece costul este destul de
mic și consumul de energie foarte redus.
Conf igurația pinilor microcontrollerului ATmega328 în cadrul plăcilor de dezvoltare Arduino este
reprezentată în figura urmatoare:
Figura 2. 3 Configurația pinilor ATmega328 [23]
2.4 Limbajul de programare
Mediul de dezvoltare integrat (IDE) al sistemului Arduino reprezint ă o platformă realizată prin
combinarea aplicațiilor scrise în limbajul de programare Java și derivații ale IDE standard. Producătorii
au introdus în acest mediu un stil de programare accesibil atât profesioniștilor cât și celor mai puțin
familiarizați cu dezvoltarea software. [24]
Acesta conține un editor de cod cu anumite caracteristici, precum evidențierea sintaxelor cunoscute,
recunoașterea parantezelor și a acoladelor deschise, sugerând închi derea lor, indentarea automată cât și
compilarea și încărcarea programului scris în memorie cu un singur clic. Un program sau un cod scris
pentru Arduino se numește “sketch”. Programele pentru Arduino sunt scrise în C sau C++. De
asemenea, mediul de dezvol tare Arduino vine cu o bibliotecă software numită “Wiring” preluată de la
29
proiectul Wiring ceea ce a făcut ca multe operații de intrare/ieșire să devină mult mai simple. În cadrul
programului utilizatorul trebuie să definească decât două funcții importante pentru a executa un
program ciclic.
– Setup () – funcție ce la momentul rulării programului inițializează toate setările.
– Loop () – funcție ce apelează programul în mod repetitive până când placă de test este oprită.
Cu toate că programele sunt sc rie în C sau C++, de cele mai multe ori aceste programe pot fi
considerate invalide de către compilatoarele C++ standard.
Mediul de dezvoltare Arduino utilizează GNU toolchain, și AVR Libc pentru a compila și AVR
Dude, pentru încărcarea programelor în memorie.
Așa cum platforma Arduino folosește microcontroller Atmel, la randul lor Atmel a dezvoltat inițial
un mediu de dezvoltare integrat numit AVR Studio, ulterior având o variantă îmbunătățită
2.5 Dezvoltare
Placa de dezvoltare Arduino este d istribuită sub o licență “Creative Commons Attribution Share –
Alike” valabilă pe site -ul Arduino. Schema generală, “layout”, și fișierele de producție pentru anumite
versiuni de Arduino sunt și ele de asemenea disponibile. Codul sursă pentru mediul de dezvo ltare a fost
lansat sub licența GNU General Public License, versiunea 2.0.
De asemenea părțile hardware și software sunt distribuite cu licență “copyleft”, dezvoltatorii cerând
ca denumirea de Arduino să fie totuși exclusivă pentru a nu exista alte pro iecte derivate fără acordul
lor. Documentul oficial privind utilizarea denumirii Arduino subliniază faptul c ă proiectul este deschis
pentru î ncorporarea muncii altor dezvoltator i în cadrul produsului oficial. Câteva dintre produsele
compatibile Arduino au fost lansate evitând denumirea Arduino, utilizând doar variante ale “duino”.
30
31
Capitolul 3. Realizarea practică
3.1 Componente utilizate
În realizarea unui sistem de coordonare a funcțiilor unui computer de bord este necesară utilizarea
unui Ardino UNO, prezentat în cadrul capitolului 2, împreună cu următoarele componente:
– Senzor i de temperatură DHT -11
– Senzor fotosensibil LM393
– Senzor ultrasonic pentru măsurarea distanței HC-SR04
– Senzor tactil TTP223B
– Afișaj cu 7 segmente TM1639
– Modul buzzer pasiv
– Cablu de alimentare
– Conectori
– Breadboard
– Rezistori
– Butoane
– Leduri
Figura 3. 1 Senzori pentru Arduino [25]
32
3.2 Descrierea sistemului
3.2.1 Hardware
Breadboard -ul este o construcție de bază pentru realizarea prototi purilor de circuite electronice care
nu necesita componente THT. Benzile laterale sunt realizate pe structură verticală pentru conectarea
pinilor de alimentare si masă. Astfel, la cele două linii sunt conectați pinii de 5V și GND ai modulului
de alimentare din ca drul Arduino .
Pentru o primă fază de realizare a proiectului am decis realizarea simulării pornirii motorului
autovehiculului prin atingerea senzorului tactil si trimiterea unui impuls pentru pornirea tuturor
senzorilor conectați la placa de dezvoltare. Senzorul tactil a fost conectat la modulul Arduino cu
ajutorul pinului digital numarul 2.
Figura 3. 2 Conectarea senzorului tactil
În urma generării semnalului pe baza atingerii senzorului tactil, am semnalat cu ajutorul afișajului cu
7 segmente mesajul „ON” pentru anunțarea conducătorului auto ca mașina a fost pornită. In același
timp, pentru atenționare si conștientizarea stării motorului am atașat un LED, conectat la pinul 3 al
Arduino, care prin starea sa stins/aprins reflecta starea motorului(aprins -pornit/stins -oprit).
Din punct de vedere al funcționalităților următorul senzor atașat la circuit a fost cel de temperatură.
Senzorul DHT -11 utilizat în două exemplare pentru preluarea informațiilor cu privire la temperatura
interioară si exterioară. Fiecare dintre cei doi senzori necesita un pin de comanda prin care acesta
întoarce un mesaj cu o valoare numerica asupra temperaturii pe care o înregistrează la un anumit
moment de timp. Atât temperatura interioară cât și cea exterioară sunt afișate pe același ecran, după ce
33
s-a afișat mesajul de pornire a vehiculului. M odulul TM1637 este un sistem de afișaj format din patru
cifre construite cu ajutorul sistemului cu 7 segmente .
Figura 3 3 Conectarea modulului de afi șare
Pentru a avea totuși un control asupra informațiilor de pe ecran am realizat comutarea afișărilor intre
cele doua temperaturi prin apăsarea unui buton. Astfel, este afișata constant temperatura interioara iar la
menținerea apăsata a butonului este afișata temperatura exterioa ra.
Figura 3. 4 Conectarea senzorilor de temperatură
34
Pentru simularea funcției de aprindere a farurilor în funcție de gradul de iluminare externă am
atașa t la breadbord un sen zor fotosensibil, LM393, care percepe gradul de iluminare din jurul său și va
transmite printr -un pin legat la microcontrollerul Arduino informația necesară simulării aprinderii
farurilor printr -un led. Senzorul fotosensibil a fost legat cu ajutorul pinului 9 al Arduino si in funcție de
gradul de iluminare acesta transmite către Arduino un semnal cu o valoare 1 ce corespunde unui grad
de iluminare puternic sau o valoare 0 ce corespunde necesitații aprinderii farurilor.
Figura 3. 5 Conectarea butoanelor și a senzorului fotosensibil
Conform tehnologiei recente în domeniul computerelor de bord, încuierea portierelor se realizează
automat în timpul deplasării cu autovehiculul pentru a suplimenta siguranța participanților la trafic și
astfel , acest comporta ment a fost simula t prin aprinderea unui LED si transmiterea un semnal acustic
scurt la 5 secunde după ce a fost atins modulul tactil pentru pornirea motorului.
De asemenea modulul pentru semnale le acustice (buzzer) a fost conecta t la breadbord pentru
alimentare și cu un pin la microcontrollerul Arduino. Acesta are multiple întrebuințări de avertizare
precum cea de semnalizare și avertizare a conducătorului auto la deschiderea portierei cu privirea la
menținerea farurilor în faza de ”poziții” aprinse. Starea de aprins sau stins a farurilor este permanent
35
controlata de senzorul fotosensibil. De asemenea, modulul pentru semnale acustice este utilizat si in
cadrul funcționalității de simulare a încuierii autovehiculului la câteva secunde după oprirea motorul ui.
Figura 3. 6 Atașarea modulului pentru semnale acustice
O fu ncționalitate utilă și mai nou implementată pentru reducerea timpului de verificare a
autovehiculului atunci când acesta este părăsit, este aceea de ridicare a geamurilor după ce motorul este
oprit și portiere le au fost închise. Această funcționalitate este simula tă cu ajutorul unui LED care sta
aprins pentru 3 secunde de la cea de -a doua atingere a senzorului tactil pentru oprirea motorului.
In ceea ce p rivește ajutorul pe care vehiculul îl oferă șoferului, atunci când calculatorul de bord
primește semnalul ca schimbătorul de viteze a fost introdus în treapta marșarier pornește senzorul
pentru calcularea distanței până la cel mai apropiat obiect de spatel e vehiculului. Acest comportament
este simulat în cadrul proiectului cu ajutorul unui senzor ultrasonic de detecție a distanței și cu ajutorul
a două LED -uri cu semnificații diferite. Astfel, în cazul in care se menține apăsat butonul specific
comenzii de marșarier, senzorul începe sa detecteze distanța si dacă aceasta este cuprinsă între 30 si 50
cm atunci conducătorul este atenționat prin aprinderea unui LED de culoare galbena iar daca distanța pe
care senzorul o raportează este mai mică de 30cm atunci es te aprins un LED de culoare roșie.
36
Figura 3. 7 Sistemul complet
Prin realizarea montajului am simulat functionarea completă a unui computer de bord am unul
autovehicul. Funcțiile de pornire/oprire au fost implementate cu ajutorul senzorului tactil și am LED –
urilor de control. Cu ajutorul senzorilor de temperatură si a afișajului am monitorizat temperaturile
dorite, am implementat funcții ce au avut ca scop blocarea portierelor si am semnalat producerea
evenimentului cu ajutorul unor sunete sau aprinderea unor LED -uri. Aprinderea farurilor reprezintă o
măsură de sig uranță pe care se poate baza conducătorul unui autovehicul, aceasta fiind realizată cu
ajutorul senzorului fotosensibil.
Montajul final
37
Astfel montajul a fost relizat conform schemei electrice gândite în prealabil cu scopul verificării și
amplasării cor ecte a firelor dar și a tensiunilor ce trebuie împărțite corespunzător către toți senzorii.
Figura 2. 4 Schema electrică a montajului
3.2.2 Software
În ceea ce privește realizare software a aplicației, am utilizat mediul de dezvoltare Arduino IDE.
Pentru ca fiecare dintre senzori sa funcționeze corect este necesara realizarea unei configurări corecte,
corelata la partea hardware. Astfel, am definit pinii de cont rol pentru toate componentele utilizate în
cadrul montajului realizat.
În funcție de necesitățile de dezvoltare și de modul de comutare a diverselor funcționalități pinii au
fost stabiliți pe în ordinea fiecărei funcții implementată.
Pentru simula rea pornirii motorului au fost necesari doi pini, unul care sa preia informația de la
senzorul digital de atingere și LED -ul de atenționare a stării în care se afla motorul. Astfel, pinul 2 a
fost legat la senzor și pinul 3 la LED.
38
Afișarea temperaturi lor pe ecran s -a realizat cu ajutorul celor doi senzori de temperatura și a
modulului de afișare cu 7 segmente. Cei doi senzori de temperatură utilizează câte un pin iar modulul
de afișare necesită doi pini. În cele din urmă senzorii de temperatură au fost legați la pinii 4 și 5 ai
Arduino și modulul de afișare la pinii 6 și 7. La pinul cu numărul 8 a fost atașat modulul de avertizare
sonora, la pinul 9 am atașat senzorul fotosensibil iar pentru pinii 10,11,12 am atașat câte un LED.
În ceea ce privește senzorul ultrasonic, acesta a fost atașat la pinii 15,16 și împreună cu acesta, la
pinii 17,18 am atașat două LED -uri specifice distanțelor pe care acest senzor le percepe.
La începutul aplicației a fost necesară pentru fiecare dintre pini, definirea tipului de informației ce va
fi prelucrata, aceasta fiind specificată printr -una dintre valorile „INPUT”/„OUTPUT”.
Datorită buclei principale prin care Arduino iterează de -a lungul întregului cod, am realizat o
verificare asupra stării motorului și în funcție de starea pe care acesta o are am permis alimentarea și
preluarea informațiilor de la toți ceilalți senzori.
După realizarea verificării stării motorului, am realizat o funcție care contorizează numărul de
secunde de la pornirea motorului cu sc opul de a simula încuierea portierelor după cele 5 secunde
menționate. De asemenea am pornit alimentarea senzorilor de preluare a temperaturilor și am realizat
afișarea „displayTemp” ce preia valorile de la senzorii de temperatură, transpune valorile într -un format
acceptat de către modulul de afișare și le afișează atât timp cât starea motorului este „ON”.
39
Dacă pe parcursul rulării aplicației se apasă butonul care simulează funcția de marșarier a
autovehiculului, este alimentat și senzorul ultrasonic ce începe sa preia informații, sa le proceseze și sa
comande cele doua LED -uri programate sa se aprindă dacă distanța față de senzor este cuprinsă între 30
și 50 cm sau dacă distanța este mai mica de 30cm.
Nu în ultimul rând, dacă starea motorul este „OFF” sunt dezactivate toate funcțiile pe care sistemul le
percepe pe baza senzorilor, singurul care se află într -o stare de așteptare este cel care realizează
repornirea motorului.
3.3 Modul de funcționare
La prima alimentare a sistemului, va exista o perioadă de 15 – 20 de secunde în care are loc
încărcarea sistemului și preluarea primelor informați i, apoi, conform codului programului ilustrat în
Anexa 1 se asteaptă atingerea senzorului pentru inceperea simulării pornirii motorului.
În urma pornirii se afisează mesajul -ON- și se începe procesarea informațiilor primite de la senzori
astefel încât sa se sabileasca următoarele funcții ce se vor aplica în rulare.
Din punct de vedere al alimentării, toate modulele sunt alimatate din pinii de 5V ai microcontroller –
ului Arduino,el însuși fiind alimentat dintr -un port USB cu aceeași tensiune de lucru.
Conform logicii programului ilustrat în anexa din finalul lucrarii cand motorul este pornit acesta
îndeplinește o serie de funcționalitati precum perceperea temperaturilor, afisarea acestora, încuierea
portierelor și de asemenea simularea cazului marșa rier.
40
41
Concluzii și dezvoltări ulterioare
În acesta lucrare s -a studiat comportamentul unui sistem de tip computer de bord în funcție de
semnalele provenite de la senzorii atașați sistemului în vederea obținerii unei replici cât mai fidele a
unui c omputer de bord.
Au fost descrise detaliat toate componentele ce alcătuiesc acest sistem si anume Arduino, senzorii de
temperatura, ultrasonic, fotosensibil precum și modulele de afișare si producere semnale acustice.
Rezultatele obținute în urma simulărilor sunt în conformitate cu logica programului în sensul ca
sistemul răspunde corect la informațiile preluate de la senzori și corelează într -un timp destul de rapid
informațiile cu eventualele răspunsuri simulate pe care un sistem real le îndeplin ește.
Având in vedere ca sistemul este în stadiu de aplicație pentru simulare un dezavantaj îl reprezintă
conectarea tuturor senzorilor la o distanta foarte mica, ceea ce duca la o limitare.
În viitor se urmărește proiectarea unui sistem multisenso rial cu o comunicație fără fir, Wireless sau
Bluetooth și implementarea acestuia în diverse medii de lucru.
42
43
Bibliografie
[1] – "Sistem de tip ECU"
https://product.tdk.com/info/en/techlibrary/archives/techjournal/vol05 _mlcc/contents02.html (accesat
Decembrie 2016)
[2] – "Standardul ISO 26262" http://www.iso.org/iso/catalogue_detai l?csnumber=43464 (accesat
Decembrie 2016)
[3] – "Trends in Automotive Electronics ",
http://www.jee.ro/covers/art.php?issue=WO1175852866W461617421995c (accesat I anuarie 2017)
[4] – "Evoluția electronicii auto ",
http://www.infineon.com/export/sites/default/cn/drivingasia_chap1.pdf (accesat Iunie 2017)
[5] – "Curs Robotică 2017 " – Constantin Ne grescu
[6] – "Sensor ", https://en.wikipedia.org/wiki/Sensor#cite_note -1 (accesat Ianuarie 2017)
[7] – "Bazele electronicii auto "- sisteme automate pentru siguranța deplasării autovehiculului –
Alеxandru VASILЕ, Irina Bristena BACÎȘ, Editura Cavallioti, București 2013
[8] – "Digital temperature humidity sensor module DHT -11",
http:/ /auseparts.com.au/index.php?route=product/product&path=78_66&product_id=56 (accesat
Februarie 2017)
[9] – "Photoresistor ", https://en.wikipedia.org/wiki/Photoresistor (accesa t Februarie 2017)
[10] – "Modul senzor de lumina ", http://www.miniinthebox.com/ro/6495 -photoresistor -modul -senzor –
de-lumina -pentru -auto-inteligent -negru -albastru_p421810.html?prm=2.5.10.0 (accesat Februarie 2017)
[11] – "Ultrasonic sensors ", https://www.scribd.com/document/166448734/Ultrasonic -Sensor –
Wikipedia -The-Free-Encyclopedia (accesat Mai 2017)
[12] – "Senzor ultrasonic HC -SR04 ", https://www.optimusdigital.ro/senzori -senzori -ultrasonici/9 –
senzor -ultrasonic -hc-sr04-.html (accesat Iunie 2017)
[13] – "Ultrasonic Proximity Senzor HC -SR04 ", https://www.virtuabotix.com/img_5822/ (accesat Iunie
2017)
[14] – "Tactile sensor ", https://en.wi kipedia.org/wiki/Tactile_sensor (accesat Mai 2017)
[15] – "Modul senzor tactil capacitiv ", http://roboromania.ro/produs/modul -senzor -tactil -capacitiv –
digital -touch -compatibil -arduino/ (accesat Iunie 2017)
44
[16] – "Buzzer module ",
http://tinkbox.ph/sites/tinkbox.ph/files/downloads/5V_BUZZER_MODULE.pdf (accesat Iunie 2017)
[17] – "Modul buzzer pas iv compatibil Arduino ", http://roboromania.ro/produs/modul -buzzer -pasiv/
(accesat Iunie 2017)
[18] – "Seven -segment display ", https://en.wikipedia.org/wiki/Seven -segment_display (accesat I unie
2017)
[19] -"LED 4 -Digit Display Module for Arduino ", http://www.dx.com/p/0 -36-led-4-digit-display –
module -for-arduino -black -blue-works -with-official -arduino -boards -254978#.WVKyL1SGPIU (accesat
Iunie 2017)
[20] – "Arduino ", https://en.wikipedia.org/wiki/Ard uino (accesat Iunie 2017)
[21] – "Arduino ", https://en.wikipedia.org/wiki/Arduino#/media/File:Arduino_Uno_ -_R3.jpg (accesat
Iunie 21 07)
[22] – "Atmega328 ", https:/ /ro.wikipedia.org/wiki/Atmega328 (accesat Iunie 21 07)
[23] – "Atmega328 Pinout Diagram ", https://s -media -cache –
ak0.pinimg.com/originals/f6/3a/bb/f63abba3c1259301ea84e5d394e563c3.png (accesat Iunie 2017)
[24] – "Arduino Guide ", https://www.arduino.cc/en/Guide/Introduction (accesat Iu nie 2017)
[25] – "Sensors for Arduino ", http://www.hardware -pro.com/wp -content/uploads/2016/07/37 -in-1-
Sensors -for-arduino -1-Hardware -pro.jpg (accesat Iunie 2017)
45
Anexa
#include "TM1637.h"
#include "DHT.h"
//definirea pinilor de control
#define LockDoors 1
#define StartStopEngine 2
#define LedStartStopEngine 3
#define Temp1 4
#define Temp2 5
#define Display 6
#define DisplayCLK 7
#define Buzzer 8
#define PhotoResistor 9
#define Lights 10
#define DoorsLED 11
#define WidowsLED 12
#define OpenCloseDoor 13
#define backButton 14
#define trigger 1 5
#define echo 16
#define bigDistance 17
#define smallDistance 18
#define switchToTemp2 19
//definirea obiectelor din librariile specifice modulelor
TM1637 disp(DisplayCLK, Display);
dht DHT1;
dht DHT2;
//initializarea contorilor si a flag -urilor
bool start = false;
bool windowClosed = true;
double timer = 0;
//functia de stabilire a tipului de semnal utilizat Input/Output
void setup() {
pinMode(StartStopEngine, INPUT);
pinMode(LedStartStopEngine, OUTPUT);
pinMode(Buzzer, OUTPUT);
pinMode(Lights, OUTPUT);
pinMode(DoorsLED, OUTPUT);
pinMode(WidowsLED, OUTPUT);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(bigDistance, OUTPUT);
pinMode(smallDistance, OUTPUT);
46
Serial.begin(9600);
disp.set(5);
disp.init(D40 56A);
}
//bucla de rulare a aplicatiei
void loop() {
// put your main code here, to run repeatedly:
int carState = checkEngine(); // verificarea starii (pornit/oprit) motorului
if (carState == 1) { // daca motorul este pornit
lockDoorsAfter5Seconds(); // functia de blocare a portierelor dupa 5 secunde de la pornirea motorului
windowClosed = false; //
readTemp(); // citirea valorilor de temperatura preluate de senzori
checkDoorsAndLights(); // functia de verific are a starii portierelor(inchis/deschis) si a farurilor(aprinse/stinse)
checkPhoto(); // functia de aprindere a farurilor in functie de iluminarea externa
if (digitalRead(backButton) == 1) { //daca este apasat butonul specific functiei de marsarier
checkDistance(); // functia care verifica distanta perceputa de catre senzorul ultrasonic
}
displayTemp(); // functia de afisare a temperaturilor
delay(1000);
} else {
stopAll(); // functia de oprire a functionalitatilor daca motorul este oprit
timer = 0;
}
}
int checkEngine() {
int ctsValue = digitalRead(StartStopEngine); // se verifica starea senzorului Touch
if (ctsValue == HIGH) { // daca valoare este HIGH – senzorul a fost atins
if (start == 0) { //se verifica starea curenta a motorului pentru a decide daca urmeaza sa fie pornit
digitalWrite(LedStartStopEngine, HIGH); // se aprinde led -ul ce marcheaza starea motorului
int8_t TimeDisp[] = {0x10, 0x00, 0x12, 0x10}; // intr -o variabila s e scrie mesajul „ – ON – ”
disp.display(TimeDisp); // se afiseaza pe display mesajul generat anterior
delay(1000);
} else if (start == 1) { //se verifica starea curenta a motorului pentru a decide daca urmeaza sa fie oprit
digitalWrite(LedStartStopEngine, LOW); // se stinge led -ul ce marcheaza starea motorului
}
start = !start; // se schimba valoarea flag -ului ce marcheaza starea in urma atingerii
}
return start; // se intoarce ca rezultat valoarea starii
}
void readTemp() {
DHT1.read11(Temp1); // cu ajutorul functiei din libraria senzorului se citesc valorile de temperatura pentru fiecare senzor
DHT2.read11(Temp2);
}
void displayTemp() {
47
if (digitalRead(switchToTemp2) == HIGH) { // daca nu s -a apasa t butonul corespunzator afisarii temperaturii exteriore
disp.display(DHT1.temperature); // se afiseaza valoare citita se senzorul 1
} else if(digitalRead(switchToTemp2) == LOW){ // daca s -a apasat butonul
disp.display(DHT2.temperature); // se afis eaza valoarea citita de senzorul 2
}
}
void checkDoorsAndLights() {
int LightsOnOff = digitalRead(Lights); // se verifica starea ledului ce reprezinta farurile
int Door = digitalRead(OpenCloseDoor); // se verifica starea butonului ce reprezinta des chirerea portierelor
if (LightsOnOff == 1 && Door == 1) { // daca farurile sunt aprinse si se deschid usile
tone(Buzzer, 400, 200); // semnal de avertizare sonora la fiecare 400ms
delay(400);
}
}
void checkPhoto() {
int switch_state = digitalRead(PhotoResistor); // se verifica starea senzorului fotosensibil
if (switch_state == HIGH) // daca lumina nu este suficienta
{
turnOnOffLights(HIGH); // aprinde farurile
}
else // daca lumina este suficienta
{
turnOnOffLights(LOW); // stinge farurile
}
}
void turnOnOffLights(int state) {
digitalWrite(Lights, state); // aprinderea sau stingerea farurilor in functie de stare
}
void lockDoorsAfter5Seconds() {
double startTime = millis(); // contorizare m omentului de timp al pornirii motorului
if (timer == 0) {
timer = startTime + 5000; //se creaza o variabila cu un moment de timp cu 5 secunde in plus fata de pornire
}
if (startTime > timer – 500 && startTime < timer + 500) { // se verifica daca au trecut intre 4,5s si 5,5 secunde de la pornire
digitalWrite(DoorsLED, HIGH); // daca au trecut cele 5 secunde se aprinde led -ul corespunzator incuierii portierelor
}
}
void checkDistance() {
long duration, distance;
digitalWrite(trigger, LOW); // se initializeaza procedura de percepere a distantei transmitand un semnal sonor
delayMicroseconds(2);
48
digitalWrite(trigger, HIGH); // se opreste transmiterea
delayMicroseconds(10);
digitalWrite(trigger, LOW);
duration = pulseIn(echo, HIGH); // se asteapta raspunsul tip ecou
//calcularea distantei in cm in functie de viteza sunetului .
distance = duration / 58.2; // 5.82 Mach -viteza sunetului
if (distance < 50 && distance > 30) { // se verifica daca distanta este cuprinsa intre 30 si 50 cm
digitalWrite(bigDistance, HIGH); // se aprinde ledul corespunzator distantei
digitalWrite(smallDistance, LOW); // se stinge ledul pentru distanta mica
}
if (distance < 30) { // se veririca daca distanta e ste mai mica de 30 cm
digitalWrite(bigDistance, HIGH); // se aprinde atat ledul pentru distanta 30 -50cm
digitalWrite(smallDistance, HIGH); // se aprinde si ledul pentru distanta <30cm
}
if (distance > 50) { // daca distanta este mai mare de 50cm se sting ambele leduri
digitalWrite(bigDistance, LOW);
digitalWrite(smallDistance, LOW);
}
}
void stopAll() {
disp.clearDisplay(); // se sterge tot ceea ce se afla afisat pe display
turnOnOffLights(LOW); // se sting farurile
digitalWrite(DoorsLED, LOW); // se stinge led -ul corespunzator starii portierelor
if (windowClosed == false) { // se verifica starea geamurilor
digitalWrite(WidowsLED, HIGH); // se aprinde ledul corespunzator simularii inchiderii geamurilor la opr irea masinii
tone(Buzzer, 200, 200); // semnal de oprire
delay(2000);
digitalWrite(WidowsLED, LOW); // dupa 2 secunde procesul de inchidere a geamurilor a fost efectuat
windowClosed = true; // se actualizeaza starea geamurilor in „inchis”
}
delay(500);
}
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 de coordonare a funcțiilor unui computer de bord [605102] (ID: 605102)
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.
