Arduino Cảm biến màu TCS3200D/TCS230
Hướng dẫn này trình bày cách giao tiếp cảm biến nhận diện màu TCS3200D/TCS230 với Arduino để đo và nhận diện các giá trị RGB từ các vật thể khác nhau. Bạn sẽ nắm vững các kỹ thuật hiệu chuẩn cảm biến và lập trình nhận diện màu sắc.
Các chủ đề được đề cập:
- Kết nối mô-đun cảm biến TCS3200D/TCS230 với bảng Arduino của bạn
- Tiến hành hiệu chuẩn môi trường để các giá trị đọc được chính xác
- Lập trình Arduino để trích xuất dữ liệu màu RGB

Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | TCS3200D/TCS230 Color Recognition Sensor Module | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về cảm biến màu TCS3200D/TCS230
Được xây dựng dựa trên một mảng photodiode 8x8, TCS3200D/TCS230 nhận diện màu sắc thông qua lọc quang chuyên dụng. Lưới 64 photodiode bao gồm 16 photodiode được lọc đỏ, 16 photodiode được lọc xanh lá, 16 photodiode được lọc xanh lam, và 16 photodiode chưa lọc (trong suốt). Việc phát hiện màu sắc diễn ra bằng cách chuyển đổi giữa các loại lọc và phân tích đầu ra tần số dạng sóng vuông đại diện cho cường độ ánh sáng.
Đèn LED trắng tích hợp trên hầu hết các mô-đun cung cấp ánh sáng mục tiêu đồng nhất, đảm bảo các phép đo ổn định trong các điều kiện môi trường khác nhau và cải thiện hiệu suất trong điều kiện ánh sáng yếu.
Sơ đồ chân
Các chân kết nối trên mô-đun TCS3200D/TCS230 bao gồm:
- Chân VCC: Nguồn cấp điện (+5V).
- Chân GND: Nối đất (0V).
- Chân S0, S1: Ngõ vào điều khiển tần số.
- Chân S2, S3: Ngõ vào chọn bộ lọc màu.
- Chân OUT: Đầu ra tần số (dạng sóng vuông).
- Chân OE: Điều khiển bật/tắt đầu ra (kích hoạt ở mức LOW). Hầu hết các mô-đun thương mại đều nối đất chân này bên trong, loại bỏ việc phải nối dây bên ngoài. Nếu chưa được kết nối trước, hãy tự nối nó với GND.

Cách hoạt động
Vận hành cảm biến đòi hỏi cấu hình hai tham số chính: kênh màu hoạt động và cường độ tín hiệu. Các cặp chân điều khiển quản lý các thiết lập này:
Điều chỉnh đầu ra thông qua S0 và S1:
- Cả hai ở mức thấp: Chế độ tắt nguồn
- S0 THẤP, S1 CAO: Điều chỉnh tần số ở mức 2%
- S0 CAO, S1 THẤP: Điều chỉnh tần số ở mức 20%
- Cả hai CAO: Điều chỉnh tần số ở mức tối đa 100%
Lựa chọn bộ lọc thông qua S2 và S3:
- Cả hai ở mức thấp: kênh đỏ hoạt động
- S2 ở mức thấp, S3 ở mức cao: kênh xanh lam hoạt động
- S2 ở mức cao, S3 ở mức thấp: kênh trong suốt (không lọc)
- Cả hai ở mức cao: kênh xanh lá cây hoạt động
Chân OUT tạo tín hiệu sóng vuông với tần số từ khoảng 2 Hz đến 500 kHz. Các tần số cao hơn cho biết cường độ ánh sáng mạnh hơn cho kênh được chọn. Đo chiều rộng xung bằng pulseIn() cho thấy mối quan hệ nghịch đảo — xung ngắn hơn có màu sáng hơn. Việc chuyển đổi sau hiệu chuẩn cho ra các giá trị RGB chuẩn.
Tối đa hóa độ chính xác khi đọc
- Duy trì khoảng cách giữa cảm biến và mục tiêu từ 1-3 cm, đảm bảo vị trí nhất quán.
- Kích hoạt đèn LED trắng tích hợp trên bảng mạch để đảm bảo điều kiện chiếu sáng đồng nhất.
- Giảm thiểu tác động của ánh sáng môi trường bằng cách che chắn cảm biến để tăng độ chính xác.
Sơ đồ đấu dây
Sơ đồ kết nối cho cảm biến màu TCS3200 và Arduino:
| TCS3200 Color Sensor | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| S0 | Pin 4 |
| S1 | Pin 3 |
| S2 | Pin 6 |
| S3 | Pin 5 |
| OUT | Pin 7 |

