ดิว.นินจา

ดิว.นินจา

Friday, May 22, 2020

แนะนำหนังสือ "เน็ตพาย 2020 ภาคปฏิบัติ"

เน็ตพาย (NETPIE) คือแพลตฟอร์มคลาวด์สำหรับเชื่อมต่ออุปกรณ์ไอโอทีหลากหลายประเภทเพื่อให้สามารถสื่อสารกันได้แบบเรียลไทม์ เปิดให้บุคคลทั่วไปใช้งานภายใต้ข้อจำกัดด้านทรัพยากรที่กำหนด พัฒนาโดยศูนย์อิเล็กทรอนิกส์และคอมพิวเตอร์แห่งชาติ (NECTEC) ในปี ค.ศ. 2015 ซึ่งต่อมาได้ก่อตั้งบริษัท Nexpie เพื่อรองรับผู้ใช้งานที่มีจำนวนเพิ่มขึ้น ในเดือนกุมภาพันธ์ 2020 NETPIE ได้เปิดตัวเวอร์ชันใหม่คือ NETPIE 2020 ที่มีโครงสร้างแตกต่างจากเวอร์ชัน 2015 ค่อนข้างมาก มีจุดเด่นคือการใช้งานที่ง่ายขึ้น เขียนโปรแกรมโดยภาษาคอมพิวเตอร์ใดก็ได้ที่สนับสนุน MQTT โดยไม่จำเป็นต้องอาศัยไลบรารี Microgear และข้อดีอื่นๆ ที่ทำให้เหมาะสมกับการสร้างเป็นผลิตภัณฑ์เชิงธุรกิจ อย่างไรก็ตามการเปลี่ยนแปลงทำให้ผู้พัฒนาต้องศึกษาสถาปัตยกรรมใหม่ และวิธีการโปรแกรมอุปกรณ์ให้ทำงานบน NETPIE 2020

Monday, April 27, 2020

NETPIE 2020 : อ่านข้อมูลจาก Shadow เพื่อตั้งค่าเริ่มต้นสำหรับ ESP8266/ESP32

สำหรับระบบฝังตัวทั่วไปหรืออุปกรณ์ไอโอที วิธีการหนึ่งที่นิยมใช้ในการเพิ่มความฉลาดกับอุปกรณ์และความเป็นมิตรกับผู้ใช้งาน คือความสามารถในการจดจำสถานะหรือพารามิเตอร์บางตัวที่สำคัญต่อระบบ ตัวอย่างเช่นสีของการแสดงผลที่ผู้ใช้ชอบ พารามิเตอร์ควบคุมที่ผ่านการปรับแต่ง ซึ่งจะถูกเก็บรักษาไว้แม้แต่เวลาที่ไม่มีแหล่งจ่ายไฟเลี้ยง ในไมโครคอนโทรลเลอร์ส่วนใหญ่ในปัจจุบันจะมีหน่วยความจำ EEPROM หรือแบ่งพื้นที่บางส่วนของหน่วยความจำแบบ Flash เพื่อเขียนข้อมูลอย่างถาวรได้ หรือระบบที่ใหญ่ขึ้นเช่นราสเบอรี่ พาย อาจเก็บข้อมูลบน SD card ปัญหาคือเราไม่ทราบว่าเมื่อไรแหล่งจ่ายไฟจะเกิดขัดข้องหรือเกิดเหตุการณ์อื่นที่ทำให้ระบบหยุดทำงาน จึงต้องมีการเขียนหน่วยความจำถาวรบ่อยครั้งและมีผลต่ออายุการใช้งาน โดยเฉพาะหน่วยความจำ Flash ที่มีจำนวนครั้งการเขียนน้อยกว่า EEPROM แท้ ทางเลือกหนึ่งที่ทำได้ง่ายบน NETPIE 2020 คือเก็บค่าบน Device Shadow ซึ่งสามารถร้องขอข้อมูลเมื่อไรก็ได้โดยพับลิชไปที่หัวข้อที่กำหนด และรอรับข้อมูลทางช่องทางส่วนตัวของอุปกรณ์ บทความนี้แนะนำวิธีการเขียนโปรแกรมบน ESP8266/ESP32 โดยยกตัวอย่างการตั้งค่าตัวแปรสำหรับนับจำนวนวัตถุอย่างต่อเนื่อง

Thursday, March 26, 2020

NETPIE 2020 : การอัพเดท Freeboard โดยไม่ผ่าน Shadow

