เครดิต : unsplash.com/tirzavandijk

The Diary of IoT (Part 2) : Dev Board

กระแสของการพัฒนาบน Internet of Things เริ่มมาแรงพร้อมกับช่วงที่มีการพัฒนา board ให้มีประสิทธิภาพมากขึ้นในราคาที่ถูกลงและมีขนาดเล็กลงด้วย นอกจากนี้ยังสามารถเชื่อมต่อ WiFi ได้ด้วยซึ่งเป็นมาตรฐานที่ใช้งานกันกว้างขวาง (จากเดิมเป็น Zigbee ที่กินไฟน้อยกว่าแต่ bandwidth ต่ำกว่า) ทำให้อุปกรณ์พวกนี้น่านำมาพัฒนาด้าน IoT อย่างมาก ในท้องตลาดตอนนี้เราสามารถแบ่งประเภทของ IoT Development Board ง่ายๆได้เป็น 2 ประเภท ก็คือ

  1. Embedded Computer
  2. Microcontroller

board 2 ประเภทนี้มีจุดต่างที่เห็นได้ชัด 2 อย่าง อย่างแรกก็คือ

ระบบปฏิบัติการ (Operating System) เรียกย่อๆว่า OS (สำหรับผู้ที่ไม่รู้จัก OS ลองอ่านได้ที่นี่) OS นั้นไม่จำเป็นสำหรับ microcontroller แต่สำหรับ embedded Computer จะต้องอาศัย OS ในการทำงานเพื่อจัดการทรัพยากรของเครื่องซึ่งส่วนใหญ่จะบูท OS เข้ามาผ่าน micro SD card (หรือ storage อื่นๆ)

ในปัจจุบันมี OS สำหรับ embedded computer ให้เล่นหลายตัวอย่าง Raspbian (Debian สำหรับ Raspberry Pi), Ubuntu, Windows 10 IoT หรือ Android ในการใช้เราต้องหา OS image มาไรท์ให้ตรงตาม Board ด้วยและบาง OS ยังไม่มี image ที่ support board บางรุ่น

ความแตกต่างอีกจุดก็คือ Performance ของ board ในด้าน microcontroller จะมีประสิทธิภาพในการประมวลผลต่ำกว่ามาก แต่ก็ใช้พลังงานที่ต่ำกว่าเช่นกัน เนื่องจาก microcontroller มีขนาดเล็กและมีจุดประสงค์การใช้งานที่เน้นไปด้านการอ่านค่าจาก sensor หรือควบคุมอุปกรณ์ไฟฟ้าบางอย่างซึ่งเป็นงานง่ายๆ ในขณะที่ embedded computer จะเน้นไปด้านการเชื่อมต่อกับอุปกรณ์ต่อพ่วง การเชื่อมต่อกับเครือข่าย หรือการแสดงผลจากทางจอ ซึ่งต้องใช้การประมวลผลที่มากกว่านั่นเอง นอกจากนี้ยังทำให้ embedded computer มีตัวเลือกภาษาในการพัฒนาได้มากกว่าด้วย

เครดิต : http://jacobsalmela.com/raspberry-pi-webcam-using-mjpg-streamer-over-internet/

การเลือกใช้งาน board ก็ควรจะเลือกให้เหมาะกับจุดประสงค์ในการพัฒนาด้วยจะได้คุ้มค่ากับการลงทุนค่าอุปกรณ์

ตัวอย่างด้านบนเป็น Webcam Server ด้วย Raspberry Pi ที่เราสามารถดูภาพจาก Webcam ได้ผ่านอินเตอร์เน็ต ซึ่งมีการทำงานที่ซับซ้อนของ driver ของตัวกล้อง นอกจากนี้ยังต้องมีการ stream ภาพเข้าเครือข่ายอีกจึงต้องอาศัยการประมวลที่มีประสิทธิภาพสูง ตัวเลือก embedded computer จะเหมาะกับ application นี้มากกว่า

เครดิต : http://www.instructables.com/id/ESP8266-Wifi-Temperature-Logger/

งานด้าน sensor อย่างเก็บข้อมูลอุณหภูมิ ความชื้น ความเข้มแสง หรืองานด้าน actuator อย่างควบคุมมอเตอร์ เปิด-ปิดLED จะเหมาะกับ microcontroller มากกว่า เพราะ ราคา Board ที่ถูกกว่าและไม่ต้องอาศัยการประมวลผลที่หนัก (ค่อยส่งข้อมูลไปให้ embedded computer ประมวลผลหนักๆแทน) ที่สำคัญการใช้พลังงานก็น้อยกว่าด้วยทำให้สามารถใช้งานได้นานกว่า (กรณีต้องต่อกับแบตเตอรี่)

ถัดไปลองมาดูตัวอย่าง board ของทั้ง embedded computer และ microcontroller ในท้องตลาดกันบ้าง ใครสนใจรุ่นไหนลองหาตามร้านขายออนไลน์ดูมีหลายเจ้าเต็มไปหมด หรือจะสั่งจากเว็บขายของออนไลน์ชื่อดังจากประเทศจีนก็ได้ ถูกสุดๆแต่จะต้องรอนานกว่าหน่อย (สำหรับ Raspberry Pi มันมีแหล่งที่ถูกสุดอยู่ หลังไมค์มาถามได้ ฮ่าๆ)


