Tuesday, September 22, 2015

Color Recognition Sensor Detector (TCS230/TCS3200)



วันนี้ผมนำโมดูลที่ใช้วัดค่าสีของ Arduino มาฝากครับ
โดยหากคุณต้องการมองเห็นสีของสิ่งของหรือวัตถุต่างๆ เพื่อที่จะนำไปประมวลผล
หรือเก็บข้อมูล หรือทำเป็นตัวอ่านค่าสี RGB ไปแสดงบนหน้าจอคอมพิวเตอร์ โมดูลนี้จะช่วยเพิ่มความสามารถนี้ให้กับ Arduino โมดูล TCS230 Color Recognition Sensor ใช้ไฟเลี่ยง 3.3 - 5 โวลต์ ใช้สายสัญญาณ 3 เส้น มีสายสำหรับควบคุมไฟ LED อีก 1 เส้น สามารถสั่งเปิดไฟตอนกำลังอ่านค่าสี และสั่งให้ปิดเมื่ออ่านค่าสีเสร็จแล้วได้

โมดูล TCS230 Color Recognition Sensor module ตัวนี้ใช้เซ็นเซอร์ TAOS TCS230 เป็นตัวแยกความถี่ของแสง โดยใช้ photodiodes

การควบคุมเซนเซอร์ โมดูล 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

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

การต่อขา RGB Colour Sensor (TCS230/TCS3200)
s0 -> 3
s1 -> 4
s2 -> 5
s3 -> 6
LED -> 7
out -> 8
Vcc -> 5V
Gnd -> Gnd

ภาพตัวอย่างการทำงาน


ที่มา: arduinoall.com

Sunday, September 6, 2015

มาเลเซียจะเริ่มใช้กฎบังคับติดแท็ก RFID เพื่อช่วยติดตามตำแหน่งรถยนต์ตั้งแต่ปีนี้

RFID เป็นคำย่อมาจาก Radio Frequency Identification
เป็นเทคโนโลยีแสดงตนแบบไม่ต้องสัมผัสโดยใช้คลื่นความถี่วิทยุ


แท็ก RFID ดังกล่าวจะผนึกมากับสติ๊กเกอร์ที่ผู้เสียภาษีรถยนต์จะได้เอาไว้ติดที่กระจกหน้ารถ โดยแท็กดังกล่าวสามารถตรวจพบได้ด้วยอุปกรณ์ตรวจหาแท็กของเจ้าหน้าที่รัฐ (ซึ่งในอนาคตทางการมาเลเซียจะมีการใช้สัญญาณจากดาวเทียมเข้ามาร่วมใช้งานเพื่อการระบุตำแหน่งรถยนต์ด้วย) และหากใครคิดจะแกะมันออกหรือทำลายมัน ตัวแท็กก็จะสามารถส่งสัญญาณแจ้งเตือนไปให้อุปกรณ์ตรวจหาในบริเวณใกล้เคียงทราบได้ด้วย

เป้าหมายของการออกกฎนี้ ก็เพื่อใช้ประโยชน์จากแท็ก RFID ในการติดตามเส้นทางการวิ่งของรถยนต์ซึ่งอาจถูกนำไปใช้ในการกระทำผิดกฎหมาย นอกจากนี้หากมีการพัฒนาระบบแวดล้อมเพิ่มเติม ก็จะสามารถอาศัยข้อมูลจากแท็กเหล่านี้เพื่อวิเคราะห์สภาพการจราจรบนท้องถนนได้ รวมทั้งใช้แทนบัตรผ่านด่านต่างๆ คล้ายคลึงกับระบบ Easy Pass ของทางด่วนในประเทศไทย

