TCS34725 Color Sensors By Using Arduino UNO

การทดลองโครงงานเล็กๆ นี้ เป็นการใช้งานโมดูลเซนเซอร์สีและวัดความเข้มแสง TCS34725 สำหรับวัดค่าจากผลไม้และสีจากวัตถุต่างๆ เพื่อสังเกตผลลัพธ์ที่ได้ ทั้งนี้เพื่อเป็นข้อมูลการทดลองเบื้องต้นให้กับผู้อ่านและนำไปเป็นไอเดียเพื่อนำไปใช้งานต่างๆ ต่อไป นอกจากนี้บอร์ดควบคุมจะใช้ Arduino UNO ที่สามารถหาซื้อได้ง่ายพร้อมตัวอย่างโปรแกรมและไลบารีในการทดลอง [โปรแกรมและไลบารี อ้างอิงจาก Ref.1]

TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 1 ลักษณะของโมดูลเซนเซอร์สี TCS34725 (1)
TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 2 ลักษณะของโมดูลเซนเซอร์สี TCS34725 (2)
TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 3 การต่อโมดูลเซนเซอร์ TCS34725 กับบอร์ด Arduino UNO

ในรูปที่ 3 แสดงลักษณะของการต่อโมดูลเซนเซอร์ TCS34725 กับบอร์ด Arduino UNO ในการทดลอง ซึ่งจะใช้การต่อร่วมกันเพียง 4 เส้นเท่านั้น ด้วยการสื่อสารแบบ I2C (VDD,SCL,SDA,GND) ซึ่งช่วยให้ทดลองได้ง่ายประหยัด รวมทั้งการแสดงผลจากค่าที่วัดได้บนหน้าต่าง Serial Monitor ของ Arduino IDE

TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 4 การแสดงผลที่ได้เมื่อโมดูลเซนเซอร์ยังไม่ได้ตรวจสอบสีใดๆ

รูปที่ 4 เป็นค่าที่วัดได้เมื่อโมดูลเซนเซอร์ TCS34725 ขณะที่ยังไม่ได้ตรวจสอบสีใดๆ ทั้งนี้เพื่อเป็นการสังเกตผลที่ได้ในกรณีสภาพของแสงและสีในห้องทดลองทั่วไป

TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 5 การทดลองที่ 1 ตรวจสอบสีกับแอปเปิ้ล
TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 6 ผลที่ได้จากการตรวจสอบสีกับแอปเปิ้ล

สำหรับในรูปที่ 5 และรูปที่ 6 เป็นการทดลองที่ 1 ด้วยการนำแอปเปิ้ลมาวัดค่า โดยระยะห่างระหว่างตัวโมดูลเซนเซอร์และผลแอปเปิ้ลประมาณ 3 มิลลิเมตร ซึ่งผลการทดลอง (รูปที่ 6) จะเปลี่ยนแปลงเมื่อเทียบค่าเดิมขณะยังไม่ได้วัดค่าใดๆ พอควร

Arduino Library Adafruit_TCS34725

/* Example code for the Adafruit TCS34725 breakout library */
/* Code Program Ref : https://learn.adafruit.com/adafruit-color-sensors/assembly-and-wiring */

#include <Wire.h>
#include "Adafruit_TCS34725.h"

/* Connect SCL    to analog 5
   Connect SDA    to analog 4
   Connect VDD    to 3.3V DC
   Connect GROUND to common ground */

/* Initialise with default values (int time = 2.4ms, gain = 1x) */
// Adafruit_TCS34725 tcs = Adafruit_TCS34725();

/* Initialise with specific int time and gain values */
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

void setup(void) {
  Serial.begin(9600);

  if (tcs.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found ... check your connections");
    while (1);
  }

  // Now we're ready to get readings!
}

