This shows you the differences between two versions of the page.
pm:prj2023:gpatru:sandra.pirvanescu [2023/05/29 14:37] sandra.pirvanescu [Software Design] |
pm:prj2023:gpatru:sandra.pirvanescu [2023/05/31 11:12] (current) sandra.pirvanescu [Rezultate Obţinute] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Intelligent irrigation system ====== | ====== Intelligent irrigation system ====== | ||
<note tip> | <note tip> | ||
- | Nume: Pirvanescu Sandra-Ioana | + | Nume: Pîrvănescu Sandra-Ioana |
Grupa: 331CA | Grupa: 331CA | ||
Line 10: | Line 10: | ||
Proiectul constă într-un sistem de irigare ce poate fi comandat prin Bluetooth. | Proiectul constă într-un sistem de irigare ce poate fi comandat prin Bluetooth. | ||
Acesta udă plantele dacă anumite condiții din mediul înconjurător se respectă. | Acesta udă plantele dacă anumite condiții din mediul înconjurător se respectă. | ||
+ | |||
Ideea a pornit de la faptul că, în momentul în care eu împreună cu familia mea plecăm în vacanță, trebuie să rugăm un prieten să vină să ne ude plantele. | Ideea a pornit de la faptul că, în momentul în care eu împreună cu familia mea plecăm în vacanță, trebuie să rugăm un prieten să vină să ne ude plantele. | ||
Pentru acest lucru, am venit cu ideea de a crea un sistem de irigare inteligent, simplu, care poate fi extins. | Pentru acest lucru, am venit cu ideea de a crea un sistem de irigare inteligent, simplu, care poate fi extins. | ||
Line 21: | Line 22: | ||
Proiectul folosește 2 Arduino Uno R3 ce vor comunica prin intermediul SPI. | Proiectul folosește 2 Arduino Uno R3 ce vor comunica prin intermediul SPI. | ||
+ | |||
Modulul Bluetooth va prelua comenzi de la utilizator și le va transmite către Arduino. | Modulul Bluetooth va prelua comenzi de la utilizator și le va transmite către Arduino. | ||
+ | |||
Senzorul de temperatura va măsura temperatura din aer, iar dacă temperatura va depasi o anumită valoare, nu se vor uda plantele pentru a nu exista riscul de ofilire a acestora. | Senzorul de temperatura va măsura temperatura din aer, iar dacă temperatura va depasi o anumită valoare, nu se vor uda plantele pentru a nu exista riscul de ofilire a acestora. | ||
+ | |||
Senzorul de luminăva măsura prezența luminii în mediul înconjurător, plantele fiind udate doar dacă există lumină pentru a facilita fotosinteza. | Senzorul de luminăva măsura prezența luminii în mediul înconjurător, plantele fiind udate doar dacă există lumină pentru a facilita fotosinteza. | ||
Arduino-ul din dreapta primește comenzi de la cel din stânga dacă se primește cerere de la utilizator prin Bluetooth și dacă cei 2 senzori indică valori ce îndeplinesc condițiile puse. | Arduino-ul din dreapta primește comenzi de la cel din stânga dacă se primește cerere de la utilizator prin Bluetooth și dacă cei 2 senzori indică valori ce îndeplinesc condițiile puse. | ||
+ | |||
Se masoară umiditatea solului pentru a decide dacă mai trebuie udate sau nu plantele. | Se masoară umiditatea solului pentru a decide dacă mai trebuie udate sau nu plantele. | ||
Senzorul de prezență verifică dacă este cineva în preajma plantelor, iar daca este, pompa de apa își va întrerupe funcționarea. | Senzorul de prezență verifică dacă este cineva în preajma plantelor, iar daca este, pompa de apa își va întrerupe funcționarea. | ||
Line 45: | Line 50: | ||
Arduino-ul cu rol de Master are conectat modulul de Bluetooth HC-05, senzorul de temperatură și umiditate DHT11 și senzorul de lumină. | Arduino-ul cu rol de Master are conectat modulul de Bluetooth HC-05, senzorul de temperatură și umiditate DHT11 și senzorul de lumină. | ||
+ | |||
Arduino-ul cu rol de Slave are conectat senzorul de prezență PIR, pompa de apă, senzorul de măsurare a umidității solului și led-uri, rezistențe și un tranzistor. | Arduino-ul cu rol de Slave are conectat senzorul de prezență PIR, pompa de apă, senzorul de măsurare a umidității solului și led-uri, rezistențe și un tranzistor. | ||
+ | |||
Pentru că pompa are nevoie de 200mA pentru a funcționa, am realizat un circuit cu un tranzistor, iar pompa este alimentată printr-un cablu USB conectat la priză. | Pentru că pompa are nevoie de 200mA pentru a funcționa, am realizat un circuit cu un tranzistor, iar pompa este alimentată printr-un cablu USB conectat la priză. | ||
+ | |||
Led-ul roșu este aprins când pompa nu este alimentată, iar led-ul verde este aprins când pompa este alimentată, adică udă planta. | Led-ul roșu este aprins când pompa nu este alimentată, iar led-ul verde este aprins când pompa este alimentată, adică udă planta. | ||
Pompa va fi alimentată pentru 5 secunde, folosind timere și întreruperi. Pompa se va opri dacă senzorul PIR detectează mișcare și NU își va relua procesul de udare a plantelor. | Pompa va fi alimentată pentru 5 secunde, folosind timere și întreruperi. Pompa se va opri dacă senzorul PIR detectează mișcare și NU își va relua procesul de udare a plantelor. | ||
Line 60: | Line 68: | ||
În setup(), am inițializat modulele, folosing bibliotecile "SPI.h" (pentru comunicarea prin SPI), "SoftwareSerial.h" (pentru modulul Bluetooth) și "DHT.h" (pentru modulul DHT11). De asemenea, am setat pinii 7 și 8 ca INPUT. | În setup(), am inițializat modulele, folosing bibliotecile "SPI.h" (pentru comunicarea prin SPI), "SoftwareSerial.h" (pentru modulul Bluetooth) și "DHT.h" (pentru modulul DHT11). De asemenea, am setat pinii 7 și 8 ca INPUT. | ||
+ | |||
În loop(), preluat informațiile trimise de senzori. Pentru a trimite către Slave informația primită prin Bluetooth, în mediul înconjurător trebuie să fie lumină, caracterul primit prin Bluetooth să fie "1" și temperatura să fie sub 50 de grade Celsius. Dacă aceste condiții sunt îndeplinite, atunci semnalul este trimis către Slave prin SPI. | În loop(), preluat informațiile trimise de senzori. Pentru a trimite către Slave informația primită prin Bluetooth, în mediul înconjurător trebuie să fie lumină, caracterul primit prin Bluetooth să fie "1" și temperatura să fie sub 50 de grade Celsius. Dacă aceste condiții sunt îndeplinite, atunci semnalul este trimis către Slave prin SPI. | ||
Line 71: | Line 80: | ||
Pentru senzorul PIR, am realizat o funcție de tratare a întreruperii în care se intră numai dacă semnalul emis de PIR trece din LOW în HIGH (adică detectează mișcare). Prin această întrerupere, se oprește alimentarea pompei, indiferent dacă timpul de 5 secunde a expirat sau nu. | Pentru senzorul PIR, am realizat o funcție de tratare a întreruperii în care se intră numai dacă semnalul emis de PIR trece din LOW în HIGH (adică detectează mișcare). Prin această întrerupere, se oprește alimentarea pompei, indiferent dacă timpul de 5 secunde a expirat sau nu. | ||
+ | |||
În setup(), am setat pinii pentru comunicarea SPI, am configurat timer-ul și pinii senzorilor și led-urilor. De asemenea, am folosit funcția "attachInterrupt()" pentru a activa întreruperea pe pinul PIR-ului. La final, am activat întreruperile globale. | În setup(), am setat pinii pentru comunicarea SPI, am configurat timer-ul și pinii senzorilor și led-urilor. De asemenea, am folosit funcția "attachInterrupt()" pentru a activa întreruperea pe pinul PIR-ului. La final, am activat întreruperile globale. | ||
+ | |||
În loop(), am verificat dacă am primit semnal prin SPI. Slave-ul va porni irigarea solului dacă umiditatea solului este sub 60% și dacă a primit prin SPI caracterul "1". Irigarea se oprește dacă timpul a expirat sau s-a detectat mișcare de către PIR. Irigarea se reia doar dacă se mai primește un semnal prin SPI. | În loop(), am verificat dacă am primit semnal prin SPI. Slave-ul va porni irigarea solului dacă umiditatea solului este sub 60% și dacă a primit prin SPI caracterul "1". Irigarea se oprește dacă timpul a expirat sau s-a detectat mișcare de către PIR. Irigarea se reia doar dacă se mai primește un semnal prin SPI. | ||
Line 79: | Line 90: | ||
Sistemul de irigare inteligentă poate fi folosit în casă și poate fi extins. Acesta poate să aibă mai multe Arduino de tip Slave pentru a se iriga mai multe plante. | Sistemul de irigare inteligentă poate fi folosit în casă și poate fi extins. Acesta poate să aibă mai multe Arduino de tip Slave pentru a se iriga mai multe plante. | ||
+ | |||
Condițiile de irigare se pot schimba cu ușurință, fiind posibilă adaptarea acestuia nevoilor urilizatorilor. | Condițiile de irigare se pot schimba cu ușurință, fiind posibilă adaptarea acestuia nevoilor urilizatorilor. | ||
+ | |||
O imagine cu rezultatul final al proiectului este următoarea: | O imagine cu rezultatul final al proiectului este următoarea: | ||
+ | |||
+ | |||
+ | <html><center></html> | ||
+ | {{:pm:prj2023:gpatru:pirvanescu_sandra_rezultate.jpeg?500|}} | ||
+ | <html></center></html> | ||
+ | ===== Demo ===== | ||
+ | |||
+ | <html><center><iframe width="560" height="315" src="https://www.youtube.com/embed/dc4KLNbYVRw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></center></html> | ||
Line 98: | Line 119: | ||
https://www.circuitbasics.com/how-to-set-up-spi-communication-for-arduino/ | https://www.circuitbasics.com/how-to-set-up-spi-communication-for-arduino/ | ||
https://makersportal.com/blog/2019/5/27/arduino-interrupts-with-pir-motion-detector | https://makersportal.com/blog/2019/5/27/arduino-interrupts-with-pir-motion-detector | ||
+ | https://projecthub.arduino.cc/arcaegecengiz/using-dht11-12f621 | ||
<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> | ||