This shows you the differences between two versions of the page.
pm:prj2021:agrigore:smartpot [2021/05/05 14:46] nicolae.grama [Hardware Design] |
pm:prj2021:agrigore:smartpot [2021/05/31 18:37] (current) nicolae.grama [Descriere generală] |
||
---|---|---|---|
Line 11: | Line 11: | ||
Sistemul este controlat cu ajutorul unei placi Arduino Uno, la care sunt conectati senzorii (umiditate, nivel apa, lumina), display-ul LCD, pompa de apa si alte componente. Placa Arduino poate comunica prin interfata seriala cu un calculator/RasberryPI, ce ii poate trimite diferite comenzi, pentru a ajusta setarile sistemului. | Sistemul este controlat cu ajutorul unei placi Arduino Uno, la care sunt conectati senzorii (umiditate, nivel apa, lumina), display-ul LCD, pompa de apa si alte componente. Placa Arduino poate comunica prin interfata seriala cu un calculator/RasberryPI, ce ii poate trimite diferite comenzi, pentru a ajusta setarile sistemului. | ||
- | {{ :pm:prj2021:agrigore:diagrama_smartpot.png?800 |}} | + | {{ :pm:prj2021:agrigore:diagrama_smartpot.png |
+ | ?nolink&600 |}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 24: | Line 25: | ||
* Pompa de apa 9V | * Pompa de apa 9V | ||
* Driver motoare (L293DNE) | * Driver motoare (L293DNE) | ||
+ | * Rezistori | ||
+ | * Potentiometru | ||
+ | * Breadboard-uri | ||
- | **NOTA** Lista este deocamdata orientativa. | + | __**Schema Electrica**__ |
+ | |||
+ | |||
+ | Senzorul de nivel de apa si cel de umiditate a solului sunt de fapt niste rezistente variabile. Din acest motif, in schema electrica au fost inlocuiti cu 2 potentiometre. | ||
+ | |||
+ | {{ :pm:prj2021:agrigore:smartpot_schema.png | ||
+ | ?nolink&600 |}} | ||
+ | |||
+ | Pe breadboard-ul pe care am montat lcd-ul, se afla un potentiometru folosit pentru a ajusta contrastul ecranului. Este singura "componenta" a sistemului controlata hardware. | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | Codul folosit de arduino va fi scris cu ajutorul Arduino IDE. Pentru ajustarea setarilor sistemului voi creea un program, ce va comunica cu Arduino pe interfata seriala. | + | === Mediu de dezvoltare === |
- | ===== Rezultate Obţinute ===== | + | Am folosit Visual Studio Code (instaland extensia pentru dezvoltarea pe arduino). Bibliotecile Arduino au fost instalate impreuna cu Arduino IDE. |
+ | Pentru testare, am folosit conexiunea seriala, in Arduino IDE (VS Code nu ofera permite transmiterea de mesaje catre arduino). | ||
+ | === Biblioteci === | ||
- | ===== Concluzii ===== | + | * LiquidCrystal.h - librarie folosita pentru "comunicarea" cu un LCD. |
+ | * Biblioteca standard arduino | ||
+ | === Organizare cod si implementare === | ||
- | ===== Download ===== | + | Codul este impartit in doua componente: "SmartPot.ino" (functionalitati specifice acestui proiect) si "/libraries", unde sunt implementate diferite functionalitati, stocate sub forma unor clase C++: |
+ | * //Display// (LCD) | ||
+ | * //Pump// (Pompa de apa) | ||
+ | * //Sensors// (Senzorii de umiditate, nivel apa si lumina) | ||
+ | * //Comm// (comunicarea pe interfata seriala). | ||
+ | O data la 12 ore, se verifica senzorii: ce nivel de apa se afla in rezervor, luminozitatea mediului si umiditatea solului. Daca lumina este insuficienta, un mesaj este afisat la lcd (pentru a avertiza utilizatorul). La fel se intampla si in cazul celorlalte valori citite si in plus: cand nu este suficienta apa in rezervor, sistemul nu va mai incerca sa ude planta din ghiveci. Daca este suficienta apa si umiditatea solului este scazuta, se va uda planta. | ||
- | ===== Jurnal ===== | + | Aceste verificari se fac pentru prima data cand se porneste sistemul, apoi la intervalul stabilit. De asemenea, se pot trimite diferite comenzi pe interfata seriala. Unele sunt folosite pentru a schimba comportamentul sistemului, schimband diferite variabile, altele sunt folosite pentru a porni pompa si uda planta sau pentru a citi valorile senzorilor (fara a uda planta). Singurul moment cand comenzile nu pot fi citite (instant) este in momentul in care sistemul executa o alta comanda. |
+ | Senzorii nu sunt alimentati pana in momentul in care vrem sa citim date, deoarece se pot deteriora (in special cei care stau in medii umede). | ||
+ | |||
+ | |||
+ | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | * Breadboard LCD {{ :pm:prj2021:agrigore:smartpot_res2.jpeg?nolink&300 |}} | ||
+ | * Breadboard Senzori si Motor {{ :pm:prj2021:agrigore:smartpot_res1.jpeg?nolink&300 |}} | ||
+ | * Demo https://youtu.be/NoFXsfGDSRk | ||
+ | ===== Concluzii ===== | ||
+ | |||
+ | Consider ca acest proiect m-a ajutat sa "fixez" cunostintele dobandite la aceasta materie. | ||
+ | Diferite lucruri ca ar putea fi imbunatatite la proiect ar fi: controlul luminozitatii "backlight-ului" lcd-ului din software (pentru a putea reduce consumul), salvarea configuratiei sistemului (pentru ca sa nu trebuiasca sa fie reconfigurat de fiecare data cand este pornit). | ||
+ | ===== Download ===== | ||
+ | |||
+ | * GitHub Repo - https://github.com/gramanicu/SmartPot | ||
+ | * {{:pm:prj2021:agrigore:smart-pot-cod-sursa.zip|Arhiva cod}} | ||
+ | ===== Jurnal ===== | ||
+ | * 26.04 - alegere tema | ||
+ | * 16.05 - conectarea componentelor | ||
+ | * 24.05 - finalizare soft | ||
+ | * 23.05 - realizare schema electrica | ||
+ | * 31.05 - finalizare proiect, filmare demo, documentatie | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | PDF: https://ocw.cs.pub.ro/courses/pm/prj2021/agrigore/smartpot?do=export_pdf | + | * PDF: https://ocw.cs.pub.ro/courses/pm/prj2021/agrigore/smartpot?do=export_pdf |
+ | * Referinta cod Arduino: https://www.arduino.cc/reference/en/ | ||
+ | * Conectare LCD si cod de "scroll": https://create.arduino.cc/projecthub/pravynandas/lcd-1602-scroll-text-line-1-static-line-2-scrolling-a25546 | ||
+ | * Utilizare punte H (driver motor): https://dzone.com/articles/driving-a-dc-motor-with-an-arduino-and-the-l293d-m | ||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||