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 13:46]
daria.campeanu
pm:prj2026:vlad.radulescu2901:daria.campeanu [2026/05/24 00:36] (current)
daria.campeanu
Line 1: Line 1:
-====== Alcohol-Lock: Sistem inteligent de monitorizare și siguranță auto ====== +====== Alcohol-Lock ======
 ===== Introducere ===== ===== Introducere =====
-Ideea acestui proiect ​luat naștere dintr-o realitate pe care o trăim cu toții: deși responsabilitatea la volan este un subiect intens discutatfactori precum obosealastresul sau estimare greșită a stării proprii pot duce la decizii cu consecințe ireversibileLipsa unui instrument ​de măsură ​obiectiv este principalul obstacol între o decizie sigură și un risc major.+Proiectul **Alcohol-Lock** este un sistem de siguranță activă destinat vehiculelor,​ conceput pentru a condiționa pornirea motorului de starea de sobrietate ​a șoferului. Dispozitivul măsoară concentrația de alcool din aerul expirat, procesează datele în timp real și acționează ​un mecanism de blocare simulatasigurând în același timp stocarea istoricului de testări pe un suport extern. 
 +Sistemul vizează eliminarea erorii umane în autoevaluarea capacității de condusoferind ​barieră tehnică obiectivă împotriva condusului sub influența alcoolului. 
 +===== 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 |
  
-Proiectul propune o soluție sub forma unui kit de siguranță activă, conceput să ofere date esențiale despre alcoolemie într-un mod eficient șla îndemână. Scopul este transformarea procesului de autoevaluare într-o sarcină simplă, rezultatele obținute determinând dacă pornirea autovehiculului este sigură sau dacă integritatea șoferului este compromisă.+==== Pinii folosiți ====
  
-Acest kit ajută persoanele cu un program încărcat sau care participă la evenimente socialeoferind certitudinea datelor acolo undepână acumexistau doar presupuneri legate de capacitatea de a conduce în siguranță.+^ 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ă INT0permițând detecția apăsării fără polling continuu | 
 +| LED Verde | PD6 | Ieșire digitală | Pin digital libercurent 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 (Timer116 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 |
  
-===== Descriere generală ====+==== Schema electrică ====
-Sistemul asigură monitorizarea,​ controlul și stocarea datelor prin următoarele funcționalități: ​+
  
-  * **Afișaj LCD:** Vizualizarea instantanee a concentrației de alcool și a stării sistemului (Acces Permis / Blocat). +{{ :pm:prj2026:vlad.radulescu2901:schema-electrica-alcohol-lock.jpeg?800 |Schema electrică Alcohol-Lock}}
-  * **Sistem de interlock:** Utilizarea unui servomotor pentru a simula blocarea fizică a contactului auto în cazul detectării unei alcoolemii peste pragul setat. +
-  * **Sistem de alertă:** Un buzzer integrat și LED-uri de stare care avertizează utilizatorul în cazul depășirii pragurilor critice de siguranță. +
-  * **Jurnal de date (Data Logging):** Salvarea automată a rezultatelor fiecărui test pe un card microSD pentru a păstra o trasabilitate a stării de sobrietate.+
  
-==== Schemă Bloc ==== +{{ :​pm:​prj2026:​vlad.radulescu2901:​project-alcohol-lock.jpeg?300 |}}
-{{ :​pm:​prj2026:​vlad.radulescu2901:​alcohol_lock.png?300 |Schema Bloc Alcohol-Lock}}+
  
-===== Hardware Design ===== 
  
-==== Componente hardware folosite ​==== +<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</​a></​html>​ 
-  * **ATmega324P:** Microcontrolerul principal responsabil ​pentru ​coordonarea tuturor modulelor+ 
-  * **Senzor MQ-3:** Senzor de gaz specializat ​pentru ​detectarea concentrației de alcool în aerul expirat+===== Software Design ===== 
-  * **Modul MicroSD:** Interfață pentru ​stocarea ​fișierelor ​de tip log pe card de memorie ​(comunicare SPI). + 
-  * **Servomotor SG90:** Actuator ​PWM utilizat ​pentru a simula mecanismul ​de blocare ​contactului+==== Stadiul actual al implementării software ==== 
-  * **Ecran LCD 1602 (I2C):** Afișaj alfanumeric ​pentru ​interacțiunea cu utilizatorul+Proiectul software este complet funcțional și structurat modular pe straturi de abstractizare hardware: 
-  * **Buzzer & LED-uri:** Componente ​pentru ​semnalizarea stărilor critice ​și confirmarea finalizării testului.+  * **adc.c / adc.h**: Inițializare și citire ADC pentru ​senzorul MQ-3
 +  * **button.c / button.h**Gestionarea butonului pe pinul PD2 folosind întreruperea externă INT0. 
 +  ​* **lcd_i2c.c / lcd_i2c.h**:​ Driver I2C scris direct pe registre ​pentru ​ecranul LCD
 +  * **servo.c / servo.h**Controlul servomotorului prin generare de semnal PWM la 50Hz folosind Timer1. 
 +  ​* **sd_logger.c**: ​Interfațarea cu sistemul de fișiere Petit FatFs pentru înregistrarea istoricului de măsurători. 
 + 
 +==== 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. 
 + 
 +==== Elementul de noutate al proiectului ==== 
 +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 cip. Totodată, componenta de Data Logger securizează utilizarea vehiculului printr-o jurnalizare continuă ​pe card, formând o barieră tehnică ce previne pornirea neautorizată a motorului. 
 + 
 +==== Justificarea utilizării funcționalităților din laborator ==== 
 +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 (INT0pe 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 a asigura frecvența stabilă ​de 50Hz servomotorului
 +  * **Protocoale Seriale**: SPI hardware în mod Master pentru scrierea pe cardul SD și TWI hardware la 100kHz pentru ecranul ​LCD
 + 
 +==== Scheletul proiectului și validarea ==== 
 +Aplicația funcționează sub forma unei mașini de stări rulate într-o buclă infinită: 
 + 
 +  ​* **1. Așteptare**: Sistemul stă în repaus până când rutina de întrerupere de la buton modifică flag-ul intern. 
 +  * **2. Citire și Procesare**:​ Se prelevează valoarea ADC și se transformă prin calcul în alcoolemie mg/L. 
 +  * **3. Salvare**: Datele finale sunt înregistrate imediat pe cardul SD în fișierul LOG.TXT. 
 +  * **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. 
 + 
 +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. 
 + 
 +==== Demo Video ==== 
 +Demonstrația practică a funcționării sistemului în ambele cazuri de testare: 
 + 
 +[[AICI_VA_FI_LINK_UL_TAU_DE_YOUTUBE|Demo Video Alcohol-Lock - YouTube]] 
 + 
 +  * **Cazul Sobru**: Se detectează o concentrație sigură (0.00 mg/L), se aprinde LED-ul Verde și servomotorul deblochează contactul
 +  * **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. 
 + 
 +==== Calibrarea senzorului ==== 
 +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Ω: 
 +  ​Tensiunea de ieșire se obține din raportul valorii brute ADC raportat la 1024 pași. 
 +  ​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. 
 + 
 +==== 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 a bateriei vehiculului.
pm/prj2026/vlad.radulescu2901/daria.campeanu.1778064410.txt.gz · Last modified: 2026/05/06 13:46 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