Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:vlad.radulescu2901:daria.campeanu [2026/05/06 10:17]
daria.campeanu
pm:prj2026:vlad.radulescu2901:daria.campeanu [2026/05/24 00:36] (current)
daria.campeanu
Line 1: Line 1:
 ====== Alcohol-Lock ====== ====== Alcohol-Lock ======
- 
 ===== Introducere ===== ===== Introducere =====
-<note tip> +Proiectul **Alcohol-Lock** ​este un sistem de siguranță activă destinat vehiculelorconceput ​pentru ​a condiționa pornirea motorului de starea de sobrietate a șoferului. Dispozitivul ​soară concentrația de alcool din aerul expiratprocesează datele în timp real și acționează ​un mecanism de blocare simulat, asigurând în același timp stocarea istoricului de testări pe un suport extern. 
-Ideea acestui proiect a luat naștere dintr-o realitate pe care o trăim cu toții: deși responsabilitatea la volan este un subiect intens discutat, factori precum oboseala, stresul sau o estimare greșită a stării proprii pot duce la decizii cu consecințe ireversibile. Adesealimita dintre "​apt ​pentru ​condus" ​și "​pericol public"​ este invizibilă fără un instrument de sură precis. +Sistemul vizează eliminarea erorii umane în autoevaluarea capacității de condusoferind ​barieră tehnică obiectivă împotriva condusului sub influența alcoolului.
- +
-Proiectul propune o soluție sub forma unui kit de siguranță activăconceput să ofere date esențiale despre alcoolemie într-un mod rapid și eficientScopul este transformarea unei simple supoziții într-o certitudine bazată pe daterezultatul obținut determinând dacă pornirea autovehiculului este sigură sau dacă este necesară ​perioadă de repaus. +
- +
-Acest dispozitiv ajută persoanele responsabile care doresc să dețină control deplin asupra propriei siguranțe și celor din jur, oferind certitudinea datelor acolo unde, până acum, existau doar presupuneri legate de metabolism sau timpul trecut de la ultimul consum. +
-</​note>​ +
 ===== Descriere generală ===== ===== Descriere generală =====
 +Dispozitivul integrează module de achiziție date, control și stocare pentru a îndeplini următoarele funcții:
 +  * **Monitorizare**:​ Detectarea precisă a vaporilor de alcool folosind un senzor electrochimic.
 +  * **Control Interlock**:​ Blocarea sau deblocarea contactului auto (simulată prin servomotor) în funcție de pragul legal setat.
 +  * **Avertizare**:​ Semnalizarea vizuală și acustică a stării sistemului și a tentativelor de pornire neautorizate.
 +  * **Data Logging**: Înregistrarea fiecărei măsurători pe un card microSD pentru trasabilitatea utilizării vehiculului.
 +==== Schemă Bloc ====
 + ​{{:​pm:​prj2026:​vlad.radulescu2901:​alcohol_lock.png?​800|Schema Bloc Alcohol-Lock}}
 +===== Hardware Design =====
 +==== Componente hardware ====
 +^ Componentă ^ Cantitate ^ Scop ^
 +| Microcontroler **ATmega328P** | 1 | Unitatea centrală de procesare și control |
 +| Senzor Alcool **MQ-3** | 1 | Achiziția semnalului analogic pentru concentrația de alcool |
 +| **Modul cititor Card SD** | 1 | Interfață pentru salvarea datelor pe suport extern |
 +| **Servomotor SG90** | 1 | Simulare mecanică pentru blocarea contactului (PWM) |
 +| **LCD 16x2 cu adaptor I2C** | 1 | Afișarea concentrației și a mesajelor de stare |
 +| **Buzzer Pasiv** | 1 | Semnalizare acustică a pragurilor critice |
 +| **LED-uri** (Roșu/​Verde) | 2 | Indicarea vizuală a permisiunii de pornire |
 +| **Buton Push** | 1 | Declanșarea manuală a procesului de testare |
 +| **Breadboard Full-size** | 1 | Suport pentru realizarea montajului experimental |
  
-{{:​pm:​prj2026:​vlad.radulescu2901:​safedrive_block_diagram.png?​800x400|}}+==== Pinii folosiți ====
  
