This is an old revision of the document!


AutoBin

Zeitouni Aila Grupa: 333CA

Introducere

Prezentarea pe scurt a proiectului:

AutoBin este un coș de gunoi inteligent care se deschide automat atunci când detectează prezența unei persoane sau a unui obiect în apropiere. Proiectul folosește un senzor cu ultrasunete pentru detecție și un servomotor pentru a acționa capacul.

Ce face:

Sistemul detectează apropierea unei persoane și acționează automat servomotorul pentru a deschide capacul. După ce persoana se îndepărtează, capacul se închide. În plus, datele despre distanță și acțiuni sunt transmise prin UART pentru monitorizare și depanare.

Care este scopul lui:

Scopul AutoBin este de a oferi o soluție igienică și practică pentru colectarea deșeurilor, eliminând nevoia de a atinge capacul manual. Astfel, se reduce riscul de contaminare și se îmbunătățește experiența utilizatorului.

Care a fost ideea de la care ați pornit:

Ideea a pornit de la nevoia de a evita contactul cu suprafețe potențial murdare în spațiile publice sau acasă. Am vrut să creăm un sistem simplu, accesibil și eficient, bazat pe tehnologii învățate în laborator, cum ar fi controlul servomotoarelor, senzorii de distanță și comunicația UART.

Care a fost ideea de la care ați pornit:

Ideea a pornit de la nevoia de a evita contactul cu suprafețe potențial murdare în spațiile publice sau acasă. Am vrut să creăm un sistem simplu, accesibil și eficient, bazat pe tehnologii învățate în laborator, cum ar fi controlul servomotoarelor, senzorii de distanță și comunicația UART.

De ce credeți că este util pentru alții și pentru voi:

Pentru alții, AutoBin oferă o modalitate igienică și practică de a arunca gunoiul, ceea ce este esențial în școli, spitale, birouri sau bucătării. Pentru mine, proiectul este o oportunitate de a aplica cunoștințele dobândite la laborator într-o soluție concretă, utilă și relevantă din punct de vedere social.

Descriere generală

schema bloc

List of Hardware Components

Component Function Arduino Uno Central controller, reads sensor data, controls motor/display/button Sensor Ultrasonic sensor to detect hand motion Motor Executes a physical task (e.g., servo motor for rotation or DC motor) LCD Display Shows information like “Motor On”, “Ready”, or sensor readings buzzer Used when sensor detects something fire mama-tata Connects components to Arduino + breadboard

Hardware Design

diagramă bloc

schema electrica

bom

Descriere proiect

Proiectul este construit în jurul plăcii Arduino Uno, care controlează și comunică cu mai multe componente externe pentru a forma un sistem interactiv cu funcții de măsurare, afișare și alertă.

Componente utilizate

  • Arduino Uno – microcontroller principal (ATmega328P), controlează logica și comunică cu componentele prin Digital I/O, PWM și I2C.
  • Senzor HC-SR04 – măsoară distanța. Trig (D9), Echo (D8), comunicare digitală.
  • Buzzer pasiv – semnal sonor de alertă, controlat prin D5 cu funcția tone().
  • Servo motor SG90 – controlat prin semnal PWM de la pinul D10, alimentare 5V.
  • LCD 16×2 cu I2C – afișează valori de la senzori, conectat pe A4 (SDA) și A5 (SCL).

Alimentare

Arduino este alimentat prin USB (5V), iar toate componentele primesc alimentare prin pinii de 5V și GND, distribuiți prin breadboard. Toate componentele împart GND comun pentru referință corectă. Legăturile sunt realizate pe breadboard, cu grijă pentru alimentare și protecție. Comunicarea I2C permite extinderea ușoară a proiectului.

Interfețe și pini utilizați

Componentă Interfață Pini Arduino
HC-SR04 Digital D9 (Trig), D8 (Echo)
Buzzer Digital D5
Servo PWM D10
LCD I2C I2C A4 (SDA), A5 (SCL)
hardware

