อยากเริ่มศึกษา IoT (Internet of Things) วันนี้มีอะไรให้ใช้บ้าง

หลายคนที่อยากเริ่มกับ IoT มักจะติดปัญหาเหมือนๆกัน คือจะเริ่มยังไงดี บางคนเรียนมาสายช่าง วิศวะ ก็ง่ายหน่อยเล่นพวก Embedded อยู่แล้ว แต่พอขึ้นไปพวกเขียน Service กับ App ก็เสียเวลาอยู่นานเหมือนกัน กลับกันกับสาย IT หรือสาย Developer ที่เขียนโปรแกรม Service, App คล่อง แต่เรื่องวงจรแทบจะเข้าขั้นอนุบาลกันเลยทีเดียว วันนี้เราจะมาลองดูกัน เพิ่มในส่วนที่ได้ เติมในส่วนที่ขาด ไปดูแหล่งข้อมูลเรียนรู้ เพื่อจะได้สร้าง Solution ที่สามารถเอาไปใช้งานได้อย่างครบวงจร จะได้เข้ากับยุค Thailand 4.0 กับเค้าบ้าง

ช่วงเริ่มต้น เล่นกับอุปกรณ์ สวมวิญญาณ Maker

คำว่า Maker ส่วนใหญ่มักหมายถึงนักประดิษฐ์ ที่ชอบปิ้งไอเดียสร้างสิ่งประดิษฐ์ ใหม่ๆ เพื่อแก้ปัญหาในชีวิตประจำวัน เช่นเครื่องชงกาแฟ เครื่องปิ้งขนมปัง หรือแม้แต่หุ่นยนต์ แขนกล ก็ล้วนมีจุดเริ่มต้นจากเหล่า Maker ทั้งนั้น ในยุคของ IoT เรามีบอร์ดอิเล็กทรอนิกส์ สำเร็จรูปให้ใช้ค่อนข้างเยอะ แต่ที่แพร่หลายในไทยและ community เยอะหน่อยจะเป็น , ESP8266 (NodeMCU), Arduino, Raspberry Pi  ซึ่งจะมีความต่างในด้านของราคาและอุปกรณ์ต่อพ่วง การเลือกอาจจะง่ายๆเช่น

  • Raspberry Pi  (ราคาประมาณ 1,xxx – 2,xxx) เนื่องจากราคาสูงกว่าเพื่อน และตัว OS เป็น linux สามารถทำอะไรได้ค่อนข้างเยอะ  แถมมี USB พร้อม WiFi และ GPIO ที่ให้มาพอประมาณ ประกอบกับมี HDMI สามารถต่อเข้าจอ LCD หรือ Projector  ได้ จึงมักถูกเลือกให้เป็น Host ประจำบ้าน แทนที่จะใช้ PC ตัวละหลายหมื่น
  • Arduino (ราคาประมาณ 3xx) ราคารองลงมา และมี Shield หลากหลาย ประกอบกับเป็นบอร์ดรุ่นแรกๆ ที่มีมาให้เหล่า Maker ใช้ ประกอบกับความอึดไม่พังง่ายๆ จึงมักถูกนำมาใช้ในการทำ หุ่นยนต์ เครื่องพิมพ์สามมิติ หรือเชื่อมต่อกับอุปกรณ์ Sensor อื่นๆ แล้วส่งค่าต่อไปให้กับ Pi
  • ESP8266 (ราคาประมาณ 1xx – 2xx)  หรือหลายๆคนอาจรู้จักในชื่อ NodeMCU ที่นำชิป ESP มาลงบอร์ดให้สามารถใช้งานและเขียนโปรแกรมอัดได้ง่ายขึ้น จุดเด่นของเจ้าตัวนี้คือ ราคาถูก  แถมยังสามารถต่อ WiFi ได้ด้วยในตัว จึงมักถูกนำมาใช้ทำพวก Data logger สำหรับเก็บข้อมูล หรือบางกรณีสามารถใช้ทดแทนส่วนของ Arduino ก็ยังได้เพราะมี GPIO  ให้ใช้อยู่พอประมาณเหมือนกัน Maker บางคนก็นำมาต่อเป็น Smart Car Robot หรือ พวก Drone ควบคุมด้วยมือถือผ่าน WiFi ด้วยราคาที่ประหยัดมากๆ

