पार्ट्स लिस्ट
| पार्ट | संख्या | लगभग | खरीदें |
|---|---|---|---|
| Arduino Uno R3 (CH340 clone) | 1 | ₹450 | खरीदें Arduino Uno R3 (CH340 clone) |
| HC-SR04 ultrasonic sensor | 1 | ₹90 | खरीदें HC-SR04 ultrasonic sensor |
| SG90 micro servo | 1 | ₹110 | खरीदें SG90 micro servo |
| 470 µF / 16 V capacitor (servo supply) | 1 | ₹10 | खरीदें 470 µF / 16 V capacitor (servo supply) |
| Dustbin with a hinged lid + a stiff wire or ice-cream stick arm | 1 | ₹200 | खरीदें Dustbin with a hinged lid + a stiff wire or ice-cream stick arm |
| 5 V 2 A adapter or USB power bank | 1 | ₹200 | खरीदें 5 V 2 A adapter or USB power bank |
| कुल | ₹1,060 |
एफ़िलिएट सूचना: “खरीदें” लिंक से FlashReady को बिना अतिरिक्त लागत के छोटा कमीशन मिल सकता है। कीमतें अनुमानित हैं।
वायरिंग
| Arduino Uno R3 | Part · pin | Wire | Notes |
|---|---|---|---|
| D9 | HC-SR04 ultrasonic sensor · Trig | purple | |
| D10 | HC-SR04 ultrasonic sensor · Echo | green | 5 V वाले Uno पर 5 V echo सीधे लगाना ठीक है |
| 5V | HC-SR04 ultrasonic sensor · VCC | red | |
| GND | HC-SR04 ultrasonic sensor · GND | black | |
| D6 | SG90 micro servo (9 g) · SIG | orange | |
| 5V | SG90 micro servo (9 g) · VCC | red | 5V/GND के बीच 470 µF कैपेसिटर के साथ एक SG90 के लिए ठीक है; बड़े servo के लिए अलग 5 V सप्लाई लें |
| GND | SG90 micro servo (9 g) · GND | black |
बोर्ड की ख़ास बातें: HC-SR04 को ढक्कन के आगे ऊपर या बाहर की तरफ़ मुँह करके लगाएँ। यह लगभग 15° चौड़े cone में देखता है, इसलिए ठीक ऊपर रखा हाथ सबसे अच्छे से पकड़ में आता है। Servo लाइब्रेरी Timer1 इस्तेमाल करती है, जिससे पिन 9 और 10 पर PWM बंद हो जाता है। यहाँ कोई दिक्कत नहीं — ये सेंसर के लिए सादे digital पिन की तरह चल रहे हैं। SG90 चलना शुरू करते समय कई सौ mA खींचता है। ढक्कन हिलते ही Uno रीसेट हो जाए, तो कैपेसिटर लगाएँ या servo को अलग 5 V सप्लाई से चलाएँ (GND दोनों का साझा रखें)।
कोड
// Touch-free smart dustbin — Arduino Uno R3 + HC-SR04 + SG90 servo
// HC-SR04 TRIG D9, ECHO D10; SG90 signal D6. The lid opens when a hand comes within 20 cm.
#include <Servo.h>
constexpr uint8_t TRIG_PIN = 9;
constexpr uint8_t ECHO_PIN = 10;
constexpr uint8_t SERVO_PIN = 6;
constexpr int LID_CLOSED = 0; // servo angles — adjust for how the arm is mounted
constexpr int LID_OPEN = 100;
constexpr float OPEN_BELOW_CM = 20.0;
constexpr unsigned long STAY_OPEN_MS = 3000;
Servo lid;
bool open = false;
unsigned long openedAt = 0;
float distanceCm() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
unsigned long us = pulseIn(ECHO_PIN, HIGH, 25000UL); // ~4 m max
return us ? us * 0.0343f / 2.0f : 999.0f;
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
lid.attach(SERVO_PIN);
lid.write(LID_CLOSED);
Serial.begin(9600);
}
void loop() {
float d = distanceCm();
if (d < OPEN_BELOW_CM) {
if (!open) {
lid.write(LID_OPEN);
open = true;
Serial.println(F("Lid open"));
}
openedAt = millis(); // keep it open while the hand is still there
} else if (open && millis() - openedAt > STAY_OPEN_MS) {
lid.write(LID_CLOSED);
open = false;
Serial.println(F("Lid closed"));
}
delay(100);
}// Touch-free smart dustbin — Arduino Uno R3 + HC-SR04 + SG90 servo
// HC-SR04 TRIG D9, ECHO D10; SG90 signal D6. The lid opens when a hand comes within 20 cm.
#include <Servo.h>
constexpr uint8_t TRIG_PIN = 9;
constexpr uint8_t ECHO_PIN = 10;
constexpr uint8_t SERVO_PIN = 6;
constexpr int LID_CLOSED = 0; // servo angles — adjust for how the arm is mounted
constexpr int LID_OPEN = 100;
constexpr float OPEN_BELOW_CM = 20.0;
constexpr unsigned long STAY_OPEN_MS = 3000;
Servo lid;
bool open = false;
unsigned long openedAt = 0;
float distanceCm() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
unsigned long us = pulseIn(ECHO_PIN, HIGH, 25000UL); // ~4 m max
return us ? us * 0.0343f / 2.0f : 999.0f;
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
lid.attach(SERVO_PIN);
lid.write(LID_CLOSED);
Serial.begin(9600);
}
void loop() {
float d = distanceCm();
if (d < OPEN_BELOW_CM) {
if (!open) {
lid.write(LID_OPEN);
open = true;
Serial.println(F("Lid open"));
}
openedAt = millis(); // keep it open while the hand is still there
} else if (open && millis() - openedAt > STAY_OPEN_MS) {
lid.write(LID_CLOSED);
open = false;
Serial.println(F("Lid closed"));
}
delay(100);
}Compiled for uno on avr 1.8.8 with Servo 1.3.0 · 3 Nov 2026
यह कैसे काम करता है
हाथ लगाए बिना खुलने वाला डस्टबिन स्कूल प्रदर्शनी का पुराना पसंदीदा प्रोजेक्ट है — और रसोई में सच में काम का भी। डिब्बे के ऊपर हाथ रखिए, ढक्कन खुल जाएगा; हाथ हटाइए, तीन सेकंड बाद ढक्कन बंद।
HC-SR04 40 kHz की अल्ट्रासोनिक पिंग भेजकर और उसकी गूँज (echo) लौटने का समय नापकर दूरी निकालता है। स्केच इसे D9 से trigger करता है, D10 पर pulseIn से echo पल्स नापता है, और माइक्रोसेकंड को सेंटीमीटर में बदलता है। 25 ms का timeout रेंज को लगभग 4 m तक सीमित रखता है, ताकि echo न आने पर loop अटके नहीं।
जब कोई चीज़ 20 cm से पास आती है, तो D6 पर लगा SG90 servo खुलने वाले कोण पर घूम जाता है। हर नई पहचान बंद होने का समय आगे खिसका देती है, इसलिए जब तक हाथ वहाँ है, ढक्कन खुला रहता है। तीन सेकंड तक कुछ न दिखे, तो ढक्कन बंद हो जाता है।
Servo के कोण इस पर निर्भर करते हैं कि arm ढक्कन से कैसे जुड़ी है। LID_CLOSED और LID_OPEN तब तक बदलें जब तक ढक्कन पूरा खुले और servo अपने आख़िरी सिरे पर ज़ोर न लगाए।
समस्या समाधान
ढक्कन अपने-आप खुल जाता है
सेंसर को ढक्कन या डिब्बे का किनारा दिख रहा है। उसे थोड़ा तिरछा करें, या OPEN_BELOW_CM को 15 cm कर दें।
रुके हुए servo में झटके (jitter) आते हैं
सप्लाई में noise है। 470 µF कैपेसिटर servo के पास लगाएँ, उसके तार छोटे रखें, और ज़रूरत हो तो उसे अलग पावर दें।
ढक्कन कभी खुलता ही नहीं
देखें कि Trig और Echo आपस में बदले तो नहीं गए। Serial Monitor खोलें और distanceCm() का print जोड़कर देखें कि सेंसर क्या पढ़ रहा है।
आगे क्या करें
- ढक्कन के अंदर दूसरा HC-SR04 लगाकर नापें कि डिब्बा कितना भरा है।
- डिब्बा भरने पर LED जलाएँ, या ESP32 वाले वर्ज़न से Wi-Fi अलर्ट भेजें।
- दूसरा खाना और दो servo लगाकर सूखा और गीला कचरा अलग करें।



