เซ็นเซอร์และตัวกระทำสำหรับ Internet of Things

ในบทความฉบับก่อนผมได้แนะนำอุปกรณ์ที่ใช้ในการทดสอบและสร้างระบบ Internet of Things ไว้ใช้เป็นการส่วนตัวไปแล้ว นั่นก็คือบอร์ดและสภาพแวดล้อมในการพัฒนาโปรแกรมที่ชื่อ Arduino ซึ่งสามารถนำเซ็นเซอร์และตัวกระทำ (Actuator) มาเชื่อมต่อเพื่อตรวจจับภาพแวดล้อมและทำงานตามที่โปรแกรมได้

Light Dependent Resistor แยกเดี่ยว

รูปที่ 1 Light Dependent Resistor แยกเดี่ยว

การเชื่อมต่อ LDR กับบอร์ด Arduino ผ่าน Breadboard

รูปที่ 2 การเชื่อมต่อ LDR กับบอร์ด Arduino ผ่าน Breadboard

แบบเชื่อมบนบอร์ด

รูปที่ 3 แบบเชื่อมบนบอร์ด

การเชื่อมต่อ LDR บนบอร์ดเข้ากับ Arduino

รูปที่ 4 การเชื่อมต่อ LDR บนบอร์ดเข้ากับ Arduino

 

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

วิธีการเชื่อมต่อเซ็นเซอร์เข้ากับ Arduino
เซ็นเซอร์ที่มีจำหน่ายนั้นแม้จะทำงานเหมือนกัน แต่ก็มีหลากหลายรูปแบบ ผู้สนใจใช้งานนั้นสามารถซื้อเซ็นเซอร์ประเภทแยกเดี่ยวเป็นตัวๆ มาเชื่อมต่อเองก็ได้ หรือซื้อเซ็นเซอร์ที่ผู้ผลิตเชื่อมต่อเข้ากับบอร์ดวงจรไว้แล้ว ผู้ใช้นำมาต่อสายเข้ากับขาพินของ Arduino ได้เลยก็ได้ แน่นอนว่ารูปแบบที่สองนั้นใช้ง่ายกว่า แต่ราคาก็แพงกว่าแบบแรก อย่างไรก็ดี สำหรับผู้ที่สนใจระดับแรกเริ่ม และไม่มีความรู้พื้นฐานด้านอิเล็กทรอนิกส์มากนักนั้นผมแนะนำให้ใช้เซ็นเซอร์ที่เชื่อมเข้ากับบอร์ดแล้วจะง่ายกว่า

รูปที่ 1 ถึง 4 แสดงให้เห็นเซ็นเซอร์ที่เรียกว่า LDR (Light Dependent Resistor) ซึ่งใช้ตรวจจับความสว่างของแสงได้ รูปที่ 1 เป็น LDR แบบแยกเดี่ยว เมื่อผู้ใช้จะนำไปใช้ต้องคำนวณปริมาณกระแสไฟฟ้าที่ต้องใช้และนำเซ็นเซอร์ไปเชื่อมต่อกับตัวต้านทานเอง รูปที่ 2 แสดงวิธีการเชื่อมต่อเซ็นเซอร์กับตัวต้านทานและ Arduino ผ่านอุปกรณ์ที่ชื่อ Bread Board การเชื่อมต่อลักษณะนี้มีไว้เพื่อทดสอบเท่านั้น เมื่อต้องนำไปใช้จริงต้องบัดกรีอุปกรณ์เข้าด้วยกัน

รูปที่ 3 แสดง LDR เช่นเดียวกัน แต่เป็นรูปแบบที่เชื่อมต่อมาบนบอร์ด ผู้ผลิตได้ทำการคำนวณกระแสไฟฟ้าที่ต้องใช้และเชื่อมตัวต้านทานที่เหมาะสมลงไปบนบอร์ดเรียบร้อยแล้ว มีขั้วต่อแบบ 3 พินไว้ต่อเข้ากับบอร์ด Arduino ดังรูปที่ 4 จะเห็นว่า การเชื่อมต่อผ่าน Sensor Shield จะง่ายกว่ามาก

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

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

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

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

เซ็นต์เซอร์ปุ่มแบบสัมผัส

เซ็นต์เซอร์ปุ่มแบบสัมผัส

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

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

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

e196

ฉบับที่ 196 เดือนเมษายน

ซื้อ-ขายใน AEC+6 ด้วยโมบายล์

