Giới thiệu dự án
Trong bối cảnh đô thị hóa nhanh chóng và xu hướng xây dựng khuôn viên đại học thông minh (Smart Campus), bài toán quản lý chất thải rắn đang đối mặt với nhiều thách thức nghiêm trọng. Theo thống kê môi trường đô thị, hơn 70% các điểm tập kết rác công cộng thường xuyên rơi vào tình trạng quá tải cục bộ trước chu kỳ thu gom cố định của nhân viên vệ sinh. Việc rác thải ứ đọng không chỉ gây ô nhiễm mỹ quan, phát sinh mùi hôi mà còn tạo điều kiện cho các vector truyền bệnh phát triển.
Đồ án tốt nghiệp "Thùng Rác Thông Minh" (Smart Trash Can) thuộc ngành Công nghệ Kỹ thuật Điện tử Truyền thông – Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), do sinh viên Lê Thanh Cao và Nguyễn Thanh Tuấn thực hiện dưới sự hướng dẫn của ThS. Nguyễn Văn Hiệp, giải quyết triệt để bài toán tự động hóa thu gom rác ngoại cảnh. Thay vì sử dụng mô hình thùng rác thụ động truyền thống, đề tài xây dựng một hệ thống robot tự hành (Autonomous Guided Vehicle - AGV) tích hợp điều hướng vệ tinh GPS, la bàn số và cảm biến môi trường.
+-------------------------------------------------------------------------+
| PROBLEM STATEMENT |
| - Thùng rác công cộng quá tải không được xử lý kịp thời |
| - Tốn nhân lực kiểm tra thủ công từng điểm thu gom |
| - Thiếu khả năng tự động hóa di chuyển và điều hướng ngoài trời |
+------------------------------------+------------------------------------+
|
v
+-------------------------------------------------------------------------+
| SOLUTION APPROACH |
| - Tự động phát hiện mức rác đầy bằng cảm biến siêu âm |
| - Tự hành di chuyển về điểm tập kết tổng qua tọa độ GPS & La bàn số |
| - Định thời gian thực (RTC DS1307) tự về bãi tập kết vào khung giờ cố định|
| - Tránh vật cản chủ động bằng cụm cảm biến HC-SR04 |
+------------------------------------+------------------------------------+
|
v
+-------------------------------------------------------------------------+
| EXPECTED OUTCOMES |
| - Sai số định vị tọa độ ngoài trời: CEP < 2.5 m |
| - Tải trọng vận hành: 4-5 kg (không tải) đến 9-10 kg (toàn tải) |
| - Tự động quay về trạm gốc chính xác qua thuật toán Haversine |
+-------------------------------------------------------------------------+
Mục tiêu cụ thể của dự án
- Thiết kế và chế tạo phần cứng xe thùng rác 4 bánh với khung gầm mica chịu tải từ 4 kg đến 10 kg.
- Tích hợp khối xử lý trung tâm Arduino Mega 2560 kết nối đồng bộ 5 cụm cảm biến và module ngoại vi.
- Ứng dụng giải thuật Haversine và giải mã chuỗi chuẩn NMEA từ module GPS U-blox NEO-6M để tính toán khoảng cách và góc phương vị (bearing angle) di chuyển đến điểm tập kết định sẵn.
- Điều hướng vi chỉnh thời gian thực bằng la bàn số từ trường 3 trục HMC5883L kết nối qua bus I2C.
- Tự động phát hiện rác đầy và né tránh chướng ngại vật bằng mảng cảm biến sóng siêu âm HC-SR04.
- Lập lịch hành trình tự động về bãi tập trung vào ban đêm thông qua mạch thời gian thực RTC DS1307.
Phạm vi và giới hạn kỹ thuật
- Môi trường hoạt động: Không gian ngoài trời thoáng đãng, không bị che khuất tầng cao bởi tán cây rậm rạp hoặc khe hẹp giữa các tòa nhà cao tầng (đảm bảo thu tối thiểu 4 vệ tinh GPS).
- Kích thước vật lý: $34.5 \times 34 \times 44\text{ cm}$; khung đế mica gia công CNC kết hợp 4 động cơ DC giảm tốc JGA25-370 (12V - 250 RPM).
- Nguồn cấp: Bộ ắc quy khô chì-axit 12V phục vụ mạch động lực và hạ áp 5V/3.3V cấp cho vi điều khiển cùng cảm biến.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí so sánh |
Thùng rác gia đình thông minh (Sensible Eco Living, Homematic) |
Thùng rác công cộng cố định có nén rác (Bigbelly Solar) |
Giải pháp Thùng rác thông minh tự hành (Đề tài) |
| Cơ chế hoạt động |
Cảm biến hồng ngoại PIR/siêu âm tự mở nắp tại chỗ |
Cố định, nén rác cơ học, gửi SMS/IoT cảnh báo đầy |
Tự động phát hiện rác đầy, tự di chuyển đến trạm rác tổng |
| Khả năng di động |
Không (đặt cố định trong nhà) |
Không (chôn cố định ngoài trời) |
Tự hành 4 bánh qua GPS, la bàn số và thuật toán Haversine |
| Công nghệ định vị |
Không sử dụng |
Định vị trạm cố định qua GSM/GPRS |
Module GPS U-blox NEO-6M + La bàn từ HMC5883L |
| Khả năng né vật cản |
Không có |
Không có |
4 cảm biến siêu âm HC-SR04 quét đa hướng |
| Chi phí triển khai |
Thấp (500.000 - 1.500.000 VNĐ) |
Rất cao (> 50.000.000 VNĐ/thùng) |
Tối ưu (~ 1.500.000 - 2.500.000 VNĐ/robot) |
Phân loại yêu cầu theo mô hình MoSCoW
- Must have (Bắt buộc): Khối điều khiển trung tâm vi xử lý, đọc tọa độ GPS, đo hướng la bàn số, điều khiển động cơ cầu H L298N, cảnh báo còi Buzzer khi di chuyển.
- Should have (Nên có): Cảm biến đo mức rác trong thùng, module thời gian thực RTC DS1307 lập lịch ban đêm, thuật toán tránh vật cản tức thời.
- Could have (Có thể có): Nút nhấn cơ học kích hoạt hành trình hồi quy (Return-to-Base), cơ chế phanh động cơ khi gặp dốc nghiêng.
- Won't have (Chưa hỗ trợ phiên bản này): Module truyền thông không dây 4G/LoRaWAN gửi dữ liệu lên Cloud, camera nhận diện vật thể AI (dành cho hướng phát triển tiếp theo).
Thiết kế hệ thống
graph TD
subgraph Power_Supply ["Khối Nguồn Năng Lượng"]
Bat[Ắc quy 12V DC] --> Buck[Mạch Hạ Áp LM2596]
Buck -->|5V DC| Mega[Arduino Mega 2560]
Bat -->|12V DC| L298N[Driver Cầu H L298N]
end
subgraph Sensor_Inputs ["Khối Thu Thập Dữ Liệu"]
GPS[Module GPS NEO-6M] -->|UART Serial1 / 9600 bps| Mega
Compass[La Bàn HMC5883L] -->|I2C: SDA/SCL 400kHz| Mega
RTC[Thời Gian Thực DS1307] -->|I2C: SDA/SCL| Mega
US_Obs[3x Cảm Biến HC-SR04 Vật Cản] -->|Digital GPIO Trigger/Echo| Mega
US_Waste[1x Cảm Biến HC-SR04 Mức Rác] -->|Digital GPIO Trigger/Echo| Mega
Btn[Nút Nhấn Quay Về] -->|Digital Input Pull-up| Mega
end
subgraph Actuators ["Khối Chấp Hành & Cảnh Báo"]
Mega -->|4x PWM / 4x GPIO Dir| L298N
L298N --> M1[Motor DC Giảm Tốc FL]
L298N --> M2[Motor DC Giảm Tốc FR]
L298N --> M3[Motor DC Giảm Tốc RL]
L298N --> M4[Motor DC Giảm Tốc RR]
Mega -->|Digital Output| Buzzer[Còi Báo Động Buzzer 5V]
end
Danh mục công nghệ và linh kiện phần cứng (Hardware Stack)
- Bộ vi điều khiển: Microchip ATmega2560 (Board Arduino Mega 2560 Rev3) – Tần số thạch anh 16 MHz, 256 KB Flash ROM, 8 KB SRAM, 4 KB EEPROM, 4 cổng phần cứng UART (Hardware Serial).
- Module định vị GPS: U-blox NEO-6M – Giao thức truyền thông UART (baudrate: 9600 bps, update rate: 1 Hz - 5 Hz), hỗ trợ chuẩn NMEA-0183 (câu lệnh
$GPRMC, $GPGGA).
- Module la bàn số: Honeywell HMC5883L – Cảm biến từ trở 3 trục (3-axis magneto-resistive), độ phân giải 12-bit ADC, giao tiếp bus I2C (địa chỉ
0x1E).
- Mạch công suất động cơ: Module mạch cầu H kép L298N – Điện áp động lực $V_s \le 35\text{V}$, dòng định mức 2A mỗi kênh, hỗ trợ điều chế độ rộng xung (PWM) điều tốc.
- Động cơ chấp hành: 4 Động cơ DC giảm tốc JGA25-370 (12V DC, tốc độ không tải 250 RPM, dòng tiêu thụ $340\text{ mA} - 370\text{ mA}$).
- Cảm biến khoảng cách: 4 Module siêu âm HC-SR04 – Tần số phát sóng 40 kHz, góc quét hiệu dụng $15^\circ$, dải đo $2\text{ cm} - 400\text{ cm}$, độ phân giải $\pm 3\text{ mm}$.
- Module đồng hồ thời gian thực: Maxim Integrated DS1307 – Giao tiếp I2C (địa chỉ
0x68), tích hợp pin nuôi CR2032 lưu trữ lịch biểu thực tế (Real-Time).
Phương pháp nghiên cứu và phát triển (Methodology)
Quy trình phát triển dự án áp dụng mô hình lai kiểu mẫu chữ V (V-Model / Embedded Engineering Lifecycle):
Thiết kế kiến trúc hệ thống ----------> Tích hợp và kiểm thử toàn hệ thống
\ /
Thiết kế mạch & module phần cứng ---> Kiểm thử phần cứng & driver
\ /
Lập trình thuật toán điều hướng -> Kiểm thử đơn vị (Unit Tests)
\ /
+---> Chế tạo mô hình thực địa <---+
- Giai đoạn 1 (Tuần 1 - 2): Khảo sát lý thuyết hệ thống dẫn đường GNSS, nghiên cứu chuẩn dữ liệu NMEA 0183, tính toán đặc tính động học khung gầm xe 4 bánh.
- Giai đoạn 2 (Tuần 3 - 5): Thiết kế sơ đồ nguyên lý (Schematic), gia công khung cơ khí mica 3 tầng, hàn nối dây tín hiệu chống nhiễu từ khối công suất.
- Giai đoạn 3 (Tuần 6 - 8): Xây dựng firmware trên nền tảng Arduino IDE (C/C++), tối ưu hóa hàm toán học lượng giác và thuật toán lọc nhiễu tín hiệu la bàn/khoảng cách.
- Giai đoạn 4 (Tuần 9 - 11): Chạy thực nghiệm ngoài trời tại khuôn viên trường đại học, cân chỉnh tọa độ Google Maps, đo đạc sai số và hiệu chỉnh PID điều khiển bám góc.
Triển khai và kết quả thực nghiệm
Quy trình phát triển và thuật toán cốt lõi
Thuật toán điều hướng robot dựa trên sự kết hợp giữa hệ tọa độ toàn cầu (GPS) và hệ quy chiếu góc phương vị cục bộ (La bàn số HMC5883L).
[Bắt đầu]
|
v
[Đọc tọa độ hiện tại: Lat_cur, Lon_cur từ GPS NEO-6M]
|
v
[Tính khoảng cách d và góc hướng đích Target_Heading theo Haversine]
|
v
[Đọc góc la bàn thực tế Current_Heading từ HMC5883L]
|
v
[Tính góc lệch: Error = Target_Heading - Current_Heading]
|
+---> |Error| > Threshold? ----(YES)----> [Kích hoạt quay tại chỗ/chuyển hướng]
| |
(NO) v
| [Tiếp tục đọc cảm biến]
v
[Quét 3 cảm biến siêu âm phía trước]
|
+---> Khoảng cách < 25 cm? -----(YES)----> [Dừng xe, rẽ vòng tránh vật cản]
|
(NO)
|
v
[Chạy thẳng tiến tới Waypoint tiếp theo]
|
v
[Kiểm tra khoảng cách d < 1.5 m] ----(YES)----> [Đã đến điểm đích / Chuyển Waypoint kế]
1. Thuật toán Haversine tính toán khoảng cách và góc phương vị
Độ cong của bề mặt Trái Đất được mô phỏng theo hình cầu bán kính $R = 6371\text{ km}$. Công thức Haversine xác định khoảng cách $d$ giữa hai tọa độ $(\phi_1, \lambda_1)$ và $(\phi_2, \lambda_2)$:
$$a = \sin^2\left(\frac{\Delta\phi}{2}\right) + \cos(\phi_1)\cos(\phi_2)\sin^2\left(\frac{\Delta\lambda}{2}\right)$$
$$d = 2R \cdot \text{atan2}\left(\sqrt{a}, \sqrt{1-a}\right)$$
Góc phương vị mục tiêu ($\theta$) được xác định:
$$\theta = \text{atan2}\left(\sin(\Delta\lambda)\cos(\phi_2), \cos(\phi_1)\sin(\phi_2) - \sin(\phi_1)\cos(\phi_2)\cos(\Delta\lambda)\right)$$
#include <Wire.h>
#include <TinyGPS++.h>
#include <HMC5883L.h>
TinyGPSPlus gps;
HMC5883L compass;
const float TARGET_LAT = 10.851423; // Tọa độ điểm rác tổng (HCMUTE)
const float TARGET_LON = 106.771985;
const float PI_RAD = 0.017453292519943295; // PI / 180
// Hàm tính khoảng cách theo Haversine (đơn vị: Mét)
double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double dLat = (lat2 - lat1) * PI_RAD;
double dLon = (lon2 - lon1) * PI_RAD;
lat1 = lat1 * PI_RAD;
lat2 = lat2 * PI_RAD;
double a = sin(dLat / 2.0) * sin(dLat / 2.0) +
cos(lat1) * cos(lat2) * sin(dLon / 2.0) * sin(dLon / 2.0);
double c = 2.0 * atan2(sqrt(a), sqrt(1.0 - a));
return 6371000.0 * c; // Bán kính Trái Đất = 6371000m
}
// Hàm tính góc phương vị mục tiêu (Độ: 0 - 360)
double calculateTargetHeading(double lat1, double lon1, double lat2, double lon2) {
double dLon = (lon2 - lon1) * PI_RAD;
lat1 = lat1 * PI_RAD;
lat2 = lat2 * PI_RAD;
double y = sin(dLon) * cos(lat2);
double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon);
double heading = atan2(y, x) * 57.29577951308232; // Đổi sang độ
if (heading < 0) heading += 360.0;
return heading;
}
// Hàm lấy góc phương vị hiện tại từ cảm biến La Bàn HMC5883L
float getCurrentHeading() {
Vector norm = compass.readNormalize();
float heading = atan2(norm.YAxis, norm.XAxis);
// Góc lệch từ trường (Declination angle) tại TP.HCM ~ -0.11 độ
heading += 0.0019;
if (heading < 0) heading += 2 * PI;
if (heading > 2 * PI) heading -= 2 * PI;
return heading * 180.0 / M_PI;
}
2. Thuật toán điều hướng và tránh vật cản động
#define TRIG_PIN_F 22
#define ECHO_PIN_F 23
#define ENA 2
#define IN1 3
#define IN2 4
#define IN3 5
#define IN4 6
#define ENB 7
long readUltrasonicDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 25000); // Timeout 25ms
if (duration == 0) return 400; // Giá trị tối đa ngoài tầm đo
return duration * 0.034 / 2;
}
void driveMotors(int speedLeft, int speedRight) {
analogWrite(ENA, abs(speedLeft));
analogWrite(ENB, abs(speedRight));
digitalWrite(IN1, speedLeft >= 0 ? HIGH : LOW);
digitalWrite(IN2, speedLeft >= 0 ? LOW : HIGH);
digitalWrite(IN3, speedRight >= 0 ? HIGH : LOW);
digitalWrite(IN4, speedRight >= 0 ? LOW : HIGH);
}
void navigateToTarget() {
while (Serial1.available() > 0) {
if (gps.encode(Serial1.read())) {
if (gps.location.isValid()) {
double curLat = gps.location.lat();
double curLon = gps.location.lng();
double distance = calculateDistance(curLat, curLon, TARGET_LAT, TARGET_LON);
if (distance <= 1.5) { // Đã đến vùng đích trong phạm vi 1.5m
driveMotors(0, 0); // Dừng hệ thống
return;
}
// Kiểm tra vật cản phía trước
long distObs = readUltrasonicDistance(TRIG_PIN_F, ECHO_PIN_F);
if (distObs < 25) { // Phát hiện vật cản < 25cm
driveMotors(0, 0);
delay(200);
driveMotors(-150, 150); // Xoay phải né vật cản
delay(400);
return;
}
double targetHeading = calculateTargetHeading(curLat, curLon, TARGET_LAT, TARGET_LON);
float currentHeading = getCurrentHeading();
double headingError = targetHeading - currentHeading;
if (headingError < -180) headingError += 360;
if (headingError > 180) headingError -= 360;
if (abs(headingError) <= 10.0) {
driveMotors(200, 200); // Chạy thẳng
} else if (headingError > 10.0) {
driveMotors(180, 80); // Bẻ lái sang phải
} else {
driveMotors(80, 180); // Bẻ lái sang trái
}
}
}
}
}
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Hệ thống được đưa vào kiểm thử thực địa tại sân trường Đại học Sư phạm Kỹ thuật TP.HCM với 6 điểm mốc tọa độ (Waypoints) liên tiếp trên quãng đường 120 mét.
(Xuất phát: P0) ---> (P1) ---> (P2) ---> (P3) ---> (P4) ---> (P5: Trạm rác tổng)
| | | | | |
Đo GPS Rẽ góc 45° Vật cản Rẽ 90° Lập lịch RTC Dừng chính xác
Kết quả đo kiểm năng lượng và thông số kỹ thuật thực nghiệm
| STT |
Khối chức năng / Linh kiện |
Điện áp cấp ($V$) |
Dòng tiêu thụ lý thuyết ($mA$) |
Dòng đo đạc thực tế ($mA$) |
Công suất tiêu thụ ($W$) |
| 1 |
Bo mạch Arduino Mega 2560 |
5.0 |
50.0 |
52.3 |
0.261 |
| 2 |
Module GPS NEO-6M |
3.3 |
50.0 |
48.7 |
0.161 |
| 3 |
Module La bàn HMC5883L |
3.3 |
0.1 |
0.12 |
0.0004 |
| 4 |
Cụm 4 Cảm biến siêu âm HC-SR04 |
5.0 |
60.0 (15x4) |
58.0 |
0.290 |
| 5 |
Module RTC DS1307 |
5.0 |
1.5 |
1.2 |
0.006 |
| 6 |
Mạch Driver L298N + 4 Động cơ DC (Không tải) |
12.0 |
1400.0 |
1360.0 |
16.320 |
| 7 |
Mạch Driver L298N + 4 Động cơ DC (Có tải 5 kg) |
12.0 |
1800.0 |
1750.0 |
21.000 |
| Tổng cộng |
Toàn hệ thống khi hoạt động đầy tải |
- |
~ 3361.6 |
3270.32 |
~ 38.038 W |
Đánh giá độ chính xác điều hướng
- Độ chính xác GPS: Tỷ lệ bắt tín hiệu thành công đạt $100%$ khi có từ 6 đến 9 vệ tinh kết nối; bán kính sai số xác định vị trí thực tế dao động từ $1.2\text{ m}$ đến $2.3\text{ m}$.
- Phản ứng tránh vật cản: Thời gian đáp ứng của cảm biến siêu âm $T_{res} \le 30\text{ ms}$, khoảng cách nhận diện an toàn được thiết lập $25\text{ cm}$, tỷ lệ nhận diện vật cản tĩnh bề mặt phẳng đạt $98%$.
- Độ tin cậy lịch trình RTC: Lệnh kích hoạt lúc 22:00 hàng ngày vận hành chính xác với sai số trôi thời gian $< 2\text{ giây/tháng}$.
Đổi mới và đóng góp khoa học
- Tích hợp liên hiệp cảm biến (Sensor Fusion) giá thành thấp: Đồ án kết hợp thành công dữ liệu thô từ GPS giá rẻ (NEO-6M) và la bàn số từ trường (HMC5883L) trên nền tảng vi điều khiển 8-bit ATmega2560, giải quyết bài toán bù góc trôi (drift angle) mà không cần hệ thống định vị quán tính IMU đắt tiền.
- Cơ chế tác vụ kép (Dual-Trigger Mechanism): Robot vận hành thông minh dựa trên 2 điều kiện độc lập: kích hoạt tự động theo dung lượng rác (đo thể tích bằng cảm biến siêu âm) và kích hoạt theo thời gian thực (RTC DS1307), tối ưu hóa quy trình vệ sinh đô thị.
- Hiệu quả kinh tế vượt trội: So với các thùng rác thông minh nhập khẩu, mô hình tự hành này giảm hơn $90%$ chi phí đầu tư phần cứng, mang tính khả thi cao khi ứng dụng rộng rãi tại các trường đại học, bệnh viện, khu công nghiệp Việt Nam.
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế (Use-Case Scenarios)
- Khuôn viên trường Đại học / Bệnh viện: Đặt robot tại các sảnh tự học, sân chơi. Ban ngày thùng rác tiếp nhận rác và tự di chuyển về khu tập kết ngầm khi đầy. Ban đêm (21:00 - 22:00), tất cả các thùng rác tự động quy tụ về bãi tập trung để công nhân vệ sinh xử lý một lần.
- Khu công nghệ cao / Nhà máy sản xuất: Tự động thu gom phế phẩm nhẹ dọc các dây chuyền lắp ráp theo lộ trình định sẵn mà không cần lắp đặt ray dẫn đường từ tính phức tạp.
+------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI DỰ ÁN |
+------------------------------------------------------------------------+
| Giai đoạn 1: Triển khai thử nghiệm 03 mô hình tại khuôn viên HCMUTE |
| (Thời gian: 03 tháng | Đánh giá độ bền cơ khí & pin) |
| |
| Giai đoạn 2: Nâng cấp trạm sạc tự động (Auto-docking station) |
| và tích hợp tấm pin năng lượng mặt trời 50W trên nắp thùng |
| |
| Giai đoạn 3: Xây dựng mạng lưới Mesh IoT (ESP32/LoRa) kết nối Server |
| quản lý điều phối trung tâm thông qua Web Dashboard |
+------------------------------------------------------------------------+
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI)
- Chi phí gia công một mẫu thử nghiệm: ~ 2.200.000 VNĐ.
- Chi phí nhân công thu gom thủ công: 1 nhân viên phụ trách 15 thùng rác cố định, chi phí vận hành ~ 7.000.000 VNĐ/tháng.
- Khi triển khai cụm 10 thùng rác tự hành, thời gian thu hồi vốn đầu tư (ROI) ước tính chỉ mất 4.5 tháng nhờ giảm thiểu $60%$ thời gian gom rác thủ công và tối ưu hóa tuyến đường di chuyển của xe thu gom chuyên dụng.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Khung gầm mica 4 bánh chỉ thích hợp di chuyển trên bề mặt đường bằng phẳng hoặc bê tông phẳng; chưa có hệ thống giảm xóc để leo dốc cao ($>15^\circ$) hoặc địa hình gồ ghề.
- Module GPS NEO-6M dễ suy hao tín hiệu khi đi vào gầm cầu vượt, sảnh tòa nhà có mái che lớn (hiện tượng mất sóng vệ tinh / Multipath).
- Cảm biến siêu âm HC-SR04 có góc mở hẹp ($15^\circ$), dễ bỏ sót các vật cản dạng thanh mảnh hoặc bề mặt nghiêng tán xạ sóng âm.
Hướng phát triển hoàn thiện
- Tích hợp Năng lượng Xanh: Bổ sung tấm pin năng lượng mặt trời (Solar Cell) trên nắp thùng kết hợp mạch sạc MPPT để kéo dài thời gian hoạt động liên tục ngoài trời.
- Thị giác máy tính (Computer Vision & AI): Nâng cấp bộ xử lý trung tâm lên Raspberry Pi hoặc Jetson Nano, sử dụng Camera nhận diện phân loại rác hữu cơ/vô cơ tại nguồn và thuật toán bám làn đường Visual SLAM.
- Mạng lưới Smart City IoT: Tích hợp giao thức truyền thông không dây LoRaWAN / 4G-LTE gửi dữ liệu phần trăm rác, điện áp ắc quy và nhật ký di chuyển về máy chủ trung tâm (Cloud Server) để tối ưu hóa bài toán điều vận đội xe (Fleet Management).
Đối tượng hưởng lợi
- Sinh viên & Giảng viên ngành Kỹ thuật: Đồ án cung cấp tài liệu tham khảo hoàn chỉnh từ sơ đồ mạch nguyên lý, lưu đồ giải thuật đến code C++ mẫu về ứng dụng GPS/Compass trong định vị robot ngoài trời.
- Kỹ sư nhúng & Maker: Nắm bắt kỹ thuật giao tiếp phần cứng đa giao thức (UART, I2C, PWM, GPIO) và kinh nghiệm xử lý nhiễu điện từ giữa động cơ công suất với cảm biến từ trường.
- Nhà quản lý đô thị & Ban quản lý tòa nhà: Tiếp cận giải pháp công nghệ tự động hóa vệ sinh môi trường với chi phí tối ưu, sẵn sàng tích hợp vào kiến trúc Thành phố thông minh (Smart City).
Câu hỏi thường gặp (FAQ)
1. Yêu cầu phần cứng tối thiểu để triển khai và nạp code cho hệ thống là gì?
Cần một máy tính cài đặt môi trường Arduino IDE (phiên bản 1.8.x trở lên), cáp nạp USB Type-B, bo mạch Arduino Mega 2560 R3, cùng các thư viện mã nguồn mở: TinyGPS++, HMC5883L, Wire, RTClib. Nguồn cấp thử nghiệm tối thiểu là ắc quy 12V 5Ah hoặc bộ nguồn DC Adapter 12V 3A.
2. Giới hạn sai số của hệ thống định vị GPS là bao nhiêu và cách khắc phục?
Module GPS NEO-6M có sai số tiêu chuẩn ngoài trời từ $1.5\text{ m} - 2.5\text{ m}$. Để khắc phục hiện tượng robot dao động khi đến gần tọa độ đích, thuật toán thiết lập một "Vùng chấp nhận" (Threshold Radius) là $1.5\text{ m}$. Khi robot bước vào bán kính này, nó sẽ tự động chuyển sang chế độ dừng hoặc chuyển tiếp Waypoint kế tiếp mà không cần căn chỉnh vi sai GPS.
3. Hệ thống xử lý thế nào khi bị mất tín hiệu GPS (đi vào vùng khuất)?
Khi chuỗi dữ liệu GPS trả về không hợp lệ (gps.location.isValid() == false), firmware sẽ chuyển sang trạng thái an toàn: giữ nguyên hướng đi cuối cùng dựa hoàn toàn vào la bàn số HMC5883L trong tối đa 5 giây; nếu vẫn mất tín hiệu, robot sẽ dừng động cơ và phát còi Buzzer cảnh báo để chờ khôi phục sóng vệ tinh.
4. Chi phí bảo dưỡng và độ bền các linh kiện ra sao?
Các cảm biến điện tử (GPS, HMC5883L, DS1307) là linh kiện thể rắn không có chi tiết chuyển động cơ học nên độ bền rất cao ($>3\text{ năm}$). Các bộ phận cần bảo trì định kỳ gồm: chổi than động cơ DC JGA25-370 (kiểm tra sau mỗi 500 giờ chạy), vệ sinh bụi bẩn màng loa cảm biến siêu âm HC-SR04, và nạp xả bảo dưỡng bình ắc quy 12V sau mỗi 6 tháng.
5. Dự án có thể nâng cấp thêm tính năng tự động mở nắp khi người đến gần không?
Hoàn toàn khả thi. Do bo mạch Arduino Mega 2560 còn dư hơn 30 chân Digital I/O và nhiều chân PWM, người dùng chỉ cần gắn thêm 01 cảm biến siêu âm/hồng ngoại phía trước thùng để phát hiện người trong khoảng cách $30\text{ cm}$, sau đó điều khiển 01 động cơ Servo RC (như MG996R) để kéo mở nắp thùng tự động.
Kết luận
Đồ án tốt nghiệp "Thùng Rác Thông Minh" của sinh viên Lê Thanh Cao và Nguyễn Thanh Tuấn đã hiện thực hóa thành công một mô hình robot dịch vụ tự hành ngoài trời phục vụ công tác vệ sinh môi trường. Bằng việc kết hợp chính xác giữa bộ xử lý Arduino Mega 2560, module định vị GPS NEO-6M, cảm biến la bàn từ số HMC5883L và thuật toán lượng giác Haversine, hệ thống đã chứng minh tính khả thi cao trong việc tự động hóa quá trình thu gom rác tại các khuôn viên công cộng. Công trình là nền tảng kỹ thuật vững chắc, mở ra tiềm năng ứng dụng to lớn trong kỷ nguyên Internet vạn vật (IoT) và xây dựng đô thị văn minh, thông minh, bền vững.