This shows you the differences between two versions of the page.
pm:prj2024:vstoica:andrei.vasilescu02 [2024/05/25 19:47] andrei.vasilescu02 [Software Design] |
pm:prj2024:vstoica:andrei.vasilescu02 [2024/05/26 18:10] (current) andrei.vasilescu02 [Software Design] |
||
---|---|---|---|
Line 74: | Line 74: | ||
{{:pm:prj2024:vstoica:lcd_alcool_detectat_av.jpg?600|}} | {{:pm:prj2024:vstoica:lcd_alcool_detectat_av.jpg?600|}} | ||
{{:pm:prj2024:vstoica:lcd1_av.jpg?600|}} | {{:pm:prj2024:vstoica:lcd1_av.jpg?600|}} | ||
+ | {{:pm:prj2024:vstoica:final_av2.jpg?600|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 84: | Line 85: | ||
[[https://github.com/andreivasilescu24/Alcoholtest-ArduinoUNO-ATMega328p.git|Repository GitHub]] | [[https://github.com/andreivasilescu24/Alcoholtest-ArduinoUNO-ATMega328p.git|Repository GitHub]] | ||
+ | [[https://streamable.com/dnzvos|Demo video proiect]] | ||
+ | |||
+ | **Functia setup()** | ||
+ | * Se seteaza baud rate-ul la 9600 pentru comunicarea cu seriala | ||
+ | * Se seteaza pinii pentru LED-ul rosu si cel verde dar si pentru buzzer ca pini de output | ||
+ | * Se seteaza pinii pentru senzorul de alcool MQ-3 si cel pentru buton ca pini de input | ||
+ | * Se activeaza rezistenta de pull-up pe pinul pentru buton | ||
+ | * Se initializeaza ecranul LCD si se afiseaza un scurt mesaj "Warming up ..." pentru a lasa putin senzorul sa se incalzeasca inainte de pornirea testarii. | ||
+ | * Dupa incalzirea senzorului se apeleaza functia "startPrint()" ce afiseaza pe LCD titlul proiectului "ALCOHOLTEST" si apoi un mesaj "Press button to start!" asteptand apasarea butonului. | ||
+ | * Se activeaza intreruperea pe buton | ||
+ | |||
+ | {{:pm:prj2024:vstoica:setup_av2.png?500|}} | ||
+ | |||
+ | **Rutina de intrerupere pentru buton** | ||
+ | * Va nega variabila pentru masurarea alcoolului, care se va face true atunci cand se va apasa butonul pentru a porni masurarea si in false cand se apasa butonul pentru oprire ca sa nu se mai afiseze valoarea si status-ul pe ecran. | ||
+ | * De asemenea, in functie de scopul apasarii butonului (start/stop masurare) se va seta o variabila dedicata unuia din cazuri pe true pentru a putea stii ce "loading screen" sa se afiseze pe ecran in cele ce urmeaza. | ||
+ | |||
+ | {{:pm:prj2024:vstoica:isr_av.png?500|}} | ||
+ | |||
+ | **Loading screens** | ||
+ | * Daca butonul a fost apasat pentru start pe ecran va sta pentru 2 secunde mesajul "Starting measurement ..." ca apoi sa se afiseze masuratorile pe ecran | ||
+ | * Daca butonul a fost apasat pentru oprirea masurarii se va afisa pentru 10 secunde mesajul "Stopping measurement ..." si apoi se va reveni la ecranul de inceput default ce asteapta apasarea butonului de start msaurare "Press button to start!" | ||
+ | |||
+ | {{:pm:prj2024:vstoica:start_stop_av.png?500|}} | ||
+ | |||
+ | **Functia loop()** | ||
+ | * Se citeste atat valorea digitala (pentru a vedea daca senzorul a considerat ca s-a detectat alcool) cat si cea analog de la senzorul de alcool (pentru afisarea valorilor pe LCD), iar apoi daca a fost setata variabila de masurare alcool pe true, din rutina de intrerupere a butonului, in functie de valoarea digitala, daca s-a detctat sau nu alcool se va calcula cu o formula valorea in "ppm". | ||
+ | * Cat timp nu s-a detectat alcoolul LED-ul verde va sta aprins | ||
+ | * Cat timp este detectat alcoolul se va auzi un sunet de alerta intermitent pe buzzer si se vor aprinde intermitent LED-ul verde si cel rosu | ||
+ | |||
+ | {{:pm:prj2024:vstoica:alcohol_cases_av.png?500|}} | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | * Alcooltestul detecteaza cu succes prezenta alcoolului notificand utilizatorul prin sunete pe buzzer si luminarea intermitenta a LED-urilor. De asemenea, pe LCD este afisata constant valoarea din aer a alcoolului in unitatea de masura "ppm" (parts per million) si statusul "No alcohol"/"Alcohol detected". |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | * De asemenea, acuratetetea testarii depinde si de cat de incalzit este senzorul deoarece pe masura ce este mai incalzit acesta devine mai sensibil la vaporii de alcool oferind rezultate mai precise. |
===== Concluzii ===== | ===== Concluzii ===== | ||
Line 95: | Line 128: | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | **Arhiva** |
- | 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ă ;-). | + | {{:pm:prj2024:vstoica:vasilescu_andrei_334cd_pm.zip|}} |
- | + | ||
- | 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**. | + | |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 112: | Line 141: | ||
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
</note> | </note> | ||
+ | |||
+ | === Resurse hardware === | ||
+ | * [[https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf|Datasheet senzor alcool MQ-3]] | ||
+ | * [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet ATMega328p]] | ||
+ | |||
+ | === Resurse software === | ||
+ | * [[https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/|Liquid_Crystal_I2C]] | ||
<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> | ||