วันพุธที่ 22 กุมภาพันธ์ พ.ศ. 2560

โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module

โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module

การใช้งาน โมดูลแยกสี TCS230 ถ้าคุณต้องการ ทำให้ Arduino สามารถมองเห็นสีของสิ่งรอบตัว เพื่อเอาไปประมวลผลตามที่ต้องการ เช่น ทำเป็นตัวอ่านค่าสี RGB หรือนำค่า RGB ไปแสดงบนหน้าจอคอมพิวเตอร์ โมดูลนี้จะช่วยเพิ่มความสามารถนี้ให้กับ Arduino โมดูล TCS230 Color Recognition Sensor ใช้ไฟเลี่ยง 3.3 - 5 โวลต์ ใช้สายสัญญาณ 3 เส้น มีสายสำหรับควบคุมไฟ LED อีก 1 เส้น สามารถสั่งเปิดไฟตอนกำลังอ่านค่าสี และสั่งให้ปิดเมื่ออ่านค่าสีเสร็จแล้วได้
โมดูล TCS230 Color Recognition Sensor module ตัวนี้ใช้เซ็นเซอร์ TAOS TCS230 เป็นตัวแยกความถี่ของแสง โดยใช้ photodiodes 
การแปลงแสงเป็นความถี่ อ่านได้จากค่า photodiodes ที่อยู่ในชิฟของ โมดูล TCS230 มีจำนวนทั้งหมด 8x8 ชิ้น สามาถรอ่านสี แดง เขียว ฟ้า แสงสว่างจากแหล่งกำเนิดแสงโดยตรง ซึ่งค่าที่อ่านมาได้จะเป็นค่าความถี่ของแสง แดง เขียว ฟ้า ยังไม่ใช่ค่า RGB ที่เราใช้กันในคอม แต่ไม่ต้องห่วงมีคนใจดีเขียนโคดแก้สมการทางแสงอันวุ่นวายมาให้พร้อมใช้งาน เราแค่เรียกใช้ให้ถูก ก็ใช้ได้แล้ว
การควบคุมเซนเซอร์ โมดูล TCS230 นี้ ทำได้โดยควบคุมจากขา s2 และ s3 และขา OUT จะให้ออกมาเป็นสัญญาณเวฟสี่เหลี่ยม(50% duty cycle) เป็นความถี่ที่อ่านได้จากเซนเซอร์แสง photortional โดยตรง สามารถขยายความเข้มของค่าที่อ่านได้ โดยควบคุมอัตราขยายที่ขา s0 และ s1

ความสามารถของชิฟ TCS230
  • High-Resolution Conversion of Light Intensity to Frequency
  • Programmable Color and Full-Scale Output Frequency
  • Communicates Directly With a Microcontroller
  • Single-Supply Operation (2.7 V to 5.5 V)
  • Power Down Feature
  • Nonlinearity Error Typically 0.2% at 50 kHz
  • Stable 200 ppm/°C Temperature Coefficient
  • Low-Profile Surface-Mount Package
การจัดขาของชิฟ TCS230

หลักการทำงานของ โมดูล TCS230
จากรูปเราได้รู้เกี่ยวกับโมเดลแม่สีแสง RGB , บอร์ด Color มีกลุ่มของเซนเซอร์ที่สามารถตรวจจับแสง สีแดง เขียว และน้ำเงิน และเมื่อรวมกันก็จะได้เป็นแสงสีต่าง ๆ ที่เราเห็นกัน , ถ้าเรารู้ข้อมูลของแสง RGB แต่ละตัว ก็จะสามารถรู้ว่ารวมกันแล้วจะได้เป็นสีอะไร โมดูลนี้มีเซนเซอร์สีแดง เขียว และน้ำเงินรวมกันถึง 8x8 ตัว สามารถรับแสงแต่ละค่าและเมื่อเอามาเข้าสมการรวมกันแปลงค่าออกมา ก็จะได้ค่าสีที่เรามองเห็น แปลว่า Arduino ของเรา แยกแยะสีออกได้แล้ว เย้เย้

โมดูล TCS230 มีเซนเซอร์ photodiodes ขนาด 8x8 ตัว โดย มีเซนเซอร์สีนำ้เงิน 16 ตัว สีเขียว 16 ตัว สีแดง 16 ตัวและ 16 ตัวสำหรับแสงสีขาว โดยจะให้สัญญาณเอาต์พุตออกมาทางขา s2 และ s3 เช่น ถ้า s2 และ s3 ให้สัญญาณ 0 หรือ L ออกมา แปลว่า อ่านได้ค่าแสงสีแดง แล้ว ถ้า s2 และ s3 ให้ค่าออกมาเป็น L และ H แสดงว่าเป็นสีน้ำเงิน ตามตารางในรูปนี้


