This is an old revision of the document!
Proiectul este un sistem de securitate smart care utilizează senzori ultrasonici și PIR pentru a detecta mișcarea într-o zonă monitorizată. Odată ce mișcarea este detectată, un microcontroller activează un ecran LCD pentru a afișa un mesaj de avertizare și pornește un semnal sonor deranjant. Alarma poate fi activată/dezactivată din telefon prin intermediul unui modul bluetooth.
Scopul proiectului este de a crea o alarmă care să ofere proprietarului posibilitatea de a monitoriza și proteja zona în timp real, oferind informații relevante despre evenimentele detectate.
Senzorul Ultrasonic detectează obiectele sau persoanele prin emisia de unde sonore și măsurarea timpului de întoarcere a acestora. Senzorul PIR HC-SR501 detectează mișcarea prin schimbările de radiații infraroșii emise de obiectele în mișcare. Microcontrollerul preia datele de la senzori, controlează afișajul LCD și gestionarea comunicațiilor Bluetooth/Wi-Fi. Ecranul LCD afișează informații despre starea sistemului și evenimentele detectate. Modul Bluetooth permite proprietarului să activeze sau să dezactiveze oricând alarma prin intermediul telefonului.
Laboratoare folosite:
Elemente de noutate ale proiectului
Fata de alte proiecte asemanatoare, am folosit mai multi senzori de acelasi tip, sau diferiti si am creat o macheta personalizata (o situatie reala) pentru o casa pe un singur nivel, cu doua camere si un hol. Am impartit senzorii astfel incat fiecare dintre ei sa detecteze miscarea pentru o anumita arie.
Listă de piese:
Schema electrică
Calibrarea senzorilor și a modulelor
În cadrul proiectului am folosit 3 senzori, doi de mișcare și unul de proximitate. Pentru a folosi cum trebuie senzorii a trebuit să îi reglez cu ajutorul potensiometrelor existe pe ei. În plus la senzorul de proximitate am făcut câteva modificări asupra valorilor citite direct în cod.
- Senzorii PIR HC-SR501: Senzorul poate înregistra mișcarea obiectelor într-o rază de pâna la 6 metrii, cu un unghi de pâna la 110 grade. Astfel că amplasat undeva deasupra, spre exemplu pe tavanul încăperii, senzorul poate să înregistreze mișcarea din întreaga încăpere (fie ea în formă dreptunghiulară, pătratică sau circulară). Pe partea din spate a senzorului se află două potensiometre, unul pentru reglarea sensibilității acestuia la mișcare și altul pentru timpul de așteptare până la următoarea depistare a mișcărilor. Am modificat puțin valoarea de delay întrucât era setată pe la aproximativ 3 minute, iar senzorul depista foarte greu mișcările. Acum senzorul este setat să citească o nouă valoare a mișcării la fiecare 0.3 secunde. (Intervalul de timp de hold este 0.3 secunde, 5 minute)
- Senzorul de proximitate: Acesta citește încontinuu valori până la cel mai apropiat obstacol din fața lui, desigur dacă acesta există pe o distanță cuprinsă între 2 centimetrii și 4 metrii. Modificările aduse asupra acestui senzor sunt doar pentru normalizarea valorilor citite, pentru a putea face verificările mai ușor.
- Ecranul LCD: Pentru acest ecran a fost nevoie să introduc o nouă bibliotecă în cod și să depistez cu ajutorul unui cod găsit pe internet adresa modului (codul poate fi găsit aici: https://playground.arduino.cc/Main/I2cScanner). Apoi a trebuit să ajustez potensiometrul de pe partea anterioară a ecranului pentru a se afișa mesajele transmise către acesta.
- Modulul Bluetooth: Pentru acest modul am schimbat sursa de alimentare, pentru a nu îl arde, de la 5v la 3.3v și am instalat pe telefon o aplicație (Bluetooth Serial Terminal) pentru a mă putea conecta la el. A fost nevoie și de adăugarea în cod a unei noi biblioteci specifică modulului.
Poze cu circuitul final
Circuitul conectat la alimentare, dar fără să fie pornită alarma (se poate observa că ledurile sunt stinse, iar senzorii nu vor detecta niciun fel de mișcare).
Senzorul 1, amplasat în prima cameră detectează mișcare:
Senzorul 2, amplasat în a doua cameră detectează mișcare:
Ambii senzori, din ambele camere detectează mișcare:
Mediu de dezvoltare
Pentru proiectarea placutei de Arduino Uno R3 am folosit Arduino IDE, integrand in cod diverse librarii si functii ale acestora.
Librarii
Functii implementate
Initializarea comunicatiei seriale: Serial.begin(9600)
Initializarea ecranului LCD: lcd.init() | lcd.backlight()
Initializarea comunicatiei cu modulul Bluetooth: HM10.begin(9600)
Ascultarea portului serial HM10:
HM10.listen(); while (HM10.available() > 0) appData = HM10.read(); inData = String(appData); Serial.write(appData); if (Serial.available()) delay(10); HM10.write(Serial.read());
Controlul stării alarmei:
if (inData == "0") { Serial.println("Alarm OFF"); digitalWrite(13, LOW); if (nr == 0) { refresh(); digitalWrite(ledPin, LOW); nr = 1; } } while (inData == "1") { nr = 0; Serial.println("Alarm ON"); digitalWrite(13, HIGH); val = digitalRead(pirPin); val_cam2 = digitalRead(pirPinCam2); ... }
Măsurarea distanței folosind senzorul ultrasonic
digitalWrite(TRIGPIN, LOW); delayMicroseconds(2); digitalWrite(TRIGPIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGPIN, LOW); float distance = pulseIn(ECHOPIN, HIGH) / 58; Serial.print("Door distance: "); Serial.println(distance);
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.