This shows you the differences between two versions of the page.
pm:prj2023:alexau:plantwatcher [2023/05/28 20:11] radu_andrei.dumitru [Introducere] |
pm:prj2023:alexau:plantwatcher [2023/05/28 21:29] (current) radu_andrei.dumitru [Rezultate Obţinute] |
||
---|---|---|---|
Line 5: | Line 5: | ||
* Scopul lui este sa ajute la intretinerea plantei si a mediului in care se afla aceasta, pentru a se dezvolta intr-un mod optim. | * 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 pot controla cu mai mare precizie cantitatea de apa si temperatura pe care o ofera plantelor. De asemenea, si presiunea aerului este utila. | + | * 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 === | ||
Line 28: | 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-5 | |
- | <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> | + |