เซ็นเซอร์อีกประเภทหนึ่งสามารถตรวจจับได้ว่ามีแรงกระทำต่อจุดสัมผัสมากน้อย แค่ไหน (Force Sensor) สามารถนำไปวัดแรงกดที่เกิดขึ้นได้ เช่น ถ้านำไปติดไว้ใต้เบาะ ก็จะสามารถตรวจจับได้ว่ามีคนมานั่งหรือไม่ หรือนำไปติดไว้ใต้รองเท้าก็สามารถวัดว่าเกิดการเดินหรือไม่ ซึ่งจะนำไปสู่การนับจำนวนก้าวเดินได้

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

เซ็นเซอร์วัดการเคลื่อนไหว
เซ็นเซอร์ลักษณะนี้คงเป็นที่รู้จักกันดีในกลุ่มผู้ใช้โทรศัพท์แบบสมาร์ทโฟน นั่นก็คือ Accelerometer ที่ใช้วัดความเร่งของการเคลื่อนไหวในสามแกน (x, y, z) ซึ่งนำไปใช้ตรวจจับการขยับอย่างรวดเร็วได้ นอกจากนี้ Accelerometer ยังวัดแรงโน้มถ่วงของโลกที่กระทำกับตัวมันได้ด้วย จึงสามารถใช้ตรวจมุมองศาของการวางตัวของ accelerometer ที่อยู่นิ่งได้ เช่น ในสมาร์ทโฟนจะใช้ Accelerometer ในการตรวจว่าโทรศัพท์อยู่ในแนวตั้งหรือแนวนอน (Portrait หรือ Landscape) เป็นต้น

Flex เซ็นเซอร์วัดการบิดงอมากน้อย

Flex เซ็นเซอร์วัดการบิดงอมากน้อย

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

ส่วนไจโรเป็นอุปกรณ์วัดความเร็วในการเคลื่อนที่เชิงมุม (การหมุน) ของตัวมันเองได้ว่า มีการหมุนเกิดขึ้นเร็วช้าแค่ไหน ไจโรจะไม่ถูกรบกวนจากแรงโน้มถ่วงของโลก ดังนั้น ถ้าต้องการวัดตำแหน่งและมุมของวัตถุอย่างแม่นยำ จึงมักใช้ไจโรกับ Accelerometer ร่วมกัน (เรียกว่า IMU: Inertial Measurement Unit) อุปกรณ์สองชนิดนี้จะราคาแพงพอสมควร ขึ้นกับขอบเขตในการวัดนะครับ ราคาอาจจะหลายร้อยถึงพันบาทต่อตัวได้ การใช้งานก็ค่อนข้างซับซ้อนต้องเชื่อมต่อขาพินหลายขา

เซ็นเซอร์วัดแสง สี เสียง
เราได้รู้จักกับเซ็นเซอร์วัดแสงไปแล้ว ส่วนเซ็นเซอร์วัดสีนั้นจะทำงานคล้ายๆ กับกล้อง แต่จะรายงานสีที่มันเห็นเป็นสัดส่วนมากที่สุดออกมา (แสดงค่าเป็น RGB: Red Green Blue) ทำให้ใช้งานง่ายกว่าการวิเคราะห์สีจากภาพถ่ายดิจิตอล (ซึ่งการวิเคราะห์สีจากภาพนั้นก็อาจจะเกินสมรรถนะของ Arduino ไปเหมือนกัน) ส่วนเซ็นเซอร์วัดเสียงก็สามารถวัดความดังเบาของเสียงได้ ผ่านอุปกรณ์ที่หน้าตาคล้ายๆ ลำโพงครับ

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

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

Contributor

sethavidh

ดร.เสฎฐวิทย์ เกิดผล

จบการศึกษาระดับปริญญาเอก สาขาวิศวกรรมศาสตร์คอมพิวเตอร์ มหาวิทยาลัยเซาท์เธิร์นแคลิฟอร์เนียในปี 2548 ปัจจุบันเป็นอาจารย์ประจำภาควิชาวิทยาการคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ นอกเหนือจากการสอนแล้ว ยังได้ร่วมมือกับภาคธุรกิจและรัฐวิสาหกิจสร้างและออกแบบระบบสารสนเทศ จัดตั้งศูนย์ส่งเสริมการใช้งานโปรแกรมรหัสเปิด (Open Source Software) โดยเน้นที่โปรแกรมระบบสำหรับบริษัทและธุรกิจเป็นหลัก

Twitter: twitter.com/Sethavidh

Website: Sethavidh@gmail.com