-Sistemul asigură monitorizarea stării utilizatorului ​și controlul accesului prin următoarele funcționalități+^ Componentă ^ Pin ATmega328P ^ Tip semnal ^ Justificare ^ 
 +| Senzor MQ-3 | PC0 (A0) | Intrare analogică | PC0 este conectat la ADC0; semnalul MQ-3 este tensiune continuă 0–5V proporțională cu concentrația de alcool | 
 +| Buton START | PD2 | Intrare digitală (INT0) | PD2 este legat la întreruperea externă INT0, permițând detecția apăsării fără polling continuu | 
 +| LED Verde | PD6 | Ieșire digitală | Pin digital liber, curent maxim 40 mA — suficient pentru LED cu rezistență 220 Ω | 
 +| LED Roșu | PD7 | Ieșire digitală | Simetric cu LED-ul verde | 
 +| Buzzer Pasiv | PB0 | Ieșire digitală | Buzzerul pasiv necesită ton generat prin tone(); compatibil cu Timer2 intern | 
 +| Servomotor SG90 | PB1 (OC1A) | PWM (Timer1, 16 biți) | Servomotorul necesită PWM la 50 Hz; PB1 conectat la Timer1 pe 16 biți, singura sursă cu rezoluție suficientă | 
 +| LCD SDA | PC4 (SDA) | I2C date | Pin hardware SDA al modulului I2C intern — fix pe PC4 | 
 +| LCD SCL | PC5 (SCL) | I2C ceas | Pin hardware SCL al modulului I2C intern — fix pe PC5 | 
 +| SD Card CS | PB2 | Ieșire digitală (SPI CS) | Chip Select activ LOW; ales liber dintre pinii digitali disponibili | 
 +| SD Card MOSI | PB3 (MOSI) | SPI date ieșire | Pin hardware SPI al ATmega328P — fix pe PB3 | 
 +| SD Card MISO | PB4 (MISO) | SPI date intrare | Pin hardware SPI al ATmega328P — fix pe PB4 | 
 +| SD Card SCK | PB5 (SCK) | SPI ceas | Pin hardware SPI al ATmega328P — fix pe PB5 |
  
-**Afișaj LCD:** Vizualizarea instantanee a concentrației de alcool detectate și a mesajelor de stare (Safe/​Danger).+==== Schema electrică ====
  
-**Sistem de interlock (Servomotor):** Blocarea fizică a contactului sau a accesului dacă pragul de alcoolemie este depășit, acționând ca o barieră de siguranță activă.+{{ :pm:​prj2026:​vlad.radulescu2901:​schema-electrica-alcohol-lock.jpeg?​800 |Schema electrică Alcohol-Lock}}
  
-**Sistem de alertă:** Un buzzer integrat care avertizează sonor utilizatorul în cazul în care testul este pozitiv, dublat de semnalizare vizuală prin LED-uri.+{{ :pm:​prj2026:​vlad.radulescu2901:​project-alcohol-lock.jpeg?300 |}}
  
-**Estimare Sobrietate:​** Calcularea și afișarea timpului aproximativ necesar până când utilizatorul va fi din nou apt pentru condus, bazat pe rata medie de metabolizare. 
  
-===== Hardware Design ===== +<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</​a></​html>​
- +
-Componente hardware folosite: +
-  * ATmega324P (Microcontroler central) +
-  * Senzor de gaz MQ-3 (Detectare alcool) +
-  * Servomotor SG90 (Mecanism de blocare) +
-  * Ecran LCD 1602 cu adaptor I2C +
-  * Buzzer pasiv și LED-uri (Sistem de avertizare) +
-  * Buton declanșare test +
-  * Sursă de alimentare 5V+
  
 ===== Software Design ===== ===== Software Design =====
  