ลองนึกดูว่าจะเป็นประโยชน์มากมายขนาดไหนหากเทคโนโลยีนี้ถูกใช้กันอย่างแพร่หลาย
และตัวแท็กนี้ก็สามารถนำไปประยุกต์เพื่อให้เป็นประโยชน์ได้มากมายเลยทีเดียว ในอนาคต
เจ้าของรถอาจจะสามารถเข้าถึงแท็กของรถยนต์ตัวเองจากมือถือ เพื่อที่จะระบุตำแหน่งได้
และสามารถนำไปเก็บข้อมูลอื่นๆได้ เช่น อุณหภูมิ สภาพภูมิอากาศ ความเข้มของแสง
แม้กระทั่ง webcam ภายในรถหรือนอกรถ และเทคโนโลยีนี้จะเพิ่มความแม่นยำในการคํานวณ
สภาพการจราจรให้แม่นยำขึ้นด้วย

ภาพแสดงสภาวะการจราจรจาก Google Map

อย่างไรก็แล้วแต่ก็มีบางกลุ่มที่กล่าวถึงความไม่เป็นส่วนตัวของประชาชนที่จะโดนติดตามได้โดยง่าย
หากมีผู้ไม่ประสงค์ดีสามารถแฮคเข้าสู่ระบบของทางการได้ ก็จะไม่เป็นผลดีแน่
แต่ทางการมาเลเซียยืนยันที่จะดำเนินการโครงการนี้ต่อไป โดยอนาคตไม่ว่าจะเป็นรถยนต์ของชาวมาเลเซียเองหรือรถยนต์ที่ข้ามมาจากประเทศเพื่อนบ้าน และจะค่อยๆ เพิ่มการบังคับใช้กฎกับด่านชายแดนอื่นทั้งที่เชื่อมต่อกับไทย, บรูไน และอินโดนีเซีย จนครบภายในอีก 2 ปีข้างหน้า ส่วนรถยนต์ที่วิ่งอยู่ภายในประเทศมาเลเซียเองก็จะได้รับแท็ก RFID นี้จนครบทั้งหมดภายในปี 2018 ซึ่งคาดว่าถึงตอนนั้นจะมีรถยนต์ติดแท็ก RFID มากถึง 28 ล้านคัน

ที่มา : Blognone

แนะนำ BeagleBone Black


วันนี้ผมมี Controller board ที่น่าสนใจตัวหนึ่ง นั่นก็คือ Beaglebone Black นั่นเอง
ถึงแม้จะเป็นที่รู้จักน้อยกว่า Arduino Uno และ Raspberry Pi แต่ก็นับว่าเป็นบอร์ดที่ดีตัวหนึ่ง
โดยในรุ่น Beaglebone Black มาพร้อมกับ A8 CPU Am335x Arm Cortex 1GHz ซึ่งเป็น
Cpu ที่นิยมใช้กันใน Smartphone
โดยสเปคคร่าวๆ ของเจ้า Beaglebone Black มีดังนี้

ฮาร์ดแวร์
- AM335x 1GHz ARM® Cortex-A8
- 512MB DDR3 RAM
- 4GB 8-bit eMMC on-board flash storage
- 3D graphics accelerator
- NEON floating-point accelerator
- 2x PRU 32-bit microcontrollers

การเชื่อมต่อ
USB client for power & communications
Ethernet
HDMI
2x 46 pin headers

ซอฟแวร์
Debian
Android
Ubuntu
Cloud9 IDE on Node.js w/ BoneScript library
และอีกมากมาย


ภาพ Beaglebone Black

จาก I/O แล้วจะเห็นได้ว่าเจ้าบอร์ดตัวนี้สามารถนำไปใช้ประโยชน์ได้มากมาย
แล้วแต่จินตนาการของผู้ใช้เลยทีเดียว
นอกจากนี้ Beaglebone Black ยังสามารถติดตั้งหน่วยความจำภายนอกอย่าง micro-sdcard ได้
เพียงแค่ติดตั้ง Linux ลงบน sdcard ก็สามารถให้ Beaglebone บูทจาก sdcard ได้เหมือนกัน

