This is an old revision of the document!


Sistem de Securitate Smart cu ESP32-CAM

Introducere

Sistemul de Securitate Smart este un dispozitiv de alarma bazat pe Arduino Nano si ESP32-CAM, care detecteaza intrusi prin senzori IR, emite alarma sonora prin buzzer, afiseaza statusul pe un LCD 1602 si transmite imagini live prin WiFi catre orice dispozitiv conectat in retea.

Ideea proiectului porneste din dorinta de a construi un sistem de securitate accesibil si functional, care sa demonstreze practic comunicarea I2C, controlul GPIO, utilizarea intreruperilor si integrarea unui modul WiFi cu camera.

Proiectul este util deoarece:

  • detecteaza automat prezenta intrusilor prin senzori IR cu raza reglabila;
  • emite alarma sonora imediata prin buzzer pasiv cu ton configurabil;
  • afiseaza in timp real statusul sistemului pe display LCD 1602;
  • transmite imagini live prin WiFi accesibile de pe orice browser;
  • detecteaza zgomote suspecte prin senzorul de microfon;
  • trimite notificari automate pe Telegram cu link la camera live.

Ipoteza: Credem ca un sistem de detectie bazat pe senzori IR combinat cu o camera WiFi va oferi o solutie de securitate mai completa decat un sistem doar cu senzori, deoarece furnizeaza atat detectie imediata cat si dovada vizuala a evenimentului detectat.

Descriere generala

Sistemul este compus din doua unitati principale: Arduino Nano ca unitate de control central si ESP32-CAM ca modul de supraveghere video. Arduino Nano primeste semnale de la senzorii IR si microfon, controleaza buzzerul si actualizeaza LCD-ul prin I2C. ESP32-CAM ruleaza independent un server web care transmite imagini live prin WiFi si trimite notificari pe Telegram.

Schema bloc a sistemului:

Schema electrica

Modulele principale ale proiectului sunt:

  • Unitatea de control - Arduino Nano: citeste senzorii IR si microfonul prin GPIO, controleaza buzzerul si actualizeaza LCD-ul prin I2C.
  • Modulul de detectie - Senzor IR: detecteaza obstacole/persoane in raza de 5-10cm, reglabila prin potentiometru. Conectat pe pinul D2.
  • Modulul de alarma - Buzzer pasiv: emite ton de alarma diferentiat prin PWM — sunet ascendent pentru IR, descendent pentru audio.
  • Modulul de afisare - LCD 1602 I2C: afiseaza statusul sistemului prin comunicare I2C la adresa 0x27.
  • Modulul video - ESP32-CAM: ruleaza un server web cu captura foto accesibila prin browser si trimite notificari pe Telegram.
  • Modulul de detectie sunet - Microfon MH: detecteaza zgomote suspecte prin intreruperi hardware, reglabil prin potentiometru.

Planificare

Grafic Gantt

Hardware Design

Lista de componente

Referinta Componenta Cantitate
U1 Arduino Nano (Plusvo, ATmega328P, CH340) 1
U2 ESP32-CAM cu camera OV2640 1
U3 FT232RL - adaptor USB-to-Serial 1
DISP1 LCD 1602 cu modul I2C (QAPASS PCF8574) 1
IR1 Senzor IR de proximitate MH-B 1
MIC1 Senzor microfon MH cu potentiometru 1
BZ1 Buzzer pasiv 1
HUB1 USB Hub TP-Link 3 porturi USB 3.0 1
BB1 Breadboard 1
Fire jumper tata-mama / tata-tata
Cablu USB-A la Mini-USB 2

Conexiuni electrice - Arduino Nano

Pin Arduino Nano Tip Conectat la
5V Power Sina rosie breadboard
GND GND Sina albastra breadboard
A4 (SDA) I2C SDA SDA - Modul I2C LCD
A5 (SCL) I2C SCL SCL - Modul I2C LCD
D2 GPIO INPUT OUT - Senzor IR
D3 GPIO INPUT OUT - Senzor microfon (intrerupere)
D8 GPIO OUTPUT Pin + Buzzer pasiv
D9 GPIO OUTPUT GPIO12 - ESP32-CAM (trigger)

Conexiuni electrice - ESP32-CAM

Pin ESP32-CAM Conectat la
5V VCC - FT232RL
GND GND - FT232RL + sina albastra breadboard
U0R (RX) TX - FT232RL (doar la programare)
U0T (TX) RX - FT232RL (doar la programare)
IO0 GND (doar la programare)
GPIO12 D9 - Arduino Nano (trigger alarma)

Detalii module hardware

Senzorul IR MH-B

Senzorul IR foloseste un LED emitator infrarosu si un receptor pentru a detecta obstacolele prin reflectia luminii IR. Distanta de detectie este reglabila intre 5-25cm prin potentiometrul albastru de pe placheta. Senzorul da semnal LOW cand detecteaza un obstacol si HIGH cand nu detecteaza nimic.

Observatie: Senzorul este sensibil la lumina ambianta intensa. Se recomanda pozitionarea ferita de surse de lumina directa.

