This shows you the differences between two versions of the page.
pm:prj2025:ccristi:andrei_daniel.lungu [2025/05/09 22:00] andrei_daniel.lungu |
pm:prj2025:ccristi:andrei_daniel.lungu [2025/05/27 22:13] (current) andrei_daniel.lungu [Jurnal] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | <note tip> | ||
- | Prezentarea pe scurt a proiectului vostru: | ||
- | * ce face | ||
- | * care este scopul lui | ||
- | * care a fost ideea de la care aţi pornit | ||
- | * de ce credeţi că este util pentru alţii şi pentru voi | ||
- | </note> | ||
Sistemul automat pentru udarea plantelor verifica umiditatea din sol periodic si o mentine la un nivel constant prin pornirea unui sisem de udare prin picurare. Cu acest sistem fiecare planta are senzorul ei si e conectata la un rezervor, individual sau distribuit. Nivelul de umiditate poate fi setat de catre utilizator in functie de nevoile plantei si de tipul solului. De asemenea, sistemul poate fi accesat prin internet cu ajutorul unei aplicatii. Alte functionalitati pe care le ofera vor fi: afisarea temperaturii, log-uri pentru cand a udat, nivelul de apa din rezervorul fiecarei plante. | Sistemul automat pentru udarea plantelor verifica umiditatea din sol periodic si o mentine la un nivel constant prin pornirea unui sisem de udare prin picurare. Cu acest sistem fiecare planta are senzorul ei si e conectata la un rezervor, individual sau distribuit. Nivelul de umiditate poate fi setat de catre utilizator in functie de nevoile plantei si de tipul solului. De asemenea, sistemul poate fi accesat prin internet cu ajutorul unei aplicatii. Alte functionalitati pe care le ofera vor fi: afisarea temperaturii, log-uri pentru cand a udat, nivelul de apa din rezervorul fiecarei plante. | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | + | {{:pm:prj2025:ccristi:schema_sistem_udat_plante.png|Schema bloc}} |
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | |
- | + | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | |
- | </note> | + | |
+ | Cu ajutorul telefonului sau a laptop-ului voi comunica prin wifi cu microcontroller-ul ESP32, astfel incat sa obtin de la el informatii in timp real despre temperatura ambientala si umiditatea din aer/sol din zona plantelor. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | + | Lista de componente: |
- | Aici puneţi tot ce ţine de hardware design: | + | * ESP32-C6 Super Mini, |
- | * listă de piese | + | * senzor de umiditate, |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * senzor de temperatura, |
- | * diagrame de semnal | + | * electrovalva, |
- | * rezultatele simulării | + | * breadboard |
- | </note> | + | |
- | * ESP32-C6 Super Mini, | + | Schema electrica: |
- | * senzor de umiditate, | + | |
- | * senzor de temperatura, | + | {{:pm:prj2025:ccristi:schema_electrica_daniel_lungu_pm2025.png?800|}} |
- | * electrovalva, | + | |
- | * breadboard | + | Explicarea necesitatii componentelor: |
+ | |||
+ | - ESP32-C6 Super Mini = microcontroller-ul care va gestiona conexiunea cu telefonul, va primi input de la senzor si va comanda pornirea sistemului de udare | ||
+ | - Battery 5V = sursa de alimentare pentru valva, era insuficient curentul primit de la microcontroller | ||
+ | - Soil moisture sensor = senzorul care masoara umiditatea din sol si pe baza caruia se va decide pornirea apei | ||
+ | - Valve = "robinetul" care va porni apa din rezervor | ||
+ | - DHT22 = senzor de umiditate si temperatura pentru a citi temperatura ambientala si umiditatea aerului | ||
+ | |||
+ | Descriere a functionarii: | ||
+ | * Senzorul de umiditate sol e citit in mod analogic pe pinul GP1. | ||
+ | * Senzorul DHT22 e citit in mod digital pe pinul GP0. | ||
+ | * Valva e controlata de pinul GP2, care e configurat in modul open drain astfel incat valva sa isi ia curentul de la baterie dar sa fie controlata pornirea de pe microcontroller. | ||
+ | |||
+ | Poza cu hardware-ul: | ||
+ | |||
+ | {{:pm:prj2025:ccristi:poza_proiect_daniel_lungu_pm2025.jpeg?800|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Mediul de dezvoltare: ESP-IDF (Espressif IoT Development Framework) | ||
- | <note tip> | + | Biblioteci si surse third-party: |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Pentru ca ESP nu ofera acces low level atat de usor ca Arduino, am fost nevoit sa folosesc mai multe biblioteci din framework-ul ESP-IDF. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * esp_wifi.h - pentru conectarea la reteaua wifi |
- | * (etapa 3) surse şi funcţii implementate | + | * esp_timer.h - pentru masurarea timpului in sistemul de loguri |
- | </note> | + | * nvs_flash.h - non-volatile storage, necesar pentru modulul de wifi |
+ | * esp_http_server.h - pentru a raspunde la cereri http cu informatii despre parametrii masurati | ||
+ | |||
+ | Pe langa asta, am avut nevoie de o biblioteca custom pentru senzorul de umiditate si temperatura DHT22, care implementeaza un protocol one-wire special pentru citirea datelor. | ||
+ | |||
+ | |||
+ | Functionalitati implementate: | ||
+ | - server http pe placuta care afiseaza o pagina cu butoane din care poti trimite cereri prin wifi | ||
+ | - citire senzor de umiditate sol in mod analogic | ||
+ | - citire senzor de temperatura si umiditate DHT22 in mod digital (folosind biblioteca specializata) | ||
+ | - comandarea valvei de pornire a apei atunci cand umiditatea ambientala este sub un prag | ||
+ | - citirea logurilor prin cereri http | ||
+ | |||
+ | Link git: https://github.com/D9nni/PM-Plant-Watering-System | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | La finalul proiectului, placuta se conecteaza la reteaua wi-fi prestabilita si primeste o adresa IP la care poate fi accesata din browser, unde afiseaza butoane prin care poti face cereri despre parametrii importanti. Proiectul se comporta ca o mica statie meteo mai degraba, care iti poate raspunde care este umiditatea, temperatura si umiditatea solului in timp real. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | Partea de pornire a apei a esuat din cauza hardware-ului prost ales, am avut o valva de aer in loc de o valva de apa sau de o pompa, care consuma mult curent si care pana la urma nu mai functioneaza deloc. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | In concluzie, proiectul a esuat ca produs final, am castigat doar experienta. Lipsa componentei necesare care era o pompa submersibila mica sau o valva mai serioasa pentru apa a fost o problema esentiala, de asemenea a durat mult sa gasesc cum sa programez placuta mea care e una dintr-o serie mai rara. Ar fi trebuit sa lucrez cu ceva asemanator cu ce am avut la laborator pentru rezultate mai bune. | ||
===== Download ===== | ===== Download ===== | ||
Line 58: | Line 77: | ||
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**. | 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> | </note> | ||
+ | |||
+ | ===== Jurnal ===== | ||
+ | |||
+ | 12 mai - am cumparat ESP32, senzor de umiditate sol si senzor de temperatura si umiditate a aerului DHT11 | ||
+ | |||
+ | 14 mai - am lipit placuta la laborator, am testat componentele, am folosit pentru inceput cod Arduino. Nu am reusit sa gasesc in platformIO placuta mea. Am ars din greseala senzorul DHT11. | ||
+ | |||
+ | 20 mai - am comandat alt senzor DHT22 si o valva de aer in loc de pompa de apa pe care ar fi trebuit sa o am. | ||
+ | |||
+ | 22 mai - Am constatat ca valva de aer consuma mult curent si nu o pot lega direct la un pin, am incercat sa folosesc pinul in modul open drain si sa pun o rezistenta de pull up catre vcc, dar curentul obtinut era prea mic pentru a porni valva. Valva se deschidea totusi daca o puneam direct la vcc, dar daca puneam o rezistenta cat de mica nu mai mergea. M-am gandit sa adaug o baterie, dar nu era ok sa bag curentul care vine din baterie in pinul de la esp. | ||
+ | |||
+ | 23 mai - am inceput dezvoltarea codului pentru proiect folosind esp-idf pe linux | ||
+ | |||
+ | 25 mai - La laborator mi s-a recomandat ca solutie un tranzistor IRLZ44N, nu era pe stoc, am luat altceva care avea tensiunea de poarta de prag prea mare, nu am reusit nimic cu el. | ||
+ | |||
+ | 27 mai - Am cautat IRLZ44N si.. surpriza, am primit IRLZ234N, care tot nu comuta cu impulsul dat de pinul de pe esp. Ca ultima solutie am pus un buton care sa deschida valva manual pentru a face o demonstratie, dar pana la urma pare ca valva nu mai functioneaza deloc. | ||
+ | Am imbunatatit codul, transformand esp-ul intr-un server http care raspunde la requesturi despre parametrii de mediu si prin care sa poti porni apa. | ||
+ | |||
+ | ===== Bibliografie/Resurse ===== | ||
+ | |||
+ | <note> | ||
+ | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
+ | </note> | ||
+ | |||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||
+ | |||
+ | Datasheet ESP32-C6FH4: | ||
+ | https://www.espressif.com/sites/default/files/documentation/esp32-c6_datasheet_en.pdf |