โดยบอร์ดตัวนี้สามารถใช้ได้ตั้งแต่มือใหม่ไปจนถึงมือเก่ากันเลยทีเดียว
สนนราคาของ Beaglebone Black อยู่ที่ 49$

หากจะให้เปรียบเทียบกับบอร์ดยอดนิยมอย่าง Ardruino และ Raspberry Pi
การใช้งานของเราจะเป็นตัววัดว่าเราต้องการบอร์ดไหนมาใช้
ผมไม่สามารถตัดสินไปเลยว่า Rassberry Pi ดีที่สุด หรือ Ardruino เจ๋งที่สุด
โดยในสังเวียนนี้ผมจะให้ทั้ง 3 บอร์ด วัดกัน 6 ยก มาดูกันว่ายกไหนใครเป็นผู้ชนะ

ยกที่ 1 : บอร์ดสำหรับมือใหม่หรือผู้เริ่มต้น?
แน่นอนว่ามือใหม่นั้นยังต้องการคู่มือและ การให้คำปรึกษาจากมือโปรทั้งหลาย
การเลือกบอร์ดที่มีความนิยมมากจะเป็นข้อดี เพราะบอร์ดที่มีความนิยมมาก
ก็จะมีคำแนะนำมากเช่นกัน นอกจากนี้ผู้เริ่มต้นอาจจะยังไม่ได้ใช้ I/O ที่เป็นขั้นสูงมากนัก
นอกจากนี้ราคาก็ต้องไม่แพงจนเกินไป ในยกนี้ผมจึงให้ Arduino เป็นฝ่ายชนะ

ยกที่ 2 : สำหรับการใช้งานที่มีพื้นที่ในการติดตั้งน้อย?

แน่นอนว่าในยกนี้ Rassberry Pi และ Beaglebone เป็นรองเห็นๆ เพราะ Arduino มีบอร์ด
หลายหลายขนาดให้เลือก และการใช้งานของแต่ละรุ่นก็หลากหลายเช่นกัน
หากคุณกำลังมองบอร์ดที่อยู่บน gadget ขนาดเล็ก Arduino เป็นทางเลือกที่ดี
ยกนี้ Arduino จึงเป็นฝ่ายชนะอีกเช่นเคย

ยกที่ 3 : การใช้งานที่ต้องพึ่งพาอินเทอร์เน็ต?
การใช้งานอินเทอร์เน็ตซึ่งจริงๆ ก็สามารถใช้ได้ทั้ง 3 บอร์ด
แต่หากเป็นการใช้งานอินเทอร์เน็ตที่กว้างมากที่สุด ก็คงต้องยกให้ Rasberry Pi และ Beaglebone
เพราะทั้งคู่สามารถใช้งาน Linux ได้นั่นเอง โดยใน Linux มี components มากมายที่จะทำให้คุณ
ใช้อินเทอร์เน็ตแบบขั้นสูงได้ นอกจากนี้ทั้งคู่ยังมีพอร์ทมาให้เลยอย่าง Ethernet และ USB
หากต้องการต่อไร้สายก็สามารถใช้ wireless module ต่อเพิ่มเข้าไปได้ ถึงแม้ว่า Arduino จะมีพอร์ทที่ชื่อว่า "Shield" ซึ่งทำให้สามารถใช้งาน Ethernet ได้ แต่ก็ยังมีข้อจำกัดมากเกินไป มิหนำซ้ำหากคุณซื้อ Shield มาเพื่อใช้ Ethernet มันเป็นราคาที่สามารถซื้อบอร์ดใหม่มาใช้อีกอันเลยทีเดียว
ยกนี้ Rasberry Pi และ Beaglebone จึงเป็นฝ่ายชนะ