LCD 1602 cu modul I2C

LCD-ul foloseste modulul PCF8574 (QAPASS) pentru comunicare I2C, reducand numarul de fire de la 16 la 4. Adresa I2C implicita este 0x27. Potentiometrul albastru de pe modulul I2C regleaza contrastul ecranului.

ESP32-CAM

ESP32-CAM ruleaza un server web HTTP care expune captura foto la adresa /capture. Camera OV2640 captureaza imagini JPEG la rezolutie VGA. Modulul se conecteaza automat la reteaua WiFi 2.4GHz si trimite notificari pe Telegram prin API HTTPS cu WiFiClientSecure.

Imagini montaj fizic

Montaj fizic - vedere generala

Montaj fizic - detaliu componente

Software Design

Biblioteci folosite

  • Wire.h — biblioteca built-in Arduino pentru comunicare I2C. Aleasa pentru ca LCD-ul foloseste protocolul I2C, reducand numarul de fire de la 16 la 4.
  • LiquidCrystal_I2C (Frank de Brabander) — simplifica controlul LCD-ului prin I2C. Aleasa pentru ca e cea mai populara si documentata biblioteca pentru LCD 1602 cu modul PCF8574.
  • esp_camera.h — biblioteca oficiala Espressif pentru controlul camerei OV2640. Singura optiune viabila pentru ESP32-CAM.
  • WiFi.h — biblioteca oficiala ESP32 pentru conectare WiFi. Necesara pentru streaming video live.
  • WiFiClientSecure.h — biblioteca ESP32 pentru conexiuni HTTPS. Necesara pentru comunicarea cu API-ul Telegram.
  • HTTPClient.h — biblioteca ESP32 pentru cereri HTTP/HTTPS. Folosita pentru trimiterea notificarilor pe Telegram.

Element de noutate

Combinarea detectiei prin doua tipuri de senzori (IR + audio) cu feedback diferentiat — sunete diferite pentru fiecare tip de detectie (sunet ascendent pentru IR, descendent pentru audio), transmisie video live prin WiFi si notificari automate pe Telegram cu link la camera, toate integrate intr-un singur sistem embedded accesibil si low-cost.

Functionalitati din laboratoare folosite

  • GPIO — citire senzori IR si microfon prin digitalRead(), control buzzer si trigger ESP32-CAM prin digitalWrite()
  • I2C — comunicare cu LCD 1602 prin modulul PCF8574 la adresa 0x27, folosind biblioteca Wire.h
  • Intreruperi hardware — microfonul foloseste attachInterrupt() pe pinul D3 cu trigger RISING pentru a detecta zgomote scurte pe care digitalRead() in loop le-ar rata
  • PWM — generare tonuri diferentiate prin functia tone() — sunet ascendent (500-2000Hz) pentru IR, descendent (2000-500Hz) pentru audio
  • UART — comunicare seriala pentru debug prin Serial Monitor si programare ESP32-CAM prin FT232RL

Scheletul proiectului

Arduino Nano:
setup():
  - initializeaza pinii (INPUT/OUTPUT)
  - ataseaza intreruperea pentru microfon pe D3 (RISING)
  - initializeaza LCD prin I2C la adresa 0x27
  - afiseaza mesaj initial "Sistem gata!"

loop():
  - citeste senzorul IR prin digitalRead()
  - verifica flag-ul microfonului (setat prin intrerupere)
  - daca e intrus:
      - trimite HIGH pe TRIGGER_PIN (D9) catre ESP32-CAM
      - afiseaza tip intrus pe LCD (IR / AUD / IR+AUD)
      - emite sunet diferentiat prin buzzer PWM
      - reseteaza flag-ul microfonului
  - daca nu e intrus:
      - trimite LOW pe TRIGGER_PIN
      - afiseaza "Sistem gata! / Monitorizare..."

ESP32-CAM:
setup():
  - initializeaza camera OV2640
  - conecteaza la WiFi
  - porneste server web HTTP

loop():
  - gestioneaza cererile HTTP (capture/root)
  - daca TRIGGER_PIN == HIGH:
      - trimite notificare pe Telegram cu link camera
      - asteapta 30 secunde

Cod Arduino Nano (final)

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
#define IR1_PIN 2
#define MIC_PIN 3
#define BUZZER_PIN 8
#define TRIGGER_PIN 9
 
volatile bool micDetectat = false;
 
void micISR() {
  micDetectat = true;
}
 
