Table of Contents

SafeDrive: Sistem Auto pentru Detectarea Alcoolului

Introducere

SafeDrive este un sistem embedded de siguranță conceput pentru a simula funcționalitatea dispozitivelor comerciale de tip Alcolock. Obiectivul său principal este de a evalua concentrația de alcool din aerul expirat de șofer și de a preveni activ pornirea motorului vehiculului dacă limita legală este depășită.

Motivația din spatele acestui proiect este construirea unei aplicații tangibile, menite să salveze vieți, care face legătura între senzorii hardware de bază și sistemele de siguranță activă. Prin renunțarea la mediul standard Arduino, acest proiect servește drept un exercițiu complex de programare AVR. Acesta provoacă dezvoltatorul să orchestreze perfect multiple periferice hardware — cum ar fi ADC pentru procesarea semnalelor analogice, I2C operat manual la nivel de regiștri pentru afișarea datelor, UART Software pentru multimedia și Timerele hardware pentru o arhitectură complet non-blocantă — într-o singură aplicație unitară, bazată pe întreruperi.

Descriere generală

Întregul flux operațional este orchestrat de microcontrolerul ATmega328P. Arhitectura sistemului este împărțită în patru blocuri logice principale:

Hardware Design

Tabelul de mai jos detaliază componentele necesare pentru a construi prototipul SafeDrive:

Nr. Nume Componentă Cant. Rol Tehnic & Detalii
1 ATmega328P Xplained Mini 1 Unitatea centrală de procesare care gestionează toată logica, întreruperile și timpii de execuție.
2 Modul Senzor de Gaz MQ-3 1 Detectează concentrația de alcool; oferă un semnal analogic (0-5V).
3 Display LCD 20×4 + I2C 1 Oferă feedback vizual extins. Modulul PCF8574 atașat reduce cablarea la doar pinii SDA și SCL.
4 Modul Audio DFPlayer Mini 1 Acționează ca unitate de decodare și stocare (MicroSD) pentru fișierele audio de ghidare.
5 Modul Amplificator LM386 Mono 1 Prelucrează semnalul de nivel mic (DAC) din playerul audio pentru a ataca eficient difuzorul.
6 Difuzor 8Ω 0.5W 1 Convertește semnalele electrice amplificate în avertizări sonore/vocale.
7 Buton tactil (Push Button) 1 Simulează contactul mașinii, fiind conectat la un pin de întrerupere externă hardware.
8 LED-uri de Status (R, B, V) 3 Indică starea simulată a motorului (Blocat/Avertisment/Deblocat).
9 Buzzer Activ 1 Oferă semnalizare acustică suplimentară (chiuit EKG) la depășirea pragului critic.
10 Breadboard 830 puncte 1 Platforma principală de prototipare pentru rutarea alimentării și a semnalelor.
11 Fire conexiune DuPont 1 set Folosite pentru interconectarea modulelor cu placa Xplained Mini.

Alocarea Pinilor (Pinout) și Justificare

Alocarea pinilor nu a fost aleatorie, ci a respectat strict arhitectura internă a microcontrolerului ATmega328P:

Explicația Schemei Electrice

Software Design

Firmware-ul pentru SafeDrive este scris integral în C, manipulând direct regiștrii AVR pentru a asigura o performanță maximă și un consum minim de memorie (SRAM).

Explicarea calibrării elementelor de senzoristică

Calibrarea senzorului analogic de gaz MQ-3 (bazat pe dioxid de staniu - SnO2) a necesitat o abordare empirică, divizată în două etape esențiale datorită naturii termochimice a componentei:

BAC(%) = (Valoare_ADC - Prag_AerCurat) * 0.00025

Orice valoare a senzorului care fluctuează sub pragul de bază este ignorată, fiind forțată la 0.00% pentru a preveni declanșările accidentale din cauza zgomotului termic sau a fluctuațiilor de tensiune.

