This shows you the differences between two versions of the page.
|
pm:prj2026:cezar.zlatea:daniel.brinza [2026/05/09 12:55] daniel.brinza created |
pm:prj2026:cezar.zlatea:daniel.brinza [2026/05/15 20:36] (current) daniel.brinza |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| Autor: Daniel Brinza \\ | Autor: Daniel Brinza \\ | ||
| - | Grupa: DE_COMPLETAT \\ | + | Grupa: 334CB \\ |
| - | Asistent proiect: DE_COMPLETAT | + | Asistent proiect: Cezar Zlatea |
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | SentinelGuard este un sistem de alarmă inteligent construit în jurul plăcii ATmega328P Xplained Mini. Sistemul monitorizează mai multe tipuri de evenimente relevante pentru securitatea unei camere: mișcare în zona protejată, fum sau gaze inflamabile, zgomote puternice și apropierea unei persoane de panoul alarmei. La detectarea unui eveniment suspect, sistemul reacționează local printr-un buzzer, afișează starea curentă pe un ecran TFT color și transmite mesaje de stare/debug prin UART către calculator. | + | SentinelGuard este un sistem de alarmă inteligent pe care l-am construit în jurul plăcii Arduino Uno. Sistemul monitorizează mai multe tipuri de evenimente relevante pentru securitatea unei camere: mișcare în zona protejată, fum sau gaze inflamabile, zgomote puternice și apropierea unei persoane de panoul alarmei. La detectarea unui eveniment suspect, sistemul reacționează local printr-un buzzer, afișează starea curentă pe un ecran TFT color și transmite mesaje de stare/debug prin UART către calculator. |
| - | Scopul proiectului este integrarea mai multor periferice și protocoale de comunicație într-o aplicație embedded practică. Alarma nu este doar o demonstrație simplă cu un senzor, ci un sistem cu mai multe stări de funcționare, interfață grafică, evenimente marcate temporal și mai multe surse de intrare. | + | Scopul proiectului meu este integrarea mai multor periferice și protocoale de comunicație într-o aplicație embedded practică. Alarma nu este doar o demonstrație simplă cu un senzor, ci un sistem cu mai multe stări de funcționare, interfață grafică, evenimente marcate temporal și mai multe surse de intrare. |
| - | Ideea proiectului a pornit de la un scenariu real: protejarea unei camere, a unui birou sau a unei zone restrânse cu un dispozitiv compact care poate detecta rapid mișcare, fum/gaz sau activitate neobișnuită. Din punct de vedere didactic, proiectul este util deoarece folosește GPIO, întreruperi externe, timere/PWM, ADC, UART, SPI și I2C în același firmware. | + | Ideea proiectului a pornit de la un scenariu real: protejarea unei camere, a unui birou sau a unei zone restrânse cu un dispozitiv compact care poate detecta rapid mișcare, fum/gaz sau activitate neobișnuită. Din punct de vedere didactic, am urmărit să folosesc GPIO, întreruperi externe, timere/PWM, ADC, UART, SPI și I2C în același firmware. |
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| - | Sistemul este organizat în jurul microcontrolerului, care citește senzorii, actualizează starea alarmei și controlează interfața cu utilizatorul. | + | Am organizat sistemul în jurul microcontrolerului, care citește senzorii, actualizează starea alarmei și controlează interfața cu utilizatorul. |
| Principalele stări de funcționare sunt: | Principalele stări de funcționare sunt: | ||
| Line 25: | Line 25: | ||
| * ''MENIU/SETARI'' - ecran pentru praguri, mod de armare și starea senzorilor. | * ''MENIU/SETARI'' - ecran pentru praguri, mod de armare și starea senzorilor. | ||
| - | Ecranul TFT este folosit ca interfață principală de afișare. Acesta afișează starea curentă a alarmei, ora curentă citită de la modulul RTC, ultimele evenimente și valorile senzorilor. Introducerea PIN-ului și navigarea prin meniu se vor face folosind tastatura matricială 4x4 din kit. | + | Am folosit ecranul TFT ca interfață principală de afișare. Acesta afișează starea curentă a alarmei, ora curentă citită de la modulul RTC, ultimele evenimente și valorile senzorilor. |
| ==== Schemă bloc ==== | ==== Schemă bloc ==== | ||
| - | {{block_diagram.png?900|Schema bloc SentinelGuard}} | + | {{block_diagram_compact.png?650|Schema bloc SentinelGuard}} |
| - | Schema bloc evidențiază fluxul principal al sistemului: senzorii trimit evenimente și valori către placa ATmega328P Xplained Mini, iar microcontrolerul actualizează interfața TFT, controlează buzzerul și transmite log-uri prin UART. Ecranul TFT este conectat printr-un convertor de nivel logic, deoarece placa lucrează la logică de 5V, iar ecranul este tratat ca dispozitiv de 3.3V. Fotorezistența apare în schemă ca modul opțional; aceasta poate fi eliminată din versiunea finală dacă proiectul devine prea aglomerat sau dacă nu este necesară pentru demonstrație. | + | În schema bloc se vede fluxul principal al sistemului: senzorii trimit evenimente și valori către placa Arduino Uno, iar microcontrolerul actualizează interfața TFT, controlează buzzerul și transmite log-uri prin UART. Ecranul TFT este conectat prin adaptare de nivel logic, deoarece placa lucrează la logică de 5V, iar ecranul este tratat ca dispozitiv de 3.3V. |
| ==== Interacțiunea cu utilizatorul ==== | ==== Interacțiunea cu utilizatorul ==== | ||
| - | * Utilizatorul poate arma sau dezarma alarma folosind tastatura matricială 4x4. | ||
| * Sistemul afișează un dashboard cu ora curentă, starea alarmei și starea senzorilor. | * Sistemul afișează un dashboard cu ora curentă, starea alarmei și starea senzorilor. | ||
| * Când un senzor este declanșat, ecranul evidențiază sursa evenimentului. | * Când un senzor este declanșat, ecranul evidențiază sursa evenimentului. | ||
| - | * Buzzerul generează modele sonore diferite în funcție de tipul alarmei. | + | * Buzzerul generează semnalizare sonoră la depășirea pragurilor. |
| * UART prin USB este folosit pentru log-uri, debug și comenzi în timpul dezvoltării și demonstrației. | * UART prin USB este folosit pentru log-uri, debug și comenzi în timpul dezvoltării și demonstrației. | ||
| Line 47: | Line 46: | ||
| | Întreruperi externe | Detectarea rapidă a mișcării de la senzorul PIR | | | Întreruperi externe | Detectarea rapidă a mișcării de la senzorul PIR | | ||
| | Timere / PWM | Modele sonore pentru buzzer și temporizări pentru stările alarmei | | | Timere / PWM | Modele sonore pentru buzzer și temporizări pentru stările alarmei | | ||
| - | | ADC | Citirea senzorului MQ-2, a tastaturii prin divizor rezistiv și opțional a fotorezistenței/senzorului de sunet | | + | | ADC | Citirea senzorului MQ-2 și a senzorului de sunet | |
| | UART | Log-uri și comenzi prin conexiunea serială USB | | | UART | Log-uri și comenzi prin conexiunea serială USB | | ||
| | SPI | Comunicația cu ecranul TFT | | | SPI | Comunicația cu ecranul TFT | | ||
| - | | I2C | Comunicația cu modulul RTC DS3231 | | + | | I2C | Comunicația cu modulul RTC DS3231 / DS1307 | |
| ===== Design hardware ===== | ===== Design hardware ===== | ||
| Line 57: | Line 56: | ||
| ^ Componentă ^ Cantitate ^ Rol în proiect ^ Interfață ^ | ^ Componentă ^ Cantitate ^ Rol în proiect ^ Interfață ^ | ||
| - | | ATmega328P Xplained Mini | 1 | Controler principal | GPIO, ADC, UART, SPI, I2C | | + | | Arduino Uno | 1 | Controler principal | GPIO, ADC, UART, SPI, I2C | |
| | Breadboard | 1 | Realizarea prototipului | - | | | Breadboard | 1 | Realizarea prototipului | - | | ||
| | Fire jumper | multiple | Conectarea componentelor | - | | | Fire jumper | multiple | Conectarea componentelor | - | | ||
| - | | Ecran TFT SPI 2.8 inch, 240x320, ST7789V | 1 | Interfață grafică pentru stare, alerte și meniu | SPI | | + | | Ecran TFT SPI 2.8 inch, 240x320, ST7789V | 1 | Interfață grafică pentru stare, alerte și valori senzori | SPI | |
| - | | Convertor de nivel logic cu 8 canale | 1 | Conversie semnale 5V microcontroler la 3.3V pentru ecran | SPI/GPIO prin level shifting | | + | | Divizoare rezistive 330R / 510R | 4 perechi | Adaptare de nivel logic 5V -> ~3V pentru liniile TFT | GPIO / SPI | |
| - | | Senzor PIR HC-SR501 sau echivalent | 1 | Detectarea mișcării în zona protejată | Intrare digitală / întrerupere | | + | | Senzor PIR HC-SR501 sau echivalent | 1 | Detectarea mișcării în zona protejată | Intrare digitală | |
| | Modul senzor MQ-2 fum/gaz | 1 | Detectarea fumului și gazelor inflamabile | Intrare analogică | | | Modul senzor MQ-2 fum/gaz | 1 | Detectarea fumului și gazelor inflamabile | Intrare analogică | | ||
| - | | Modul RTC DS3231 | 1 | Păstrarea orei pentru log-uri | I2C | | + | | Modul RTC DS3231 / DS1307 compatibil | 1 | Păstrarea orei pentru log-uri și afișare | I2C | |
| | Baterie CR2032 | 1 | Backup pentru modulul RTC | - | | | Baterie CR2032 | 1 | Backup pentru modulul RTC | - | | ||
| - | | Buzzer pasiv | 1 | Sirenă cu tonuri diferite | PWM | | + | | Buzzer pasiv | 1 | Sirenă / alertă sonoră | PWM / semnal digital | |
| - | | Modul senzor de sunet | 1 | Detectarea zgomotelor puternice | Intrare digitală/analogică | | + | | Modul senzor de sunet | 1 | Detectarea zgomotelor puternice | Intrare analogică | |
| | Senzor ultrasonic HC-SR04 | 1 | Detectarea apropierii de panoul alarmei | GPIO + măsurare timp | | | Senzor ultrasonic HC-SR04 | 1 | Detectarea apropierii de panoul alarmei | GPIO + măsurare timp | | ||
| - | | Fotorezistență | 0/1 | Modul opțional pentru măsurarea luminii ambientale; este posibil să nu fie inclus în versiunea finală | ADC | | + | | Buton push-button | 1 | Oprire locală a sunetului / confirmare alarmă | Intrare digitală | |
| - | | Rezistențe | multiple | Pull-up, divizoare de tensiune, limitare curent și citire tastatură | - | | + | |
| - | | Tastatură matricială 4x4 | 1 | Introducere PIN și navigare în meniu | ADC prin divizor rezistiv | | + | |
| ==== Placa de dezvoltare ==== | ==== Placa de dezvoltare ==== | ||
| - | Proiectul folosește placa ATmega328P Xplained Mini. Aceasta include debugger/programator integrat mEDBG, alimentare prin USB, Virtual COM Port pentru comunicație serială cu PC-ul și headere compatibile cu stilul Arduino. În configurația implicită, placa este alimentată prin USB, iar microcontrolerul funcționează la 5V și 16 MHz. | + | În implementarea actuală am folosit placa Arduino Uno. Am ales-o deoarece este compatibilă cu modulele din kit, oferă suficienți pini pentru etapa curentă a prototipului și permite dezvoltare rapidă în PlatformIO. |
| Funcționalități ale plăcii folosite în proiect: | Funcționalități ale plăcii folosite în proiect: | ||
| - | * mEDBG pentru programare și debugging fără programator extern; | + | * interfață USB pentru alimentare și upload firmware; |
| - | * Virtual COM Port pentru log-uri și comenzi UART; | + | * UART serial pentru debug; |
| - | * pinii D0/D1 conectați la UART-ul microcontrolerului, păstrați pentru comunicația serială; | + | * SPI hardware pentru ecranul TFT; |
| - | * pinii SPI D10-D13 pentru ecranul TFT; | + | * I2C pentru modulul RTC; |
| - | * pinii I2C A4/A5 pentru modulul RTC DS3231; | + | * ADC pentru MQ-2 și senzorul de sunet; |
| - | * pinii analogici A0-A2 pentru senzori analogici, A2 fiind rezervat doar dacă se folosește fotorezistența opțională; | + | * GPIO pentru PIR, HC-SR04, buzzer și buton. |
| - | * pinul D13/PB5 este partajat cu LED-ul galben onboard D200 și cu semnalul SPI SCK. | + | |
| - | ==== Utilizare pini planificată ==== | + | ==== Stadiul actual al implementării hardware ==== |
| - | Pinout-ul poate fi ajustat în etapa de integrare, însă următoarea mapare este planul inițial pentru ATmega328P Xplained Mini. | + | În stadiul actual, am realizat și am testat incremental prototipul hardware SentinelGuard pe placa Arduino Uno. Scopul acestei etape a fost să validez individual componentele și apoi să le integrez treptat într-un montaj unic. |
| - | ^ Modul ^ Semnal ^ Pin placă ^ Pin ATmega328P ^ Header ^ Observații ^ | + | În acest moment, am conectat fizic și am testat următoarele module: |
| - | | UART mEDBG | RXD, TXD | D0, D1 | PD0, PD1 | J201 pin 1, J201 pin 2 | Folosit pentru Virtual COM Port; nu se alocă altor module | | + | |
| - | | PIR HC-SR501 | OUT | D2 | PD2 / INT0 | J201 pin 3 | Intrare cu întrerupere externă pentru detecție rapidă | | + | * ecranul TFT SPI 2.8 inch ST7789V; |
| - | | Buzzer pasiv | SIG | D3 | PD3 / OC2B | J201 pin 4 | PWM prin Timer2, separat de Timer1 | | + | * senzorul ultrasonic HC-SR04; |
| - | | HC-SR04 | TRIG | D4 | PD4 | J201 pin 5 | Impuls de trigger generat de microcontroler | | + | * buzzerul pasiv; |
| - | | TFT backlight, opțional | BL | D6 | PD6 / PWM | J201 pin 7 | Control luminozitate; poate fi legat fix dacă nu se controlează din software | | + | * senzorul PIR; |
| - | | TFT Display | RST | D7 | PD7 | J201 pin 8 | Reset ecran, trecut prin level shifter | | + | * senzorul MQ-2; |
| - | | HC-SR04 | ECHO | D8 | PB0 | J200 pin 1 | Măsurare timp răspuns; poate fi citit prin GPIO/timer | | + | * senzorul de sunet; |
| - | | TFT Display | DC | D9 | PB1 | J200 pin 2 | Data/Command, trecut prin level shifter | | + | * modulul RTC DS3231 / DS1307 compatibil I2C; |
| - | | TFT Display | CS | D10 | PB2 / SS | J200 pin 3 | Chip select SPI, trecut prin level shifter | | + | * butonul de tip silence / acknowledge. |
| - | | TFT Display | MOSI | D11 | PB3 / MOSI | J200 pin 4 | Hardware SPI, trecut prin level shifter | | + | |
| - | | TFT Display | MISO | D12 | PB4 / MISO | J200 pin 5 | Hardware SPI; poate rămâne nefolosit dacă afișajul nu trimite date spre MCU | | + | Am realizat integrarea etapizat, deoarece proiectul conține multe periferice și există constrângeri reale legate de numărul de pini disponibili, nivelele logice și stabilitatea alimentării. În mod special, ecranul TFT a necesitat o atenție suplimentară, deoarece panoul funcționează pe logică de 3.3V, în timp ce microcontrolerul lucrează la 5V. |
| - | | TFT Display | SCK | D13 | PB5 / SCK | J200 pin 6 | Hardware SPI; partajat cu LED-ul onboard D200 | | + | |
| - | | MQ-2 | AO | A0 | PC0 / ADC0 | J203 pin 1 | Citire analogică pentru fum/gaz | | + | În urma testelor, am observat că convertorul de nivel logic cu 8 canale disponibil în kit nu a oferit un comportament stabil pentru semnalele SPI ale display-ului. Din acest motiv, în montajul hardware real utilizat în prezentare am adoptat o soluție alternativă: divizoare rezistive pentru liniile SPI de ieșire ale microcontrolerului către TFT. Această soluție s-a dovedit stabilă și a permis funcționarea corectă a ecranului. |
| - | | Senzor sunet | AO | A1 | PC1 / ADC1 | J203 pin 2 | Citire analogică pentru prag de zgomot | | + | |
| - | | Fotorezistență | divizor tensiune | A2 | PC2 / ADC2 | J203 pin 3 | Opțională; poate fi eliminată din versiunea finală | | + | ==== Componente folosite și rolul lor în proiect ==== |
| - | | Tastatură 4x4 | ieșire divizor rezistiv | A3 | PC3 / ADC3 | J203 pin 4 | Citire PIN prin ADC; evită ocuparea a 8 pini GPIO | | + | |
| - | | RTC DS3231 | SDA | A4 / D18 | PC4 / SDA | J200 pin 9 / J203 pin 5 | Magistrală I2C | | + | ^ Componentă ^ Rol în proiect ^ |
| - | | RTC DS3231 | SCL | A5 / D19 | PC5 / SCL | J200 pin 10 / J203 pin 6 | Magistrală I2C | | + | | Arduino Uno | controler principal folosit pentru prototiparea și integrarea modulelor | |
| + | | TFT SPI 2.8 inch ST7789V | interfață grafică pentru afișarea stării sistemului și a valorilor senzorilor | | ||
| + | | HC-SR04 | măsurarea distanței față de panoul alarmei / detectarea apropierii | | ||
| + | | Buzzer pasiv | semnalizare acustică la depășirea pragurilor sau în starea de alarmă | | ||
| + | | PIR HC-SR501 | detectarea mișcării în zona monitorizată | | ||
| + | | MQ-2 | detectarea fumului / gazelor inflamabile prin ieșire analogică | | ||
| + | | Senzor de sunet | detectarea zgomotelor puternice prin ieșire analogică | | ||
| + | | RTC DS3231 / DS1307 compatibil | furnizarea orei curente pentru afișare și log-uri | | ||
| + | | Buton „Silence” | confirmarea locală a alarmei sau dezactivarea soneriei | | ||
| + | |||
| + | ==== Pinii utilizați în implementarea actuală ==== | ||
| + | |||
| + | Maparea de mai jos reflectă stadiul curent al montajului fizic pe care l-am realizat și al testelor efectuate: | ||
| + | |||
| + | ^ Modul ^ Semnal ^ Pin utilizat ^ | ||
| + | | PIR | OUT | D2 | | ||
| + | | Buzzer pasiv | SIG | D3 | | ||
| + | | HC-SR04 | TRIG | D4 | | ||
| + | | Buton silence | ieșire buton | D5 | | ||
| + | | HC-SR04 | ECHO | D8 | | ||
| + | | TFT ST7789V | DC | D9 | | ||
| + | | TFT ST7789V | CS | D10 | | ||
| + | | TFT ST7789V | MOSI / SDI | D11 | | ||
| + | | TFT ST7789V | MISO / SDO | D12 (opțional, în unele teste a rămas neutilizat) | | ||
| + | | TFT ST7789V | SCK | D13 | | ||
| + | | MQ-2 | AO | A0 | | ||
| + | | Senzor de sunet | AO | A1 | | ||
| + | | RTC | SDA | A4 | | ||
| + | | RTC | SCL | A5 | | ||
| + | |||
| + | ==== Explicația alegerii pinilor ==== | ||
| + | |||
| + | * Pinii D10-D13 au fost rezervați pentru interfața SPI hardware a ecranului TFT, deoarece aceștia oferă cea mai bună compatibilitate și cel mai bun debit pentru actualizarea ecranului. | ||
| + | * HC-SR04 folosește doi pini digitali separați: unul pentru impulsul de trigger și unul pentru măsurarea duratei ecoului. | ||
| + | * Buzzerul a fost conectat la D3, pin potrivit pentru generarea de semnal periodic. | ||
| + | * Senzorii analogici MQ-2 și modulul de sunet au fost conectați pe A0 și A1 pentru a permite citirea unor valori variabile și compararea lor cu praguri software. | ||
| + | * RTC-ul a fost conectat la A4/A5, deoarece aceștia reprezintă magistrala I2C standard pe Arduino Uno. | ||
| + | * Butonul de silence a fost conectat la D5 și configurat software cu rezistență internă de tip ''INPUT_PULLUP'', astfel încât apăsarea butonului produce o tranziție la nivel LOW. | ||
| + | |||
| + | ==== Schema electrică și explicații ==== | ||
| + | |||
| + | Am validat schema de principiu atât în simulator, cât și prin montaj fizic. În simulare am verificat traseele, interacțiunea dintre module și maparea pinilor, iar în montajul real am confirmat funcționalitatea și constrângerile practice. | ||
| + | |||
| + | Un aspect important al implementării a fost conectarea ecranului TFT ST7789V. Deoarece acesta folosește logică de 3.3V, iar placa de control operează la 5V, am coborât liniile SPI de ieșire către ecran de la 5V la aproximativ 3V folosind divizoare rezistive. Pentru fiecare linie SPI critică am folosit următoarea structură: | ||
| + | |||
| + | * rezistență de 330 ohmi între pinul Arduino și nodul de semnal; | ||
| + | * rezistență de 510 ohmi între nodul de semnal și GND; | ||
| + | * nodul intermediar a fost conectat la pinul TFT corespunzător. | ||
| + | |||
| + | Această soluție a fost aplicată pentru: | ||
| + | |||
| + | * SCK; | ||
| + | * MOSI / SDI; | ||
| + | * CS; | ||
| + | * DC. | ||
| + | |||
| + | Pinii de alimentare ai ecranului au fost conectați astfel: | ||
| + | |||
| + | * VCC al modulului TFT la 5V, deoarece placa adaptor a display-ului include regulator onboard; | ||
| + | * GND la masa comună; | ||
| + | * LED și RESET la 3.3V, conform testelor hardware realizate. | ||
| + | |||
| + | Toate modulele folosesc masă comună, iar alimentarea este distribuită prin breadboard. | ||
| + | |||
| + | === Simulare conexiuni === | ||
| + | |||
| + | {{sentinelguard_simulation.png?700|Simularea conexiunilor hardware în Wokwi}} | ||
| + | |||
| + | Figura de mai sus prezintă schema de conectare pe care am validat-o în simulator. Am folosit simularea pentru verificarea mapării pinilor și pentru testarea logicii de integrare înaintea realizării montajului fizic. | ||
| + | |||
| + | === Montaj fizic curent === | ||
| + | |||
| + | {{sentinelguard_real_setup.jpg?700|Montajul fizic curent al prototipului SentinelGuard}} | ||
| + | |||
| + | Figura de mai sus prezintă stadiul actual al montajului fizic. Se observă placa de dezvoltare, breadboard-ul central, ecranul TFT conectat prin divizoare rezistive și senzorii principali pe care i-am integrat în jurul sistemului. | ||
| + | |||
| + | === Dovadă de funcționare === | ||
| + | |||
| + | În stadiul actual am validat funcționarea fiecărui modul hardware principal din proiect. Am verificat individual și în montaj real: | ||
| + | |||
| + | * senzorul ultrasonic HC-SR04; | ||
| + | * senzorul PIR; | ||
| + | * senzorul MQ-2; | ||
| + | * senzorul de sunet; | ||
| + | * buzzerul; | ||
| + | * modulul RTC; | ||
| + | * ecranul TFT. | ||
| + | |||
| + | În imaginea montajului fizic se poate observa afișarea unei valori numerice pe ecran, ceea ce confirmă că interfața de afișare funcționează corect în hardware real. În plus, pe parcursul testelor am confirmat pentru fiecare modul următoarele: | ||
| + | |||
| + | * HC-SR04 transmite distanțe valide, iar valorile pot fi afișate live pe ecran; | ||
| + | * buzzerul reacționează corect la depășirea pragurilor configurate; | ||
| + | * senzorul PIR generează semnal la detectarea mișcării; | ||
| + | * MQ-2 oferă valori analogice care pot fi citite și comparate cu un prag software; | ||
| + | * senzorul de sunet oferă valori analogice utilizabile pentru detectarea zgomotelor puternice; | ||
| + | * modulul RTC poate furniza ora curentă prin magistrala I2C; | ||
| + | * ecranul TFT este inițializat corect și poate afișa valori și stări în timp real. | ||
| + | |||
| + | Prin aceste teste am validat că fiecare senzor și fiecare periferic important din SentinelGuard este funcțional și poate fi integrat în firmware-ul comun al sistemului. | ||
| ==== Considerații electrice ==== | ==== Considerații electrice ==== | ||
| - | * Placa cu microcontroler funcționează la logică de 5V, iar ecranul TFT va fi tratat ca dispozitiv logic de 3.3V. | + | * Placa cu microcontroler funcționează la logică de 5V, iar ecranul TFT este tratat ca dispozitiv logic de 3.3V. |
| - | * Semnalele SPI și semnalele de control ale ecranului vor trece prin convertorul de nivel logic cu 8 canale. | + | * Semnalele SPI și semnalele de control ale ecranului au fost adaptate hardware cu divizoare rezistive. |
| - | * Placa ATmega328P Xplained Mini oferă alimentare prin USB și ieșire de 3.3V de la regulatorul onboard; consumul ecranului, mai ales pentru backlight, trebuie verificat înainte de alimentarea directă din pinul de 3.3V. | + | * MQ-2 are nevoie de o perioadă de încălzire înainte ca valorile citite să devină stabile. |
| - | * Pinii D0/D1 sunt rezervați pentru Virtual COM Port-ul mEDBG și pentru comunicația UART cu PC-ul. | + | * Buzzerul este comandat de pe un pin digital; dacă în integrarea finală curentul devine insuficient, se poate adăuga un tranzistor driver. |
| - | * Pentru ca Virtual COM Port-ul prin mEDBG să funcționeze corect, terminalul serial trebuie să activeze semnalul DTR. | + | |
| - | * Pinul D13/PB5 este folosit pentru SPI SCK și este partajat cu LED-ul galben onboard D200, deci LED-ul onboard nu va fi folosit ca indicator independent în timpul comunicației SPI. | + | |
| - | * Tastatura 4x4 va fi citită printr-un divizor rezistiv conectat la A3, astfel încât introducerea PIN-ului să nu ocupe 8 pini digitali. | + | |
| - | * Modulul DS3231 comunică prin I2C și va fi alimentat conform specificațiilor modulului. | + | |
| - | * Senzorul MQ-2 are nevoie de o perioadă de încălzire înainte ca valorile citite să devină stabile. | + | |
| - | * Buzzerul este comandat de pe un pin cu PWM. Dacă necesarul de curent este prea mare, va fi adăugat un driver cu tranzistor. | + | |
| * Toate modulele trebuie să aibă masă comună. | * Toate modulele trebuie să aibă masă comună. | ||
| Line 130: | Line 218: | ||
| | Mișcare detectată | PIR | Intrare în starea PRE_ALARMA sau ALARMA | | | Mișcare detectată | PIR | Intrare în starea PRE_ALARMA sau ALARMA | | ||
| | Prag fum/gaz depășit | MQ-2 | Intrare imediată în starea ALARMA | | | Prag fum/gaz depășit | MQ-2 | Intrare imediată în starea ALARMA | | ||
| - | | Zgomot puternic detectat | Senzor sunet | Intrare în PRE_ALARMA, cu prag configurabil | | + | | Zgomot puternic detectat | Senzor de sunet | Intrare în PRE_ALARMA, cu prag configurabil | |
| - | | Obiect apropiat de panou | Ultrasonic | Aprindere ecran sau stare de avertizare | | + | | Obiect apropiat de panou | Ultrasonic | Afișare pe ecran și stare de avertizare | |
| - | | Lumină ambientală scăzută | Fotorezistență opțională | Schimbare temă/luminozitate ecran, doar dacă modulul rămâne în proiect | | + | |
| ===== Design software ===== | ===== Design software ===== | ||
| - | Firmware-ul va fi scris în C/C++ pentru microcontroler AVR. Implementarea va fi împărțită în module mici, astfel încât fiecare bloc hardware să poată fi testat separat înainte de integrarea completă. | + | Firmware-ul este scris în C pentru microcontrolerul AVR. Am împărțit implementarea pe etape, astfel încât fiecare bloc hardware să poată fi testat separat înainte de integrarea completă. |
| ==== Mediu de dezvoltare ==== | ==== Mediu de dezvoltare ==== | ||
| - | * PlatformIO sau Arduino IDE pentru compilarea și încărcarea firmware-ului. | + | * PlatformIO pentru compilarea și încărcarea firmware-ului; |
| - | * Framework Arduino/MiniCore sau configurație AVR compatibilă cu ATmega328P Xplained Mini. | + | * toolchain AVR pentru Arduino Uno; |
| - | * mEDBG onboard pentru programare și debugging prin USB. | + | * monitor serial pentru log-uri și debug; |
| - | * Virtual COM Port mEDBG pentru log-uri și comenzi UART. | + | * simulator Wokwi pentru verificarea conexiunilor și a logicii hardware. |
| - | * Serial Monitor sau alt program de terminal cu DTR activat. | + | |
| - | * Fritzing/KiCad/draw.io pentru schema electrică și diagrame, dacă este nevoie. | + | |
| ==== Module software planificate ==== | ==== Module software planificate ==== | ||
| ^ Modul ^ Responsabilitate ^ | ^ Modul ^ Responsabilitate ^ | ||
| - | | ''sensors'' | Citește PIR, MQ-2, senzorul de sunet, senzorul ultrasonic și, dacă este păstrată, fotorezistența opțională | | + | | ''sensors'' | Citește PIR, MQ-2, senzorul de sunet și senzorul ultrasonic | |
| - | | ''alarm_state'' | Implementează stările DEZARMAT, ARMAT, PRE_ALARMA, ALARMA și MENIU | | + | | ''alarm_state'' | Implementează stările DEZARMAT, ARMAT, PRE_ALARMA și ALARMA | |
| - | | ''display_ui'' | Desenează dashboard-ul TFT, avertizările și meniurile | | + | | ''display_ui'' | Desenează dashboard-ul TFT și avertizările | |
| - | | ''rtc_time'' | Citește data/ora din DS3231 și formatează timestamp-uri | | + | | ''rtc_time'' | Citește data/ora din RTC și formatează timestamp-uri | |
| - | | ''serial_console'' | Trimite log-uri și primește comenzi prin UART folosind Virtual COM Port-ul mEDBG | | + | | ''serial_console'' | Trimite log-uri prin UART | |
| - | | ''buzzer'' | Generează modele sonore folosind timere/PWM | | + | | ''buzzer'' | Generează semnalizarea sonoră | |
| - | | ''input'' | Procesează tastatura matricială 4x4 pentru PIN și comenzi de meniu | | + | |
| ==== Algoritmul principal ==== | ==== Algoritmul principal ==== | ||
| Line 168: | Line 252: | ||
| citire senzori | citire senzori | ||
| actualizare stare alarma | actualizare stare alarma | ||
| - | actualizare model buzzer | + | actualizare buzzer |
| actualizare ecran TFT cand apar schimbari | actualizare ecran TFT cand apar schimbari | ||
| trimitere evenimente importante prin UART | trimitere evenimente importante prin UART | ||
| - | procesare input utilizator | ||
| </code> | </code> | ||
| Line 177: | Line 260: | ||
| ^ Comandă ^ Efect ^ | ^ Comandă ^ Efect ^ | ||
| - | | ''ARM'' | Armează alarma | | ||
| - | | ''DISARM 1234'' | Dezarmează alarma dacă PIN-ul este corect | | ||
| | ''STATUS'' | Afișează starea curentă și valorile senzorilor | | | ''STATUS'' | Afișează starea curentă și valorile senzorilor | | ||
| - | | ''THRESHOLD GAS 350'' | Actualizează pragul pentru senzorul MQ-2 | | ||
| | ''LOGS'' | Afișează ultimele evenimente | | | ''LOGS'' | Afișează ultimele evenimente | | ||
| ===== Plan de implementare ===== | ===== Plan de implementare ===== | ||
| - | Proiectul va fi implementat incremental, astfel încât fiecare componentă hardware să fie testată separat înainte de integrarea finală. | + | Am implementat proiectul incremental, astfel încât fiecare componentă hardware să fie testată separat înainte de integrarea finală. |
| ^ Pas ^ Activitate ^ Metodă de validare ^ | ^ Pas ^ Activitate ^ Metodă de validare ^ | ||
| - | | 1 | Alimentarea plăcii ATmega328P Xplained Mini și testarea UART prin mEDBG | Trimitere și recepție mesaje simple în Serial Monitor, cu DTR activ | | + | | 1 | Alimentarea plăcii și testarea UART | Trimitere și recepție mesaje simple în Serial Monitor | |
| - | | 2 | Conectarea și testarea buzzerului | Generarea unor beep-uri simple folosind timer/PWM | | + | | 2 | Conectarea și testarea buzzerului | Generarea unor beep-uri simple | |
| - | | 3 | Conectarea senzorului PIR | Afișarea evenimentelor de mișcare prin UART și testarea întreruperii | | + | | 3 | Conectarea senzorului PIR | Afișarea evenimentelor de mișcare prin UART | |
| | 4 | Conectarea senzorului MQ-2 | Citirea valorilor ADC și stabilirea unui prag de fum/gaz | | | 4 | Conectarea senzorului MQ-2 | Citirea valorilor ADC și stabilirea unui prag de fum/gaz | | ||
| - | | 5 | Conectarea modulului RTC DS3231 | Citirea datei și orei prin I2C | | + | | 5 | Conectarea modulului RTC | Citirea datei și orei prin I2C | |
| - | | 6 | Conectarea ecranului TFT prin level shifter | Afișarea unui ecran de pornire și a dashboard-ului | | + | | 6 | Conectarea ecranului TFT | Afișarea unui ecran de test și a valorilor live | |
| | 7 | Adăugarea senzorului de sunet și a senzorului ultrasonic | Afișarea valorilor și a stărilor pe ecran | | | 7 | Adăugarea senzorului de sunet și a senzorului ultrasonic | Afișarea valorilor și a stărilor pe ecran | | ||
| - | | 8 | Implementarea automatului de stări al alarmei | Testarea tranzițiilor DEZARMAT, ARMAT, PRE_ALARMA, ALARMA | | + | | 8 | Implementarea automatului de stări al alarmei | Testarea tranzițiilor între stări | |
| - | | 9 | Adăugarea introducerii PIN-ului prin tastatura matricială 4x4 | Armare/dezarmare din interfața utilizatorului | | + | | 9 | Integrare finală și demo | Declanșarea fiecărui senzor și verificarea ecranului, buzzerului și UART | |
| - | | 10 | Integrare finală și demo | Declanșarea fiecărui senzor și verificarea ecranului, buzzerului și log-urilor UART | | + | |
| ===== Rezultate așteptate ===== | ===== Rezultate așteptate ===== | ||
| Line 208: | Line 287: | ||
| * interfață grafică clară pe ecranul TFT; | * interfață grafică clară pe ecranul TFT; | ||
| * evenimente marcate cu ora curentă; | * evenimente marcate cu ora curentă; | ||
| - | * comportament configurabil pentru armare/dezarmare; | ||
| * integrarea mai multor protocoale de comunicație într-un singur sistem embedded. | * integrarea mai multor protocoale de comunicație într-un singur sistem embedded. | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| - | Acest proiect reprezintă o metodă practică de a combina senzori, protocoale de comunicație și interfață grafică pe un microcontroler cu resurse limitate. Principala provocare este integrarea tuturor modulelor astfel încât firmware-ul să rămână responsiv, iar memoria să fie folosită eficient. Ecranul TFT și numărul mare de senzori cresc dificultatea proiectului, dar fac demonstrația finală mult mai relevantă decât o alarmă bazată pe un singur senzor. | + | Prin acest proiect am urmărit să combin senzori, protocoale de comunicație și interfață grafică pe un microcontroler cu resurse limitate. Principala provocare a fost integrarea tuturor modulelor astfel încât firmware-ul să rămână responsiv, iar memoria să fie folosită eficient. Ecranul TFT și numărul mare de senzori cresc dificultatea proiectului, dar fac demonstrația finală mult mai relevantă decât o alarmă bazată pe un singur senzor. |
| ===== Cod sursă și alte resurse ===== | ===== Cod sursă și alte resurse ===== | ||
| Line 225: | Line 303: | ||
| ^ Dată ^ Progres ^ | ^ Dată ^ Progres ^ | ||
| | 09 mai 2026 | Alegerea temei: SentinelGuard - sistem de alarmă inteligent multi-senzor. A fost redactată documentația inițială și lista de componente. | | | 09 mai 2026 | Alegerea temei: SentinelGuard - sistem de alarmă inteligent multi-senzor. A fost redactată documentația inițială și lista de componente. | | ||
| - | | DE_COMPLETAT | Componentele hardware au fost comandate și verificate. | | + | | 13 mai 2026 | Am realizat conectarea componentelor hardware pe breadboard și am început testarea lor incrementală. | |
| - | | DE_COMPLETAT | Senzorii au fost testați individual pe breadboard. | | + | | 14 mai 2026 | Am adus ecranul TFT în stare funcțională în hardware real, folosind divizoare rezistive pentru adaptarea semnalelor SPI. | |
| - | | DE_COMPLETAT | Ecranul TFT și modulul RTC au fost integrate. | | + | | 15 mai 2026 | Am integrat senzorii validați cu afișare live pe ecran și alertă sonoră prin buzzer. | |
| - | | DE_COMPLETAT | Automatul de stări al alarmei și demo-ul final au fost implementate. | | + | | DE_COMPLETAT | Integrarea dashboard-ului final, afișarea simultană a tuturor senzorilor, actualizarea în timp real a valorilor și implementarea logicii complete de alarmă. | |
| ===== Bibliografie / Resurse ===== | ===== Bibliografie / Resurse ===== | ||
| Line 234: | Line 312: | ||
| * [[https://ocw.cs.pub.ro/courses/pm/prj2026|Pagina proiecte PM 2026]] | * [[https://ocw.cs.pub.ro/courses/pm/prj2026|Pagina proiecte PM 2026]] | ||
| * [[https://ocw.cs.pub.ro/courses/pm/pm/prj2021/template|Template documentație proiect PM]] | * [[https://ocw.cs.pub.ro/courses/pm/pm/prj2021/template|Template documentație proiect PM]] | ||
| - | * [[https://ocw.cs.pub.ro/courses/pm/proiect/xplainedmini|Tutorial OCW - ATmega328P Xplained Mini]] | + | * [[https://store-usa.arduino.cc/products/arduino-uno-rev3|Arduino Uno Rev3]] |
| - | * [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|Datasheet ATmega328P]] | + | |
| - | * [[https://www.microchip.com/en-us/development-tool/atmega328p-xmini|ATmega328P Xplained Mini]] | + | |
| * [[https://www.analog.com/media/en/technical-documentation/data-sheets/DS3231.pdf|Datasheet DS3231]] | * [[https://www.analog.com/media/en/technical-documentation/data-sheets/DS3231.pdf|Datasheet DS3231]] | ||
| * [[https://www.winsen-sensor.com/d/files/manual/mq-2.pdf|Datasheet senzor MQ-2]] | * [[https://www.winsen-sensor.com/d/files/manual/mq-2.pdf|Datasheet senzor MQ-2]] | ||
| Line 242: | Line 318: | ||
| * [[https://www.emag.ro/display-tft-spi-2-8-inch-240x320-lcd-cu-touchscreen-driver-st7789v-arduino-emg359/pd/DP347SYBM/|Ecran TFT SPI 2.8 inch]] | * [[https://www.emag.ro/display-tft-spi-2-8-inch-240x320-lcd-cu-touchscreen-driver-st7789v-arduino-emg359/pd/DP347SYBM/|Ecran TFT SPI 2.8 inch]] | ||
| * [[https://www.emag.ro/detector-de-fum-si-gaze-inflamabile-mq-2-gpl-propan-hidrogen-metan-albastru-argintiu-5904162804931/pd/D72GKLMBM/|Modul senzor MQ-2 fum/gaz]] | * [[https://www.emag.ro/detector-de-fum-si-gaze-inflamabile-mq-2-gpl-propan-hidrogen-metan-albastru-argintiu-5904162804931/pd/D72GKLMBM/|Modul senzor MQ-2 fum/gaz]] | ||
| - | * [[https://www.emag.ro/convertor-de-nivel-logic-cu-8-canale-elektroweb-albastru-2-e-060/pd/D1HWDMYBM/|Convertor de nivel logic cu 8 canale]] | + | |
| + | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||