Smart Plant Water Dispenser - Diță Alin-Gabriel

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 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ă.

Descriere generală

Hardware Design

Listă Componente:

  • Arduino UNO
  • pompă de apă
  • modul de umiditate a solului
  • 2 led-uri
  • fire de legătură
  • rezistențe
  • display OLED
  • 5 Volt Relay Module
  • recipent apă
  • expansion

Software Design

Biblioteci folosite:

  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h

Funcționalități implementate:

  1. 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.
  2. În secțiunea setup():
    • Am inițializat afișajul OLED cu adresa corespunzătoare și verific dacă inițializarea a fost realizată cu succes.
    • Afișez mesajul “Hello”, după care afișez mesajul “Loading” cu o animație de trei puncte.
    • 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).
  3. Î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

Concluzii

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.

Video cu funcționalitatea finală: https://drive.google.com/file/d/1mQE02gZElJoCD0isnthLES6lKoMz3zGi/view?usp=sharing

Download

În această arhivă este codul Arduino și un video cu funcționalitatea proiectului: proiect_pm_dita_alin_336ca.zip

Bibliografie/Resurse

pm/prj2023/avaduva/waterdispenser.txt · Last modified: 2023/05/29 20:13 by alin_gabriel.dita
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