เราสามารถขยายสัญญาณนี้ได้โดยควบคุมที่ขา s0 และ s1 โดย มี 4 ระดับ คือ ถ้า s0 กับ s1 เป็น L L หรือ 0 0 แปลว่าปิดการทำงาน เช่นกัน ถ้า s0 กับ s1 เป็น H L แปลว่า ขยายสัญญาณที่ 20 %


ตอนนี้เราได้รู้คอนเซปของ แม่สีแสง RGB แล้ว เรารู้ว่า ถ้าเราสามารถรู้ความถี่ของแสง สีแดง เขียว น้ำเงิน นำค่าแต่ละค่ามาผสมกัน ก็จะได้ออกมาเป็นค่าของแสงว่า คือสีอะไร และ โมดูล TCS230 นี้ก็มีเซนเซอร์แสงเหล่านี้มาให้ครบถ้วน ทำให้เราสามารถแยกประเภทสีได้ คราวนี้เราจะมาลองเล่นสนุกกัน

วิธีการต่อใช้งาน โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module
การต่อสายจากโมดูล -> บอร์ด Arduino
Vcc -> 5v
Gnd -> Gnd
s0 -> 5v
s1 -> 5v
s2 -> 12
s3 -> 13
OUT -> 5
LED -> 7
จากนั้น ดาวน์โหลด ไลบารีจากที่นี่
หลังจากติดตั้งเรียบร้อยแล้ว

เปิดโปรเจกใหม่ ก็อปโคดตามนี้ลงไปวาง อาจจะยาวหน่อย ไม่ต้องไปสนใจ 555
วิธีการเล่น  โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module
เราได้ต่อบอร์ดและอัพโหลดโคดกันไปเรียบร้อยแล้ว ต่อมาก็มาถึงเวลาเล่นของเราซักที

1. เปิด SerialPort monitor ที่มุมบนซ้ายขึ้นมา แล้วกดปุ่ม reset บนบอร์ด 1 ครั้งเบา ๆ โปรแกรมจะบอกว่า ให้เอาสีดำวางไว้ติดกับตัวเซนเซอร์ เพื่อปรับระดับค่าสีดำ แล้วกดปุ่ม send เพื่อปรับสีดำ


2. ต่อมาโปรแกรมก็จะบอกให้ เอาสีขาวมาวางไว้ติดกับเซนเซอร์ กดปุ่ม send เพื่อปรับสีขาว

3. เมื่อปรับค่าสีดำและสีขาวเรียบร้อยแล้ว ก็สามารถนำสีที่ต้องการมาวางไว้หน้าเซนเซอร์ แล้วกดปุ่ม Send เพื่ออ่านค่าสีได้แล้ว ตัวอย่างเอาสีน้ำเงินออกฟ้ามาวาง ก็อ่านค่าสี RGB ได้  16,61,110

การประยุกต์ใช้งาน โมดูลแยกสี Arduino TCS230 Color Recognition Sensor module
อย่าลืมนะครับ โมดูลนี้มี สายสัญญาณไว้สำหรับควบคุม LED ให้เปิดปิด ได้ตามที่ต้องการ ไม่ควรเปิด LED ไว้ตลอด เพราะนอกจากจะเปลืองไฟแล้ว หลอด LED ยังมีอายุการใช้งานสั้นกว่าที่ควรเป็นด้วย
เราสามารถต่อจอ LCD เพื่อนำค่า RGB ที่อ่านได้ไปแสดงบนจอ หรือจะลองต่อออกไปแสดงผลที่หน้าจอคอมพิวเตอร์ได้ผ่านการสื่อสารแบบ Serial Port อาจจะใช้โปรแกรม C# หรือตามที่ถนัดได้ตามใจชอบครับ
ผมลองทำ C# เล่น ๆ อ้างอิงตามโคดตัวอย่างในบทความนี้ มาให้ได้ทดลองเล่น


ดาวน์โหลดไปพร้อมโคดทั้งหมดได้ที่นี่ครับ
ถ้าทำไม่ได้ยินดีให้คำปรึกษาฟรี ๆ ครับ โพสถามในนี้ได้เลย

หวังว่าคงสนุกกับการแยกสีสันรอบตัวกับ Arduino ทุกอย่าง ArduinoAll นะครับ


อุปกรณ์โมดูลวัดค่าสี RGB Colour Sensor (TCS230/TCS3200)


4 ความคิดเห็น: