Dự án AI và IoT: Phân loại rác thải thông minh
Trung cấp7/6/2026

Dự án AI và IoT: Phân loại rác thải thông minh

Dùng AI và Raspberry Pi và các loại cảm biến để chế tạo thiết bị nhận diện vật thể từ đó giúp phân loại rác thải tự động, giúp nâng cao ý thức bảo vệ môi trường.

AI và IoTRaspberry Pi,AI phân loại rác thải
0 lượt thích0 người đã làm1 giờ7 bước8 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 4: Xây dựng hệ thống nhận diện rác thải

1. Kết nối camera và Raspberry Pi; 2. Hướng dẫn lập trình Python để chụp hình ảnh; 3. Tích hợp mô hình AI vào Raspberry Pi; 4. Cài đặt cảm biến và lập trình nhận diện; 5. Kết hợp các cảm biến để tăng độ tin cậy; 6. Lập trình quyết định phân loại.

Cập nhật 07/06/2026

Phần 4: Xây dựng hệ thống nhận diện rác thải

1. Kết nối camera và Raspberry Pi

Để kết nối camera với Raspberry Pi, bạn có thể sử dụng Raspberry Pi Camera Module hoặc một camera USB. Đối với Raspberry Pi Camera Module, kết nối nó vào cổng CSI trên Raspberry Pi. Trên Raspberry Pi 5, cần enable camera qua raspi-config và cài đặt libcamera.

2. Hướng dẫn lập trình Python để chụp hình ảnh

Sử dụng thư viện libcamera hoặc opencv để chụp ảnh từ camera. Dưới đây là đoạn mã mẫu sử dụng opencv:


import cv2

cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cv2.imwrite('image.jpg', frame)
cap.release()

3. Tích hợp mô hình AI vào Raspberry Pi

Sử dụng TensorFlow Lite để tích hợp mô hình AI. Đảm bảo mô hình đã được chuyển đổi sang định dạng .tflite. Trước khi đưa dữ liệu vào mô hình, cần xử lý ảnh đầu vào như resize, chuyển dtype, và normalize. Dưới đây là đoạn mã mẫu để tải và chạy mô hình:


import tensorflow as tf
import cv2

# Đọc và xử lý ảnh
image = cv2.imread('image.jpg')
image = cv2.resize(image, (224, 224))  # Resize theo yêu cầu của mô hình
image_data = image.astype('float32') / 255.0  # Normalize

interpreter = tf.lite.Interpreter(model_path='model.tflite')
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Chạy mô hình
interpreter.set_tensor(input_details[0]['index'], image_data)
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])

4. Cài đặt cảm biến và lập trình nhận diện

Cài đặt cảm biến trọng lượng (Load cell + HX711) và cảm biến kim loại (Inductive proximity sensor) theo sơ đồ kết nối. Lưu ý rằng nhiều loại cảm biến kim loại cần nguồn 6-36V, không thể cấp trực tiếp từ GPIO 3.3V/5V của Raspberry Pi. Sử dụng mạch opto-isolator hoặc relay để bảo vệ Raspberry Pi. Sử dụng thư viện HX711 để đọc dữ liệu từ cảm biến trọng lượng:


from hx711 import HX711

hx = HX711(dout=5, pd_sck=6)  # Thay đổi chân GPIO theo kết nối
hx.set_reference_unit(1)
hx.reset()
hx.tare()

weight = hx.get_weight(5)
print(weight)

Cần kiểm tra mức tín hiệu của HX711 và sử dụng level shifter nếu cần khi nối với GPIO.

5. Kết hợp các cảm biến để tăng độ tin cậy

Sử dụng dữ liệu từ các cảm biến để xác thực kết quả dự đoán từ mô hình AI. Kết hợp các tín hiệu để đưa ra quyết định chính xác hơn, như đã mô tả trong phần 5.2 của dự án.

6. Lập trình quyết định phân loại

Sử dụng logic điều kiện để quyết định phân loại rác dựa trên dữ liệu từ AI và cảm biến. Dưới đây là đoạn mã mẫu:


if confidence >= 0.85 and metal_sensor == True:
    classify_as = 'metal'
elif 0.65 <= confidence < 0.85:
    classify_as = 'check sensor'
else:
    classify_as = 'unknown'

Cảnh báo: Đảm bảo kiểm tra tất cả các kết nối và lập trình trước khi vận hành hệ thống để tránh hỏng hóc.

Tài liệu tham khảo