This is an old revision of the document!


Etilotest

Nume: Stan Stefan
Grupa: 333CB

Introducere

Prezentare

Proiectul consta intr-un etilotest, care se pune in functiune printr-un buton, care afiseaza pe un ecran LCD cantitatea de alcool si un mesaj sugestiv, iar in eventualitatea in care este depasit un prag, folosesc un buzzer care sa avertizeze utilizatorul ca ar trebui sa se opreasca din consumat alcool.

Ideea si Scopul proiectului

Toata lumea are curiozitatea de a vedea ce alcoolemie ai dupa ce consumi o bere, doua sau mai multe, o bomboana cu rom, etc. Cu acest etilotest, poti vedea daca merita sa te urci la volan sau nu dupa ce ai consumat un produs ce contine orice urma de alcool. Sau daca mai intra o bere daca esti la petrecere si urmatoarea zi ai examen =).

Descriere generală

Placuta de Arduino Uno va primi date de la senzorul de alcool MQ3. Pe ecranul LCD se va afisa cantitatea de alcool din aerul expirat, si un mesaj sugestiv, in functie de cantitatea de alcool determinata. La depasirea unui anumit prag, microcontrollerul va activa un buzzer, pentru a anunta utilizatorul ca s-a depasit un anumit prag.

Schema Bloc

Hardware Design

Prototip implementat in Tinkercad:

Schema electrica:

Implementare finala hardware: etilotest_hw_final.jpg

Software Design

Mediul de dezvoltare

La nivel de implementare a codului, am folosit Arduino IDE Designul circuitului (pana sa ajunga piesele), si schema electrica au fost realizate in Tinkercad

Biblioteci folosite

Am utilizat 'LiquidCrystal_I2C.h', care ofera un API pentru comunicarea prin protocolul I2C cu ecranul LCD ce are atasat pe spate un modul I2C.

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Descriere functionalitate

La pornirea etilotestului, acesta initiaza comunicarea cu ecranul LCD, initiaza setupul pentru ADC, pentru senzorul de alcool gazos, prin functia setupADC(), si pinii unde vor fi transmise impulsuri electrice de la buton si catre buzzer. Apoi se va citi in loop, pinul pentru apasarea butonului. Daca acesta nu este apasat, nu se va intra pe fluxul in care se citesc datele de pe senzor si afisarea aferenta. Cand butonul este apasat, se citesc datele venite de la senzor folosind analogReadCustom().

In continuare, am interpretat datele de la senzor si am observat, prin multitudine de testari in conditii diferite, ca valorile date sub 500 corespund la alcool determinat 0 in aerul expirat. Ce sare de 500 inseamna ca exista alcool determinat in aerul expirat. Am pus in functie de anumite intervale sa se primeasca un mesaj diferit pe lcd si buzzerul sa scoata diverse sunete in functie de “gravitatea” alcoolemiei.

O sa detaliez acum putin despre notiunile din laborator folosite:

1. USART. Digital Debugging

  1. Am folosit debugging cu seriala pentru a afisa valorile primite de la senzorul de gaz, starea butonului afisat.

2. I2C

  1. Am folosit biblioteca 'LiquidCrystal_I2C.h' pentru a facilita comunicarea intre microcontroller si ecran.
  2. API-ul explicat pe scurt:
    1. init() → initializeaza comunicarea prin protocolul I2C.
    2. clear() → sterge tot continutul existent pe ecran.
    3. backlight() → aprinde ledurile din spatele ecranului;
    4. setCursor() → seteaza inceputul cursorului de scriere pe ecran
    5. print() → scrie o litera pe ecran, si deplaseaza cursorul o celula la dreapta

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

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

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Senzor MQ3 Datasheet: https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf
Datasheet microcontroller: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

Export to PDF

pm/prj2023/drtranca/stefan.stan.1685278185.txt.gz · Last modified: 2023/05/28 15:49 by stefan.stan2402
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