This image is created using Fritzing. Click to enlarge image
Mã Arduino - Hiệu chuẩn cảm biến bằng độ rộng xung
Việc hiệu chuẩn môi trường là cần thiết vì đầu ra cảm biến thô biến thiên do nhiều yếu tố: cường độ đèn LED tích hợp, khoảng cách tới mục tiêu, đặc tính phản xạ của bề mặt và ánh sáng xung quanh. Xem các biến này như nhiễu đo lường. Hiệu chuẩn định lượng nhiễu này bằng cách thiết lập giới hạn tối thiểu và tối đa cho từng kênh màu, cho phép chuyển đổi chính xác sang thang RGB tiêu chuẩn 0–255 cho thiết lập cụ thể của bạn.
Hướng dẫn từng bước
- Mở mã hiệu chuẩn trong Arduino IDE
- Tải lên cho bo mạch Arduino của bạn bằng nút Tải lên
- Mở Serial Monitor để xem các giá trị đo được và theo dõi giá trị tối thiểu/tối đa
- Quét nhiều vật thể bằng cảm biến: các bề mặt trắng (giấy), vật màu đen, và các vật thể có màu sắc khác nhau
- Quan sát các cập nhật tự động của giá trị tối thiểu/tối đa khi các giá trị cực trị được ghi nhận
- Khi các số ổn định (thông thường từ 10–20 giây), ghi lại toàn bộ sáu hằng số hiệu chuẩn
Ví dụ, từ kết quả ở trên, các giá trị hiệu chuẩn của bạn sẽ là:
- đỏMin = 42, đỏMax = 210
- Xanh láMin = 55, xanh láMax = 185
- Xanh lamMin = 60, xanh lamMax = 172
Mã Arduino - Đọc Các Giá Trị Màu RGB
Hướng dẫn từng bước
- Xác định các khai báo biến hiệu chuẩn nằm ở phần đầu của mã:
Có vẻ không có nội dung nào giữa các dấu ```; vui lòng dán văn bản tiếng Anh bạn muốn dịch sang tiếng Việt.
int redMin = 0; // Độ rộng xung tối thiểu của màu đỏ
int redMax = 0; // Độ rộng xung tối đa của màu đỏ
int greenMin = 0; // Độ rộng xung tối thiểu của màu xanh
int greenMax = 0; // Độ rộng xung tối đa của màu xanh
int blueMin = 0; // Độ rộng xung tối thiểu của màu xanh
int blueMax = 0; // Độ rộng xung tối đa của màu xanh
There is no content inside the code block to translate. Please paste the English text you want translated to Vietnamese.
- Cập nhật tất cả sáu giá trị bằng 0 bằng dữ liệu hiệu chuẩn từ bài tập trước. Ví dụ biến đổi (sử dụng kết quả hiệu chuẩn redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172):
Please provide the English text to translate.
int redMin = 42;
int redMax = 210;
int xanhToiThieu = 55;
int giaTriXanhToiDa = 185;
int xanhToiThieu = 60;
int xanhToiDa = 172;
Please provide the English content to translate (inside the triple backticks).
- Nạp mã đã chỉnh sửa lên Arduino
- Đặt một mục tiêu có màu trước cảm biến
- Theo dõi đầu ra RGB trên Serial Monitor
Các giá trị RGB hiện được ánh xạ vào phạm vi chuẩn 0-255. Chiều rộng xung thấp hơn (nhiều ánh sáng) tạo ra các giá trị RGB cao hơn, và chiều rộng xung cao hơn (ít ánh sáng) tạo ra các giá trị RGB thấp hơn.
Các ứng dụng
Bây giờ bạn có thể đọc được các giá trị RGB và xây dựng các dự án như:
- Máy phân loại theo màu: Sắp xếp các vật thể theo màu (đỏ, xanh lá cây, xanh lam)
- Trò chơi ghép màu: Kiểm tra xem hai vật thể có cùng một màu hay không
- Robot theo dõi đường màu: Theo dõi các đường màu trên sàn
- Kiểm soát chất lượng: Phát hiện sản phẩm lỗi bằng màu sắc
- Báo động kích hoạt bằng màu: Kích hoạt còi hoặc đèn LED khi phát hiện một màu 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.