Home security system

Veliscu Robert-Valentin 341C4

Introducere

Proiectul facut de mine va implementa un sistem de securitate pentru casa, minimal si acesibil. Scopul acestui proiect este de a putea monitoriza de la departare casa.

Descriere generală

Sistemul va avea un senzor de gaz, de detectie a apei, pentru detectia miscarii, o tastatura numerica pentru un cod de activare/dezactivare, un motor pentru actionarea usii si un modul wifi pentru comunicarea cu un server unde putem monitoriza casa.

Se vor citii datele senzorilor si apoi se vor trimite prin serial la modulul wifi requesturi HTTP (create pe arduino) pe care le va trimite la un server scris in node js/python si le va afisa intr-o pagina HTML. Motorul servo va fi actionat in momentele:

  • detectarii gazului - deschide usa
  • detectarii prezentei - inchide usa (daca nu e deja deschisa)
  • daca codul introdus prin tastatura este corect inchide/deschide usa
  • de la distanta pe baza comenzilor primite de la server

Hardware Design

Lista de piese:

  • Arduino UNO
  • Senzor detectie metan MQ-5
  • Senzor picaturi apa
  • Senzor miscare PIR HC-SR501
  • Tastatura numerica
  • Motor servo
  • Modul esp8266

Schema hardware realizata cu Cirkit Designer:

Alegerea pinilor: Senzor detectie metan

  • Vcc
  • Gnd
  • Pin analog pentru citirea datelor - A0

Senzor picaturi apa

  • Vcc
  • Gnd
  • Pin analog pentru citirea datelor - A1

Senzor miscare

  • Vcc
  • Gnd
  • Pin digital pentru semnalarea prezentei - 11

Servo motor

  • Vcc
  • Gnd
  • Pin semnal capabil de PWM - 10

Tastatura numerica

  • Necestia 8 pini digitali: 2-9

Modul Wifi esp8266

  • Vcc - 3.3V
  • RST - 3.3V
  • CH_PD - 3.3V
  • Gnd
  • Txd - Pinul digital 0 (Rx Arduino)
  • Rxd - Divizor de tensiune pe breadboard cu o rezistenta de 2Kohm intre acest pin si Gnd si o rezistenta de 1Kohm intre acest pin si pinul digital 1 (Tx Arduino), necesar datorita faptului ca acest modul functioneaza la 3.3V iar pinul Tx transmite cu 5V

Software Design

Pentru dezvoltarea proiectului am folosit platform.io. In cadrul proiectului, mai multe biblioteci sunt utilizate pentru a facilita interactiunea cu componentele hardware.

Biblioteca Keypad.h

Biblioteca Keypad este utilizata pentru a interactiona cu o tastatura matriciala (keypad). Faciliteaza citirea apasarilor de taste si maparea acestora la caractere corespunzatoare.

Biblioteca Servo.h

Biblioteca Servo permite controlul usor al servomotoarelor. Ofera functii pentru atasarea unui servomotor la un pin specific si pentru setarea pozitiei acestuia.

Prezentare generala
Senzorul de gaz detecteaza prezenta gazelor periculoase in aer. Daca nivelul de gaz depaseste un anumit prag, servomotorul deschide usa pentru a permite ventilarea.

Senzorul de apa detecteaza prezenta apei pe podea. Daca se detecteaza apa, servomotorul deschide usa pentru a preveni acumularea apei in interiorul casei.

Utilizatorul poate introduce un cod de securitate folosind keypad-ul pentru a bloca sau debloca sistemul. Daca sistemul este deblocat si se detecteaza prezenta unei persoane (prin senzorul de prezenta), usa se va deschide automat.

Sistemul trimite notificari catre un server web in momentul in care detecteaza schimbari de stare (de exemplu, scurgeri de gaze, inundatie, prezenta detectata, usa deschisa/inchisa).

Utilizatorul poate vizualiza starea sistemului si poate controla deschiderea usii si blocarea/deblocarea sistemului printr-o interfata web. Aceasta interfata web permite monitorizarea in timp real si controlul sistemului de la distanta.

Detalierea functiilor create:

Arduino

setup()

  • Initializeaza comunicarea seriala pentru a permite comunicarea cu modulul WiFi ESP8266.
  • Configureaza pinii de intrare pentru senzorii de gaz, apa si prezenta.
  • Ataseaza servomotorul la pinul specificat si il seteaza initial in pozitia inchisa.
  • Realizeaza conexiunea la reteaua WiFi folosind functia connectToWiFi().

