ESP8266 Cảm biến màu TCS3200D/TCS230
Hướng dẫn này sẽ giúp bạn sử dụng ESP8266 với cảm biến màu TCS3200D/TCS230 để phát hiện màu chính xác và đo màu RGB.
Chi tiết, chúng ta sẽ học:
- Cách kết nối cảm biến TCS3200D/TCS230 với ESP8266
- Cách hiệu chuẩn cảm biến để đo được kết quả chính xác
- Cách lập trình ESP8266 để đọc và hiển thị giá trị RGB
Phần cứng cần chuẩn bị
| 1 | × | ESP8266 NodeMCU ESP-12E | ||
| 1 | × | Recommended: ESP8266 NodeMCU ESP-12E (Uno-form) | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | TCS3200D/TCS230 Color Recognition Sensor Module | ||
| 1 | × | breadboard | ||
| 1 | × | dây jumper | ||
| 1 | × | (Tùy chọn) DC Power Jack | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP8266 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP8266 Type-C |
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 màu TCS3200D/TCS230 sử dụng một lưới gồm 64 quang điốt được sắp xếp thành ma trận 8×8 để phát hiện màu thông qua lọc theo bước sóng cụ thể. Trong mảng này, 16 quang điốt tích hợp bộ lọc bước sóng đỏ, 16 dùng bộ lọc bước sóng xanh lá, 16 dùng bộ lọc bước sóng xanh lam, và 16 hoạt động mà không có lọc (đáp ứng trong suốt). Việc đo màu diễn ra bằng cách chọn các bộ lọc cụ thể và đánh giá tần số của tín hiệu đầu ra.
Các mô-đun TCS3200D phổ biến có mảng LED trắng tích hợp cung cấp ánh sáng mục tiêu nhất quán, đảm bảo tính ổn định của phép đo bất kể sự biến động của ánh sáng từ bên ngoài và tăng độ nhạy trong điều kiện ánh sáng yếu.
Sơ đồ chân
Cấu hình chân của module cảm biến TCS3200D/TCS230:
- VCC pin: Đầu vào nguồn cấp (+5V).
- GND pin: Điểm tham chiếu đất (0V).
- S0, S1 pins: Các chân S0, S1: Bộ chọn tỉ lệ tần số đầu ra.
- S2, S3 pins: Các chân S2, S3: Bộ chọn bộ lọc kênh màu.
- OUT pin: Đầu ra sóng vuông điều biến tần số.
- OE pin: Đầu vào kích hoạt đầu ra (kích hoạt khi ở mức LOW). Các mô-đun tiêu chuẩn thường được nối cứng với GND ở bên trong. Nếu không được kết nối, hãy nối thủ công tới GND.

Cách hoạt động
Hoạt động của cảm biến phụ thuộc vào hai điều khiển chính: chọn nhóm bộ lọc photodiode để kích hoạt và phạm vi tần số đầu ra cần tạo. Hai cặp chân điều khiển quản lý các chức năng này:
Điều khiển điều chỉnh tần số (các 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 độ tối đa)
Lựa chọn kênh màu (các chân S2 và S3):
- S2=THẤP, S3=THẤP: Các diode quang đỏ đang hoạt động
- S2=THẤP, S3=CAO: Các diode quang xanh dương đang hoạt động
- S2=CAO, S3=THẤP: Các diode quang trong suốt đang hoạt động (không lọc)
- S2=CAO, S3=CAO: Các diode quang xanh lá đang hoạt động
Chân OUT phát ra các tần số vuông dao động từ khoảng 2 Hz đến 500 kHz. Độ sáng cao hơn tạo ra đầu ra có tần số cao hơn. Hàm pulseIn() của ESP8266 đo thời lượng xung, và nó có mối quan hệ nghịch — ánh sáng sáng hơn sẽ cho thời lượng ngắn hơn. Các phép đo đã được hiệu chuẩn chuyển sang định dạng RGB 0-255 thông dụng.
Đạ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 căn chỉnh góc ổn định.
- Sử dụng đèn LED trắng tích hợp làm nguồn sáng để đảm bảo ánh sáng nhất quán giữa các lần đo.
- Che chắn cảm biến khỏi ánh sáng môi trường biến động nhằm tăng tính nhất quán của phép đo.
Sơ đồ đấu dây
Kết nối cảm biến màu TCS3200 với ESP8266 như sau:
| TCS3200 Color Sensor | ESP8266 |
|---|---|
| VCC | 3V3 |
| GND | GND |
| S0 | D6 (GPIO12) |
| S1 | D7 (GPIO13) |
| S2 | D2 (GPIO4) |
| S3 | D5 (GPIO14) |
| OUT | D1 (GPIO5) |