void loop(void) {
  uint16_t r, g, b, c, colorTemp, lux;

  tcs.getRawData(&r, &g, &b, &c);
  // colorTemp = tcs.calculateColorTemperature(r, g, b);
  colorTemp = tcs.calculateColorTemperature_dn40(r, g, b, c);
  lux = tcs.calculateLux(r, g, b);

  Serial.print("Color Temp: "); Serial.print(colorTemp, DEC); Serial.print(" K - ");
  Serial.print("Lux: "); Serial.print(lux, DEC); Serial.print(" - ");
  Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
  Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
  Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
  Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
  Serial.println(" ");
}
TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 7 การทดลองที่ 2 ตรวจสอบสีกับมะม่วง
TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 8 ผลที่ได้จากการตรวจสอบสีกับมะม่วง

ในรูปที่ 7 รูปที่ 8 เป็นการทดลองที่ 2 ด้วยการนำมะม่วงมาวัดค่า ซึ่งผลการทดลองที่ได้จะมีค่าเปลี่ยนแปลงเช่นกันเมื่อเทียบกับแอปเปิ้ลทั้งนี้เนื่องจากสีผิวที่ต่างกัน และใช้ระยะห่างระหว่างตัวโมดูลเซนเซอร์และผลมะม่วงประมาณ 3 มิลลิเมตร

TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 9 การทดลองที่ 3 ตรวจสอบสีแดงของดิจิตอลมัลติมิเตอร์
TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 10 ผลที่ได้จากการตรวจสอบสีของแดงของดิจิตอลมัลติมิเตอร์

สำหรับในรูปที่ 9 และรูปที่ 10 การทดลองที่ 3 ด้วยการตรวจสอบสีแดงของดิจิตอลมัลติมิเตอร์ซึ่งเป็นสีแดงล้วนและผลที่วัดค่าได้จะแตกต่างจากการทดลองทั้งสองครั้งที่ผ่านมา และกล่าวโดยสรุปคือ จากการทดลองนำโมดูลเซนเซอร์ TCS34725 จะให้ผลการทดองที่ต่างกันอย่างชัดเจน เนื่องจากสีและแสงที่เกิดขึ้นกับผิวของผลไม้และวัตถุที่ต่างกัน ในกรณีที่นำไปวัดค่าสีและแสงที่ใกล้เคียงกัน เราจะต้องนำผลที่ได้ไปประมวลผลในรูปแบบซับซ้อนขึ้นเพื่อให้ทราบค่าที่ต้องการนำไปใช้งาน

TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 11 การต่อวงจรระหว่างโมดูลเซนเซอร์สี TCS34725 และบอร์ด Arduino UNO
TCS34725 Color Sensors By Using Arduino UNO
รูปที่ 12 ลักษณะของการทดลองทั่วไป

สำหรับการทดลองโครงงานเล็กๆ กับโมดูลเซนเซอร์ TCS34725 และใช้บอร์ดควบคุม Arduino UNO นี้ เป็นการทดลองเบื้องต้นให้กับผู้อ่าน ในลักษณะของการทดลองวัดค่าจากตัวอย่างผลไม้ 2 แบบและวัตถุที่มีสีต่างกัน ทั้งนี้ตัวโมดูลเซนเซอร์ TCS34725 ผู้อ่านสามารถสั่งซื้อมาทดลองผ่านช่องทางออนไลน์ทั่วไปในราคาที่ไม่สูงมากนัก

Reference

  1. https://learn.adafruit.com/adafruit-color-sensors/assembly-and-wiring
  2. https://github.com/adafruit/Adafruit_TCS34725
  3. http://arduinolearning.com/code/arduino-tcs34725-color-sensor.php
  4. https://github.com/hideakitai/TCS34725
  5. https://peppe8o.com/color-sensor-with-arduino-uno-tcs34725-explaination-wiring-and-code/
  6. https://cdn-shop.adafruit.com/datasheets/TCS34725.pdf
  7. https://www.waveshare.com/w/upload/b/bb/TCS34725_Color_Sensor_user_manual_en.pdf