iot_devices

ร้านขายอุปกรณ์ในไทย สามารถสั่งซื้อ Online ได้

ร้านขายอุปกรณ์เดียวนี้สามารถหาได้ง่าย สั่ง Online ได้ ส่งของไวประมาณ 1-3 วันก็ได้ของมาให้ทดลองเล่นแล้วถ้าคุณเป็น Maker มือใหม่ แนะนำว่าควรลิสรายการของก่อนอย่าลืมพวกบอร์ดสำหรับต่อวงจร สายไฟ รางถ่าน สายสำหรับอัพโหลดโปรแกรม(Micro USB) LED ตัวต้านทาน และ Sensor พื้นฐานเช่น ตัววันอุณหภูมิ วันระยะทาง วัดความชื้น ถ้าให้แนะนำสำหรับผู้เริ่มต้น ควรเล่นกับพวก NodeMCU เพราะราคาไม่สูงมากนักและมี Project ให้เล่นทำตามได้ค่อนข้างเยอะ ที่สำคัญอย่าลืมไปอ่านบทความทั้งรีวิว และโปรเจ็คของแต่ละร้าน รับรองได้ความรู้มาอีกเพียบ

แหล่งข้อมูลของ Raspberry Pi

ถ้าไม่นับเรื่อง GPIO ตัว Raspberry Pi มันคือเครื่องคอมพิวเตอร์ย่อส่วนดีๆ นี่เอง ดังนั้นเราสามารถทำโครงงานอะไรก็ได้ ที่ประยุกต์ใช้การเชื่อมต่อ จอ HDMI และอาจทำให้ Pi เป็นเว็บ Server ด้วย หรือจะเขียนโปรแกรมด้วย Node.js และ Express ก็ยังได้ ส่วนใครที่ชอบงานสายควบคุม ก็ยังสามารถเล่นกับ GPIO ได้อีก

  • กลุ่ม Raspberry Pi Thailand บน Facebook [ Link ]
  • เว็ปไซต์หลักของ Raspberry Pi [ Link ]
  • แหล่งรวม Project Raspberry Pi [ Link ]
  • แหล่งรวม Project Raspberry Pi 2 [ Link ]
  • การใช้งาน Pi ต่อกับอุปกรณ์อื่นๆ ด้วย Block Diagram โดยใช้ Node RED [ Link ]

แหล่งข้อมุลของของ ESP8266

  • กลุ่ม ESP8266 บน Facebook [ Link ]
  • โปรเจ็คที่ใช้ NodeMCU ของ NetPie [ Link ]
  • บทความแบบ How To จาก ioxhop.com [ Link ]

บทความแนะนำสำหรับผู้ที่เริ่มกับ NodeMCU (ESP8266)

  • ใบงาน การทดลองเบื้องต้น NodeMCU/ESP8266 จาก NETPIE [ Link ]
  • การใช้งาน Sensor อุณหภูมิ และความชื้น DHT11 [ Link ]
  • การใช้งาน Sensor Ultra Sonic วัดระยะ [ Link ]
  • การวัดอุณหภูมิ แล้วแสดงผลโดยใช้ NodeMCU เป็น Web Server [ Link ]
  • พื้นฐานการใช้งาน Firebase Realtime Database [Link]
  • การเก็บอุณหภูมิรูปแบบ Data Logger ขึ้นบน Firebase [ Link ]

iot_room

การเชื่อมต่อ อุปกรณ์ IoT กับ Sensor และควบคุมอุปกรณ์ภายในบ้าน

ช่วงประติดปะต่อเรื่องราว ขยับมาเขียน App และบริการ

