This shows you the differences between two versions of the page.
pm:prj2024:fgul:robert.veliscu [2024/05/20 04:07] robert.veliscu |
pm:prj2024:fgul:robert.veliscu [2024/05/26 16:40] (current) robert.veliscu |
||
---|---|---|---|
Line 15: | Line 15: | ||
* daca codul introdus prin tastatura este corect inchide/deschide usa | * daca codul introdus prin tastatura este corect inchide/deschide usa | ||
* de la distanta pe baza comenzilor primite de la server | * de la distanta pe baza comenzilor primite de la server | ||
+ | |||
+ | {{:pm:prj2024:fgul:schema_bloc_veliscu.jpg?300|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 30: | Line 32: | ||
{{:pm:prj2024:fgul:schema_harware_veliscu.png|}} | {{:pm:prj2024:fgul:schema_harware_veliscu.png|}} | ||
+ | |||
+ | 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 ===== | ===== 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** | ||
- | <note tip> | + | Biblioteca Keypad este utilizata pentru a interactiona cu o tastatura matriciala (keypad). |
- | Descrierea codului aplicaţiei (firmware): | + | Faciliteaza citirea apasarilor de taste si maparea acestora la caractere corespunzatoare. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
- | ===== Rezultate Obţinute ===== | + | **Biblioteca Servo.h** |
- | <note tip> | + | Biblioteca Servo permite controlul usor al servomotoarelor. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Ofera functii pentru atasarea unui servomotor la un pin specific si pentru setarea pozitiei acestuia. |
- | </note> | + | |
- | ===== Concluzii ===== | + | **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. | ||
- | ===== Download ===== | + | Senzorul de apa detecteaza prezenta apei pe podea. Daca se detecteaza apa, servomotorul deschide usa pentru a preveni acumularea apei in interiorul casei. |
- | <note warning> | + | 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. |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | 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**. | + | 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). |
- | </note> | + | |
+ | 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 | ||
+ | {{:pm:prj2024:fgul:veliscu_robert_valentin_poza1.jpeg?300|}} | ||
+ | {{ :pm:prj2024:fgul:veliscu_robert_valentin_poza2.jpeg?300|}} | ||
+ | ===== 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 ===== | ||
+ | {{:pm:prj2024:fgul:veliscu_robert_valentin_341c4_home_security_system.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 65: | Line 150: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | + | [[https://www.electronicwings.com/arduino/esp8266-wifi-module-interfacing-with-arduino-uno | Interfatare Arduino Esp8266 1]] \\ | |
- | <note> | + | [[https://www.instructables.com/Using-ESP-01-and-Arduino-UNO/ | Interfatare Arduino Esp8266 2]] \\ |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | [[https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/ | AT Commands list]] \\ |
- | </note> | + | [[https://circuitdigest.com/microcontroller-projects/interfacing-mq5-gas-sensor-with-arduino | Senzor gaze MQ5]] \\ |
+ | [[https://rtvelectronis.ro/2021/01/26/arduino-senzor-de-ploaie/ | Senzor picaturi]] \\ | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||