TCS34725 Color Sensors By Using Arduino UNO

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



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

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


สำหรับในรูปที่ 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(" "); }


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


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


สำหรับการทดลองโครงงานเล็กๆ กับโมดูลเซนเซอร์ TCS34725 และใช้บอร์ดควบคุม Arduino UNO นี้ เป็นการทดลองเบื้องต้นให้กับผู้อ่าน ในลักษณะของการทดลองวัดค่าจากตัวอย่างผลไม้ 2 แบบและวัตถุที่มีสีต่างกัน ทั้งนี้ตัวโมดูลเซนเซอร์ TCS34725 ผู้อ่านสามารถสั่งซื้อมาทดลองผ่านช่องทางออนไลน์ทั่วไปในราคาที่ไม่สูงมากนัก
Reference
- https://learn.adafruit.com/adafruit-color-sensors/assembly-and-wiring
- https://github.com/adafruit/Adafruit_TCS34725
- http://arduinolearning.com/code/arduino-tcs34725-color-sensor.php
- https://github.com/hideakitai/TCS34725
- https://peppe8o.com/color-sensor-with-arduino-uno-tcs34725-explaination-wiring-and-code/
- https://cdn-shop.adafruit.com/datasheets/TCS34725.pdf
- https://www.waveshare.com/w/upload/b/bb/TCS34725_Color_Sensor_user_manual_en.pdf