หลังจากเล่นกับ Hardware กับอุปกรณ์ Dev Kit Board กับ Sensor มาประมาณหนึ่ง ก็ควรจะเริ่มในส่วนของการนำข้อมูลที่เก็บได้จากเหล่า Sensors มาใช้ประโยชน์ แน่นอนมันควรเก็บอยู่บน Cloud หรือ Server บนอินเตอร์เน็ต ซึ่งปัจจุบันมีบริการเก็บข้อมูล รวมถึงการนำข้อมูลมาแสดงผลในรูปแบบที่หน้าสนใจมากมาย หลังจากนั้นอาจจะเริ่มมองหาวิธีการให้ผู้ใช้เข้าถึงระบบได้ง่ายขึ้นผ่านแอพพลิเคชันซึ่งวิธีการพัฒนามีทั้งแบบง่ายๆ จนไปถึงแบบที่ต้องใช้เวลาในการศึกษามากขึ้น แต่ก็คุ้มค่าในระยะยาว

การเชื่อมต่อข้อมูลอุปกรณ์ IoT

ในการเชื่อมต่อกับอุปกรณ์ เราสามารถใช้โปรโตคอลพื้นฐานเช่น TCP, UDP, HTTP ในการเชื่อมต่อหรือจะใช้ MQTT ในการทำงานในลักษณะ Publish/Subscribe จะได้ไม่เสียเวลามาทำลูปคอยเช็คค่า ทั้งยังตัดปัญหาเรื่องการต้องมานั่งทำ Forward Port จาก Router เพื่อให้อุปกรณ์ภายนอกสามารถเข้าถึง network ในบ้านที่เชื่อมกับอุปกรณ์ IoT ของเรา

iot_protocal

IoT Protocol

สำหรับ NodeMCU เราสามารถใช้งานได้หลายโหมด ทั้ง TCP, UDP, HTTP โดยตัวมันเองสามารถเป็นได้ทั้ง  Wireless Client, Wireless Server และ Wireless Access Point โดยมีแนวคิดในการเลือกดังนี้

  • โหมด Wireless Client สำหรับต่อเป็นอุปกรณ์ที่พ่วงกับ Sensor แล้วส่งข้อมูลต่อไปให้กับ Host Master เพื่อร่วมรวมข้อมูล (อาจเป็น Raspberry Pi ก็ได้)
  • โหมด Wireless Server สำหรับการควบคุมหรือมอนิเตอร์ เพื่อดูข้อมูลจาก Sensor ที่ต่ออยู่โดยตรงผ่านทางหน้า Web Browser
  • โหมด AP (Access Point) สำหรับการควบคุม โดยที่ไม่ต้องพึ่งพา Access Point ภายในบ้าน คือให้ NodeMCU ปล่อยสัญญานเอง เราแค่เชื่อมต่อเข้าไปควบคุม มักเห็นการใช้งานในลักษณะการควบคุม หุ่นยนต์แบบไร้สาย การทำ Robot Car เป็นต้น

iot_firebase

**ภาพจาก http://microcontrollerkits.blogspot.com/2016/12/esp8266-firebase.html

 

ส่วนการขยายไปใช้ บริการบน Cloud แนะนำในระยะแรกลองหา Solution ที่เป็นของฟรีก่อนเช่น Firebase หรือจะอุดหนุนคนไทยด้วยกันไปใช้กับของ NetPie.io จะทำให้เราประหยัดค่าใช้จ่ายในการเช่าโฮสด้วย

การพัฒนา Mobile Application ติดต่อกับ IoT

ส่วนของการพัฒนาแอพ ถ้า Hardware กับเรื่องของ Protocol เรานิ่งแล้ว (ช่วงแรกๆ อาจใช้โปรแกรมอื่นในการทดสอบเช่น Hercules, Serial Monitor) แล้วค่อยเริ่มเขียนเป็น Mobile Application สำหรับให้ User ดาวน์โหลดไปใช้งาน โดยมีรูปแบบการเขียนให้เลือกหลายปัจจัยดังนี้

iot_firebaseapp_screen

