Dozator de apa automat cu telecomanda

Introducere

Proiectul consta intr-un dozator de apa automat cu telecomanda cu 2 optiuni, pentru pahar mic sau pahar mare, cu doi senzori ultrasonici care asigura ca e apa in rezervorul cu apa si unul care se asigura ca e un pahar in locul acela, iar daca o cerinta nu e indeplinita un passive buzzer va suna si un mesaj aferent va fi afisat pe ecran. Am ales tema aceasta deoarece m-am gandit la ceva ce ma deranjeaza in viata reala si imediat mi-au venit in cap dozatoarele de la facultate:).

Descriere generală

Cu ajutorul receptorului infraroșu putem sa dam comenzi de la telecomandă. Senzorul ultrasonic din tankul de apa o să verifice dacă e suficientă apă pentru paharul mare(din telecomandă putem selecta pahar mare/mic), în situația în care nu este un buzzer va emite un semnal cu un mesaj aferent afisat pe LCD, prin intermediul butoanelor CH- și CH+ de pe telecomandă vom putea selecta marimea paharului pe care vrem să il umplem. Schema bloc:

Schema electrica

Hardware Design

Componentele hardware utilizate:

  • 2xHC-SR04 ultrasonic sensor
  • 1xpompa submersibila
  • 1xmodulreleu 1canal 5v
  • 1xsensor infrarosu
  • 1xtelecomanda
  • 1xlcd1602 I2C
  • 1xpasive buzzer
  • 1x placuta arduino uno

Software Design

Acest cod implementează un sistem automat de dozare a apei, controlat prin telecomandă infraroșu și utilizând senzori cu ultrasunete pentru a detecta nivelul apei și prezența unui pahar. Codul este scris pentru un microcontroller Arduino și utilizează un display LCD pentru a afișa mesaje către utilizator. Iată o descriere detaliată a codului:

Biblioteci Incluse - Wire.h: Utilizată pentru comunicarea I2C. - LiquidCrystal_I2C.h: Controlul display-ului LCD prin I2C. - IRremote.h: Pentru a citi semnalele de la telecomanda infraroșu.

Definirea Componentelor - LiquidCrystal_I2C lcd(0x27, 16, 2): Inițializează display-ul LCD cu adresa I2C 0x27, având 16 coloane și 2 rânduri. - decode_results results: Structură pentru a stoca rezultatele decodării semnalului IR. - Pinii de conexiune:

  1. IRPIN: Pinul pentru receptorul IR.
  2. TRIG_PIN1 și ECHO_PIN1: Pinii pentru senzorul de nivel al apei.
  3. TRIG_PIN2 și ECHO_PIN2: Pinii pentru senzorul de prezență a paharului.
  4. BUZZER_PIN: Pinul pentru buzzer.
  5. *RELAY_PIN*: Pinul pentru releu.

- Coduri pentru butoane IR:

  1. BUTTON_LEFT: Cod pentru butonul de alegere a paharului mic.
  2. BUTTON_RIGHT: Cod pentru butonul de alegere a paharului mare.
  3. BUTTON_OK: Cod pentru butonul de confirmare.

- Constante:

  1. MAX_WATER_LEVEL: Nivelul maxim de apă necesar.
  2. MIN_WATER_LEVEL: Nivelul minim de apă.
  3. MAX_GLASS_DISTANCE: Distanța maximă la care este detectat paharul.
  4. SMALL_GLASS și BIG_GLASS: Timpul de turnare pentru pahare mici și mari.

Setup - Inițializează LCD-ul și buzzer-ul. - Configurează pinii pentru senzorii de ultrasunete, releu și receptorul IR. - Pornește citirea semnalului IR și comunicarea serială.

Loop - Afișează pe serial monitor distanțele citite de la senzorii de apă și pahar. - Verifică dacă a fost primit un semnal IR:

  1. Decodifică și afișează codul IR primit.
  2. Pe baza codului, actualizează mesajul pe LCD și setează timpul de turnare corespunzător.
  3. La primirea butonului OK, verifică prezența paharului și nivelul apei:
    1. Dacă nu este pahar sau nu este apă suficientă, afișează mesajul corespunzător și emite un sunet de avertizare.
    2. Dacă sunt îndeplinite condițiile, începe procesul de turnare a apei.

Funcții Auxiliare - beep(): Emite un sunet de avertizare prin buzzer. - pourWater(): Activează releul pentru a turna apă pentru timpul specificat și resetează variabila pourTime. - isWater(): Verifică dacă nivelul apei este suficient. - isGlass(): Verifică dacă este prezent un pahar. - readWaterLevel(): Citește și returnează nivelul apei folosind senzorul cu ultrasunete. - readGlassDistance(): Citește și returnează distanța până la pahar folosind senzorul cu ultrasunete.

Fluxul de Operare 1. Utilizatorul apasă un buton pe telecomandă pentru a selecta mărimea paharului. 2. Codul IR este citit și interpretat. 3. Când utilizatorul confirmă cu butonul OK:

  1. Sistemul verifică dacă există un pahar și dacă este suficientă apă.
  2. Dacă sunt îndeplinite condițiile, începe turnarea apei.
  3. Mesajele relevante sunt afișate pe LCD.

Acest cod integrează funcționalitatea de citire a senzorilor, controlul releului pentru dozarea apei, și interfața cu utilizatorul prin intermediul unui display LCD și a unei telecomenzi IR.

Download

pm/prj2024/vstoica/bogdan.sprincenatu.txt · Last modified: 2024/05/27 23:37 by bogdan.sprincenatu
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