Table of Contents

Smart Recycle Bin

Autor: Sâmpetru Mario
Grupa: 331CA

Introducere

Am realizat un coș de gunoi inteligent care detectează apropierea utilizatorului prin intermediul unui senzor ultrasonic, deschide automat capacul folosind un servo. În plus, capacul acestuia se poate deschide de la distanță prin intermediul unei aplicații. Tot prin intermediul aplicației, utilizatorul poate verifica dacă a avut loc o scurgere de lichide.

Descriere generală

1. Arduino UNO

Deschide capacul coșului de gunoi și reacționează automat la apropierea utilizatorului.

Conectat la:

2. ESP32-WROOM

Comunicare wireless și extinderea funcționalității prin senzori suplimentari.

Conectat la:

3. Interfață Grafică (Python)

Descriere:

Schema Bloc

Hardware Design

Listă piese:

Componentă Cantitate Preț
Arduino UNO 1 49 Lei
ESP-Wroom 32 1 45 Lei
Servomotor SG90 1 15 Lei
SL067 (Water Sensor) 1 10 Lei
HC-SR04 1 12 Lei
LCD I2C 1 14 Lei
Buzzer 1 2 Lei
Baterie 9V 650mAh 1 57 Lei
Baterie 5V 2Ah 1 100 Lei

Schema circuitului

Imagini cu Hardware-ul

Software Design

Medii de dezvoltare: Arduino IDE pentru ESP32 și Arduino UNO; Vscode pentru Python

Listă Librării și Surse Terțe Utilizate

Nume Librărie Descriere și Utilizare
tkinter Bibliotecă GUI nativă Python. A fost folosită pentru a crea interfața grafică din care se trimit comenzile (deschidere/închidere capac) către ESP32.
requests Modulul HTTP pentru Python, folosit în aplicația GUI pentru a trimite cereri GET către ESP32 și a comunica cu dispozitivul.
WiFi.h Oferă conectivitate Wi-Fi și gestionează serverul HTTP care primește comenzile de la interfața Python.
soc/gpio_reg.h oferă definiții pentru registrele GPIO, facilitând controlul pinilor ESP32.
LiquidCrystal_I2C.h.h Pentru controloul display-ului LCD.
Servo.h A fost utilizată pentru a controla mișcarea servo-ului (deschiderea/închiderea capacului).

Funcții Arduino UNO

Funcție Descriere
setupServo() Configurează servo-motorul prin intermediul librăriei Servo.h
openServo() Modifică unghiul de deschidere al servo-ului astfel încât să poată efectua deschiderea capacului.
closeServo() Operația inversă openServo().
updateLcd() Actualizează afișajul LCD folosind librăria LiquidCrystal_I2C. Mesajele afișate reprezintă statusul capacului (deschis/închis), precum și valoarea citită de senzorul de apă.
checkWaterSensor() Citește valoarea analogică de la senzorul de apă și trimite o alertă dacă valoarea depășește pragul.
handleEspCommand() Procesează comenzile primite (de ex. OPEN sau CLOSE) de la ESP32 pentru a controla deschiderea/închiderea servo-ului.
autoCloseCheck() Închide automat servo-ul după 3000 ms dacă acesta este deschis.

Funcții ESP32

Funcție Descriere
setupWiFi() Conectează ESP32 la rețeaua Wi-Fi folosind SSID și parolă, așteptând obținerea unei conexiuni stabile.
measureDistance() Utilizează senzorul HC-SR04 pentru a măsura distanța dintre senzorul HC-SR04 și cel mai apropiat obiect.
handleHandDetection() Detectează prezența unei mâini la distanțe între 2.0 și 15.0 cm și declanșează comanda de deschidere a capacului când pragul este atins.
handleSerialInput() Monitorizează conexiunea serială (Serial2) pentru a prelua mesajele trimise de la Arduino. La primirea unui mesaj, acesta este afișat pe consolă și transmis funcției updateStatus() pentru eventuale acțiuni ulterioare.
sendToArduino(String& cmd) Trimite comenzi (cum ar fi “OPEN” sau “CLOSE”) către placa Arduino prin intermediul conexiunii Serial2.
handleHttpRequest() Gestionează cererile HTTP GET pentru /open, /close și /status, permițând controlul de la distanță al funcțiilor dispozitivului.
updateStatus() Procesează mesajele primite de la Arduino pentru a actualiza starea sistemului.

Funcții Python

Funcție Descriere
send() Trimite cereri GET către ESP32 (cu timeout de 2 secunde) pentru a executa comenzi precum deschiderea sau închiderea capacului.
poll_status() Interoghează periodic ESP32 pentru a verifica starea și a afișa avertismente dacă se detectează WATER.

Rezultate Obţinute

Jurnal

  • M-am gândit la proiect.
  • Am procurat piesele necesare. Până când au venit piesele, am lucrat la schema bloc și la schema electrică.
  • Odată ajunse piesele, am realizat etapa hardware, cu piesele conectate exact la fel ca în schema electrică.
  • Am lipit piesele în interiorul coșului de gunoi și am mai cumparat o baterie externa pentru a alimenta complet proiectul.
  • Am scris Software-ul pentru proiect.

Concluzii

Download

Bibliografie/Resurse

Componentă Cantitate Datasheet
Arduino UNO 1 Arduino UNO
ESP-Wroom 32 1 ESP-Wroom 32
Servomotor SG90 1 Servomotor SG90
SL067 1 Water Sensor SL067
HC-SR04 1 HC-SR04
LCD I2C 1 LCD

Export to PDF