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.

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.

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 - Senzori IR x2: detecteaza obstacole/persoane in raza de 5-25cm, reglabila prin potentiometru. Conectati pe pinii D2 si D3.
  • Modulul de alarma - Buzzer pasiv: emite ton de alarma la 1000Hz prin functia tone() cand se detecteaza intrusi.
  • Modulul de afisare - LCD 1602 I2C: afiseaza statusul sistemului prin comunicare I2C la adresa 0x27.
  • Modulul video - ESP32-CAM: ruleaza un server web cu stream video live accesibil prin browser la adresa IP locala.
  • Modulul de detectie sunet - Microfon MH: detecteaza zgomote suspecte, reglabil prin potentiometru.

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, IR2 Senzori IR de proximitate MH-B 2
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 1

Conexiuni electrice - Arduino Nano

Pin Arduino Nano Tip Conectat la
5V Power VCC - LCD I2C, VCC - IR1, VCC - IR2, VCC - Microfon
GND GND GND - LCD I2C, GND - IR1, GND - IR2, GND - Microfon, GND - Buzzer
A4 (SDA) I2C SDA SDA - Modul I2C LCD
A5 (SCL) I2C SCL SCL - Modul I2C LCD
D2 GPIO INPUT OUT - Senzor IR 1
D3 GPIO INPUT OUT - Senzor IR 2
D7 GPIO INPUT OUT - Senzor microfon
D8 GPIO OUTPUT Pin + Buzzer pasiv

Conexiuni electrice - ESP32-CAM

Pin ESP32-CAM Conectat la
5V VCC - FT232RL
GND GND - FT232RL
U0R (RX) TX - FT232RL
U0T (TX) RX - FT232RL
IO0 GND (doar la programare)

Detalii module hardware

Senzorii IR MH-B

Senzorii IR folosesc 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: Senzorii sunt sensibili la lumina ambianta intensa. Se recomanda pozitionarea lor 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 firmware CameraWebServer care expune un server HTTP pe portul 80. Camera OV2640 captureaza imagini JPEG transmise in streaming. Modulul se conecteaza automat la reteaua WiFi configurata si expune interfata web la adresa IP alocata de router (banda 2.4GHz obligatorie).

Software Design

Stadiul actual al implementarii software

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.

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) si transmisie video live prin WiFi, 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

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..."

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 streaming video live accesibil in browser la adresa IP locala

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

Demo video

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.

Bibliografie/Resurse

Resurse Hardware

Resurse Software

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