Etilotest

Ionescu Dan-Andrei 333CC

Introducere

Proiectul constă într-un etilotest care este menit să detecteze cantitatea de alcool din respirație. Mai întâi se va apăsa un buton iar utilizatorul poate incepe să sufle în senzorul de alcool pentru câteva secunde. Apoi pe ecranul LCD va fi afișată valoarea de alcoolemie, iar în funcție de valoare se va aprinde led-ul pe una din culorile verde, galben, portocaliu, rosu, albastru. Dacă rezultatul obținut este unul foarte ridicat (albastru), se activează și buzzer-ul.

Ideea a pornit de la etilotestele pe care le folosesc polițiștii in trafic, iar acest proiect este util deoarece poate compara valoarea de alcool obținută cu cea impusă de lege atunci cand ești la volan. În acest fel vom fi convinși că este o idee foarte proastă să ne urcăm la volan dacă am consumat chiar si o cantitate mică de alcool.

Descriere generală

Descriere

Utilizatorul trebuie să apese pe un buton, iar apoi utilizatorul poate sufla în senzorul MQ-3 pentru 5 secunde. Plăcuța Arduino va primi apoi informația și se va afișa cantitatea de alcool resimțită pe ecranul LCD. Totodată se aprinde LED-ul

  • Verde - pentru valori apropiate de 0
  • Galben-Portocaliu - pentru valori medii
  • Rosu - valori ridicate.
  • Albastru - valori foarte ridicate.Acest caz activează și buzzer-ul, nivelul de alcool din aer fiind foarte mare

Schema Bloc

Hardware Design

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

Lista de piese
- Breadboard
- Arduino Uno R3
- Senzor gaz MQ-3 alcool etanol
- Ecran LCD I2C
- Buzzer pasiv
- Buton
- LED RGB
- Baterie 9V
- 3 rezistente 220 ohmi
- 1 rezistenta 10kOhmi

Software Design

Tool-uri utilizate:

  • Arduino IDE
  • Fritzing pentru schema electrica si schema bloc
  • TinkerCad pentru simularea schemei

Biblioteci folosite:

  • <Wire.h> - pentru comunicarea I2C in Arduino
  • <LiquidCrystal_I2C.h> - pentru a ma folosi de LCD I2C 16×2 cu adresa 0x3F

Functii:

  • setup - initializarea pinilor si a lcd-ului cu un mesaj default (Press the button to start)
  • loop - verifica daca butonul a fost apasat. Daca da, se va astepta un numar prestabilit de secunde (10) pentru ca senzorul MQ-3 sa se incalzeasca, pentru ca rezultatul sa fie unul cat mai aproape de realitate. Dupa ce a trecut timpul, senzorul va masura pentru 5 secunde cantitatea de alcool din aer (pentru testare am apropiat o sticla de bautura/spirt sau chiar parfum de senzor). Dupa cele 5 secunde va fi afisat procentajul final de alcool resimtit alaturi de un mesaj sugestiv, led-ul va lumina in culoarea respectiva, iar daca valoarea este una mare se va auzi si buzzer-ul.
  • convertToBAC(int senzorValue) - aplica o formula pentru a transforma valoarea senzorului intr-un procent similar unitatii de masura BAC (Blood Alcohol Content)
  • setColor(float red, float green, float blue) - schimba culoarea led-ului
  • interpolate(float value, float start1, float end1, float start2, float end2) - realizeaza interpolarea a 2 valori
  • updateLED(float concentration, bool flicker) - modifica valorile rgb ale ledului folosind functia de interpolare pentru o schimbare dinamica a ledului (o tranzitie oarecum smooth verde→galben→portocaliu→rosu→mov)

Rezultate Obţinute

Concluzii

A fost o experienta interesanta, fiind prima data cand fac un proiect de acest fel ma gandeam sa fie greu, dar a fost mai ok decat ma asteptam.

Download

Arhiva proiect:

dan_andrei.ionescu.zip

Jurnal

Saptamana 9: 22-26 Aprilie → Alegerea temei proiectului

Saptamana 10: 29-03 Mai → Am dat comanda de componente

Saptamana 12: 13-17 Mai → Realizarea schemei electrice, asamblarea hardware si un inceput de software

Saptamana 13: 20-24 Mai → Finalizare cod, testarea proiectului si realizarea pagini de wiki

Bibliografie/Resurse

pm/prj2024/aungureanu/dan_andrei.ionescu.txt · Last modified: 2024/05/27 00:14 by dan_andrei.ionescu
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