This shows you the differences between two versions of the page.
pm:prj2024:aungureanu:dan_andrei.ionescu [2024/05/04 20:30] dan_andrei.ionescu |
pm:prj2024:aungureanu:dan_andrei.ionescu [2024/05/27 00:14] (current) dan_andrei.ionescu [Etilotest] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Etilotest ====== | ====== Etilotest ====== | ||
+ | Ionescu Dan-Andrei 333CC | ||
===== Introducere ===== | ===== Introducere ===== | ||
<note tip> | <note tip> | ||
- | 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 pate incepe să sufle în senzorul de masurare a nivelului de alcool pentru cateva 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, rosu. Dacă rezultatul obținut este unul foarte ridicat (roșu), se activează și buzzer-ul. | + | 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. | 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. | ||
Line 13: | Line 14: | ||
**Descriere** | **Descriere** | ||
- | Utilizatorul trebuie să apese pe un buton, iar apoi utilizatorul poate sufla în senzorul MQ-3. 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 | + | 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 | * **Verde** - pentru valori apropiate de 0 | ||
- | * **Galben** - pentru valori medii | + | * **Galben-Portocaliu** - pentru valori medii |
- | * **Rosu** - valori ridicate. Acest caz activează și buzzer-ul, nivelul de alcool din aer fiind foarte mare | + | * **Rosu** - valori ridicate. |
+ | * **Albastru** - valori foarte ridicate.Acest caz activează și buzzer-ul, nivelul de alcool din aer fiind foarte mare | ||
**Schema Bloc** | **Schema Bloc** | ||
Line 27: | Line 29: | ||
<note tip> | <note tip> | ||
Aici puneţi tot ce ţine de hardware design: | Aici puneţi tot ce ţine de hardware design: | ||
- | * listă de piese | + | Lista de piese |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | - Breadboard |
- | * diagrame de semnal | + | - Arduino Uno R3 |
- | * rezultatele simulării | + | - Senzor gaz MQ-3 alcool etanol |
+ | - Ecran LCD I2C | ||
+ | - Buzzer pasiv | ||
+ | - Buton | ||
+ | - LED RGB | ||
+ | - Baterie 9V | ||
+ | - 3 rezistente 220 ohmi | ||
+ | - 1 rezistenta 10kOhmi | ||
+ | |||
+ | {{:pm:prj2024:aungureanu:schema1.png?650|}} | ||
+ | |||
+ | {{:pm:prj2024:aungureanu:schema2.png?650|}} | ||
</note> | </note> | ||
Line 37: | Line 51: | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Tool-uri utilizate: |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Arduino IDE |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Fritzing pentru schema electrica si schema bloc |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * TinkerCad pentru simularea schemei |
- | * (etapa 3) surse şi funcţii implementate | + | |
+ | Biblioteci folosite: | ||
+ | * <Wire.h> - pentru comunicarea I2C in Arduino | ||
+ | * <LiquidCrystal_I2C.h> - pentru a ma folosi de LCD I2C 16x2 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) | ||
</note> | </note> | ||
Line 47: | Line 77: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Cazuri: |
+ | |||
+ | {{:pm:prj2024:aungureanu:sober.jpg?300|}}{{:pm:prj2024:aungureanu:hadadrink.jpg?300|}} | ||
+ | |||
+ | {{:pm:prj2024:aungureanu:drunk.jpg?300|}}{{:pm:prj2024:aungureanu:verydrunk.jpg?300|}} | ||
+ | |||
+ | {{:pm:prj2024:aungureanu:memoryloss.jpg?300|}}{{:pm:prj2024:aungureanu:coma.gif?225|}} | ||
+ | |||
+ | Demo: https://youtube.com/shorts/cVLA5MBoGZA?feature=share | ||
</note> | </note> | ||
===== Concluzii ===== | ===== 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 ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | 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ă ;-). | + | Arhiva proiect: |
- | 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**. | + | {{:pm:prj2024:aungureanu:dan_andrei.ionescu.zip|}} |
</note> | </note> | ||
Line 63: | Line 102: | ||
<note tip> | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | 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 | ||
</note> | </note> | ||
Line 69: | Line 115: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
+ | Resurse software: | ||
+ | |||
+ | https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library | ||
+ | https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/ | ||
+ | |||
+ | Resurse hardware: | ||
+ | |||
+ | https://projecthub.arduino.cc/semsemharaz/interfacing-rgb-led-with-arduino-b59902 | ||
+ | https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/62-lcd-1602-cu-interfata-i2c-si-backlight-galben-verde.html | ||
+ | https://components101.com/sensors/mq-3-alcohol-gas-sensor | ||
</note> | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||