loop()

  • Monitorizeaza valorile senzorilor de gaz, apa si prezenta.
  • Citeste caracterele introduse prin keypad si le introduce intr-un buffer; atunci cand utilizatorul apasa # sau *, codul introdus este verificat cu parola prestabilita. Daca codul este corect, sistemul se blocheaza/deblocheaza.
  • Actioneaza servomotorul pentru a deschide usa daca se detecteaza o scurgere de gaze sau o inundatie, indiferent de starea sistemului (blocat/deblocat). Daca sistemul este deblocat si se detecteaza prezenta unei persoane, usa se deschide. Servomotorul inchide usa daca nu se detecteaza gaze sau apa si sistemul este blocat sau nu se detecteaza prezenta atunci cand sistemul este deblocat.
  • Trimite si primeste cereri HTTP pentru a sincroniza starea sistemului cu serverul web.

connectToWiFi()

  • Trimite comenzi AT catre modulul ESP8266 pentru a seta modul WiFi si a se conecta la reteaua WiFi.

sendPostRequest(int gaz, int apa, int prez, int opened, int locked)

  • Formateaza datele senzorilor si starea sistemului intr-un sir de caractere.
  • Deschide o conexiune TCP cu serverul.
  • Construieste cererea HTTP POST si o trimite catre serverul specificat.
  • Inchide conexiunea TCP dupa trimiterea cererii.

sendGetRequest()

  • La fiecare interval prestabilit, aceasta functie este apelata pentru a verifica starea actuala de pe server.
  • Construieste si trimite o cerere HTTP GET catre server pentru a obtine starea actuala a sistemului (deschis/inchis, blocat/deblocat).
  • Primeste si proceseaza raspunsul serverului, actualizand variabilele locale in functie de raspuns. Daca se deschide usa prin interfata web, aceasta se va deschide pentru o perioada de timp, apoi intorcandu-se la starea initiala.

Interfata Web

  • Foloseste WebSocket pentru a primi actualizari in timp real de la server despre starea senzorilor si a sistemului.
  • Permite utilizatorului sa deschida/inchida usa si sa armeze/dezarmeze sistemul prin intermediul butoanelor de pe pagina.
  • Prezinta starea actuala a senzorilor (gaz, apa, prezenta), starea usii (deschis/inchis) si a sistemului (armat/dezarmat).

Server Node.js

  • Serverul Express.js serveste pagina HTML care permite utilizatorului sa interactioneze cu sistemul.
  • Serverul primeste cereri POST de la Arduino care contin datele senzorilor si starea sistemului.
  • Mentine conexiuni WebSocket deschise cu clientul web pentru a trimite actualizari in timp real.
  • Primeste mesaje prin WebSocket de la interfata web si modifica variabilele ce retin starea sistemului pentru a fi preluate de Arduino, astfel permitand utilizatorului sa faca modificari de la distanta.
  • Stocheaza starea curenta a senzorilor si a sistemului si o trimite catre toti clientii conectati.

Rezultate Obţinute

  • Monitorizare eficienta a mediului - detectia rapida a prezentei metanului in aer sau a apei pe podea si actionarea usii pentru evitarea situatiilor periculoase
  • Controlul accesului si securitatii - implementarea unui sistem de armare/dezarmare asigurand un grad de securitate mai sporit importiva intrusilor dar si a unui sistem de actionare automata a usii pentru asigurarea unui grad mai mare de comfort
  • Comunicare si notificari in timp real - ofera utilizatorilor o modalitate de monitorizare si control asupra casei de la distanta
  • Usurinta in utilizare - interfata web este minimala, permitand utilizatorilor sa inteleaga si sa controleze sistemul fara dificultati majore

Concluzii

Acest proiect de securitate pentru locuinte ofera o solutie integrata pentru monitorizarea si gestionarea situatiilor de urgenta, asigurand astfel siguranta si confortul utilizatorului. Sistemul este usor de utilizat si permite un control eficient prin intermediul interfetei web, oferind in acelasi timp notificari in timp real despre starea locuintei.

Download

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

pm/prj2024/fgul/robert.veliscu.txt · Last modified: 2024/05/26 16:40 by robert.veliscu
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