ในตัวอย่างจากเว็บและ workshop ของ NETPIE จะใช้วิธีการเขียนข้อมูลลงบน Device Shadow ก่อน และใช้ข้อมูลนั้นในการแสดงผลหรืออัพเดทค่าบน Freeboard widgets ซึ่งเป็นวิธีการที่เหมาะสมหากต้องการที่จะเก็บข้อมูลนั้นในแบบอนุกรมเวลาเพื่อนำไปวิเคราะห์ต่อไป แต่สำหรับข้อมูลบางประเภทอาจไม่มีความจำเป็นที่จะเก็บค่าไว้ เช่นสถานะหรือพารามิเตอร์ที่ไม่มีความสำคัญอื่นใดนอกจกาการอัพเดท Freeboard widgets การเขียนค่าเหล่านี้ลงบน Shadow ทำให้ยุ่งยากและเปลืองทรัพยากร ตัวอย่างเช่นผู้ใช้ปรับค่าตัวควบคุม PID แบบบลองผิดลองถูก เราไม่อยากบันทึกค่าเหล่านี้ลงบน Shadow ทั้งหมดจนกว่าจะได้ค่าที่เหมาะสมแล้ว นอกจากนั้นในกรณีที่อัพเดทตัวแปรหลายตัว การสร้างข้อมูลตามรูปแบบ JSON จะค่อนข้างซับซ้อนและมีโอกาสผิดได้ง่าย ชื่อของตัวแปรไม่มีความสำคัญในการอัพเดทเมื่อสามารถแยกโดยตำแหน่งของค่าในสตริง

Wednesday, March 4, 2020

NETPIE 2020 : สร้างตัวรับและแปลคำสั่ง

เนื่องจาก NETPIE2020 เป็นแพลตฟอร์มใหม่ที่เพิ่งเปิดตัว ดังนั้นตัวอย่างที่แสดงบนเว็บจะเน้นการใช้งานขั้นพื้นฐาน โดยเฉพาะด้านการส่งคำสั่งให้กับอุปกรณ์จะสาธิตเพียงการปิด/เปิด LED บนบอร์ด NodeMCU จาก Freeboard ในการสร้างอุปกรณ์ไอโอทีสำหรับงานบางประเภท ผู้ใช้ต้องการที่จะควบคุมหรือสั่งงานโดยชุดคำสั่งจำนวนหนึ่ง เช่นงานควบคุมอุตสาหกรรมจะมีการปรับพารามิเตอร์ PID, setpoints, สถานะการควบคุม ฯลฯ ซึ่งโครงสร้างโปรแกรมตัวอย่างอาจไม่เอื้ออำนวยในการดัดแปลงให้รับคำสั่งจำนวนหลายคำสั่ง เพราะหากเพิ่มโค้ดทั้งหมดลงในฟังก์ชัน callback() จะทำให้มีความยาวและยากต่อการบำรุงรักษาโปรแกรมในภายหลัง ดังนั้นในบทความนี้จึงนำเสนอวิธีการรับและแปลคำสั่งใน NETPIE 2020 โดยจะเปรียบเทียบระหว่างการเขียนโค้ดลงใน callback() กับการสร้างฟังก์ชันแปลคำสั่งในรุปแบบ cmd=value ที่สื่อความหมายกับผู้ใช้ได้ดีกว่า ไม่ต้องแก้ไขฟังก์ชันเดิมหและมีข้อดีอีกประการคือสามารถสั่งงานผ่านพอร์ตอนุกรมหรือ Bluetooth ได้โดยคำสั่งชุดเดียวกัน

Saturday, February 29, 2020

เปลี่ยนผ่านจาก NETPIE 2015 สู่ NETPIE 2020

ผู้ติดตามบล็อกนี้คงทราบดีแล้วว่า NETPIE คือชื่อของบริการคลาวด์สำหรับอุปกรณ์ไอโอทีที่พัฒนาโดยศูนย์อิเล็กทรอนิกส์และคอมพิวเตอร์แห่งชาติ (NECTEC) และปัจจุบันตั้งบริษัท NEXPIE เพื่อสนับสนุนการใช้ในงานอุตสาหกรรมและเชิงพานิชย์ เมื่อวันที่ 20/02/2020 ที่ผ่านมา ได้เปิดตัวแพลตฟอร์มใหม่ในชื่อ NETPIE 2020 ที่แก้ไขข้อจำกัดของเวอร์ชันก่อน (อ้างถึงโดยชื่อ NETPIE 2015) หลายประการ เช่นยกเลิกการใช้ไลบรารี Microgear ที่ยึดติดกับภาษาและฮาร์แวร์ทำให้ขาดความยืดหยุ่น ปรับปรุงให้รองรับโดยฮาร์ดแวร์และภาษาการโปรแกรมหลากหลายมากขึ้น อย่างไรก็ตามการเปลี่ยนแปลงโครงสร้างของ NETPIE 2020 จากเดิมทำให้โปรแกรมเดิมที่ใช้งานอยู่ไม่สามารถใช้ได้และต้องมีการแก้ไข บทความนี้เป็นแนวทางสำหรับผู้พัฒนาบน NETPIE 2015 ที่ต้องการเปลี่ยนผ่านสู่ NETPIE 2020 โดยตั้งสมมุติฐานว่าผู้อ่านมีประสบการณ์หรือความเข้าใจโปรแกรมและการทำงานของเวอร์ชันเก่าอยู่ก่อนแล้ว สำหรับท่านที่ไม่เคยใช้งาน NETPIE มาก่อนเลยแนะนำให้เริ่มต้นจากคู่มือการใช้งานที่ลิงก์ NETPIE 2020 Documentation

