Raspberry Pi Cảm Biến Màu TCS3200D/TCS230
Hướng dẫn toàn diện này sẽ chỉ cho bạn cách kết nối cảm biến màu TCS3200D/TCS230 với Raspberry Pi để đo màu chính xác và trích xuất giá trị RGB. Bạn sẽ nắm vững quy trình hiệu chuẩn và phát triển khả năng nhận dạng màu trong các dự án của mình.
Mục tiêu học tập:
- Thiết lập kết nối giữa TCS3200D/TCS230 và Raspberry Pi
- Thực hiện hiệu chuẩn cảm biến để loại bỏ nhiễu từ môi trường
- Phát triển chương trình Raspberry Pi để đo màu RGB

Linh Kiện Cần Thiết
| 1 | × | Raspberry Pi 5 | ||
| 1 | × | Module Cảm Biến Nhận Dạng Màu TCS3200D/TCS230 | ||
| 1 | × | breadboard (bo mạch thí nghiệm) | ||
| 1 | × | Dây Jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi | ||
| 1 | × | (Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit | ||
| 1 | × | (Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi |
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về Cảm Biến Màu TCS3200D/TCS230
Cảm biến TCS3200D/TCS230 sử dụng ma trận photodiode được sắp xếp theo lưới 8×8 để phát hiện màu thông qua lọc quang học. Trong mảng 64 phần tử này, 16 photodiode có bộ lọc phổ đỏ, 16 khác sử dụng bộ lọc xanh lá cây, 16 sử dụng bộ lọc xanh dương, và 16 còn lại hoạt động không có bộ lọc (phản ứng trong suốt). Việc đo màu xảy ra bằng cách kích hoạt các bộ lọc cụ thể và phân tích tín hiệu ra dạng sóng vuông được điều chế tần số.
Các mảng LED trắng tích hợp sẵn trên module thông thường cung cấp ánh sáng chiếu sáng ổn định cho mục tiêu, duy trì độ ổn định của phép đọc bất kể biến động ánh sáng bên ngoài và tăng cường hiệu suất trong môi trường thiếu sáng.
Sơ Đồ Chân
Các kết nối có sẵn trên bo mạch cảm biến TCS3200D/TCS230:
- Chân VCC: Đầu vào điện áp cung cấp (+5V).
- Chân GND: Tham chiếu đất (0V).
- Chân S0, S1: Bộ chọn tỉ lệ tần số đầu ra.
- Chân S2, S3: Bộ chọn bộ lọc kênh màu.
- Chân OUT: Đầu ra sóng vuông được điều chế tần số.
- Chân OE: Đầu vào cho phép đầu ra (kích hoạt khi ở mức LOW). Các module tiêu chuẩn thường nối cứng chân này với GND bên trong. Nếu không được kết nối, hãy nối thủ công với GND.

Cách Hoạt Động
Hai cài đặt quan trọng điều khiển hành vi của cảm biến: kênh màu nào được kích hoạt và độ mạnh tín hiệu đầu ra. Hai cặp đầu vào điều khiển quản lý các chức năng này:
Điều khiển tỉ lệ tần số (chân S0 và S1):
- S0=LOW, S1=LOW: Trạng thái tắt nguồn
- S0=LOW, S1=HIGH: Hệ số tỉ lệ 2%
- S0=HIGH, S1=LOW: Hệ số tỉ lệ 20%
- S0=HIGH, S1=HIGH: Hệ số tỉ lệ 100% (tốc độ đầy đủ)
Chọn kênh màu (chân S2 và S3):
- S2=LOW, S3=LOW: Photodiode đỏ hoạt động
- S2=LOW, S3=HIGH: Photodiode xanh dương hoạt động
- S2=HIGH, S3=LOW: Photodiode trong suốt hoạt động (không lọc)
- S2=HIGH, S3=HIGH: Photodiode xanh lá cây hoạt động
Chân OUT cung cấp tần số sóng vuông trong khoảng khoảng 2 Hz đến 500 kHz. Tần số tăng theo cường độ ánh sáng—ánh sáng sáng hơn tạo ra đầu ra tần số cao hơn. Bằng cách đo thời gian xung (có mối tương quan nghịch—thời gian ngắn hơn cho thấy ánh sáng mạnh hơn), chúng ta có thể chuyển đổi các phép đo này sang định dạng RGB thông thường 0-255 thông qua hiệu chuẩn.
Đạt Được Độ Chính Xác Tối Ưu
- Giữ cảm biến ở vị trí cách mục tiêu đo 1-3 cm với góc căn chỉnh ổn định.
- Sử dụng hệ thống chiếu sáng LED trắng tích hợp để có ánh sáng có thể lặp lại.
- Che chắn cảm biến khỏi ánh sáng môi trường thay đổi để tăng cường tính nhất quán của phép đo.
Sơ Đồ Kết Nối
Cấu hình kết nối cảm biến màu TCS3200 với Raspberry Pi:
| Cảm Biến Màu TCS3200 | Raspberry Pi |
|---|---|
| VCC | 5V |
| GND | GND |
| OUT | GPIO23 |
| S0 | GPIO8 |
| S1 | GPIO7 |
| S2 | GPIO24 |
| S3 | GPIO25 |

This image is created using Fritzing. Click to enlarge image
Code Raspberry Pi - Hiệu Chuẩn Độ Rộng Xung
Hiệu chuẩn loại bỏ nhiễu môi trường khỏi các phép đo thô. Các biến số bao gồm cường độ đầu ra LED, khoảng cách mục tiêu, khả năng phản xạ vật liệu, và ánh sáng phòng đều ảnh hưởng đến kết quả đọc. Hãy nghĩ về chúng như những lỗi hệ thống cần được đo lường. Quy trình hiệu chuẩn xác định độ rộng xung tối thiểu và tối đa trên tất cả các kênh màu, thiết lập ranh giới tham chiếu để chuyển đổi dữ liệu thô thành giá trị RGB chính xác 0–255 phù hợp với môi trường triển khai của bạn.
Các Bước Thực Hiện
- Sao chép code và lưu vào file, ví dụ: tcs3200_calibration.py
- Chạy script:
- Đưa cảm biến tiếp xúc với các bề mặt đa dạng: vật liệu trắng (giấy máy in), đồ vật đen, cùng các vật phẩm nhiều màu
- Quan sát ranh giới Min/Max cập nhật tự động khi phát hiện các giá trị cực trị
- Khi các giá trị ổn định (thường là 10-20 giây), nhấn Ctrl+C để dừng
- Ghi lại tất cả sáu tham số hiệu chuẩn được hiển thị
Ví dụ tham số hiệu chuẩn được trích xuất từ kết quả trên:
- RedMin = 42, redMax = 210
- GreenMin = 55, greenMax = 185
- BlueMin = 60, blueMax = 172
Code Raspberry Pi - Đo Giá Trị RGB
Các Bước Thực Hiện
- Xác định các biến hiệu chuẩn ở đầu code:
- Thay thế tất cả sáu giá trị zero với dữ liệu hiệu chuẩn đã đo. Ví dụ sử dụng các giá trị redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172:
- Lưu code đã cập nhật vào file, ví dụ: tcs3200_sensor.py
- Chạy script:
- Đặt mẫu màu trước cảm biến
- Kiểm tra kết quả RGB trong terminal
Các giá trị RGB hiển thị tuân theo thang đo tiêu chuẩn 0-255. Độ rộng xung giảm (cho thấy phản xạ sáng hơn) tạo ra đầu ra RGB cao hơn; độ rộng xung kéo dài (phản xạ mờ hơn) cho giá trị thấp hơn.
Ý Tưởng Ứng Dụng Dự Án
Với khả năng đo RGB hoạt động, bạn có thể phát triển:
- Hệ thống phân loại màu: Phân loại đối tượng theo màu sắc (phân biệt đỏ/xanh lá/xanh dương)
- Thiết bị xác minh màu: Xác nhận tính nhất quán màu sắc giữa các mẫu
- Robot theo dõi đường màu: Robot điều hướng dọc theo các dấu hiệu màu
- Kiểm tra chất lượng trực quan: Phát hiện khiếm khuyết sản xuất thông qua phân tích màu sắc
- Tự động hóa kích hoạt màu: Thực hiện hành động khi phát hiện màu sắc cụ thể
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.