void setup() {
  Serial.begin(9600);
  pinMode(IR1_PIN, INPUT);
  pinMode(MIC_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(TRIGGER_PIN, OUTPUT);
  digitalWrite(TRIGGER_PIN, LOW);
 
  attachInterrupt(digitalPinToInterrupt(MIC_PIN), micISR, RISING);
 
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Sistem gata!");
  lcd.setCursor(0, 1);
  lcd.print("Monitorizare...");
}
 
void loop() {
  int ir1 = digitalRead(IR1_PIN);
 
  Serial.print("IR1: "); Serial.print(ir1);
  Serial.print(" MIC: "); Serial.println(micDetectat);
 
  bool irDetectat = (ir1 == LOW);
  bool audDetectat = micDetectat;
  bool intrus = (irDetectat || audDetectat);
 
  if (intrus) {
    digitalWrite(TRIGGER_PIN, HIGH);
 
    lcd.setCursor(0, 0);
    lcd.print("!! INTRUS !!    ");
    lcd.setCursor(0, 1);
 
    if (irDetectat && audDetectat) {
      lcd.print("Tip: IR + AUD   ");
    } else if (irDetectat) {
      lcd.print("Tip: IR         ");
    } else if (audDetectat) {
      lcd.print("Tip: AUD        ");
    }
 
    if (audDetectat && !irDetectat) {
      for (int freq = 2000; freq >= 500; freq -= 50) {
        tone(BUZZER_PIN, freq);
        delay(20);
      }
      noTone(BUZZER_PIN);
      delay(500);
    } else {
      for (int freq = 500; freq <= 2000; freq += 50) {
        tone(BUZZER_PIN, freq);
        delay(20);
      }
      noTone(BUZZER_PIN);
      delay(500);
    }
 
    micDetectat = false;
 
  } else {
    digitalWrite(TRIGGER_PIN, LOW);
    noTone(BUZZER_PIN);
    lcd.setCursor(0, 0);
    lcd.print("Sistem gata!    ");
    lcd.setCursor(0, 1);
    lcd.print("Monitorizare... ");
  }
}

Validare functionalitatilor

  • Senzorul IR — testat prin Serial Monitor, confirmat ca da LOW la detectie si HIGH cand nu e nimic in fata
  • Microfonul — testat prin batai din palme, confirmat prin intrerupere RISING pe pinul D3
  • LCD — testat cu mesaje diferite pentru fiecare stare a sistemului
  • Buzzer — testat cu tonuri ascendente (IR) si descendente (AUD)
  • ESP32-CAM — testat cu captura foto accesibila in browser la adresa IP locala
  • Telegram — testat, notificare trimisa automat la detectie cu link la camera

Calibrare senzori

  • Senzorul IR — potentiometrul reglat la distanta de detectie de 5-10cm, ferit de lumina directa care poate cauza detectii false
  • Microfonul — potentiometrul reglat la sensibilitate minima pentru a evita detectiile false cauzate de zgomotul buzzerului sau al mediului ambiant

Optimizari

  • Folosirea intreruperilor hardware pentru microfon in loc de digitalRead() in loop — microfonul da semnal de cateva milisecunde, prea scurt pentru a fi prins in loop cu delay-uri
  • Variabila micDetectat declarata volatile pentru acces corect din intrerupere si din loop
  • Resetarea flag-ului micDetectat = false dupa fiecare alarma pentru a evita alarme repetate
  • Sunete diferentiate pentru IR si AUD pentru a putea identifica sursa alarmei fara a privi LCD-ul
  • Delay de 30 secunde intre notificari Telegram pentru a evita spam-ul
  • Folosirea WiFiClientSecure cu setInsecure() pentru conexiuni HTTPS fara certificat

Demo video

Rezultate Obtinute

  • Detectie intrusi functionala cu timp de raspuns sub 200ms
  • Alarma sonora diferentiata activa simultan cu detectia
  • LCD actualizeaza statusul in timp real
  • ESP32-CAM accesibil prin browser la adresa IP locala
  • Notificari automate pe Telegram la detectie
  • Sistem testat si functional pe breadboard

Concluzii

Proiectul demonstreaza integrarea practica a comunicatiei I2C, GPIO, UART, PWM si intreruperi hardware pe Arduino Nano, impreuna cu un modul WiFi cu camera ESP32-CAM. Sistemul ofera detectie imediata prin senzori IR si microfon, alarma sonora diferentiata, afisare pe LCD si notificari automate pe Telegram — toate componentele unui sistem de securitate functional si accesibil.

Ipoteza initiala a fost confirmata — combinarea senzorilor IR cu camera WiFi ofera o solutie mai completa decat un sistem doar cu senzori, furnizand atat detectie imediata cat si dovada vizuala prin link-ul la camera trimis pe Telegram.

Download

Arhiva proiectului: GitHub Repository

Jurnal

Data Activitate
15.05.2026 Identificarea componentelor si planificarea proiectului.
16.05.2026 Conectare si testare Arduino Nano + LCD 1602 I2C.
17.05.2026 Conectare si calibrare senzori IR, testare detectie.
18.05.2026 Conectare buzzer pasiv, testare alarma sonora.
19.05.2026 Programare si testare ESP32-CAM cu stream video WiFi.
20.05.2026 Integrare microfon cu intreruperi hardware.
21.05.2026 Integrare ESP32-CAM cu Arduino Nano prin GPIO trigger.
22.05.2026 Implementare notificari Telegram prin API HTTPS.
23.05.2026 Testare finala si documentatie.

Bibliografie/Resurse

Resurse Hardware

Resurse Software

pm/prj2026/cezar.zlatea/ion.butura.1779749660.txt.gz · Last modified: 2026/05/26 01:54 by ion.butura
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