Rolul fiecărei componente
  • Arduino Uno – Acționează ca unitate centrală de control. Primește informații de la senzori, procesează datele și trimite comenzi către afișaj și actuatori.
  • Senzor HC-SR04 – Măsoară distanța până la un obiect aflat în fața sistemului folosind unde ultrasonice. Poate fi utilizat pentru declanșarea buzzer-ului sau pentru activarea servo-motorului când un obiect este detectat la o distanță prestabilită.
  • Buzzer pasiv – Emite sunete ca semnal de alertă atunci când o condiție este îndeplinită (ex: distanță mai mică de 10 cm). Este controlat digital de Arduino prin funcția `tone()`.
  • Servo motor SG90 – Se rotește într-un anumit unghi (0°–180°) în funcție de comanda primită de la Arduino. Util în aplicații precum deschiderea unei uși automate, ridicarea unei bariere etc.
  • LCD 16×2 cu interfață I2C – Afișează valori precum distanța măsurată sau starea senzorilor. Conectarea prin I2C permite economisirea pinilor digitali și oferă comunicare eficientă pe doar două fire (SDA și SCL).
Estimare consum energie
Componentă Curent estimat
Arduino Uno ~50 mA
HC-SR04 ~15 mA
Buzzer ~30–50 mA
Servo SG90 ~100–250 mA
LCD I2C ~20 mA
Total estimat ~300–400 mA

Arduino poate alimenta toate componentele prin portul USB. Dacă servo-ul va fi utilizat intens, este recomandată o sursă externă de 5V pentru siguranță.

Stadiul actual și pașii următori

Montajul hardware a fost realizat și testat în mediul virtual (Tinkercad), cu rezultate funcționale. Conexiunile au fost validate, iar codul de control este pregătit. Urmează achiziționarea componentelor fizice, montarea pe breadboard real și testarea sistemului complet.

Software Design

#include <Arduino.h> #include <Servo.h> #include <Wire.h> #include <LiquidCrystal_PCF8574.h> Installed manually in lib/ Pin Definitions const int TRIG_PIN = 6; const int ECHO_PIN = 7; const int SERVO_PIN = 9; const int BUZZER_PIN = 8;

Constants const int DISTANCE_OPEN_THRESHOLD = 15; in cm const int DISTANCE_TRASH_THRESHOLD = 8; for thanking const int SERVO_OPEN_ANGLE = 0; const int SERVO_CLOSE_ANGLE = 90; const int TRASH_DETECT_DELAY = 3000; 3 seconds before next “thank you”

Components Servo lidServo; LiquidCrystal_PCF8574 lcd(0x27); float distance_cm; unsigned long lastTrashDetectTime = 0; float measureDistance(); void buzz(int times); void setup() { Serial.begin(9600); tone(8, 1000); Sensor setup

pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Buzzer
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
// Servo setup
lidServo.attach(SERVO_PIN);
lidServo.write(SERVO_CLOSE_ANGLE);
// LCD setup
lcd.begin(16, 2);
lcd.setBacklight(255);
lcd.setCursor(0, 0);
lcd.print(" Smart Stash Can ");
lcd.setCursor(0, 1);
lcd.print("   Initializing   ");
delay(2000);
lcd.clear();

}

void loop() {

distance_cm = measureDistance();
Serial.print("Distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
if (distance_cm > 0 && distance_cm < DISTANCE_OPEN_THRESHOLD) {
  // Open lid
  lcd.setCursor(0, 0);
  lcd.print("Opening lid     ");
  lidServo.write(SERVO_OPEN_ANGLE);
  // 🔊 Buzzer beep on open
  buzz(1);
} else {
  // Close lid
  lcd.setCursor(0, 0);
  //lcd.print("Waiting...      ");
  lidServo.write(SERVO_CLOSE_ANGLE);
}
// Trash detection and second thank-you buzzer
if (distance_cm > 0 && distance_cm < DISTANCE_TRASH_THRESHOLD) {
  if (millis() - lastTrashDetectTime > TRASH_DETECT_DELAY) {
    lcd.setCursor(0, 1);
    lcd.print("  Thank you!     ");
    buzz(2);  // 2 short beeps
    lastTrashDetectTime = millis();
  }
} else {
  lcd.setCursor(0, 1);
  lcd.print("Scanning area   ");
}
delay(300);

}

float measureDistance() {

digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
float duration = pulseIn(ECHO_PIN, HIGH);
return 0.017 * duration;

}

void buzz(int times) {

for (int i = 0; i < times; i++) {
  digitalWrite(BUZZER_PIN, HIGH);
  delay(300);  // increase duration
  digitalWrite(BUZZER_PIN, LOW);
  delay(200);
}

}

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/vstoica/aila.zeitouni.1748204278.txt.gz · Last modified: 2025/05/25 23:17 by aila.zeitouni
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