ในโครงการนี้เราจะไปตรวจหาสีโดยใช้สี TCS3200 เซนเซอร์ Module กับราสเบอร์รี่ Pi ที่นี่เราใช้รหัส Python สำหรับ Raspberry Pi เพื่อตรวจจับสีโดยใช้เซ็นเซอร์ TCS3200 เพื่อแสดงให้เห็นถึงการตรวจจับสีที่เราใช้ LED RGB LED RGB นี้จะเรืองแสงเป็นสีเดียวกันซึ่งวัตถุจะถูกนำเสนอใกล้เซ็นเซอร์ ขณะนี้เราได้ตั้งโปรแกรม Raspberry Pi ให้ตรวจจับเฉพาะสีแดงเขียวและน้ำเงิน แต่คุณสามารถตั้งโปรแกรมให้ตรวจจับสีใดก็ได้หลังจากได้รับค่า RGB เนื่องจากทุกสีประกอบด้วยส่วนประกอบ RGB เหล่านี้ ตรวจสอบวิดีโอสาธิตในตอนท้าย
ก่อนหน้านี้เราได้อ่านและแสดงค่า RGB ของสีโดยใช้ TCS3200 เดียวกันกับ Arduino ก่อนที่จะดำเนินการใด ๆ เพิ่มเติมโปรดทราบเกี่ยวกับ TCS3200 Color Sensor
TCS3200 เซ็นเซอร์สี:
TCS3200 เป็นเซนเซอร์สีที่สามารถตรวจจับสีจำนวนเท่าใดก็ได้ด้วยการตั้งโปรแกรมที่เหมาะสม TCS3200 มี RGB (สีแดงสีเขียวสีฟ้า) อาร์เรย์ ดังแสดงในภาพระดับกล้องจุลทรรศน์เราสามารถมองเห็นกล่องสี่เหลี่ยมที่อยู่ในเซ็นเซอร์ตา กล่องสี่เหลี่ยมเหล่านี้คืออาร์เรย์ของเมทริกซ์ RGB แต่ละกล่องมีเซ็นเซอร์สามตัวสำหรับตรวจจับความเข้มของแสงสีแดงเขียวและน้ำเงิน
ดังนั้นเราจึงมีอาร์เรย์สีแดงสีน้ำเงินและสีเขียวในเลเยอร์เดียวกัน ดังนั้นในขณะตรวจจับสีเราไม่สามารถตรวจจับทั้งสามองค์ประกอบพร้อมกัน อาร์เรย์เซ็นเซอร์แต่ละตัวเหล่านี้จะต้องถูกเลือกแยกจากกันเพื่อตรวจจับสี โมดูลนี้สามารถตั้งโปรแกรมให้รับรู้สีเฉพาะและปล่อยให้สีอื่น ๆ มันมีพินสำหรับจุดประสงค์ในการเลือกซึ่งจะอธิบายในภายหลัง มีโหมดสี่โหมดที่ไม่ใช่โหมดตัวกรอง ด้วยโหมดกรองไม่มีเซ็นเซอร์ตรวจจับแสงสีขาว
เราจะเชื่อมต่อเซ็นเซอร์นี้กับ Raspberry Pi และจะตั้งโปรแกรม Raspberry Pi เพื่อให้การตอบสนองที่เหมาะสมขึ้นอยู่กับสี
ส่วนประกอบที่ต้องการ:
ที่นี่เราจะใช้ ราสเบอร์รี่ Pi 2 รุ่น B กับ Raspbian Jessie OS ข้อกำหนดฮาร์ดแวร์และซอฟต์แวร์พื้นฐานทั้งหมดได้กล่าวไว้ก่อนหน้านี้คุณสามารถค้นหาได้ในบทนำ Raspberry Pi และ Raspberry PI LED กะพริบเพื่อเริ่มต้นใช้งานนอกเหนือจากที่เราต้องการ:
- Raspberry Pi พร้อมระบบปฏิบัติการที่ติดตั้งไว้ล่วงหน้า
- TCS3200 เซ็นเซอร์สี
- ชิปเคาน์เตอร์ CD4040
- RGB LED
- ตัวต้านทาน1KΩ (3 ชิ้น)
- ตัวเก็บประจุ 1000uF
แผนภาพวงจรและการเชื่อมต่อ:
การเชื่อมต่อที่ทำขึ้นเพื่อเชื่อมต่อ Color Sensor กับ Raspberry Pi แสดงไว้ในตารางด้านล่าง:
หมุดเซนเซอร์ |
พิน Raspberry Pi |
Vcc |
+ 3.3v |
GND |
พื้น |
S0 |
+ 3.3v |
S1 |
+ 3.3v |
S2 |
GPIO6 ของ PI |
S3 |
GPIO5 ของ PI |
OE |
GPIO22 ของ PI |
ออก |
CLK ของ CD4040 |
การเชื่อมต่อสำหรับตัวนับ CD4040 กับ Raspberry Pi แสดงไว้ในตารางด้านล่าง:
CD4040 พิน |
พิน Raspberry Pi |
Vcc16 |
+ 3.3v |
Gnd8 |
gnd |
Clk10 |
ไม่มีเซ็นเซอร์ |
รีเซ็ต 11 |
GPIO26 ของ PI |
คำถาม 0 |
GPIO21 ของ PI |
คำถามที่ 1 |
GPIO20 ของ PI |
คำถามที่ 2 |
GPIO16 ของ PI |
ไตรมาสที่ 3 |
GPIO12 ของ PI |
Q4 |
GPIO25 ของ PI |
คำถามที่ 5 |
GPIO24 ของ PI |
คำถาม 6 |
GPIO23 ของ PI |
คำถามที่ 7 |
GPIO18 ของ PI |
คำถามที่ 8 |
ไม่มีการเชื่อมต่อ |
คำถาม 9 |
ไม่มีการเชื่อมต่อ |
คำถามที่ 10 |
ไม่มีการเชื่อมต่อ |
คำถาม 11 |
ไม่มีการเชื่อมต่อ |
ด้านล่างนี้คือแผนภาพวงจรทั้งหมดของInterfacing Color Sensor กับ Raspberry Pi:
คำอธิบายการทำงาน:
ทุกสีประกอบด้วยสามสี: แดงเขียวและน้ำเงิน (RGB) และถ้าเราทราบความเข้มของ RGB ในสีใด ๆ เราก็จะตรวจจับสีนั้นได้ ก่อนหน้านี้เราได้อ่านค่า RGB เหล่านี้โดยใช้ Arduino
การใช้เซ็นเซอร์สี TCS3200 เราไม่สามารถตรวจจับแสงสีแดงสีเขียวและสีน้ำเงินพร้อมกันได้ดังนั้นเราจึงต้องตรวจสอบทีละตัว สีที่เซ็นเซอร์สีจะต้องถูกเลือกโดยสองพิน S2 และ S3 ด้วยหมุดทั้งสองนี้เราสามารถบอกเซ็นเซอร์ได้ว่าจะวัดความเข้มของแสงสีใด
สมมติว่าเราต้องการความเข้มของสีแดงหรือไม่เราต้องตั้งค่าพินทั้งสองเป็น LOW หลังจากวัดแสงสีแดงแล้วเราจะตั้งค่า S2 LOW และ S3 HIGH เพื่อวัดแสงสีน้ำเงิน โดยการเปลี่ยนลอจิกของ S2 และ S3 ตามลำดับเราสามารถวัดความเข้มของแสงสีแดงสีน้ำเงินและสีเขียวได้ตามตารางด้านล่าง:
S2 |
S3 |
ประเภทโฟโตไดโอด |
ต่ำ |
ต่ำ |
แดง |
ต่ำ |
สูง |
สีน้ำเงิน |
สูง |
ต่ำ |
ไม่มีฟิลเตอร์ (สีขาว) |
สูง |
สูง |
เขียว |
เมื่อเซ็นเซอร์ตรวจพบความเข้มของส่วนประกอบ RGB แล้วค่าจะถูกส่งไปยังระบบควบคุมภายในโมดูลดังแสดงในรูปด้านล่าง ความเข้มแสงที่วัดโดยอาร์เรย์จะถูกส่งไปยังตัวแปลงกระแสเป็นความถี่ภายในโมดูล ตัวแปลงความถี่จะสร้างคลื่นสี่เหลี่ยมซึ่งความถี่เป็นสัดส่วนโดยตรงกับค่าที่อาร์เรย์ส่งมา ด้วยมูลค่าที่สูงขึ้นจาก ARRAY ตัวแปลงกระแสเป็นความถี่จะสร้างคลื่นสี่เหลี่ยมที่มีความถี่สูงขึ้น
ความถี่สัญญาณเอาท์พุตโดยโมดูลเซ็นเซอร์สีสามารถปรับได้สี่ระดับ ระดับเหล่านี้ถูกเลือกโดยใช้ S0 และ S1 ของโมดูลเซ็นเซอร์ดังแสดงในรูปด้านล่าง
S0 |
S1 |
มาตราส่วนความถี่เอาต์พุต (f0) |
ล |
ล |
อำนาจลง |
ล |
ซ |
2% |
ซ |
ล |
20% |
ซ |
ซ |
100% |
คุณลักษณะนี้มีประโยชน์เมื่อเราเชื่อมต่อโมดูลนี้กับระบบด้วยนาฬิกาที่มีนาฬิกาต่ำ ด้วย Raspberry Pi เราจะเลือก 100% โปรดจำไว้ที่นี่ภายใต้ร่มเงาโมดูลเซ็นเซอร์สีจะสร้างเอาต์พุตคลื่นสี่เหลี่ยมที่มีความถี่สูงสุดคือ 2500Hz (มาตราส่วน 100%) สำหรับแต่ละสี
แม้ว่าโมดูลจะให้คลื่นสี่เหลี่ยมเอาท์พุตที่ความถี่เป็นสัดส่วนโดยตรงกับความเข้มของแสงที่ตกลงบนพื้นผิว แต่ก็ไม่มีวิธีง่ายๆในการคำนวณความเข้มแสงของแต่ละสีโดยโมดูลนี้ อย่างไรก็ตามเราสามารถบอกได้ว่าความเข้มของแสงจะเพิ่มขึ้นหรือลดลงสำหรับแต่ละสี นอกจากนี้เรายังสามารถคำนวณและเปรียบเทียบค่าสีแดงสีเขียวสีน้ำเงินเพื่อตรวจจับสีของแสงหรือสีของวัตถุที่ตั้งไว้ล่วงหน้าที่พื้นผิวของโมดูล ดังนั้นนี่จึงเป็นโมดูลเซนเซอร์สีมากกว่าโมดูลเซนเซอร์ความเข้มแสง
ตอนนี้เราจะเลี้ยงเอาท์พุทคลื่นนี้สแควร์กับราสเบอร์รี่ Pi แต่เราไม่สามารถให้โดยตรงกับ PI เพราะราสเบอร์รี่ Pi ไม่ได้มีเคาน์เตอร์ภายในใด ดังนั้นก่อนอื่นเราจะให้ผลลัพธ์นี้กับCD4040 Binary Counterและเราจะตั้งโปรแกรม Raspberry Pi ให้รับค่าความถี่จากตัวนับเป็นระยะ ๆ 100msec
ดังนั้น PI จึงอ่านค่า 2500/10 = 250 สูงสุดสำหรับแต่ละสีแดงเขียวและน้ำเงิน นอกจากนี้เรายังได้ตั้งโปรแกรม Raspberry Pi ให้พิมพ์ค่าเหล่านี้ซึ่งแสดงถึงความเข้มของแสงบนหน้าจอดังที่แสดงด้านล่าง ค่าจะถูกลบออกจากค่าเริ่มต้นเพื่อให้ถึงศูนย์ สิ่งนี้มีประโยชน์ในขณะที่ตัดสินใจเลือกสี
ค่าเริ่มต้นคือค่า RGB ซึ่งได้มาโดยไม่ต้องวางวัตถุใด ๆ ไว้ด้านหน้าเซ็นเซอร์ ขึ้นอยู่กับสภาพแสงโดยรอบและค่าเหล่านี้อาจแตกต่างกันไปตามสภาพแวดล้อม โดยพื้นฐานแล้วเรากำลังปรับเทียบเซ็นเซอร์สำหรับการอ่านค่ามาตรฐาน ดังนั้นก่อนอื่นให้รันโปรแกรมโดยไม่ต้องวางวัตถุใด ๆ และจดบันทึกการอ่าน ค่าเหล่านี้จะไม่อยู่ใกล้ศูนย์เนื่องจากจะมีแสงตกที่เซ็นเซอร์เสมอไม่ว่าคุณจะวางไว้ที่ใดก็ตาม จากนั้นลบการอ่านเหล่านั้นด้วยการอ่านที่เราจะได้รับหลังจากวางวัตถุเพื่อทดสอบ วิธีนี้เราจะได้รับการอ่านมาตรฐาน
Raspberry Pi ยังได้รับการตั้งโปรแกรมให้เปรียบเทียบค่า R, G และ B เพื่อกำหนดสีของวัตถุที่วางใกล้เซ็นเซอร์ ผลลัพธ์นี้แสดงโดย LED RGB เรืองแสงที่เชื่อมต่อกับ Raspberry Pi
สรุปได้ว่า
1. โมดูลตรวจจับแสงที่สะท้อนจากวัตถุที่วางใกล้พื้นผิว
2. โมดูลเซนเซอร์สีให้คลื่นเอาต์พุตสำหรับ R หรือ G หรือ B ซึ่งเลือกตามลำดับโดย Raspberry Pi ผ่าน Pins S2 และ S3
3. CD4040 Counter รับคลื่นและวัดค่าความถี่
4. PI ใช้ค่าความถี่จากตัวนับสำหรับแต่ละสีทุกๆ 100ms หลังจากรับค่าทุกครั้งที่ PI รีเซ็ตตัวนับเพื่อตรวจหาค่าถัดไป
5. Raspberry Pi พิมพ์ค่าเหล่านี้บนหน้าจอและเปรียบเทียบค่าเหล่านี้เพื่อตรวจจับสีของวัตถุและสุดท้ายเรืองแสง RGB LED ด้วยสีที่เหมาะสมขึ้นอยู่กับสีของวัตถุ
เราได้ทำตามลำดับข้างต้นใน Python Code ของเรา โปรแกรมเต็มรูปแบบจะได้รับด้านล่างด้วยวิดีโอสาธิต
Raspberry Pi ได้รับการตั้งโปรแกรมให้ตรวจจับเพียงสามสีคุณสามารถจับคู่ค่า R, G และ B เพื่อตรวจจับสีที่คุณชอบ