เซนเซอร์และแอคชูเอเตอร์
แนวคิดพื้นฐานที่ใช้ในโคมไฟอัจฉริยะ
เนื้อหาในหน้านี้แปลและเรียบเรียงจากบทเรียน Interact with the physical world with sensors and actuators ในหลักสูตร IoT For Beginners ของ Microsoft (ผู้สร้างหลักสูตร: Jen Fox, Jen Looper, Jim Bennett; MIT License) ตัวอย่างฮาร์ดแวร์และโค้ดเปลี่ยนเป็น Arduino UNO R4 WiFi ดูแหล่งอ้างอิง
อุปกรณ์ IoT ต้องมี “ประสาทสัมผัส” เพื่อรับรู้โลกจริง และมี “กล้ามเนื้อ” เพื่อลงมือทำบางอย่างกับโลกจริง สองสิ่งนี้คือ เซนเซอร์ (sensor) และ แอคชูเอเตอร์ (actuator) ในโคมไฟอัจฉริยะของเรา เซนเซอร์แสงทำหน้าที่รับรู้ และ LED ทำหน้าที่ตอบสนอง
เซนเซอร์คืออะไร
เซนเซอร์คืออุปกรณ์ที่รับรู้โลกกายภาพ แล้วแปลงเป็นสัญญาณไฟฟ้า เพื่อให้อุปกรณ์ IoT นำไปประมวลผลได้ ตัวอย่างเซนเซอร์ที่พบบ่อยได้แก่
- เซนเซอร์อุณหภูมิ
- ปุ่มกด
- เซนเซอร์แสง
- กล้อง
- เซนเซอร์วัดความเร่ง (accelerometer)
- ไมโครโฟน
ไม่ว่าจะวัดอะไร เซนเซอร์เกือบทุกชนิดทำงานเหมือนกันในแง่หนึ่ง คือผลลัพธ์ที่ออกมาเป็นแรงดันไฟฟ้า (หรือสัญญาณที่แปลงเป็นข้อมูลดิจิทัลได้)
เซนเซอร์แบบ analog
เซนเซอร์แบบ analog ให้ แรงดันที่เปลี่ยนไปอย่างต่อเนื่อง ตามสิ่งที่วัด ตัวอย่างที่เข้าใจง่ายที่สุดคือ potentiometer (ตัวต้านทานปรับค่าได้ หรือลูกบิด) เมื่อหมุนลูกบิด แรงดันที่ขากลางจะเปลี่ยนตั้งแต่ 0 V จนถึงแรงดันที่จ่ายให้ ส่วน เซนเซอร์แสง ก็ให้แรงดันเปลี่ยนตามความสว่างเช่นกัน เซนเซอร์อุณหภูมิบางชนิดที่ใช้ thermistor ก็ทำงานแบบนี้
แรงดันแบบต่อเนื่องนี้ไมโครคอนโทรลเลอร์อ่านตรง ๆ ไม่ได้ เพราะวงจรดิจิทัลเข้าใจแค่ 0 กับ 1 จึงต้องใช้ ตัวแปลงสัญญาณอนาล็อกเป็นดิจิทัล (ADC: analog-to-digital converter) เปลี่ยนแรงดันเป็นตัวเลข
| ความละเอียด ADC | จำนวนระดับที่ได้ | ช่วงค่า | ใช้ที่ไหน |
|---|---|---|---|
| 10 บิต | 1,024 | 0–1023 | ค่าเริ่มต้นของ Arduino UNO รุ่นเก่า และ API ของโครงการนี้ |
| 12 บิต | 4,096 | 0–4095 | บอร์ดอื่น ๆ หลายรุ่น |
| 14 บิต | 16,384 | 0–16383 | UNO R4 WiFi (ตั้งด้วย analogReadResolution(14)) |
ยิ่งความละเอียดสูง ยิ่งแยกความแตกต่างของแรงดันที่ใกล้กันได้ดี
อัปโหลดสเก็ตช์ 01_read_light แล้วหมุน potentiometer หรือใช้มือบังเซนเซอร์แสง ค่า light ใน Serial Monitor จะเปลี่ยนต่อเนื่องในช่วง 0–1023
เซนเซอร์แบบ digital
เซนเซอร์แบบ digital ให้สัญญาณเป็นค่าไม่ต่อเนื่อง ได้สองแบบ คือ
- สองสถานะ (0 หรือ 1) เช่น ปุ่มกด ซึ่งเป็นเซนเซอร์ที่ง่ายที่สุด กดอยู่ = 1 ปล่อย = 0 (หรือกลับกัน ขึ้นกับวงจร)
- มี ADC อยู่ในตัวเซนเซอร์แล้ว และส่งข้อมูลเป็นบิตออกมาให้ไมโครคอนโทรลเลอร์ เช่น กล้องที่ส่งข้อมูลภาพเป็นสตรีมของบิต ทำให้วัดสิ่งที่ซับซ้อนกว่าค่าเดียวได้
แอคชูเอเตอร์คืออะไร
แอคชูเอเตอร์ทำสิ่งที่ตรงข้ามกับเซนเซอร์ คือ แปลงสัญญาณไฟฟ้าให้เป็นผลลัพธ์ในโลกจริง ตัวอย่างเช่น
| แอคชูเอเตอร์ | สิ่งที่ทำ |
|---|---|
| LED | ปล่อยแสง |
| ลำโพง | ส่งเสียง |
| สเต็ปปิงมอเตอร์ | หมุนเป็นมุมที่แม่นยำ |
| รีเลย์ | เป็นสวิตช์ไฟฟ้าที่ควบคุมด้วยสัญญาณเล็ก ๆ |
| หน้าจอ | แสดงภาพ |
แอคชูเอเตอร์แบบ digital
แอคชูเอเตอร์แบบ digital มีสองสถานะ ควบคุมด้วยแรงดันสูง (HIGH) หรือต่ำ (LOW) เช่น LED ที่ติดหรือดับ และสวิตช์ธรรมดา โค้ดที่ใช้คือ digitalWrite(LED_PIN, HIGH) ในขั้นที่ 2-3 ของโครงการนี้หลอดไฟเป็นแบบนี้
แอคชูเอเตอร์แบบ analog และ PWM
แอคชูเอเตอร์แบบ analog เปลี่ยนผลลัพธ์ตามขนาดของแรงดัน เช่น หลอดไฟที่หรี่ได้ ยิ่งแรงดันสูง ยิ่งสว่าง
ไมโครคอนโทรลเลอร์ส่วนใหญ่ให้แรงดันออกได้แค่ HIGH หรือ LOW แต่ใช้เทคนิค PWM (pulse-width modulation) แทนได้ คือเปิด-ปิดสัญญาณดิจิทัลรัว ๆ ด้วยความถี่สูง แล้วปรับสัดส่วนเวลาที่เปิด (duty cycle) ถ้าเปิดนาน ค่าเฉลี่ยสูง LED จะดูสว่าง ถ้าเปิดสั้น LED จะดูหรี่ ตาของเรามองไม่ทันการกะพริบจึงเห็นเป็นความสว่างระดับหนึ่ง เทคนิคเดียวกันนี้ใช้ควบคุมความเร็วมอเตอร์
duty cycle 25% ▮▯▯▯ ▮▯▯▯ ▮▯▯▯ -> LED หรี่
duty cycle 75% ▮▮▮▯ ▮▮▮▯ ▮▮▮▯ -> LED สว่าง
(▮ = HIGH, ▯ = LOW, สลับเร็วกว่าที่ตามองเห็น)
บน Arduino ใช้ analogWrite(pin, 0..255) กับขาที่รองรับ PWM (UNO R4 WiFi: D3, D5, D6, D9, D10, D11) เราจะใช้ในขั้นที่ 4 เพื่อให้หลอดไฟค่อย ๆ สว่างและค่อย ๆ หรี่ แทนการกระโดดทันที
รวมกันเป็นระบบ: ไฟกลางคืน
ระบบ IoT พื้นฐานคือการต่อเซนเซอร์ → การตัดสินใจ → แอคชูเอเตอร์ ไฟกลางคืนเป็นตัวอย่างคลาสสิก
- เซนเซอร์แสงวัดความสว่างของห้อง
- โปรแกรมเทียบกับ เกณฑ์ (threshold) ที่กำหนดไว้
- ถ้ามืดกว่าเกณฑ์ สั่งให้ LED ติด ถ้าสว่างพอ สั่งให้ดับ
โครงการนี้ต่อยอดจากไฟกลางคืนไปอีกสองขั้น
- ขั้น Connect: ส่งการตัดสินใจไปไว้ที่ gateway ผ่าน Wi-Fi เพื่อเก็บสถานะ ดูผล และสั่งงานจากหน้าแชตได้
- ขั้น Think ด้วย AI: ให้ผู้ใช้สั่งด้วยภาษาธรรมชาติ โดยมี AI ช่วยแปลเป็นคำสั่ง
ท้าทายตัวเอง
ลองสำรวจบ้านหรือห้องเรียนของคุณ แล้วหาอุปกรณ์ IoT (หรืออุปกรณ์ที่ควรเป็น IoT) สัก 3 ชิ้น ตอบให้ได้ว่า
| อุปกรณ์ | เซนเซอร์ที่มี | แอคชูเอเตอร์ที่มี | เป็น analog หรือ digital |
|---|---|---|---|
| ตัวอย่าง: เครื่องปรับอากาศ | เซนเซอร์อุณหภูมิ, ตัวรับรีโมต | คอมเพรสเซอร์, พัดลม | เซนเซอร์ analog, ตัวรับรีโมต digital |
ทบทวน
- เซนเซอร์แปลงปรากฏการณ์ทางกายภาพเป็นสัญญาณไฟฟ้า แอคชูเอเตอร์แปลงสัญญาณไฟฟ้าเป็นผลในโลกจริง
- เซนเซอร์/แอคชูเอเตอร์แบบ analog เปลี่ยนค่าต่อเนื่อง ต้องมี ADC (ฝั่งเซนเซอร์) หรือ PWM/DAC (ฝั่งแอคชูเอเตอร์) ช่วยเชื่อมกับโลกดิจิทัล
- แบบ digital มีค่าไม่ต่อเนื่อง ใช้ง่ายกว่าแต่ละเอียดน้อยกว่า
- ระบบ IoT อย่างง่ายคือเซนเซอร์ → เกณฑ์ตัดสินใจ → แอคชูเอเตอร์
เรียนรู้เพิ่ม: Analog-to-digital converter, Pulse-width modulation (Wikipedia) และเอกสาร analogWrite/PWM ของ Arduino