Embedded Computer

Raspberry Pi 3 : https://www.raspberrypi.org/products/raspberry-pi-3-model-b/
ODROID-C2 : http://www.hardkernel.com/

ขอยกตัวอย่างมาเป็นรุ่นล่าสุดสำหรับ 2 ค่ายใหญ่ของกลุ่ม embedded computer Raspberry Pi จะมีประสิทธิภาพทีเป็นรอง Odroid พอสมควรทั้งด้าน CPU RAM หรือ display port ดูเปรียบเทียบสเปคได้ที่นี่

Pi 3 มี HDMI 1.4 แต่ C2 มี HDMI 2.0 ที่รองรับจอ 4K!

แต่ Raspberry Pi มีอภิมหา community ที่ใหญ่กว่ามากๆ อาจจะเป็นเพราะคู่มือการใช้งานที่ดีหรือราคาที่ถูกกว่าเลยมีคนจำนวนมากสนใจมาพัฒนา ถ้าลองค้นหาในอินเตอร์เน็ตจะพบว่ามีโปรเจคที่พัฒนาบน Raspberry Pi เต็มไปหมด

Microcontroller

Arduino Uno : https://www.arduino.cc/en/Main/ArduinoBoardUno
ESP8266 , เครดิต : http://iot-playground.com/blog/2-uncategorised/13-esp8266-wifi-module-arduino-connection

Arduino Board โดยลำพังเองจะไม่สามารถเชื่อมต่อเครือข่ายได้เลยซึ่งต้องอาศัย module อื่นในการเชื่อมต่อไร้สายอย่าง WiFi หรือ Bluetooth

สำหรับการเชื่อมต่อ WiFi จะมี module ESP8266 ซึ่งมีราคาถูกมากและมีนักพัฒนานำไปใช้เป็นจำนวนมาก ถือว่าเป็นการเปิดโลก IoT ให้กับ microcontroller เลยทีเดียว แต่การใช้งานจะลำบากหน่วย เนื่องจากต้องใช้ไฟให้พอเหมาะกับ module เห็นเล็กๆแบบนี้มีสามารถเขียน Web Server ง่ายๆได้ด้วย

Node MCU, เครดิต : http://alexnld.com/product/nodemcu-lua-esp-12e-wifi-development-board/

พระเอกของบทความนี้ครับ Node MCU ที่ผมจะเอามาใช้พัฒนา IoT เปิดตัวเมื่อปลายปี 2014 และ firmware พัฒนาเป็น open sourceด้วย ตัว board รองรับการพัฒนาด้วยภาษา Lua และ Arduino และยังมี module ESP8266 ในตัวด้วยซึ่งจะใช้งานง่ายกว่าการใช้ Arduino Board ร่วมกับ module ESP8266 แบบแยกอย่างมาก ปัจจุบันมีออกมาแล้ว 3 รุ่นครับ ลองไปดูความแตกต่างแต่ละรุ่นได้ที่นี่ก่อนจะหาซื้อนะครับ ด้วยความที่ศึกษารายละเอียดไม่ดีพอผมดันรีบไปซื้อ Node MCU V.3

Node MCU V.3 มีขนาดใหญ่กว่า V.2 แต่ใช้ Chip รุ่นเดียวกัน และต่างกันแค่ผู้ผลิด

พอได้ของก็ใช้กับ breadbroad ทั่วไปที่มีอยู่ไม่ได้ซะด้วย ก็เลยต้องไปหา testing DIY base มาเพิ่มอีก dev ยากขึ้นเล็กน้อยเลยตอนี้

Testing DIY Base : http://www.terapeak.com/worth/new-wemos-nodemcu-base-esp8266-testing-diy-board/111877385102/

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

ตอนผมเริ่มเรียนรู้การเขียนโปรแกรมได้มีโอกาสเล่น bicrocontroller ด้วย หลังจากทนเรียน programming ให้แสดงผลบน terminal ง่ายๆ มาเจอ microcontroller เป็นช่วงเวลาที่แบบไม่เคยสนุกกับการเขียนโปรแกรมขนาดนี้มาก่อนเลยทีเดียว!

ตอนแรกจะเริ่มโปรแกรมลง Node MCU เลยแต่เขียนไปเขียนมายาวเฉย ขอทดไว้บทความถัดไปจะมาลองเล่น Node MCU กันจริงๆครับ


อ่านเพิ่มเติม

ความแตกต่างของ embedded computer กับ microcontroller (English): https://www.quora.com/Whats-the-difference-between-embedded-computer-and-microcontroller

ความแตกต่างของ embedded computer กับ microcontroller (ไทย): http://www.comscicafe.com/article/87/raspberry-pi-vs-arduino#.VxyF4dRXerU

WiFi vs Zigbee: https://www.youtube.com/watch?v=buV11ZPJ7MQ

Arduino และความแตกต่างกันแต่ละรุ่น: http://www.123microcontroller.com/Basic-Microcontroller-Programming/Comparison-Arduino-Plateform-with-other-MCU

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.