GY-33 TCS34725 là một cảm biến màu sắc RGB (Red, Green, Blue) và cảm biến ánh sáng tự nhiên giao tiếp I2C và UART. Đây là một module phổ biến được sử dụng để đo màu sắc và ánh sáng trong các ứng dụng như robotics, IoT (Internet of Things), và các dự án điện tử khác.
Cảm biến màu sắc TCS34725 có tích hợp MCU trên mạch để chuyển đổi từ giao tiếp I2C của TCS34725 sang giao tiếp UART hoặc I2C của MCU giúp dễ dàng giao tiếp và lập trình, ta có thể dễ dàng lựa chọn giao tiếp muốn sử dụng bằng cách Set các Jumper (S0, S1) trên mạch.
Thông số kỹ thuật
- IC chính: TCS34725
- Điện áp sử dụng: 3~5VDC
- Dòng tiêu thụ: 15mA
- Giải màu sắc đo: RGB 0~255
- Tích hợp MCU xử lý và chuyển đổi giao tiếp.
- Giao tiếp có thể lựa chọn qua Jumper:
- I2C của TCS34725.
- I2C của MCU.
- UART của MCU.
Sơ đồ chân
PIN |
DESCRIPTION |
GND |
Ground |
DR |
Serial Port IIC/UART |
VCC |
Power Supply (3-5VDC) |
NC |
No Connection |
INT |
Colour Chip Break Off Pin |
SDA |
Colour Chip IIC Data Pin |
SCL |
Colour Chip IIC Clock Pin |
S0 |
Serial/IIC Mode Select |
S1 |
Sensor Chip Mode Select |
Cách thiết lập giao tiếp dựa vào Jumper S0 và S1
- S1 để trống (default): Disable chân SCL và SDA, hai chân giao tiếp trực tiếp I2C với TCS34725, chỉ có thể giao tiếp qua hai chân CT / DR của MCU.
- S1 nối với G: Enable chân SCL và SDA, sử dụng để giao tiếp trực tiếp với I2C của TCS34725 không thông qua MCU.
- S0 để trống (default): Lựa chọn giao tiếp của MCU trên hai chân CT / DR là UART, CT là UART_TX, DR là UART_RX baudrate mặc định 9600bps / Parity: N / Data bits: 8 / Stop bits: 1
- S0 nối với G: Lựa chọn giao tiếp của MCU trên hai chân CT / DR là I2C, CT là I2C_SCL, DR là I2C_SDA.
Sơ đồ kết nối
PIN |
ARDUINO |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
Bước 2: Cài đặt thư viện:
- Cài thư viện Adafruit_Sensor (Tìm trên google)
- Trong Arduino IDE, vào "Sketch" -> "Include Library" -> "Manage Libraries..."
- Tìm kiếm và cài đặt thư viện "Adafruit TCS34725" của Adafruit.
Code
#include <Adafruit_Sensor.h>
#include <Adafruit_TCS34725.h>
#include <Wire.h>
/*
SCL - SCL ( Analog 5 )
SDA - SDA ( analog 4 )
VDD - 3.3V DC
GND - GND
*/
// Sử dụng cảm biến ở giá trị mặc định (int time = 2.4ms, gain = 1x)
//Adafruit_TCS34725 tcs = Adafruit_TCS34725();
/* Sử dụng cảm với thời gian cụ thể và Gain cụ thể
* integration time (Thời gian lấy mẫu màu của cảm biến): 2.4ms, 24ms, 50ms, 101ms, 154ms, 600ms
* Gain (Độ lợi kiểm soát độ nhạy màu của biến): 1x, 4x, 16x, 60x
*/
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_154MS, TCS34725_GAIN_4X);
void setup()
{
Serial.begin(9600);
if (tcs.begin())
{
Serial.println("Cảm biến hoạt động");
}
else
{
Serial.println("Cảm biến không kết nối, hãy kiểm tra lại kết nối...");
while (1);
}
}
void loop()
{
uint16_t r, g, b, c, colorTemp, lux;
tcs.getRawData(&r, &g, &b, &c);
colorTemp = tcs.calculateColorTemperature(r, g, b); //Nhiệt độ màu theo thang đo Kelvin
lux = tcs.calculateLux(r, g, b); //Độ rọi soi, cường độ sáng
Serial.print("Color Temp: "); Serial.print(colorTemp); Serial.print(" K - ");
Serial.print("Lux: "); Serial.print(lux); Serial.print(" - ");
Serial.print("Red: "); Serial.print(r); Serial.print(" ");
Serial.print("Green: "); Serial.print(g); Serial.print(" ");
Serial.print("Blue: "); Serial.print(b); Serial.print(" ");
Serial.print("Clear: "); Serial.print(c); Serial.print(" ");
Serial.println(" ");
if(colorTemp>6000 || colorTemp<1000) //Màu đỏ
{
Serial.println("------------------");
}
else if(r>g && r>b && colorTemp<2500) //Màu đỏ
{
Serial.println("MÀU ĐỎ");
Serial.println(" ");
}
else if(g>r && g>b && colorTemp<5200) //Màu xanh lá
{
Serial.println("MÀU XANH LÁ");
Serial.println(" ");
}
else if(b>r && b>g && colorTemp<6000) //Màu xanh dương
{
Serial.println("MÀU XANH DƯƠNG");
Serial.println(" ");
}
delay(500);
}
Nhận xét