This shows you the differences between two versions of the page.
pm:prj2024:iotelea:andrei.voicu0411 [2024/05/16 19:20] andrei.voicu0411 [Descriere] |
pm:prj2024:iotelea:andrei.voicu0411 [2024/05/26 21:05] (current) andrei.voicu0411 [Concluzii] |
||
---|---|---|---|
Line 21: | Line 21: | ||
Etilotestul este un aparat util, ce poate fi folosit de fiecare data inainte de a urca la volan pentru a ne asigura ca suntem in legalitate. Acesta este folositor in special in diminetile de dupa petreceri cand o persoana trebuie sa plece acasa, dar nu este sigura daca efectul alcoolului a trecut. Prin folosiera acestui aparat se poate urca la volan linistit sau, dupa caz, mai asteapta o perioada de timp inaintea repetarii testului. Acest comportament este de dorit deoarece ajuta atat soferii sa evite situatiile neplacute in care le poate fi permisul suspendat, cat si societatea, reducand numarul de persoane care conduc sub influenta alcoolului. | Etilotestul este un aparat util, ce poate fi folosit de fiecare data inainte de a urca la volan pentru a ne asigura ca suntem in legalitate. Acesta este folositor in special in diminetile de dupa petreceri cand o persoana trebuie sa plece acasa, dar nu este sigura daca efectul alcoolului a trecut. Prin folosiera acestui aparat se poate urca la volan linistit sau, dupa caz, mai asteapta o perioada de timp inaintea repetarii testului. Acest comportament este de dorit deoarece ajuta atat soferii sa evite situatiile neplacute in care le poate fi permisul suspendat, cat si societatea, reducand numarul de persoane care conduc sub influenta alcoolului. | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | |||
- | |||
- | Sistemul are un senzor ce incepe masuratoarea o data cu apasarea unui buton si semnaleaza finalul masuratorii printr-un sunet emis de buzzerul atasat. LED-urile se vor aprind in functie de nivelul de alcool detectat, aprinzandu-se lumina verde in cazul in care nivelul este de 0% si cea rosie daca nivelul de alcool trece de un anumit prag. La finalul masuratorii se va afisa pe ecran cantitatea de alcool detectata, existand optiunea de a salva rezultatul masuratorii intr-un card SD prezent. | ||
**Schema bloc**\\ | **Schema bloc**\\ | ||
{{:pm:prj2024:iotelea:schema_bloc_av.png?500|}} | {{:pm:prj2024:iotelea:schema_bloc_av.png?500|}} | ||
+ | |||
+ | Celulele gri reprezinta dispozitive de intrare ce trimit date catre μC. | ||
+ | * buton Start: butonul semnaleaza inceperea masuratorii sau intoarcerea la meniul default, dupa caz | ||
+ | * senzor MQ-3: senzor ce masoara cantitatea de alcool din aer, ofera output analogic | ||
+ | * card SD: este atat dispozitiv de intrare, deoarece sunt citite valori anterioare de pe acesta, dar poate fi si dispozitiv de iesire, putand fi salvata masuratoarea curenta. | ||
+ | |||
+ | Celulele portocalii reprezinta iesirile: | ||
+ | * Ecran LCD: se vor afisa informatii relevante | ||
+ | * LEDs: un LED verde si unul rosu, ce se vor aprinde conform nivelului de alcool masurat | ||
+ | * Buzzer: va scoate un sunet scurt pentru a semnala finalul masuratorii | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 43: | Line 50: | ||
- fire | - fire | ||
</note> | </note> | ||
+ | {{:pm:prj2024:iotelea:schema_eagle_av.png?600|}}\\ | ||
+ | \\ | ||
+ | Implementare hardware dupa schema electrica:\\ | ||
+ | {{:pm:prj2024:iotelea:hardware_av.jpeg?200|}}\\ | ||
+ | Implementare hardware folosind breadboard mare:\\ | ||
+ | {{:pm:prj2024:iotelea:hardwareav.jpeg?200|}}\\ | ||
+ | Chiar daca sunt toate piesele, nu este forma finala deoarece astept un breadboard mai mare + cateva fire pentru a face totul mai clar. | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | + | Pentru dezvoltare am folosit Arduino IDE impreuna cu urmatoarele biblioteci:\\ | |
- | <note tip> | + | * LiquidCrystal.h: pentru ecranul LCD, foloseste protocolul SPI\\ |
- | TODO | + | * SD.h, SPI.h: pentru comunicarea cu cardul SD\\ |
- | + | In functia setup() declar pinii ca pini de output/input, dupa caz, initializez ecranul lcd si cardul SD si creez/deschid fisierul pentru a stoca masuratorile.\\ | |
- | </note> | + | In functia loop() se afla logica pentru 'homepage', unde utilizatorul poate apasa butonul rosu pentru a citi masuratorile existente pe cardul SD, sau butonul albastru pentru a incepe o noua masuratoare. In functia measureAlcohol este logica pentru masuratoare. Flow-ul este in modul urmator:\\ |
+ | * se emite un sunet scurt pe buzzer, semnificand inceperea masuratorii\\ | ||
+ | * pentru urmatoarele 5 secunde se citesc valorile primite de la senzor si se retine cea mai mare\\ | ||
+ | * la final, in functie de valoare, este aprins unul din leduri folosind un efect de fade folosind pinii PWN din arduino\\ | ||
+ | * pe ecran este afisat rezultatul masuratorii, iar utilizatorul poate apasa butonul rosu pentru a salva masuratoarea, sau poate apasa butonul albastru pentru a reveni la ecranul principal.\\ | ||
+ | \\ | ||
+ | Functiile de manipulare a cardului SD, anume InitializeSD, createFile, openFile, closeFile, readLine sunt luate din urmatorul tutorial: https://educ8s.tv/arduino-sd-card-tutorial/, fiind aduse mici modificari asupra acestora. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Am reusit sa implementez etilotestul si acesta functioneaza cum mi-am dorit. Ar mai trebui facuta transformarea valorii primite de la senzor in mg alcool/litru aer expirat, lucru pe care as vrea sa il fac in viitor. O problema pe care inca o am ar fi durata mare necesara senzorului MQ3 pentru a reveni la base value, mai ales dupa o masurare in care se detecteaza cantitati mari de alcool. In principiu, valorile intoarse de senzor ar fi:\\ |
- | TODO | + | * < 120 - 130 -> nu a fost detectat alcool\\ |
- | </note> | + | * > 130 (400+) -> a fost detectat alcool\\ |
+ | Base value-ul pe care l-am detectat ar fi aproximativ 77, dar dureaza foarte mult sa revina la aceasta valoare o data ce a fost detectat alcool. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Proiectul a fost foarte placut si foarte satisfacator la final, o data ce am reusit sa faca totul sa mearga. A fost foarte amuzant si sa il testez, mai ales pentru a afla ce valori returneaza senzorul in prezenta alcoolului :-D\\ |
+ | Testare functionalitate: https://www.youtube.com/shorts/ktZ3uBsFENs | ||
- | <note warning> | ||
- | TODO | ||
- | </note> | ||
+ | ===== Download ===== | ||
+ | {{:pm:prj2024:iotelea:etilotestav.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
<note tip> | <note tip> | ||
- | 04.05.2024 - Creare pagina wiki | + | 04.05.2024 - Creare pagina wiki\\ |
- | 16.05.2024 - Adaugare schema bloc | + | 16.05.2024 - Adaugare schema bloc\\ |
+ | 17.05.2024 - Adaugare poza cu hardware asamblat\\ | ||
+ | 24.05.2024 - Adaugare poza cu hardware final\\ | ||
+ | 26.06.2024 - Adaugare cod, completare pagina ocw\\ | ||
</note> | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | Resurse Hardware: |
- | TODO | + | * https://docs.arduino.cc/learn/electronics/lcd-displays/ |
- | </note> | + | * https://docs.arduino.cc/built-in-examples/digital/Button/ |
+ | * https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf | ||
+ | |||
+ | Resurse Software: | ||
+ | * https://educ8s.tv/arduino-sd-card-tutorial/ | ||
+ | * https://www.arduino.cc/reference/en/libraries/liquidcrystal/ | ||
+ | * https://www.arduino.cc/reference/en/libraries/sd/ | ||
<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> | ||