ตัวอย่าง Web แสดงข้อมูลอุณหภูมิ จาก Firebase Host ที่ http://mfuiot.firebaseapp.com

  • ทำเป็น Mobile Web Application ในกรณีที่ ผู้ใช้สามารถเชื่อมต่อกับ internet ได้ตลอดเวลา หรือเป็นบริการที่ต้อง  Online ตลอดเวลา การเขียนอาจใช้ HTML5, CSS3, JavaScript แล้วใช้พวก jQuery + Bootstrap ช่วยในการเขียนให้ง่ายขึ้น เสร็จแล้วอาจใช้ Firebase Hosting เป็นตัวเก็บ Static Host ก็ได้ ตัวอย่างเช่น [ MFUIoT.firebaseapp.com ] ตัว template ที่ผมใช้ [ Link ]
  • การเขียนด้วย App Inventor (ใช้ได้เฉพาะ Android) ตัวอย่างการเชื่อม Firebase กับ App Inventor [ Link ] เหมาะสำหรับท่านที่ไม่ถนัดเขียนโปรแกรม หรือสำหรับใช้ประกอบการสอน ที่ไม่ต้องการลงรายละเอียดในการเขียนมากนัก
  • การเขียนในรูปแบบ Hybrid โดยสามารถเลือกใช้ได้จากหลายค่าย เช่น PhoneGap, ionic, Framework 7 หรือจะเป็นกึ่ง Native เช่น Native JS, React Native เป็นต้น เป้าหมายคือการเขียนครั้งเดียวสามารถใช้ได้ทั้ง Android และ iOS (อันนี้ถ้ามีเวลาจะมาเขียนให้อ่านกัน)
  • การเขีนในรูปแบบ Native คือ iOS  ใช้ MacOS, XCode, Swift  ส่วน Android ใช้ Win/Linux/MacOS , Android Studio, Java ซึ่งอาจใช้เวลาในการศึกษาพอสมควร

iot_appinventor

ตัวอย่างการเขียนโปรแกมด้วย App Inventor

ช่วงคิดการใหญ่

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

ทำ Hardware ให้เล็กลงยังไงดี

“ถ้ามันไม่ใช่สิ่งที่คุณถนัด แสดงว่ามันไม่ใช่งานของคุณ” ทุกวันนี้สังคมออนไลน์ช่วยเราได้มากในการหาคู่ค้า หรือพันธมิตรทางการค้า เชื่อเถอะว่ามีเทพด้าน Hardware จำนวนมากในเมืองไทย ที่ไม่ได้ถนัดในการสร้าง Solution และพร้อมที่จะเป็นพันธมิตรกับคุณในการย่ออุปกรณ์ต่างๆ ให้เล็กลง รวมไปถึงการทำ Product Design ที่สามารถหาคนมาช่วยทำได้ไม่ยากเช่นกัน เมื่อทุกอย่างลงตัว ผลประโยชน์ลงตัว ก็สามารถร่วมทำธุรกิจด้วยกันได้

เขียนแอพ เดี๋ยวนี้ไม่ยากแล้ว

การเขียนแอพ สมัยก่อนอาจมองว่าเป็นเรื่่องยาก โดยที่ในปัจจุบันมันก็ไม่ได้ง่ายนักสำหรับผู้เริ่มต้น…แต่ก็ไม่เกินความพยายาม คนที่เขียนแอพไม่เป็นส่วนใหญ่ที่ผมเจอ ถ้ามีพื้นฐานด้าน Programming มาบ้างก็สามารถสร้างแอพง่ายๆ ได้ภายใน 1-2 สัปดาห์ พอทำบ่อยๆก็จะเกิดความชำนาญ ผ่านไป 3 เดือนก็อยู่ในขั้นที่สามารถจะประยุกต์ใช้ได้ตามต้องการ

 

ผมเป็นกำลังใจให้ทั้งสาย Maker และสาย Developer  และยินดีที่จะเป็นคนเชื่อมทั้งสองฝั่งเข้าด้วยกัน หากท่านใดยังขาดพันธมิตรสามารถฝากให้ช่วยหาได้ครับ ยินดีอย่างยิ่ง ^__^

ติดตามข้อมูลผ่าน FanPage เข้าไปกด Like ที่: https://www.facebook.com/AjBeeMePage

Aj.Bee