-<note tip> +==== Stadiul actual al implementării software ==== 
-Descrierea codului aplicaţiei (firmware)+Proiectul software este complet funcțional și structurat modular pe straturi de abstractizare hardware
-  * **Mediu de dezvoltare:** Microchip Studio (fostul AVR Studio) +  * **adc.c / adc.h**: Inițializare și citire ADC pentru senzorul MQ-3. 
-  * **Librării:** Utilizarea bibliotecii avr/io.h, avr/interrupt.h și a unei biblioteci custom pentru comunicarea ​I2C cu LCD-ul+  * **button.c / button.h**Gestionarea butonului pe pinul PD2 folosind întreruperea externă INT0. 
-  * **Algoritmi:**  +  ​* **lcd_i2c.lcd_i2c.h**: Driver ​I2C scris direct pe registre pentru ecranul ​LCD. 
-    * Implementarea unei rutine ​de calibrare ​la pornire pentru senzorul MQ-3+  * **servo.c / servo.h**: Controlul servomotorului prin generare ​de semnal PWM la 50Hz folosind Timer1
-    Citirea valorilor analogice prin ADC și conversia lor în mg/L. +  * **sd_logger.c**: Interfațarea cu sistemul de fișiere Petit FatFs pentru ​înregistrarea istoricului ​de măsurători.
-    ​Generarea semnalului PWM pentru controlul poziției servomotorului. +
-    ​Utilizarea întreruperilor externe ​pentru ​butonul ​de start. +
-</​note>​+
  
-===== Rezultate Obţinute =====+==== Motivarea alegerii bibliotecilor folosite ​==== 
 +Pentru a eficientiza spațiul redus de memorie al microcontrolerului ATmega328P, s-au scris drivere directe pe registre și s-a adăugat o singură bibliotecă externă compactă:​ 
 +  * **Petit FatFs (R0.02)**: S-a ales varianta simplificată dezvoltată de ChaN pentru sistemul de fișiere FAT. Aceasta nu utilizează alocare dinamică în memoria RAM și scrie direct în blocul de sectoare deja existente ale fișierului LOG.TXT, economisind resurse hardware critice.
  
-<note tip> +==== Elementul de noutate al proiectului ==== 
-Proiectul ​a reușit să demonstreze funcționarea unui sistem ​de tip "​Ignition Interlock"​. Senzorul detectează cu precizie prezența vaporilor de alcool, iar servomotorul reacționează instantaneu pentru ​simula blocarea motoruluiMesajele ​de pe LCD sunt clarefacilitând interacțiunea cu utilizatorul. +Proiectul ​realizează un dispozitiv ​de siguranță autonom bazat pe Edge Processing. Calculele matematice pentru determinarea concentrației clinice (mg/L) din rezistența brută a senzorului sunt executate local, în timp real, direct pe cipTotodată, componenta ​de Data Logger securizează utilizarea vehiculului printr-o jurnalizare continuă ​pe cardformând o barieră tehnică ce previne pornirea neautorizată a motorului.
-</​note>​+
  
-===== Concluzii ===== +==== Justificarea utilizării funcționalităților din laborator ​==== 
-Sistemul ​Alcohol-Lock demonstrează eficiența sistemelor ​de siguranță biometriceDeși este un prototip, acesta subliniază importanța tehnologiei ​în prevenirea comportamentelor riscante ​la volan, oferind o metodă obiectivă de evaluare ​capacității de condus.+Sistemul ​pune în practică concepte fundamentale din laboratoarele ​de Proiectare cu Microprocesoare:​ 
 +  * **ADC**: Conversia semnalului analogic de la senzor utilizând un prescaler stabil de 128. 
 +  * **Întreruperi Externe**: Detecția apăsării butonului pe pinul PD2 (INT0) pe front căzător, eliminând polling-ul din bucla principală. 
 +  * **Timere ​și PWM**: Utilizarea Timerului 1 hardware ​în mod Phase and Frequency Correct PWM cu registrul ICR1 setat la valoarea 40000 pentru ​asigura frecvența stabilă ​de 50Hz a servomotorului. 
 +  * **Protocoale Seriale**: SPI hardware în mod Master pentru scrierea pe cardul SD și TWI hardware la 100kHz pentru ecranul LCD.
  
-===== Download =====+==== Scheletul proiectului și validarea ​==== 
 +Aplicația funcționează sub forma unei mașini de stări rulate într-o buclă infinită:
  
-<note warning>​ +  * **1. Așteptare**: Sistemul stă în repaus până când rutina de întrerupere de la buton modifică flag-ul intern. 
-Arhiva conține fișierele sursă (.și .h), schema electrică realizată în Tinkercad ​și documentația tehnică a componentelor+  * **2Citire ​și Procesare**:​ Se prelevează valoarea ADC și se transformă prin calcul în alcoolemie mg/L
-[[:​pm:​prj2026:​vlad.radulescu2901:alcohol_lock_v1.zip|Download Arhivă Proiect]] +  * **3Salvare**Datele finale sunt înregistrate imediat pe cardul SD în fișierul LOG.TXT
-</note>+  * **4. Decizie Interlock**:​ Dacă alcoolemia depășește pragul de 0.15 mg/L, servomotorul rămâne blocat, se aprinde LED-ul Roșu și buzzerul sună alert. Dacă șoferul este treaz, se aprinde LED-ul Verde, iar servomotorul deblochează contactul.
  
