TCS34725 เป็นเซ็นเซอร์สีที่สามารถตรวจจับความเข้มของแสงสีแดงสีเขียวสีน้ำเงินและแสงใส มีการใช้กันอย่างแพร่หลายในโครงการตรวจจับสีรวมถึงหุ่นยนต์ระบบอัตโนมัติในบ้านและแอพพลิเคชั่นที่ไวต่อสี บทช่วยสอนนี้จะแนะนำคุณผ่านการตั้งค่าและใช้เซ็นเซอร์สี TCS34725 กับ Arduino
สิ่งที่คุณต้องการ
- บอร์ด Arduino (เช่น uno, mega, nano)
- โมดูลเซ็นเซอร์สี TCS34725
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
- ห้องสมุด: ห้องสมุด Adafruit TCS34725
ขั้นตอนที่ 1: การทำความเข้าใจเซ็นเซอร์สี TCS34725
TCS34725 เป็นเซ็นเซอร์ที่เข้ากันได้กับ I2C ที่ให้ข้อมูลสีและแสง มันรวมถึง:
- เซ็นเซอร์ RGBC: วัดความเข้มแสงสีแดงสีเขียวสีน้ำเงินและใส
- ตัวกรองการปิดกั้น IR: ปรับปรุงความแม่นยำของสีภายใต้สภาวะแสงต่างๆ
- นำ: LED สีขาวในตัวสำหรับการส่องสว่างที่สอดคล้องกัน (เป็นตัวเลือกที่จะใช้)
ขั้นตอนที่ 2: เดินสาย TCS34725 ไปยัง Arduino
TCS34725 สื่อสารกับ Arduino ผ่านโปรโตคอล I2C
การเชื่อมต่อ
พินเซ็นเซอร์ | พิน Arduino |
---|---|
vin | 5V |
gnd | gnd |
SDA | A4 |
SCL | A5 |
บันทึก: สำหรับบอร์ด Arduino ที่มีหมุด SDA และ SCL เฉพาะ (เช่น Mega) ให้เชื่อมต่อพิน SDA/SCL ของเซ็นเซอร์เข้ากับที่แทน
ขั้นตอนที่ 3: การติดตั้งไลบรารีที่ต้องการ
ในการใช้เซ็นเซอร์ TCS34725 คุณต้องใช้ไลบรารี Adafruit TCS34725
ขั้นตอนในการติดตั้งไลบรารี
- เปิด Arduino IDE
- ไป ร่าง> รวมไลบรารี> จัดการไลบรารี.
- ค้นหา "Adafruit TCS34725"
- คลิก ติดตั้ง.
ขั้นตอนที่ 4: อัปโหลดรหัสตัวอย่าง
นี่คือตัวอย่างพื้นฐานในการอ่านและแสดงค่าสีจากเซ็นเซอร์ TCS34725
รหัสตัวอย่าง
#include <Wire.h>
#include "Adafruit_TCS34725.h"
// Create an instance of the sensor
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);
void setup() {
Serial.begin(9600);
if (!tcs.begin()) {
Serial.println("TCS34725 not found. Check your wiring or I2C address.");
while (1); // Halt execution if sensor not found
}
Serial.println("TCS34725 is ready!");
}
void loop() {
uint16_t r, g, b, c;
float lux, colorTemp;
// Get the raw data from the sensor
tcs.getRawData(&r, &g, &b, &c);
// Calculate color temperature and lux
colorTemp = tcs.calculateColorTemperature_dn40(r, g, b, c);
lux = tcs.calculateLux(r, g, b);
// Print the results
Serial.print("Red: "); Serial.print(r); Serial.print(" \t");
Serial.print("Green: "); Serial.print(g); Serial.print(" \t");
Serial.print("Blue: "); Serial.print(b); Serial.print(" \t");
Serial.print("Clear: "); Serial.print(c); Serial.print(" \t");
Serial.print("Color Temp: "); Serial.print(colorTemp); Serial.print(" K \t");
Serial.print("Lux: "); Serial.println(lux);
delay(1000); // Update every second
}
ขั้นตอนที่ 5: การใช้ข้อมูล
1. การตรวจจับสี
คุณสามารถแมปค่า RGB เพื่อระบุสีเฉพาะ ตัวอย่างเช่น:
if (r > g && r > b) {
Serial.println("Red Detected");
} else if (g > r && g > b) {
Serial.println("Green Detected");
} else if (b > r && b > g) {
Serial.println("Blue Detected");
}
2. การเรียกใช้การกระทำตามสี
ใช้สีที่ตรวจพบเพื่อควบคุม LED หรือมอเตอร์ ตัวอย่างเช่น:
if (r > g && r > b) {
digitalWrite(ledPin, HIGH); // Turn on red LED
}
3. การปรับเซ็นเซอร์
ปรับเปลี่ยนอัตราขยายและเวลาการรวมของเซ็นเซอร์สำหรับสภาพแสงที่แตกต่างกัน:
- เวลารวม: กำหนดระยะเวลาสำหรับการวัดแสง ตัวเลือก: 2.4ms ถึง 700ms
- ได้รับ: ขยายสัญญาณ ตัวเลือก: 1x, 4x, 16x, 60x
ตัวอย่าง:
tcs.setIntegrationTime(TCS34725_INTEGRATIONTIME_154MS);
tcs.setGain(TCS34725_GAIN_4X);
แนวทางปฏิบัติที่ดีที่สุด
- แสงที่สอดคล้องกัน: ใช้ LED ในตัวของเซ็นเซอร์หรือตรวจสอบสภาพแสงที่เสถียร
- ปรับเทียบเพื่อความแม่นยำ: ปรับอัตราขยายและเวลาการรวมสำหรับการอ่านที่ดีที่สุด
- เสียงกรอง: ใช้สายสั้นและการต่อสายดินที่เหมาะสมเพื่อลดเสียงรบกวนทางไฟฟ้า
การแก้ไขปัญหา
-
ไม่พบเซ็นเซอร์:
- ตรวจสอบการเชื่อมต่อ SDA และ SCL
- ตรวจสอบที่อยู่ I2C (ค่าเริ่มต้น: 0x29)
-
การอ่านที่ไม่ถูกต้อง:
- ตรวจสอบแสงที่เหมาะสมและหลีกเลี่ยงเงา
- ปรับเวลารับและการรวม
-
ค่าผันผวน:
- เพิ่มตัวเก็บประจุข้ามแหล่งจ่ายไฟเพื่อทำให้เซ็นเซอร์มีเสถียรภาพ
แอปพลิเคชันของเซ็นเซอร์ TCS34725
- การเรียงลำดับตามสีในหุ่นยนต์
- การตรวจจับแสงโดยรอบ
- การสอบเทียบสีในการถ่ายภาพ
- การควบคุม LED RGB
- ระบบไฟอัตโนมัติ
บทสรุป
TCS34725 เป็นเซ็นเซอร์สีที่ทรงพลังและใช้งานง่ายสำหรับโครงการ Arduino โดยทำตามคำแนะนำนี้คุณสามารถรวมเซ็นเซอร์เข้ากับการออกแบบของคุณเปิดใช้งานการตรวจจับสีการวัดแสงโดยรอบและอื่น ๆ ทดลองกับการกำหนดค่าที่แตกต่างกันเพื่อสำรวจศักยภาพทั้งหมดของโมดูลอเนกประสงค์นี้!