Optimizări software (Cum, De ce, Unde)

Pentru a asigura rularea stabilă a proiectului pe un microcontroler cu resurse limitate (ATmega328P dispune de doar 2KB SRAM), au fost implementate două optimizări majore:

1. Optimizarea memoriei dinamice (Prevenirea Memory Leaks / Heap Fragmentation)

2. Filtru digital de netezire (Low-Pass Filter / Exponential Moving Average)

V_filtrat = (V_vechi * 0.8) + (V_nou * 0.2)

Stadiul actual al implementării și Testare Hardware

Sistemul SafeDrive este complet funcțional. Montajul final integrează stabil modulele pe breadboard, iar schema electrică este proiectată și validată. Testele efectuate demonstrează capacitatea sistemului de a prelua date analogice corecte de la senzor și de a reacționa în timp real la pragurile de alcool setate.

Prin intermediul unei interfețe shell de test, comanda analogread A1 validează atât alimentarea senzorului MQ-3, cât și integritatea magistralei ADC interne a microcontrolerului.

Motivarea alegerii bibliotecilor

Pentru a menține codul modular și eficient, au fost utilizate atât biblioteci native AVR, cât și implementări software custom:

Elementul de noutate al proiectului

Elementul de noutate constă în integrarea unui sistem de alertă multi-senzorial, adaptiv și complet asincron, capabil să combine feedback-ul vizual, auditiv și vocal într-o singură arhitectură embedded de dimensiuni reduse.

Spre deosebire de etilotestele comerciale clasice bazate exclusiv pe praguri fixe, SafeDrive implementează:

Aceste funcționalități permit o experiență mult mai realistă și robustă, apropiată de sistemele embedded automotive moderne.

Justificarea utilizării funcționalităților din laborator

Proiectul integrează masiv conceptele low-level studiate la laborator:

Explicarea scheletului proiectului și Validarea

Arhitectura interacțiunii:

Scheletul aplicației este complet event-driven. În funcția setup() sunt inițializate perifericele hardware, magistralele de comunicație și Timer-ul 1.

Funcția principală loop() rămâne permanent non-blocantă și execută doar sarcini dependente de flag-uri software ridicate de ISR-uri.

Fluxul de execuție:

  1. Utilizatorul apasă butonul de contact.
  2. ISR-ul asociat INT1 declanșează secvența de testare.
  3. Timer-ul 1 generează tick-uri periodice la 500ms.
  4. ADC-ul citește valoarea senzorului MQ-3.
  5. Filtrul EMA netezește semnalul analogic.
  6. Algoritmul Peak-Hold reține valoarea maximă pe durata ferestrei de 7 secunde.
  7. FSM-ul decide starea sistemului.
  8. LCD-ul, LED-urile, DFPlayer-ul și buzzer-ul sunt actualizate asincron.

Această arhitectură permite funcționarea simultană a tuturor modulelor fără utilizarea funcțiilor blocante de tip delay().

Concluzii

Dezvoltarea proiectului SafeDrive a reprezentat o provocare inginerească complexă, fiind o tranziție reușită de la utilizarea librăriilor generice la controlul hardware de nivel scăzut.

Principala dificultate a fost gestionarea resurselor limitate de memorie și atenuarea zgomotului indus de comutația perifericelor în semnalul audio, problemă rezolvată prin optimizarea rutinei de redare și prin separarea logică a task-urilor asincrone.

În final, proiectul a consolidat competențele de:

SafeDrive demonstrează succesul integrării unui sistem multi-senzorial robust, capabil să ia decizii critice în timp real fără a necesita un sistem de operare dedicat.

Download

Cod Sursă (GitHub): https://github.com/DimiConstantin/SafeDrive-System.git

Videoclip Demo

https://drive.google.com/file/d/1NgjwWxK3g2bzu4fEecLFvrpopXJ86x9d/view?usp=drive_link

Jurnal

Bibliografie/Resurse

Export to PDF