Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:alexau:plantwatcher [2023/05/07 20:12]
radu_andrei.dumitru
pm:prj2023:alexau:plantwatcher [2023/05/28 21:29] (current)
radu_andrei.dumitru [Rezultate Obţinute]
Line 1: Line 1:
 ====== Plant Watcher ====== ====== Plant Watcher ======
 ===== Introducere ===== ===== Introducere =====
-  * Proiectul urmareste mediul in care se afla planta, mai precis, umiditatea solului, temperatura ​si presiunea aerului. ​Daca senzorii raporteaza ca planta nu se afla in conditii favorabile, atunci, cu un modul GSMse va trimite un SMS de avertizare+  * Proiectul urmareste mediul in care se afla planta, mai precis, umiditatea solului, temperaturapresiunea aerului ​si altitudinea. 
-  * Scopul lui este sa ajute la intretinerea plantei si a mediului in care se afla aceasta, pentru a se dezvolta intr-un mod cat mai optim.+  * Informatiile precizate mai sus sunt transmise prin SMS, cu un modul GSM. Sunt 3 cazuri in care se declanseaza trimiterea ​de informatii, detaliate mai jos, unde este descris Flow-ul
 +  * Scopul lui este sa ajute la intretinerea plantei si a mediului in care se afla aceasta, pentru a se dezvolta intr-un mod optim.
   * Ideea a pornit de la plantele pe care uit sa le ud la timp si ele au de suferit pana imi amintesc. Cu proiectul asta, as primi mereu notificari si probabil ca nu as mai uita.   * Ideea a pornit de la plantele pe care uit sa le ud la timp si ele au de suferit pana imi amintesc. Cu proiectul asta, as primi mereu notificari si probabil ca nu as mai uita.
