Etilotest

Nume: Voicu Andrei
Grupa: 331 CB

Introducere

Etilotestul este un aparat ce masoara cantitatea de alcool din aerul expirat. Este folositor dupa o noapte lunga, inainte de a ne urca la volan, pentru a ne asigura ca permisul ramane in portofel in cazul opririi de catre un echipaj de politie.

Descriere

Proiectul presupune un sistem cu 2 functionalitati principale:
1. Masurarea cantitatii de alcool din aerul expirat
2. Salvarea si vizualizarea masuratorilor precedente

La pornire, utilizatorul are 2 optiuni: sa apese butonul rosu pentru a citi de pe cardul SD atasat masuratorile anterioare (la fiecare apasare a butonului rosu se va afisa urmatoarea masuratoare din lista salvata pe card) sau sa apese butonul albastru pentru inceperea unei noi masuratori. Odata apasat butonul albastru, vor fi primite date de la senzorului MQ-3 timp de 5 secunde si va fi memorata doar valoarea cea mai mare. La expirarea timpului buzzerul va scoate un sunet scurt, dupa care se va afisa pe ecranul LCD rezultatul masuratorii si se vor aprinde LED-urile corespunzator: verde daca nu a fost detectat alcool, sau rosu in caz contrar. Dupa afisarea rezultatului masuratorii, daca este apasat butonul rosu rezultatul va fi salvat in cardul SD, iar daca va fi apasat butonul albastru se va reveni la ecranul default, de unde se pot vedea masuratorile anterioare sau se poate porni o masuratoare noua.

Motivatie

Etilotestul este un aparat util, ce poate fi folosit de fiecare data inainte de a urca la volan pentru a ne asigura ca suntem in legalitate. Acesta este folositor in special in diminetile de dupa petreceri cand o persoana trebuie sa plece acasa, dar nu este sigura daca efectul alcoolului a trecut. Prin folosiera acestui aparat se poate urca la volan linistit sau, dupa caz, mai asteapta o perioada de timp inaintea repetarii testului. Acest comportament este de dorit deoarece ajuta atat soferii sa evite situatiile neplacute in care le poate fi permisul suspendat, cat si societatea, reducand numarul de persoane care conduc sub influenta alcoolului.

Descriere generală

Schema bloc

Celulele gri reprezinta dispozitive de intrare ce trimit date catre μC.

  • buton Start: butonul semnaleaza inceperea masuratorii sau intoarcerea la meniul default, dupa caz
  • senzor MQ-3: senzor ce masoara cantitatea de alcool din aer, ofera output analogic
  • card SD: este atat dispozitiv de intrare, deoarece sunt citite valori anterioare de pe acesta, dar poate fi si dispozitiv de iesire, putand fi salvata masuratoarea curenta.

Celulele portocalii reprezinta iesirile:

  • Ecran LCD: se vor afisa informatii relevante
  • LEDs: un LED verde si unul rosu, ce se vor aprinde conform nivelului de alcool masurat
  • Buzzer: va scoate un sunet scurt pentru a semnala finalul masuratorii

Hardware Design

Aici puneţi tot ce ţine de hardware design: Lista de piese:

  1. placa Arduino
  2. breadboard
  3. display
  4. LED-uri
  5. senzor MQ-3
  6. card SD
  7. baterie
  8. butoane
  9. buzzer
  10. fire



Implementare hardware dupa schema electrica:

Implementare hardware folosind breadboard mare:

Chiar daca sunt toate piesele, nu este forma finala deoarece astept un breadboard mai mare + cateva fire pentru a face totul mai clar.

Software Design

Pentru dezvoltare am folosit Arduino IDE impreuna cu urmatoarele biblioteci:

  • LiquidCrystal.h: pentru ecranul LCD, foloseste protocolul SPI
  • SD.h, SPI.h: pentru comunicarea cu cardul SD

In functia setup() declar pinii ca pini de output/input, dupa caz, initializez ecranul lcd si cardul SD si creez/deschid fisierul pentru a stoca masuratorile.
In functia loop() se afla logica pentru 'homepage', unde utilizatorul poate apasa butonul rosu pentru a citi masuratorile existente pe cardul SD, sau butonul albastru pentru a incepe o noua masuratoare. In functia measureAlcohol este logica pentru masuratoare. Flow-ul este in modul urmator:

  • se emite un sunet scurt pe buzzer, semnificand inceperea masuratorii
  • pentru urmatoarele 5 secunde se citesc valorile primite de la senzor si se retine cea mai mare
  • la final, in functie de valoare, este aprins unul din leduri folosind un efect de fade folosind pinii PWN din arduino
  • pe ecran este afisat rezultatul masuratorii, iar utilizatorul poate apasa butonul rosu pentru a salva masuratoarea, sau poate apasa butonul albastru pentru a reveni la ecranul principal.


Functiile de manipulare a cardului SD, anume InitializeSD, createFile, openFile, closeFile, readLine sunt luate din urmatorul tutorial: https://educ8s.tv/arduino-sd-card-tutorial/, fiind aduse mici modificari asupra acestora.

Rezultate Obţinute

Am reusit sa implementez etilotestul si acesta functioneaza cum mi-am dorit. Ar mai trebui facuta transformarea valorii primite de la senzor in mg alcool/litru aer expirat, lucru pe care as vrea sa il fac in viitor. O problema pe care inca o am ar fi durata mare necesara senzorului MQ3 pentru a reveni la base value, mai ales dupa o masurare in care se detecteaza cantitati mari de alcool. In principiu, valorile intoarse de senzor ar fi:

  • < 120 - 130 → nu a fost detectat alcool
  • > 130 (400+) → a fost detectat alcool

Base value-ul pe care l-am detectat ar fi aproximativ 77, dar dureaza foarte mult sa revina la aceasta valoare o data ce a fost detectat alcool.

Concluzii

Proiectul a fost foarte placut si foarte satisfacator la final, o data ce am reusit sa faca totul sa mearga. A fost foarte amuzant si sa il testez, mai ales pentru a afla ce valori returneaza senzorul in prezenta alcoolului :-D
Testare functionalitate: https://www.youtube.com/shorts/ktZ3uBsFENs

Download

Jurnal

04.05.2024 - Creare pagina wiki
16.05.2024 - Adaugare schema bloc
17.05.2024 - Adaugare poza cu hardware asamblat
24.05.2024 - Adaugare poza cu hardware final
26.06.2024 - Adaugare cod, completare pagina ocw

Bibliografie/Resurse

pm/prj2024/iotelea/andrei.voicu0411.txt · Last modified: 2024/05/26 21:05 by andrei.voicu0411
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0