This shows you the differences between two versions of the page.
pm:prj2025:rnedelcu:petrisor.caramida [2025/05/20 09:28] petrisor.caramida [Software Design] |
pm:prj2025:rnedelcu:petrisor.caramida [2025/05/23 16:52] (current) petrisor.caramida [Bibliografie/Resurse] |
||
---|---|---|---|
Line 64: | Line 64: | ||
- | ===== Software Design ===== | + | ====== Software Design ====== |
- | <note tip> | + | <note tip> |
- | Descrierea codului aplicaţiei (firmware): | + | Descrierea codului aplicatiei (firmware): |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Mediu de dezvoltare: **Arduino IDE** |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Librarii si surse 3rd-party: **LiquidCrystal_I2C** pentru afisajul LCD |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Algoritmi si structuri implementate: |
- | * (etapa 3) surse şi funcţii implementate | + | - Citire analogica personalizata cu ADC pentru senzorul MQ-3 |
+ | - Conversie a valorii senzorului in valoare estimata de alcoolemie (BAC) | ||
+ | - Afișare conditionala pe LCD in functie de praguri stabilite | ||
+ | - Feedback auditiv prin buzzer | ||
+ | * (etapa 3) Surse si functii implementate: | ||
+ | - `setupADC()` pentru configurarea manuala a convertorului analog-digital | ||
+ | - `analogReadCustom()` pentru citirea valorii analogice de pe MQ-3 | ||
+ | - `convertToBAC()` pentru estimarea alcoolemiei | ||
+ | - Logica de afisare si semnalizare in `loop()`, conditionata de apasarea butonului | ||
+ | </note> | ||
- | Acest software design este pentru un etilotest electronic construit pe platforma Arduino, care: | + | ====== Rezultate Obţinute ====== |
- | • Foloseste un senzor MQ-3 pentru a detecta vapori de alcool din suflul utilizatorului. | + | |
- | • Are un buton fizic care declanseaza o citire de la senzor atunci cand este apasat. | + | |
- | • Afiseaza rezultatele pe un ecran LCD I2C, in functie de valoarea analogica citita: | + | |
- | • Daca valoarea e mica → mesaj „NU AI BAUT NIMIC”. | + | |
- | • Daca valoarea creste → mesaje progresive (de la „AI BAGAT O GURA” pana la „TE IA POLITIA BA”). | + | |
- | • Foloseste semnale sonore printr-un buzzer pentru feedback auditiv in functie de nivelul detectat. | + | |
- | • Implementeaza citirea analogica directa (custom ADC) pentru o mai buna intelegere/control al procesului de conversie. | + | |
- | Designul este interactiv, educativ si simplu, folosind principii de baza din programarea embedded, cu focus pe control hardware (senzor, buton, buzzer, display). | + | <note tip> |
+ | Care au fost rezultatele obtinute in urma realizarii proiectului vostru: | ||
+ | * sistemul a functionat conform asteptarilor | ||
+ | * valorile senzorului au fost afisate corect si interpretate prin mesaje text | ||
+ | * buzzerul a emis semnale sonore diferite in functie de nivelul alcoolemiei | ||
+ | * conversia valorii analogice in estimare BAC a fost implementata cu succes | ||
+ | * interfata cu utilizatorul (buton + afisaj LCD) este simpla si intuitiva | ||
</note> | </note> | ||
- | {{ - :pm:prj2025:3.png?400x }} | + | ====== Concluzii ====== |
- | ===== Rezultate Obţinute ===== | + | <note tip> |
+ | Proiectul realizat demonstreaza ca este posibil sa construiesti un etilotest electronic simplu, dar eficient, folosind componente accesibile si un microcontroller Arduino. Implementarea unei citiri ADC personalizate si conversia valorilor in estimare de alcoolemie (BAC) au imbunatatit experienta utilizatorului si acuratetea afisajului. | ||
- | <note tip> | + | Cea mai dificila parte a fost calibrarea valorilor citite de la senzorul MQ-3 si stabilirea unor praguri realiste pentru interpretarea corecta a nivelului de alcool. Deoarece senzorul raspunde la vapori de alcool si nu ofera o valoare directa de alcoolemie, a fost nevoie de testare repetata si ajustare manuala a intervalelor. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | ===== Concluzii ===== | + | De asemenea, lucrul cu afisajul LCD pe doua randuri, in combinatie cu mesajele lungi si limitarile de spatiu, a necesitat atentie pentru a mentine lizibilitatea si claritatea informatiilor. |
- | ===== Download ===== | + | </note> |
+ | |||
+ | ====== 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 completa: |
- | 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:prj2025:rnedelcu:etilotest.zip|}} |
</note> | </note> | ||
- | ===== Jurnal ===== | + | ====== Jurnal ====== |
<note tip> | <note tip> | ||
Line 110: | Line 119: | ||
</note> | </note> | ||
- | ===== Bibliografie/Resurse ===== | + | ===== Bibliografie/Resurse ====== |
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | **Resurse Hardware:** |
+ | * [MQ-3 Sensor Datasheet (PDF)](https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf) | ||
+ | * [Arduino UNO pinout](https://www.arduino.cc/en/Hacking/PinMapping168) | ||
+ | * [Modul LCD 16x2 I2C - Ghid conectare](https://lastminuteengineers.com/i2c-lcd-arduino-tutorial/) | ||
+ | |||
+ | **Resurse Software:** | ||
+ | * [LiquidCrystal_I2C library - GitHub](https://github.com/johnrickman/LiquidCrystal_I2C) | ||
+ | * [Arduino tone() function](https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/) | ||
+ | * [attachInterrupt() – Arduino Reference](https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/) | ||
+ | * [Breathalyzer Project Original Source (Educ8s.tv)](http://educ8s.tv/arduino-breathalyzer-project) | ||
</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> |