This shows you the differences between two versions of the page.
pm:prj2023:avaduva:waterdispenser [2023/05/21 23:33] alin_gabriel.dita [Hardware Design] |
pm:prj2023:avaduva:waterdispenser [2023/05/29 20:13] (current) alin_gabriel.dita [Bibliografie/Resurse] |
||
---|---|---|---|
Line 2: | Line 2: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul presupune implementarea unui sistem care se asigură că o plantă are umiditatea potivită și este udată automat. Va exita un senzor de umiditate, iar când pământul este uscat, se va acționa o pompă care va iriga planta. Pe un ecran LCD se vor afișa umiditatea solului și faptul că pompa funcționează sau nu. De asemenea, vor exista 2 leduri, unul verde care indică faptul că umiditatea este ok și unul roșu ce se aprinde când pompa pornește. | + | Proiectul presupune implementarea unui sistem care se asigură că o plantă are umiditatea potivită și este udată automat. Va exita un senzor de umiditate, iar când pământul este uscat, se va acționa o pompă care va iriga planta. Pe un ecran OLED se vor afișa umiditatea solului și faptul că pompa funcționează sau nu. De asemenea, vor exista 2 leduri, unul verde care indică faptul că umiditatea este ok și unul roșu ce se aprinde când pompa pornește. |
Acest proiect este util pentru a întreține o plantă care are nevoie de o permanentă umiditate a solului. Mai mult, proiectul este ceea ce trebuie persoanelor care doresc să plece într-o vacanță și nu doresc ca atunci când se întorc acasă, să găsească planta preferată uscată. | Acest proiect este util pentru a întreține o plantă care are nevoie de o permanentă umiditate a solului. Mai mult, proiectul este ceea ce trebuie persoanelor care doresc să plece într-o vacanță și nu doresc ca atunci când se întorc acasă, să găsească planta preferată uscată. | ||
Line 8: | Line 8: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | {{:pm:prj2023:avaduva:diagrama.jpg|}} | + | {{:pm:prj2023:avaduva:r4rr.drawio.png|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 19: | Line 19: | ||
* fire de legătură | * fire de legătură | ||
* rezistențe | * rezistențe | ||
- | * display LCD | + | * display OLED |
* 5 Volt Relay Module | * 5 Volt Relay Module | ||
* recipent apă | * recipent apă | ||
- | * breadboard | + | * expansion |
{{:pm:prj2023:avaduva:1pm_alin.jpg|}} | {{:pm:prj2023:avaduva:1pm_alin.jpg|}} | ||
- | {{:pm:prj2023:avaduva:circut_alin.jpg|}} | + | {{:pm:prj2023:avaduva:rsz_circut_alin.jpg|}} |
- | <note tip> | ||
- | Aici puneţi tot ce ţine de hardware design: | ||
- | * listă de piese | ||
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | ||
- | * diagrame de semnal | ||
- | * rezultatele simulării | ||
- | </note> | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Biblioteci folosite: | ||
+ | * Wire.h | ||
+ | * Adafruit_GFX.h | ||
+ | * Adafruit_SSD1306.h | ||
- | <note tip> | + | Funcționalități implementate: |
- | Descrierea codului aplicaţiei (firmware): | + | - La început, am definit dimensiunile afișajului OLED și conectarea sa prin I2C. De asemenea, am definit valoarea pentru care pământul din ghiveci este considerat uscat, precum și pinii pentru pompă, senzor și led-uri. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | - În secțiunea setup(): |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Am inițializat afișajul OLED cu adresa corespunzătoare și verific dacă inițializarea a fost realizată cu succes. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | * Afișez mesajul "Hello", după care afișez mesajul "Loading" cu o animație de trei puncte. |
- | * (etapa 3) surse şi funcţii implementate | + | * Se configurează pinii pentru pompa și led-uri și se setează valoarea pinului pompei la HIGH, deoarece releul funcționează pe logică negativă (cât timp releul primește HIGH de la arduino, pompa este închisă – ea fiind conectată la Normally On). |
- | </note> | + | - În secțiunea loop(): |
+ | * Afișez numele plantei pe ecran. | ||
+ | * Se citește valoarea de umiditate curentă de la senzorul de umiditate a solului. Și se afișează pe ecran. | ||
+ | * Se așteaptă un timp, iar dacă valoarea de umiditate este mai mare sau egală cu valoarea la care solul este considerat uscat: se afișează mesajul "Watering required" pe ecran, se activează pompa (pinul pompei se setează pe nivel logic LOW) pentru a furniza apă plantei, LED-ul roșu efectuează o secvență de variații a intensității luminoase (contol PWM) pentru a indica procesul de udare. | ||
+ | * Apoi pompa se oprește (pinul pompei se setează pe nivel logic HIGH), LED-ul roșu se stinge, iar LED-ul verde se aprinde pentru a indica încheierea procesului de udare. Se afișează mesajul "Done Watering" pe ecran. | ||
+ | * Dacă valoarea de umiditate este suficientă, se afișează mesajul "Watering not required" pe ecran. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{:pm:prj2023:avaduva:rsz_1final-alin.jpg|}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Acest proiect a reprezentat o experiență nouă pentru mine. Nefiind un pasionat al |
+ | acestui domeniu, pot spune că a fost puțin dificil să pun lucrurile cap la cap pentru | ||
+ | a realiza acest proiect. Una peste alta, sunt bucuros că am reușit să duc proiectul la bun sfârșit, deși am întâmpinat provocări la documentație și probleme hardware pe ultima sută de metri (câteva lipituri nefăcute prea bine, au cedat, dar am găsit soluții). Pentru acest proiect consider că am folosit noțiuni din laboratoare cum ar fi PWM - pentru a da o variație de intensități unui led, I2C - pentru comunicarea cu ecranul OLED etc. | ||
- | <note warning> | + | Video cu funcționalitatea finală: https://drive.google.com/file/d/1mQE02gZElJoCD0isnthLES6lKoMz3zGi/view?usp=sharing |
- | 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**. | + | ===== Download ===== |
- | </note> | + | |
- | + | ||
- | ===== Jurnal ===== | + | |
- | <note tip> | + | În această arhivă este codul Arduino și un video cu funcționalitatea proiectului: |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | {{:pm:prj2023:avaduva:proiect_pm_diță_alin_336ca.zip|}} |
- | </note> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | *https://app.diagrams.net/ |
+ | *https://www.arduino.cc/en/software | ||
+ | *https://www.hackster.io/428988/arduino-flower-watering-system-with-oled-display-54326b?fbclid=IwAR3pXOjsrgbv5dhpckTwnQXeq5-7w_8fmmzr1sfYCd43nK47jc_5MxzwknI | ||
+ | *https://www.youtube.com/. | ||
</note> | </note> | ||
<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> | ||