Breathalyzer

Introducere

Proiectul constă în realizarea unui etilotest digital, care utilizează un senzor de alcool MQ-3 pentru a detecta nivelul alcoolului din aerul expirat. După apăsarea unui buton, senzorul începe să înregistreze date pentru un interval fix de timp, de exemplu, 5 secunde. Aceste date sunt procesate pentru a determina nivelul alcoolului și sunt afișate pe un display OLED.

Scopul principal al acestui proiect este de a oferi o modalitate simplă și eficientă de a determina dacă cineva este apt să conducă în siguranță. Prin detectarea nivelului de alcool din aerul expirat, proiectul ajută la prevenirea accidentelor cauzate de consumul de alcool înainte de a urca la volan.

Pornind de la experiența personală ca șofer, am constatat lipsa unui instrument portabil și accesibil pentru a testa nivelul de alcool înainte de a urca la volan. Ca șofer responsabil, am simțit nevoia de a avea o modalitate rapidă și precisă de a evalua propriul nivel de alcool, mai ales în situații în care consumul de alcool este incert sau în cazul în care am consumat alimente sau medicamente care pot afecta rezultatul testului. De asemenea, am observat că astfel de dispozitive sunt disponibile doar pentru autorități, iar lipsa lor pe piața generală m-a inspirat să dezvolt un astfel de dispozitiv pentru uz personal și pentru ceilalți șoferi responsabili. Astfel, am dorit să creez un etilotest digital care să ofere o soluție practică și accesibilă pentru evaluarea rapidă și precisă a nivelului de alcool înainte de a lua decizia de a conduce.

Un etilotest portabil este indispensabil pentru orice șofer responsabil, furnizând o modalitate rapidă și precisă de a evalua capacitatea de a conduce în siguranță.

Descriere generală

Senzorul MQ-3: Acesta este un senzor de alcool care detectează concentrația de alcool din aer. După ce butonul este apăsat, senzorul începe să înregistreze datele pentru un interval de timp prestabilit.

Display-ul OLED: Afișează rezultatele testului, precum și alte informații utile, cum ar fi unele avertismente, in functie de rezultat. Este interfața principală de comunicare cu utilizatorul.

LED-ul RGB: Schimbă culoarea în funcție de rezultatul testului. De exemplu, arata verde pentru un rezultat negativ și roșu pentru un rezultat pozitiv.

Buzzer-ul: Produce un sunet în funcție de rezultatul testului. De exemplu, emite un sunet scurt pentru un rezultat negativ și un sunet lung pentru un rezultat pozitiv.

Mod de functionare: După ce butonul este apăsat, senzorul MQ-3 începe să măsoare concentrația de alcool din aer. Datele detectate sunt apoi procesate de către microcontrollerul Arduino, iar rezultatul este afișat pe display-ul OLED. În același timp, LED-ul RGB și buzzer-ul sunt activate în funcție de incadrarea rezultatului în limitele admise. Astfel, utilizatorul primește informații clare și imediate despre aptitudinea sa de a conduce în siguranță.

Hardware Design

Lista piese:

  • Arduino UNO (ATmega328p și CH340)
  • Senzor MQ-3
  • Ecran OLED 0.96” I2C
  • Push-button
  • LED RGB
  • Buzzer Pasiv 5 V
  • Breadboard
  • Jumper wires
  • Rezistente: 220Ω

Software Design

Biblioteci folosite:

  • Wire.h - folosită pentru comunicarea I2C cu afișajul OLED.
  • Adafruit_GFX.h - folosită pentru a desena forme și a afișa text pe ecranul OLED.
  • Adafruit_SSD1306.h - folosită pentru a controla și inițializa afișajul OLED SSD1306.

Laboratoare folosite

  • UART → folosit pentru a afișa informații de debug.
  • TIMERE → folosit pentru a seta timpul de masurare a nivelului de alcool.
  • PWM → folosit pentru a controla buzzer-ul pasiv.
  • I2C → folosit pentru ecranul OLED.

Descrierea logicii și metodelor folosite

  • setup() - folosit pentru initializarea componentelor (ecran OLEED, buton cu rezistență internă de pull-up, led RGB, buzzer)
  • loop() - aici este implementata toata logica programului. Initial se afiseaza un mesaj de pregatire al senzorului deoarece acesta trebuie sa se inclazeasca pentru a afisa valori corecte. Cand timerul expira, voi afisa pe ecran faptul ca senzorul este gata si se poate incepe masurarea prin apasarea butonului. Dupa ce este apasat se va incepe masurarea timp de 7 secunde. Dupa ce s-au terminat cele 7 secunde voi afisa ultima valoare masurata si voi apela functia printResult() pentru a declansa actiunile corespunzatoare in functie de valoare.
  • printResult()

  1. Daca valoarea este mai mica de 200, se va afisa 'You can drive.' pe ecran si se va face led-ul verde.
  2. Daca valoarea se afla intre 200 si 280, se va afisa 'Wait one hour.' pe ecran, led-ul va fi galben iar buzzer-ul va transmite sunete intrerupte.
  3. Daca valoarea se afla intre 280 si 350, se va afisa 'Wait a few hours.' pe ecran, led-ul va fi tot galben, iar buzzer-ul va transmite aceleasi sunete intrerupte.
  4. Daca valoarea este mai mare de 350, se va afisa 'Do not drive!', led-ul va deveni rosu iar buzzer-ul va scoate un sunet constant de alta frecventa.

  • printButtonPrompt() - functie pentru a afisa mesajul ca senzorul este gata de masurare.
  • printTitle() - functie pentru a afisa numele 'Breatalyzer” constant in partea de sus a ecranului.
  • printWarming() - functie pentru a afisa mesajul de pregatire a senzorului.
  • printAlcohol() - functie care afiseaza valoarea nivelului de alcool.
  • readAlcohol() - functie pentru citirea valorilor de la senzor si calibrarea lor.

Rezultate Obţinute

Concluzii

Prin combinarea componentelor hardware și software, am reușit să construiesc un dispozitiv capabil să detecteze nivelurile de alcool din respirație și să ofere recomandări corespunzătoare șoferilor.

În timpul dezvoltării, am întâlnit diverse provocări tehnice, cum ar fi gestionarea temporizărilor și a controlului buzzer-ului fără a bloca funcționarea sistemului. Cu toate acestea, prin aplicarea unor soluții eficiente și prin perseverență, am reușit să depășesc aceste obstacole și să obțin rezultatele dorite.

Download

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2024/sseverin/diana.stanicoaea.txt · Last modified: 2024/05/27 00:16 by diana.stanicoaea
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