Nếu bạn quan tâm đến các sản phẩm thùng rác thông minh trên shopee thì có thể mua tại đây
Thùng Rác Thông Minh Sử Dụng Trong Gia Đình Điện Thùng Rác Có Nắp Thùng Rác Tự Động Phòng Khách Phòng Tắm Nhà Bếp 13L
Bạn có thể làm một thùng rác thông minh tự động mở nắp khi có người đưa tay lại gần bằng Arduino, cảm biến siêu âm và servo. Đây là một dự án khá phù hợp cho người mới bắt đầu.
1. Nguyên lý hoạt động
- Cảm biến siêu âm đo khoảng cách đến vật thể phía trước thùng rác.
- Khi phát hiện tay hoặc vật thể ở gần (ví dụ dưới 20 cm), Arduino điều khiển servo mở nắp.
- Sau vài giây, servo đóng nắp lại.
- Nếu vẫn còn vật thể phía trước, nắp tiếp tục mở.
Sơ đồ logic:
Phát hiện tay
↓
Khoảng cách < 20 cm ?
↓ Có
Mở nắp
↓
Đợi 3 giây
↓
Đóng nắp
2. Linh kiện cần chuẩn bị
| Linh kiện | Số lượng |
|---|---|
| Arduino Uno hoặc Nano | 1 |
| Cảm biến siêu âm HC-SR04 | 1 |
| Servo SG90 hoặc MG996R | 1 |
| Breadboard | 1 |
| Dây nối | vài dây |
| Nguồn 5V | 1 |
| Thùng rác có nắp | 1 |
Khuyến nghị
Nếu nắp nhẹ:
- Servo SG90 là đủ.
Nếu nắp lớn hoặc nặng:
- Servo MG996R hoặc MG995.
3. Kết nối phần cứng
HC-SR04
| HC-SR04 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| TRIG | D9 |
| ECHO | D10 |
Servo
| Servo | Arduino |
|---|---|
| Đỏ | 5V |
| Nâu/Đen | GND |
| Cam/Vàng | D6 |
Sơ đồ đơn giản:
HC-SR04
VCC -> 5V
GND -> GND
TRIG -> D9
ECHO -> D10
Servo
VCC -> 5V
GND -> GND
Signal -> D6
4. Gắn cơ khí
Cách đơn giản
Gắn servo lên thành thùng.
Nắp
_______
/
/
O====== Servo
Dùng:
- Que kem
- Thanh mica
- In 3D
để nối tay servo với nắp.
Góc servo
Ví dụ:
- 0° = đóng nắp
- 90° = mở nắp
Tùy cơ cấu thực tế mà chỉnh lại.
5. Cài thư viện
Arduino IDE đã có sẵn thư viện:
#include <Servo.h>
Không cần cài thêm.
6. Chương trình Arduino hoàn chỉnh
#include <Servo.h>
Servo trashServo;
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
trashServo.attach(6);
trashServo.write(0); // đóng nắp
Serial.begin(9600);
}
void loop()
{
// Gửi xung siêu âm
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
if(distance > 0 && distance < 20)
{
trashServo.write(90); // mở nắp
delay(3000);
trashServo.write(0); // đóng nắp
delay(500);
}
delay(100);
}
7. Hiệu chỉnh khoảng cách
Trong đoạn:
if(distance < 20)
Bạn có thể thay:
10 cm
15 cm
20 cm
30 cm
để phù hợp với nhu cầu.
Ví dụ:
if(distance < 15)
chỉ mở khi tay lại rất gần.
8. Nâng cấp chống mở nhầm
Cảm biến siêu âm đôi khi đo sai.
Thay vì mở ngay:
if(distance < 20)
có thể yêu cầu phát hiện liên tục:
if(distance < 20)
{
delay(100);
if(distance < 20)
{
mở nắp
}
}
hoặc lấy trung bình nhiều lần đo.
9. Nâng cấp báo đầy rác
Thêm một cảm biến HC-SR04 thứ hai đặt trong nắp.
Nguyên lý:
Đỉnh thùng
↓
HC-SR04
Khoảng cách tới rác
Nếu khoảng cách nhỏ hơn:
5 cm
→ bật LED đỏ hoặc còi báo.
10. Nâng cấp IoT
Nếu thay Arduino Uno bằng:
- ESP8266
- ESP32
Bạn có thể:
- Xem mức đầy trên điện thoại.
- Gửi thông báo khi thùng đầy.
- Điều khiển từ xa.
- Kết nối với ứng dụng như Blynk.
11. Một số lỗi thường gặp
Servo rung liên tục
Nguyên nhân:
- Nguồn yếu.
- Dây tín hiệu nhiễu.
Khắc phục:
- Dùng nguồn 5V riêng cho servo.
- Nối chung GND với Arduino.
HC-SR04 đo lung tung
Nguyên nhân:
- Đặt quá sát nắp.
- Góc phản xạ không tốt.
Khắc phục:
- Đặt cảm biến hướng thẳng ra phía trước.
- Lọc giá trị trung bình.
Servo không đủ lực
Khắc phục:
- Thay SG90 bằng MG996R.
- Giảm trọng lượng nắp.
Nếu bạn muốn làm một phiên bản hoàn chỉnh như sản phẩm thương mại (tự mở nắp, báo đầy rác, màn hình LCD hiển thị mức đầy, kết nối Bluetooth với điện thoại), mình có thể thiết kế cho bạn toàn bộ sơ đồ mạch, danh sách linh kiện và mã nguồn đầy đủ.
Ngoài lề:Nếu bạn quan tâm đến các sản phẩm thùng rác thông minh trên shopee thì có thể mua tại đây
Thùng Rác Thông Minh Sử Dụng Trong Gia Đình Điện Thùng Rác Có Nắp Thùng Rác Tự Động Phòng Khách Phòng Tắm Nhà Bếp 13L