Saturday, January 11, 2020

NETPIE microgear : แนวทางการพัฒนาอุปกรณ์ IoT สำหรับผู้ใช้ทั่วไป

เมื่อผู้พัฒนามีประสบการณ์กับ NETPIE ถึงระดับหนึ่งจะเริ่มรู้สึกอยากสร้างอุปกรณ์ IoT ให้กับคนอื่นได้ใช้งาน โดยอาจจะเป็นบุคคลในครอบครัว เพื่อนร่วมงาน หรือทำเป็นผลิตภัณฑ์ ซึ่งแน่นอนเราไม่ต้องการที่จะเปิดเผยข้อมูลในบัญชี NETPIE ให้กับผู้ใช้คนอื่นเนื่องจากเครดิตที่มีจำกัดและเหตุผลอื่นๆ ผู้เขียนมักได้รับคำถามเกี่ยวกับการสร้างหน้า Freeboard บนโฮสต์หรือเซิร์ฟเวอร์ของตัวเอง ซึ่งถึงแม้จะทำได้แต่มีข้อเสียคือบุคคลอื่นที่รู้วิธีก็สามารถดึงเอาข้อมูลสำคัญเช่น APPID, key, secret ไปได้ ดังนั้นหากเรายังเขียนโปรแกรมสำหรับอุปกรณ์ IoT โดยใส่ข้อมูล NETPIE ไว้ส่วนบนของโปรแกรมอย่างถาวร การส่งต่ออุปกรณ์ไปให้ผู้อื่นใช้งานอย่างง่ายคือลบข้อมูลส่วนนั้นและให้ source code ไปพร้อมฮาร์ดแวร์ ซึ่งก็จะเกิดปัญหาอีกคือผู้ใช้ต้องรู้วิธีที่จะติดตั้ง Arduino IDE และเครื่องมือทั้งหมดที่ใช้ในโปรแกรมเพื่อคอมไพล์และโหลดลงบนอุปกรณ์ นอกจากนั้น source code อาจมีส่วนที่เป็นทรัพย์สินทางปัญญาที่ผู้พัฒนาไม่อยากเปิดเผยก็ได้

Sunday, December 29, 2019

การใช้งาน Serial Bluetooth บน ESP32

ในบทความนี้จะกล่าวถึงการใช้งาน Bluetooth บน ESP32 แบบธรรมดา (บางที่เรียกว่าแบบ classic) ซึ่งจะเขียนโปรแกรมง่ายกว่าแบบ BLE (Bluetooth Low Energy) ที่เน้นการประหยัดพลังงาน แต่ในที่นี้จะใช้สำหรับงานปกติที่รับส่งคำสั่งเป็นคู่ขนานกับพอร์ตอนุกรม ผู้อ่านที่ติดตามเว็บหรือหนังสือคุ้นเคยดีอยู่แล้วกับฟังก์ชัน cmdInt() การโปรแกรมจะมองเสมือน Bluetooth เป็นพอร์ตอนุกรมอีกตัวหนึ่งที่มีลักษณะคำสั่งเหมือนกัน ทำให้เราสามารถควบคุมและรับข้อความได้โดยใช้โทรศัพท์มือถือ การทดลองในบทความนี้จะใช้โทรศัพท์ที่มีระบบปฏิบัติการ Android และติดตั้งแอป Serial Bluetooth Terminal ผู้อ่านสามารถพัฒนาเพิ่มเติมเพื่อสร้างแอปควบคุมได้โดยใช้เครื่องมือเช่น App Inventor

แนะนำหนังสือ “ตัวควบคุมป้อนกลับบนอินเทอร์เน็ตโดย ESP8266”

ปัจจุบันเมื่อกล่าวถึงอุปกรณ์ IoT (Internet of Things) คงมีน้อยคนที่จะไม่รู้จัก ในยุคที่การเข้าถึงอินเทอร์เน็ตเป็นกิจวัตรประจำวันของมนุษย์เ...