Ce trebuie "sa faca"?
Echipa nr. 1 va verfica daca in camera exista o persoana. Echipa nr.2 va verifica daca in camera exista scurgeri de gaze. Daca cele doua conditii se indeplinesc simultan, releul echipei nr 1 se va inchide. Comunicatia dintre cele doua proiecte se va realiza prin Wi-Fi.
Cum va face?
Vom folosi un senzor de prezenta PIR pentru captarea prezentei unei persoane in camera. Senzorul are iesire digitala, deci daca acesta va detecta persoane, iesirea lui va fii "1 logic", iar daca nu iesirea va fii "0 logic". Aceasta valoare va fi preluata de catre microcontroller folosind un PIN, setat pe modul INPUT. O data la o secunda, se va salva rezultatul obtinut de catre senzorul PIR.
Pentru comunicatia dintre cele doua microcontrolere ATMega 164 vom folosi doua module Wi-Fi ESP8266. Pe aceastea le programam folosind Arduino IDE si de asemenea, vom mai folosi aditional o placa Arduino. Ea are rolul de suport pentru incarcarea codului sursa pe modulul ESP8266 dar si ca alimentare pentru acest modul, care suporta alimentare numai de 3.3V.
In acest mod, echipa noastra va functiona pe post de server (access point - AP), iar echipa nr. 2 pe post de client. Pentru comunicarea prin Wi-Fi, se va folosi protocolul de internet UDP pentru transmiterea si primirea de packete. Echipa nr. 2 va transmite permanent catree chipa nr. 1 starea curenta a gazului din incapere. Daca in incapere se afla gaz, echipa nr. 2 va transmite un pachet ce contine "1", iar daca in incapere nu se afla gaz, va transmite "0". Echipa nr. 1 va receptiona o data la o secunda aceasta valoare primita printr-un pachet UDP si va fi trimisa la un PIN al microcontrolerului.
Daca concomitent se indeplinesc ambele conditii (exista gaz in incapere - 1 logic si exista o persoana in incapere - 1 logic), releul va fi actionat printr-un PORT al microcontrolerului, deci se va inchide. Dupa ce cel putin una din cele doua conditii nu se mai indeplineste (ori nu mai este nimeni in camera, ori nu mai este semnalata prezenta gazului), releul se va deschide din nou.
Pentru semnalizarea vizibila ca exista gaz in incapere (informatie primita de la echipa nr. 2), se va aprinde ledul cel verde, care este lipit pe placa.
Pentru a semnaliza vizibil functionarea releului, am conectat un led rosu printr-o rezistenta de 470 Ohmi la o baterie de 9V. Astfel, circuitul va fi inchis si ledul va lumina doar cand releul este inchis, iar atunci cand releul este deschis, circuitul va fii deschis si el, iar ledul stins.
Aditional, am adaugat un display LCD 16x2 pentru o buna vizualizare a rezultatelor si masuratorilor.
Schema electrica completa a proiectului in OrCAD
fig 3 - Schema electrica a circuitului
Aici se regasesc absolut toate componentele utilizate pentru realizarea proiectului.
Organigrama proiectului
Resursele procesorului necesare realizarii proiectului
Configuratia PIN-ilor/PORT-urilor
PB4-PB7 - pinii digitali folositi de catre LCD 16x2
RST - butonul de reset al microcontrollerului
XTAL1, XTAL2 - pinii la care este legat oscilatorul cu cuart
PD4 (input) - pin digital la care este legat butonul aditional SW3, printr-o rezistenta de pull-down
PD5 (input) - pin digital la care este legat butonul SW1 (user), cu rezisenta de pull-up activata din soft
PD6 (output) - port digital la care este legat led-ul verde de pe placa
PC4- pinul la care este conectat RST-ul display-ului LCD
PC3-pinul la care este conectat pinul de Read/Write al display-ului LCD
PC2 - pinul la care este conectat pinul de Enable al display-ului LCD
PC1 (input) - pinul la care este conectat GPIO2 al ESP-ului - prin aceasta conexiune avem comunicatie intre ESP8266 si microcontroller si primim date de la echipa nr. 2
PC0 (output) - port-ul la care este conectat releu - are rolul de a comanda releul
PD7 (input) - pinul care primeste informatia transmisa de senzorul de prezenta
Restul pinilor nementionati sunt neconectati sau alimentari/gnd.
Timere
Pentru realizarea proiectului am folosit timerul "timer1" al microprocesorului AVR ATMega164A.
Acest timer este setat astfel incat la fiecare 1 secunda sa genereze o intrerupere. Aceasta intrerupere o vom folosi pentru a face toate actiunile (verificare informatii primite de la senzori / procesari de infromatie / trimitere de informatii catre senzori si module) necesare bunei functionari ale proiectului.
Resursele utilizate - compilare
Suntem siguri ca acest proiect se putea realiza in alte nenumarate de moduri.
Modul pe care l-am ales noi sa-l folosim ni s-a parut cel mai usor de implementat si cel mai rapid in acelasi timp.
Componentele folosite au fost minimale, iar cele aditionale, practic doar LCD-ul 16x2, pe langa componentele primite de la facultate.
Probleme intampinate:
-> Releu nefunctional dupa o perioada foarte lunga de functionare corecta => A necesitat schimbarea acestuia. Cel mai probabil cauza a fost o manipulare defectuasa a acestuia.
https://siytek.com/esp8266-udp-send-receive/
https://siytek.com/communication-between-two-esp8266/
https://www.electronicwings.com/avr-atmega/lcd16x2-interfacing-with-atmega16-32
https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/
https://www.elprocus.com/5v-relay-module/
https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/how-pirs-work
https://www.robofun.ro/wireless/esp8266-wifi.html
http://ham.elcom.pub.ro/proiect2/
https://eepower.com/resistor-guide/resistor-applications/pull-up-resistor-pull-down-resistor/#