GY-33 TCS34725 Cảm Biến Màu Sắc Giao Tiếp I2C UART

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

  1. 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.
  2. 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.
  3. 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
  4. 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

Mới hơn Cũ hơn