-===== Jurnal =====+Validarea s-a făcut prin monitorizarea mesajelor de debug pe interfața UART și prin citirea ulterioară a cardului SD pe un PC pentru a asigura scrierea corectă a datelor text.
  
-<note tip> +==== Demo Video ==== 
-  * **Săptămâna 1:** Documentare asupra senzorului MQ-3 și calibrarea acestuia. +Demonstrația practică a funcționării sistemului ​în ambele cazuri ​de testare:
-  * **Săptămâna 2:** Implementarea comunicării I2C pentru LCD și controlul PWM pentru servo. +
-  * **Săptămâna 3:** Integrarea tuturor modulelor și testarea ​sistemului de blocare. +
-</​note>​+
  
-===== Bibliografie/​Resurse =====+[[AICI_VA_FI_LINK_UL_TAU_DE_YOUTUBE|Demo Video Alcohol-Lock - YouTube]]
  
-<​note>​ +  ​* **Cazul Sobru**: Se detectează o concentrație sigură (0.00 mg/L), se aprinde LED-ul Verde și servomotorul deblochează contactul. 
-**Resurse Hardware:** +  * **Cazul Alcool detectat**: La apropierea vaporilor de alcool, ecranul afișează valoarea depășită și alerta "Nu poti conduce!",​ fiind acompaniată de aprinderea LED-ului Roșu și sunetul de avertizare al buzzerului.
-  ​Datasheet ATmega324P +
-  * Datasheet MQ-3 Gas Sensor +
-  * Tutoriale conexiune I2C LCD+
  
-**Resurse Software:** +==== Calibrarea senzorului ==== 
-  * [[https://ocw.cs.pub.ro/​courses/​pm/​lab/​lab3|Laborator ADC - OCW]] +Senzorul MQ-3 își modifică rezistența internă la contactul cu alcoolul. Calibrarea s-a făcut folosind valoarea determinată experimental în aer curat R0 = 60.0 kΩ și o rezistență de sarcină RL = 10.0 kΩ: 
-  * [[https://ocw.cs.pub.ro/​courses/​pm/​lab/​lab4|Laborator PWM - OCW]] +  ​Tensiunea de ieșire se obține din raportul valorii brute ADC raportat la 1024 pași. 
-</​note>​+  ​Se determină rezistența curentă a senzorului Rs pe baza divizorului de tensiune. 
 +  * Concentrația finală în mg/L se calculează pe baza raportului dintre Rs și R0 folosind coeficienții curbei logaritmice din fișa tehnică
 +  * Valorile reziduale mici, sub 0.25 mg/L, sunt interpretate automat ca fiind 0.0 mg/L pentru a elimina zgomotul de fond.
  
-<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</a></​html>​+==== Optimizări software realizate ==== 
 +  * **Oprirea PWM-ului la repaus**: În servo.c, funcția servo_lock decuplează semnalul PWM din registre și pune pinul PB1 direct pe starea LOW. Acest lucru elimină vibrațiile parazite ale servomotorului și scade consumul de curent când nu se face mișcare. 
 +  * **Eliminarea operanzilor float din sprintf**: Pentru a salva spațiu prețios în memoria Flash, valoarea float a fost extrasă prin conversie directă în două variabile întregi separate (partea întreagă și partea zecimală), salvând peste 15% din spațiul de stocare al programului. 
 +  * **Forțarea salvării pe card (Flush)**: Imediat după scrierea textului, se apelează funcția de încheiere cu parametri nuli din Petit FatFs. Acest lucru golește bufferul RAM direct în memoria nevolatilă a cardului, securizând logurile în cazul unei deconectări bruște ​bateriei vehiculului.
pm/prj2026/vlad.radulescu2901/daria.campeanu.1778051875.txt.gz · Last modified: 2026/05/06 10:17 by daria.campeanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0