This shows you the differences between two versions of the page.
pm:prj2024:mdinica:andreea.spinochi [2024/05/03 23:14] andreea.spinochi created |
pm:prj2024:mdinica:andreea.spinochi [2024/05/26 22:30] (current) andreea.spinochi |
||
---|---|---|---|
Line 24: | Line 24: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
+ | Tabel de componente | ||
+ | |||
+ | | Componentă | Etichetă | Valoare/Descriere | | ||
+ | |-----------------------|----------|---------------------------------------| | ||
+ | | Microcontroler | U1 | Arduino UNO | | ||
+ | | Afișaj LCD | U2 | Ecran LCD Nokia 5110 | | ||
+ | | Senzor de gaz | GAS1 | MQ-2 | | ||
+ | | Senzor de distanță | DS1 | | | ||
+ | | LED-uri | | | | ||
+ | | | D1 | LED 5mm Roșu | | ||
+ | | | D2 | LED 5mm Verde | | ||
+ | | | D3 | LED 5mm Albastru | | ||
+ | | Rezistențe | | | | ||
+ | | | R1 | 390Ω (LED Roșu) | | ||
+ | | | R2 | 390Ω (LED Verde) | | ||
+ | | | R3 | 390Ω (LED Albastru) | | ||
+ | | | R4 | 10kΩ (Pull-up) | | ||
+ | | | R5 | 10kΩ (Buton) | | ||
+ | | | R6 | 3kΩ (LCD) | | ||
+ | | Buzzer | Q1 | Buzzer activ | | ||
+ | | Sursă de alimentare | VCC | 5V | | ||
+ | | Masă | GND | Conexiune la pământ | | ||
+ | |||
+ | Schema electrica | ||
+ | {{ :pm:prj2024:mdinica:image.png?1000 |}} | ||
- | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | ||
- | * listă 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) | ||
- | * diagrame de semnal | ||
- | * rezultatele simulării | ||
- | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | **Link pentru repo-ul de GitHub**: [[https://github.com/Andreea1503/Etilotest-Multitool]] | ||
+ | **Mediu de dezvoltare:** Arduino IDE | ||
- | <note tip> | + | **Biblioteci utilizate:** Adafruit_PCD8544.h | Adafruit_GFX.h - Pentru interactiunea cu ecranul Nokia 5110 |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | **Motivarea alegerii bibliotecilor folosite în cadrul proiectului**: Bibliotecile folosite au fost necesare pentru a comunica cu ecranul Nokia. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | **Elementul de noutate al proiectului**: Spre deosebire de un etilotest clasic, ca si cel folosit in dotarea Politiei Romane, este afisarea a mai multor informatii utile, precum cantitatea de alcool din sange, cantitatea de alcool pur consumata si timpul in care alcoolul ar trebui sa fie eliminat din organism. Combinatia dintre etilotest si ruleta electrica il transforma intr-o unealta unica. |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | **Utilizarea funcționalităților din laborator**: |
+ | |||
+ | * Laboratorul 0: GPIO - Configurarea și utilizarea pinilor GPIO pentru LED-uri și modulul buzzer | ||
+ | * Laboratorul 1: UART - Comunicarea serială pentru debug | ||
+ | * Laboratorul 2: Intreruperi - Folosirea de butoane | ||
+ | * Laboratorul 3: Timere. PWM - Controlul buzzer-ului | ||
+ | * Laboratorul 5: SPI - Comunicarea cu senzorii folositi | ||
+ | * Laboratorul 6: I2C - Comunicarea cu ecranul Nokia 5110 | ||
+ | |||
+ | **Calibrarea elementelor de senzoristică**: Optimizarea valorilor am facut-o folosind informatiile etilotestului din dotarea Politiei Romane dar si cu ajutorul multelor videoclipuri de pe YouTube in care se testau valorile din 15 in 15 minute dupa consumarea unei beri sau a unui pahar de vin. O alta optimizare a fost citirea unei valori atunci cand etilotestul este pornit pentru a anula erorile. | ||
+ | |||
+ | **Software:** | ||
+ | * Functia setup() | ||
+ | Aici am initializat componentele si cateva variabile folosite in cod dar am si salvat o citire a valorii calitatii aerului, in PPM, cu ajutorul senzorului, pentru a putea elimina posibilele erori. | ||
+ | * Functia loop() | ||
+ | In prima partea a functiei, am implementat functionalitatea de ruleta electrica. La apasarea butonului din stanga, pentru aproximativ 35 secunde, se va porni modul de ruleta electrica ce afiseaza distanta pana la un obiect, in centimetri, crescand frecventa cu care buzzer-ul emite sunet, cu cat distanta este mai mica. | ||
+ | Dupa cele 35 de secunde, se revine la modul default, in care se asteapta apasarea butonului din dreapta pentru a incepe citirea de la senzorul de gaz/alcool. Aici am facut zece citiri, facand o medie si scazand de la fiecare citire, eroarea citita in functia setup(). Dupa citire, am calculat valorile de alcoolemie in aer expirat(mg/L), cea in sange (g/L) si o valoare orientativa de mililitrii de alcool pur baut. Valoarea timpului in care teoretic ne putem urca la volan, in care alcoolemia ar trebui sa fie 0, am calculat-o relativ la o persoana de aproximativ 70-75kg. Fiecare valoare se afiseaza pe ecran timp de 4-5 secunde dupa care se revine la modul default, in care se asteapta o apasare de buton. | ||
+ | Desi pentru a avea o acuratete optima, acest senzor are nevoie de peste un minut pentru a se incalzi, am ales ca procentajul de la pornirea proiectului sa ajunga la 100% in 15 secunde, deoarece diferentele sunt destul de mici si le-am putut anula prin citirea din functia setup(). | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | https://www.youtube.com/watch?v=2_fb35vEKZk - Demo proiect |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | |||
+ | Realizarea proiectului a fost una dintre activitatile cele mai placute din cadrul facultatii, in care am pierdut ore in sir pentru a ma documenta si a optimiza rezultatele. Sunt foarte multimita de rezultat si cred ca am reusit sa acopar aproape tot ce imi doream. Am incercat de mai multe ori sa ii fac si o prezentare mai frumoasa. Ideea initiala a fost sa ii fac o carcasa "DIY", lucru pentru care nu am acordat prea multa atentie managementului cablurilor, dar dupa cateva incercari esuate am renuntat la idee. Pe viitor, imi propun sa termin si aceasta cascasa, deoarece cred ca etilotestul este amuzant la o petrecere iar ruleta electrica poate fi folosita oricand. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | Arhiva: {{:pm:prj2024:mdinica:etilotest_andreeaspinochi.zip|}} |
- | 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**. | + | |
- | </note> | + | |
===== Jurnal ===== | ===== Jurnal ===== | ||
- | <note tip> | + | * 20 aprilie - comanda piese aditionale, pe care nu le aveam deja |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | * 4 mai - incepere documentatie |
- | </note> | + | * 8 mai - testarea componentelor |
+ | * 8 - 9 mai - majoritatea implementarii hardware | ||
+ | * 9 - 24 mai - imbunatatiri hardware, realizare cod, imbunatatiri si optimizare | ||
+ | * 24 mai - finalizara documentatiei si filmare video | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | [[https://lastminuteengineers.com/mq3-alcohol-sensor-arduino-tutorial/]] |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | [[https://lastminuteengineers.com/nokia-5110-lcd-arduino-tutorial/]] |
+ | |||
+ | [[https://www.youtube.com/c/TaviPer%C8%9Bea]] | ||
+ | |||
+ | [[https://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/]] | ||
+ | |||
<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> | ||