-  * Proiectul poate sa fie util atat pentru plantele tinute in apartament, dar si pentru fermierii care au suprafete mai mari, intr-un spatiu inchis (de ex. sere / solarii), care, prin stabilirea unor praguri de umiditate / temperatura ​/ presiune ​pot actiona imediat ce planta are nevoie ​de apa / mai multa caldura ​mai mult aer.+  * Proiectul poate sa fie util atat pentru plantele tinute in apartament, dar si pentru fermierii care au suprafete mai mari, intr-un spatiu inchis (de ex. sere / solarii), care, prin stabilirea unor praguri de umiditate / temperatura pot controla cu mai mare precizie cantitatea ​de apa si temperatura pe care o ofera plantelor. De asemenea, si presiunea aerului este utila. [[https://pubmed.ncbi.nlm.nih.gov/​11538810/​]]
 ===== Descriere generală ===== ===== Descriere generală =====
  
 === Schema bloc === === Schema bloc ===
- +{{:​pm:​prj2023:​alexau:​plant_watcher_schema_bloc_updated.png?600|}}
-{{:​pm:​prj2023:​alexau:​plant_watcher_diagram.png?600|}}+
  
 === Flow === === Flow ===
-  ​Arduino citeste valorile ​date de senzori. +  ​Arduino citeste valorile de la cei 3 senzori ​(de la BMP280 temperatura + presiune + altitudine, de la cel de sol, umiditatea solului, iar de la DHT11, umiditatea) 
-  - Arduino ​detecteaza anumite ​valori ​fie sub pragul minim, fie peste pragul maxim+  ​* Exista 3 situatii in care se poate declansa trimiterea unei notificari:​ 
-  ​- Arduino cu ajutorul modulului GSM, trimite o notificare, cu informatiile citite.+    ​Un trigger manual: un buton - util pentru cazul in care se vor informatiile in acel moment (are totusi un cooldown de 30 de secunde) 
 +    - Un trigger periodic: este prestabilit la 6 ore, se poate modifica - util pentru cazul in care vrem sa primim informatiile chiar daca nu suntem langa Arduino
 +    - Un trigger care actioneaza ca un watchdog: se uita tot timpul la valorile de temperatura si sol (pe acestea le-am considerat cele mai importante),​ iar cand face un numar de citiri succesive cu valori sub peste pragurile prestabilite,​ declanseaza trimiterea unui mesaj de avertizare
 +  ​* Modulul SIM800L se ocupa de trimiterea notificarii.
  
 <note tip> <note tip>
-Utilizatorul trebuie sa stabileasca ​pragurile ​si sa insereze senzorul de umiditate a solului, iar singurele actiuni ulterioarevor fi de calibrare ​si de citire a SMS-urilor.+Toate pragurile, ​cat si perioadele se pot modifica.
 </​note>​ </​note>​
  
Line 24: Line 27:
  
 === Diagrama Hardware === === Diagrama Hardware ===
-{{:​pm:​prj2023:​alexau:​plant_watcher_tinkercad.png?700|}}+{{:​pm:​prj2023:​alexau:​tinkercad_plant_watcher.png?600|}}
  
-=== Diagrama electrica ​=== +=== Implementare Hardware ​=== 
-{{:​pm:​prj2023:​alexau:​plantwatcher_electric_a.png?700|}}+{{:​pm:​prj2023:​alexau:​hdw_plant_watcher_2.jpeg?600|}} 
 +{{:​pm:​prj2023:​alexau:​hdw_plant_watcher_1.jpeg?​600|}}
  
 === Lista componente === === Lista componente ===
   * Arduino UNO   * Arduino UNO
   * Modul Senzor de Temperatura și Umiditate DHT11   * Modul Senzor de Temperatura și Umiditate DHT11
-  * Modul cu Senzor de umiditate a solului +  * FC-28 Soil moisture sensor 
-  * Modul Senzor de Presiune Barometric MPL3115A2 +  * Condensator 1500uF 
-  * SIM800L GSM Module ​+ PCB Antenna+  * Dioda 1N4007 
 +  * BMP280: ​Senzor de temperatura si presiune 
 +  * SIM800L GSM Module 
 +  * Push-down button 
 +  * Breadboard
 ===== Software Design ===== ===== Software Design =====
 +==== Biblioteci ====
 +  * [[https://​docs.arduino.cc/​learn/​built-in-libraries/​software-serial|Software Serial]]
 +  * [[https://​reference.arduino.cc/​reference/​en/​libraries/​simpledht/​|Simple DHT]]
  
 +==== Notiuni din laboratoare ====
 +  * I2C - pentru BMP280
 +  * ADC - pentru senzorul de sol
 +  * Intreruperi hardware - pentru buton
 +  * Timere - pentru trimiterea mesajului de informare, periodic
 +<​note>​Toate au fost implementate utilizand registre!</​note>​
 +
 +=== Descrierea codului ===
 +Am modularizat implementarea,​ lucrul cu senzorii se face in fisiere separate, exportand apoi functii in headere.
 +  * BMP280: Se foloseste si de functiile de I2C implementate separat, functii implementate si in laboratorul 6. Se cauta adresa, apoi ca in datasheet, se trimite un struct cu 12 campuri 8-o si se configureaza sampling-ul si filtrarea. (Am ales x1 pentru temperatura,​ x16 pentru presiune si x16 la filtru). Se prelucreaza presiunea si temperatura ca in datasheet. Mai departe, cu ajutorul presiunii determin si altitudinea.
 +  * FC-28 Soil Moisture: Un simplu ADC, fac setup-ul ca in laborator si citesc rezultatul. Acesta este ulterior transformat in procent.
 +  * DHT11: Pentru umiditatea aerului, folosesc direct biblioteca DHT11. Functia read calculeaza si temperatura,​ dar o ignor, optand pentru cea calculata cu BMP280.
 +  * In fisierul main, plant_watcher.ino,​ apelez functiile de setup de la senzori, apoi cu SoftwareSerial,​ fac setup-ul modulului GSM (acesta afiseaza la seriala daca a reusit sa se conecteze si cat de puternic este semnalul, pe o scala de la 0-30, 30 insemnand cea mai buna conexiune). De asemenea, fac setup-ul si pentru intreruperi,​ configurand intreruperea externa pe pinul 2, unde este butonul si Timer1.
 +  * In Loop, citesc valorile de la senzori si cu functia add_info, construiesc in buffer mesajul. Pe langa asta, gestionez si partea de avertizare, verificand valorile pentru temperatura,​ umiditate si tin cont de cooldown-ul pentru notificari.
 +  * O variabila foarte importanta este sendTrigger,​ de ea depinzand trimiterea mesajului. Aceasta se poate face true, fie din intreruperea de la buton, fie dupa un anumit timp pentru trimiterea mesajului de informare periodic, fie prin declansarea unei avertizari. ​
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * 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>​ 
  
 +=== Github ===
 +[[https://​github.com/​radudum10/​PM-Plant-Watcher|Link catre repo]]
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +<note tip>[[https://​youtube.com/​shorts/​3PqNNa3udmQ?​feature=share | Link Youtube]]</​note>​
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+{{:​pm:​prj2023:​alexau:​mesaje_plant_watcher.jpeg?​300|}} 
 +<note tip>​Primul este mesajul de la testul facut in video. Urmatoarele sunt teste pentru informarea periodica + informarea de avertizare. (Testele sunt facute cu senzorul de sol scos din pamant, de aceea apare acea informatie in dreptul valorii de sol)</​note>​
  
-===== Download ===== 
- 
-<note warning> 
-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**. 
-</​note>​ 
- 
-===== Jurnal ===== 
- 
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
- +  * Laboratoarele 0-
-<​note>​ +  ​[[https://​lastminuteengineers.com/​sim800l-gsm-module-arduino-tutorial/​|Last minute engineers - SIM800L]] 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +  * [[https://​forum.arduino.cc/​t/​gsm-module-sim800l-no-signal/​479829/​17|Acest comentariu excelent]] 
-</note> +  * [[https://​github.com/adafruit/Adafruit_BMP280_Library|Biblioteca de BMP280 de la Adafruit]]
- +
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></html+
pm/prj2023/alexau/plantwatcher.1683479534.txt.gz · Last modified: 2023/05/07 20:12 by radu_andrei.dumitru
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