This is an old revision of the document!
Sistem antifurt inteligent pentru sertar
Descriere generală
Proiectul constă într‑un sistem antifurt inteligent montat în interiorul unui sertar. Sistemul monitorizează dacă sertarul este deschis sau mişcat şi, în cazul unui acces neautorizat, activează o alarmă sonoră şi transmite o notificare prin Bluetooth către un PC sau un telefon. Nu există ecran – controlul se face exclusiv prin comenzi Bluetooth de tip ARM, DISARM, STATUS şi CHANGE\_PIN urmate de un cod PIN.
Motivare și utilitate
Sertarele cu documente confidenţiale sau obiecte de valoare sunt vulnerabile atunci când rămân nesupravegheate. Un sistem antifurt discret, fără sunete false şi cu control securizat, avertizează proprietarul imediat când cineva încearcă să deschidă sertarul. Utilizarea unei plăci ESP32 cu Bluetooth asigură cost redus, flexibilitate şi posibilitatea de integrare cu un PC sau cu alte dispozitive mobile. Accelerometrul detectează vibraţiile de deschidere, iar fotorezistorii (LDR) detectează pătrunderea luminii în sertar; combinaţia reduce alarmările false.
Arhitectură sistem
Sistemul se bazează pe un microcontroler ESP32 care controlează toţi senzorii şi actuatorul. Placa oferă conectivitate Bluetooth clasică, convertor analog–digital (ADC) pentru LDR‑uri, canale PWM pentru buzzer şi magistrală I²C pentru accelerometru. Structura poate fi văzută ca o mașină cu trei stări: `DISARMED`, `ARMED` şi `ALARM`.
Diagramă bloc:
Descriere hardware
ESP32 Wireless Development Board – microcontroler cu 4 MB memorie flash şi Bluetooth clasic; rulează codul de control şi comunică prin I²C, ADC şi PWM. Placa se alimentează prin micro‑USB de la un laptop sau adaptor de 5 V şi este compatibilă cu Arduino IDE.
Accelerometru digital LIS3DH – senzor triaxial conectat la magistrala I²C. Magistrala utilizează două linii, SDA (date) şi SCL (ceas); ESP32 funcţionează ca master şi iniţiază comunicarea. Accelerometrul detectează vibraţii şi mişcări ale sertarului.
Senzori de lumină (3 × LDR) – fotorezistori care îşi modifică rezistenţa în funcţie de lumina incidentă. Formați un divizor de tensiune împreună cu rezistențe de 10 kΩ; tensiunea analogică rezultată se citește cu ADC‑ul ESP32 (rezoluţie 10 biţi). Setul de prototipare include doi fotorezistori, iar un al treilea este achiziţionat separat.
Buzzer pasiv 3 V/3,3 V – mic difuzor capabil să redea tonuri când este alimentat cu un semnal PWM. Un tranzistor NPN 2N2222 se folosește ca driver pentru a prelua curentul buzzerului şi a proteja pinul ESP32.
Tranzistor NPN 2N2222 – este comandat printr‑un rezistor de bază (~1 kΩ) şi permite comanda sigură a buzzerului la 3,3 V.
Kit prototipare – conţine breadboard de 400 puncte, set de rezistenţe (10 kΩ, 1 kΩ etc.), doi LDR‑uri şi cabluri Dupont. Permite asamblarea fără lipire.
Cablu micro‑USB – pentru alimentarea plăcii ESP32 de la un laptop/încărcător.
Schema de conectare
Alimentare: Conectează cablul micro‑USB la portul plăcii ESP32. Placa foloseşte regulatorul intern pentru a furniza 3,3 V către senzori.
Accelerometru LIS3DH: VCC ↔ 3V3, GND ↔ GND, SDA ↔ GPIO21, SCL ↔ GPIO22. Dacă modulul are pini de adresă/întrerupere, lăsaţi‑i neconectaţi sau legaţi‑i conform documentaţiei.
LDR‑uri: Pentru fiecare LDR formaţi un divizor de tensiune: un capăt al LDR‑ului la 3,3 V, celălalt capăt la nodul de intrare analogică; o rezistenţă de 10 kΩ între nod şi GND; conectaţi nodul la un pin ADC (`GPIO34`, `GPIO35`, `GPIO32`).
Buzzer + tranzistor: Emiţătorul tranzistorului 2N2222 ↔ GND, colectorul ↔ un capăt al buzzerului, celălalt capăt al buzzerului ↔ 3,3 V; baza tranzistorului ↔ rezistor 1 kΩ ↔ pin PWM (`GPIO25`).
Bluetooth: Comunicarea cu PC/telefon se face prin modulul Bluetooth integrat; nu necesită conexiuni fizice suplimentare.
Flux de funcționare
Sistemul se comportă ca o maşină de stări cu trei stări principale:
DISARMED – Sistemul este dezarmat. Senzorii sunt monitorizaţi dar valorile lor nu declanşează alarma. Comenzile permise: `ARM <PIN>`, `STATUS`, `CHANGE_PIN`.
ARMED – După introducerea PIN‑ului corect, sistemul trece în starea ARMED. Senzorii sunt monitorizaţi în buclă. Dacă accelerometrul detectează vibraţii peste un prag sau dacă media/votul majoritar al valorilor de la cele trei LDR‑uri depăşeşte un prag luminos, sistemul trece la starea ALARM.
ALARM – Buzzerul este activat prin PWM iar prin Bluetooth se trimite o notificare (`ALARM`). Sistemul rămâne în această stare până când este dezarmat (`DISARM <PIN>`). Pentru a preveni exploatarea, comanda `DISARM` verifică PIN‑ul; la mai multe încercări greşite, se poate introduce o întârziere.
Diagramă mașină de stări:
Pseudocod
// variabile globale
int pinLDR[3] = {34, 35, 32}; // pini ADC pentru cei 3 LDR
const int buzzerPin = 25; // pin PWM pentru buzzer
const int transistorBase = 25; // acelaşi ca buzzerPin
bool armed = false;
bool alarmState = false;
String storedPIN = "1234";
void setup() {
Serial.begin(9600); // debug local (opţional)
initBluetooth(); // iniţializează modulul Bluetooth
initAccelerometer(); // configurare LIS3DH via I²C
pinMode(transistorBase, OUTPUT);
// se configurează ADC‑urile implicit pe ESP32
}
void loop() {
checkBluetoothCommands(); // citeşte comenzile ARM/DISARM/STATUS/etc.
if (!armed) {
delay(100);
return;
}
bool motionDetected = readAccelerometer() > motionThreshold;
float ldrValues[3];
for (int i = 0; i < 3; i++) {
ldrValues[i] = analogRead(pinLDR[i]);
}
bool lightDetected = (computeMajority(ldrValues) > lightThreshold);
if (motionDetected || lightDetected) {
alarmState = true;
sendBluetoothNotification("ALARM");
activateBuzzer();
}
}
void checkBluetoothCommands() {
if (availableBluetooth()) {
String cmd = readBluetoothLine();
if (cmd.startsWith("ARM")) {
String pin = extractPin(cmd);
if (pin == storedPIN) {
armed = true;
alarmState = false;
sendBluetoothNotification("ARMED");
}
} else if (cmd.startsWith("DISARM")) {
String pin = extractPin(cmd);
if (pin == storedPIN) {
armed = false;
deactivateBuzzer();
sendBluetoothNotification("DISARMED");
}
} else if (cmd.startsWith("STATUS")) {
sendBluetoothNotification(armed ? (alarmState ? "ALARM" : "ARMED") : "DISARMED");
} else if (cmd.startsWith("CHANGE_PIN")) {
String newPin = extractPin(cmd);
storedPIN = newPin;
sendBluetoothNotification("PIN_CHANGED");
}
}
}
void activateBuzzer() {
ledcAttachPin(buzzerPin, 0);
ledcSetup(0, 2000, 8);
ledcWrite(0, 128);
}
void deactivateBuzzer() {
ledcWrite(0, 0);
}
Utilizarea laboratoarelor PM
UART/Bluetooth (Lab 1) – Protocolul Bluetooth clasic este implementat în ESP32 ca o interfaţă serială (UART) radio. Comunicarea full‑duplex foloseşte două canale (Tx şi Rx) pentru a trimite şi recepţiona comenzi.
PWM (Lab 3) – Buzzerul pasiv necesită un semnal PWM. PWM variază raportul dintre timpul înalt şi scăzut al unui semnal digital, oferind control asupra puterii medii aplicate unui dispozitiv.
ADC (Lab 4) – LDR‑urile furnizează tensiuni analogice ce trebuie convertite în valori digitale. Rezoluţia ADC‑ului de 10 biţi dă un pas de cuantizare de aproximativ 3,2 mV, ceea ce ajută la calibrarea pragurilor de lumină.
I2C (Lab 6) – Accelerometrul LIS3DH comunică prin I²C. Magistrala I²C foloseşte două linii (SDA/SCL) controlate de master; semnalul de ceas este generat de master iar linia de date este partajată. Fiecare dispozitiv are o adresă de 7 biţi.
Probleme posibile și soluții
Alarmări false datorate vibraţiilor ambientale – Pragurile pentru accelerometru şi LDR trebuie calibrate. Montarea accelerometrului pe o suprafaţă stabilă şi filtrarea digitală (medie mobilă) reduc influenţa zgomotului.
Senzorii de lumină pot fi acoperiţi de obiecte – Distanţa dintre LDR şi capacul sertarului trebuie aleasă astfel încât lumina să fie detectată chiar dacă unul dintre senzori este blocat. Algoritmul de vot 2 din 3 previne declanşarea falsă.
Interferenţe Bluetooth – Utilizarea unui PIN unic şi confirmarea comenzilor previne accesul neautorizat. Dacă apar interferenţe, se poate reduce distanţa de comunicare sau se pot folosi profile BLE cu criptare.
Consum energetic – În cazul alimentării din baterie, modulul ESP32 poate intra în mod sleep între citiri pentru a reduce consumul. În această aplicaţie, alimentarea USB facilitează consumul continuu.
Îmbunătățiri viitoare
Implementarea unei aplicaţii mobile (Android/iOS) pentru control şi notificări push, folosind Bluetooth Low Energy.
Adăugarea unui senzor magnetic (reed) pentru detecţia deschiderii sertarului fără vibraţii; poate reduce alarmările false.
Înregistrarea datelor de acces (timestamp) pe un card micro‑SD sau trimiterea lor pe un server web prin Wi‑Fi, pentru istoric şi analiză.
Integrarea cu un sistem de smart‑home (Home Assistant) pentru notificări centralizate şi scenarii automatizate.
Bibliografie și resurse
Fișele de laborator pentru UART, PWM, ADC şi I²C din cursul *Proiectarea cu Microprocesoare* – pentru detalii despre protocoale şi utilizare.
Documentaţia modulelor utilizate (ESP32, LIS3DH, LDR, buzzer) – pentru parametri electrici şi detalii de conectare.
Verificare finală
Corectitudinea listei de componente: placă de dezvoltare ESP32, modul LIS3DH, trei LDR‑uri, buzzer pasiv, tranzistor 2N2222, rezistenţe (10 kΩ, 1 kΩ), breadboard şi cabluri, plus cablu micro‑USB. Kitul de prototipare include majoritatea componentelor pasive, iar al treilea LDR se achiziţionează separat.
Compatibilitatea hardware: Toate componentele funcţionează la 3,3 V; ESP32 oferă suficiente intrări ADC, magistrală I²C şi canale PWM; tranzistorul 2N2222 permite comanda sigură a buzzerului.
Realizabilitatea proiectului: Sistemul se asamblează pe breadboard fără lipire. Costul total estimat (~114 lei) se încadrează în bugetul de 150–200 lei. Codul se scrie uşor în Arduino IDE cu biblioteci standard.
Riscuri și atenționări: Componentele trebuie manevrate cu grijă. Ajustarea pragurilor pentru senzori este esenţială pentru a evita alarmările false. Sertarul trebuie ferit de vibraţii puternice externe.