This image is created using Fritzing. Click to enlarge image
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
Mã ESP8266 - Hiệu chuẩn cảm biến
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 bao gồm cường độ phát xạ của LED, khoảng cách tới mục tiêu, độ phản xạ của vật liệu và ánh sáng trong phòng đều ảnh hưởng đến các giá trị đo được. 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 các giá trị RGB từ 0–255 chính xác, phù hợp với môi trường triển khai của bạn.
Hướng dẫn từng bước
Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:
- Xem ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
- Nối các thành phần như được hiển thị trong sơ đồ.
- Kết nối bo mạch ESP8266 với máy tính bằng cáp USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch ESP8266 phù hợp, chẳng hạn như (ví dụ NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng.
- Sao chép mã hiệu chuẩn và mở nó trong Arduino IDE.
- Nhấn nút Tải lên để biên dịch và tải lên cho ESP8266.
- Mở Serial Monitor.
- Hướng cảm biến tới các bề mặt khác nhau: trắng (giấy), đen và nhiều màu sắc.
- Theo dõi các giá trị tối thiểu và tối đa tự động cập nhật.
- Khi các giá trị ổn định (thông thường sau 10-20 giây), ghi lại tất cả sáu tham số hiệu chuẩn.
Các tham số hiệu chuẩn mẫu được trích xuất từ đầu ra ở trên:
- Đỏ tối thiểu = 42, Đỏ tối đa = 210
- Xanh lá cây tối thiểu = 55, Xanh lá cây tối đa = 185
- Xanh lam tối thiểu = 60, Xanh lam tối đa = 172
Mã ESP8266 - Đọc các giá trị RGB
Hướng dẫn từng bước
- Tìm các biến hiệu chuẩn ở đầu mã nguồn:
Please provide the English text to translate inside the code block.
int redMin = 0; // Độ rộng xung tối thiểu cho màu đỏ
int redMax = 0; // Độ rộng xung tối đa cho màu đỏ
int greenMin = 0; // Độ rộng xung tối thiểu cho màu xanh
int greenMax = 0; // Chiều 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; // Chiều rộng xung tối đa của màu xanh dương
No content provided to translate.
- Thay thế toàn bộ sáu giá trị bằng 0 bằng dữ liệu hiệu chuẩn đã đo. Ví dụ với các giá trị redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172:
Please paste the English text you want translated into Vietnamese.
int đỏTốiThiểu = 42;
int redMax = 210;
int xanhToiThieu = 55;
int xanhToiDa = 185;
int xanhToiThieu = 60;
int blueMax = 172;
Please provide the English text to translate. The code block is currently empty.
- Tải mã đã cập nhật lên ESP8266.
- Đặt một vật thể có màu trước cảm biến.
- Mở Serial Monitor để xem các giá trị RGB.
Các giá trị RGB được hiển thị tuân theo thang đo chuẩn 0-255. Chiều rộng xung ngắn hơn (tín hiệu phản xạ sáng hơn) tạo ra đầu ra RGB cao hơn; chiều rộng xung dài hơn (phản xạ tối hơn) cho ra giá trị thấp hơn.
Từ các giá trị RGB, bạn có thể:
- Xác định màu sắc cụ thể bằng cách so sánh tỷ lệ RGB
- Sắp xếp các đối tượng theo nhận diện màu sắc
- Ghép màu giữa các mẫu khác nhau
- Kích hoạt các hành động dựa trên màu sắc được phát hiện
Các ứng dụng của 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 theo sắc màu: Phân loại các vật thể theo màu sắc (phân biệt đỏ/xanh lá/xanh lam)
- Thiết bị xác nhận màu sắc: Xác nhận sự nhất quán về màu sắc giữa các mẫu
- Robot theo đường màu: Các robot di chuyển dọc theo các dấu hiệu màu sắc
- Kiểm tra chất lượng trực quan: Phát hiện khiếm khuyết sản phẩm thông qua phân tích màu sắc
- Tự động hóa kích hoạt bởi màu sắc: Thực hiện các hành động khi phát hiện các sắc thái 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.