ยกที่ 4 : การใช้งานที่มี sensors อื่นๆเข้ามาเกี่ยวข้อง?
ถ้าพูดถึงการต่อ sensors เพิ่ม Raspberry Pi คงต้องโบกมือลา เพราะไม่มี Analog input ใดๆเลย
ในยกนี้ก็ต้องนึกถึง Arduino เพราะได้เปรียบตรง สามารถเลือกกระแสได้มากกว่า
มีทั้ง 3.3v และ 5v ซึ่งทำให้มีข้อจำกัดในการเชื่อมต่อน้อยกว่า Beaglebone ซึ่งสามารถต่อได้เพียง 3.3v
โดยทั้ง 2 บอร์ดมีช่อง Analog -> Digital interfaces ทำให้ง่ายต่อการเชื่อมต่อ แต่ Beaglebone ก็มี converter ของ Analog -> Digital ที่กว้างมากกว่า Arduino ซึ่งในบาง Application Beaglebone จะสามารถทำได้ดีกว่า แต่ถึงอย่างไรก็แล้วแต่ทั้ง 3 บอร์ด ก็สนับสนุน interfaces ที่เรียกว่า I2C หรือ SPI
โดยในยกนี้ ผู้เขียนลำบากใจจริงๆที่จะตัดสินว่าใครเป็นผู้ชนะ เพราะมันขึ้นอยู่กับ sensors ที่ผู้ใช้ จะเลือกใช้ แต่ถึงอย่างไร Arduino และ Beaglebone ก็เป็นทางเลือกที่ดีกว่าในยกนี้

ยกที่ 5 : เรื่องแบตเตอร์รี่?
Arduino เป็นบอร์ดที่บริโภคพลังงานต่ำที่สุด แต่หากพูดถึงในแง่ของ computer power per watt คงจะเป็น Beaglebone ที่เป็นฝ่ายชนะ จากที่ผมได้กล่าวไปในยกที่ 4 Arduino
นั้นสามารถเชื่อมต่อกระแสได้หลากหลายมากกว่า แบตเตอร์รี่จึงถูกบริโภคมากกว่า Beaglebone
ในยกนี้ผมจึงให้ Beaglebone ชนะ โดยที่มี Arduino ตามมาติดๆ

ยกสุดท้าย : การใช้งานที่มี GUI เข้ามาเกี่ยวข้อง?
ผู้อ่านบางท่านอาจจะเคยเห็นการนำ Raspberry Pi มารัน Windows 7 กันแล้ว
ข้อดีของ Raspberry Pi คือมีพอร์ท HDMI ซึ่งทำให้คุณสามารถเสียบจอ เม้าส์ คีย์บอร์ด
และใช้งานเป็นคอมพิวเตอร์ได้เลยทีเดียว แต่ด้วยข้อจำกัดของฮาร์ดแวร์ อาจทำได้เพียง
การเล่นเว็บและการแสดงผลเพียงเล่นๆเท่านั้น ซึ่งใน Beaglebone Black ก็ทำได้เหมือนกัน
แต่แตกต่างกันตรงที่มีเพียง microHDMI ในยกนี้ภาษีของ Raspberry Pi จึงมีมากกว่า
เพราะมีพอร์ทยอดนิยม ผมจึงยกให้ Raspberry Pi เป็นฝ่ายชนะ โดยมี Beaglebone เกาะชายกางเกงอยู่

การตัดสิน!
Arduino เป็นบอร์ดที่มีความยืดหยุ่นสูง สามารถทำได้ตั้งแต่งานแบบมือใหม่ จนไปถึงขั้นเทพ
Raspberry Pi เป็นบอร์ดที่มีความยืดหยุ่นน้อยกว่าแต่สามารถ แสดงผลผ่านจอภาพได้อย่างดี
และมีการเชื่อมต่อ network ที่ดีเยี่ยมมากกว่า ในราคาที่คบหาได้
ส่วน Beaglebone เป็นเหมือนส่วนผสมที่ลงตัวระหว่าง Arduino และ Raspberry Pi
มีความยืดยุ่นไม่แพ้ Arduino มี Processor ที่เร็ว ระบบปฎิบัติการ Linux

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

ที่มา : makezine.com และ BeagleBoard.org