ดิว.นินจา

ดิว.นินจา
Showing posts with label ESP8266. Show all posts
Showing posts with label ESP8266. Show all posts

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, June 22, 2019

NETPIE IoT : วิเคราะห์ผลตอบสนองความถี่โดยไลบรารี arduinoFFT

อธิบายในภาพรวม FFT (Fast Fourier Transform) คืออัลกอริทึมในการแปลงสัญญาณในโดเมนเวลาเป็นผลตอบสนองความถี่ โดยมีหลักการพื้นฐานเช่นเดียวการแปลงฟูเรียร์ในระบบเวลาต่อเนื่อง พัฒนาจาก DFT (Discrete Fourier Transform) ให้ใช้เวลาการคำนวณน้อยลง ช่วยให้สามารถใช้คอมพิวเตอร์ช่วยในการวิเคราะห์องค์ประกอบด้านความถี่ของสัญญาณหรือระบบที่ต้องการได้อย่างมีประสิทธิภาพ ปัจจุบันผู้เริ่มต้นไม่จำเป็นต้องเขียนอัลกอริทึม FFT ด้วยตัวเองเพราะสามารถหาไลบรารีพร้อมใช้งานในซอพต์แวร์ ภาษาคอมพิวเตอร์ และแพลตฟอร์มที่ใช้กันทั่วไป ในบทความนี้จะนำเสนอการใช้ไลบรารี arduinoFFT สำหรับแพลตฟอร์ม Arduino และ ESP ในการพัฒนาอุปกรณ์ IoT สำหรับวิเคราะห์ผลตอบสนองความถี่ แสดงผลและสั่งงานโดย NETPIE รายละเอียดของเนื้อหาอยู่ในไฟล์ pdf ที่เป็นส่วนหนึ่งของหนังสือ "พัฒนาไอโอทีโดยเน็ตพาย"(อยู่ระหว่างดำเนินการ) รวมถึงโปรแกรมที่ดาวน์โหลดได้จากลิงก์ด้านล่างของบทความ

Saturday, May 4, 2019

กำหนดคาบเวลาการทำงานอัลกอริทึมบน ESP8266

ในการทำงานบางประเภทบนระบบฝังตัว เช่น การสุ่มสัญญาณ การอิมพลิเมนต์ตัวควบคุมเชิงเส้น สิ่งสำคัญที่ต้องคำนึงถึงคือคาบเวลาของการประมวลผลที่จะต้องมีความแม่นยำและสามารถกำหนดได้ในโปรแกรม วิธีการง่ายสุดคือการใช้คำสั่ง delay() เพื่อหน่วงเวลา แต่จะไม่ได้รวมเวลาการคำนวณอัลกอริทึมเข้าไปด้วย ซึ่งจะมีความคลาดเคลื่อนสูงโดยเฉพาะสำหรับระบบที่ต้องการคาบเวลาการทำงานสั้นมาก ในบทความนี้รวบรวมวิธีการกำหนดคาบเวลาสำหรับ ESP8266 โดยอาศัยไทเมอร์หรือการอ่านค่าฐานเวลาจากระบบ สำหรับตัวประมวลผล ESP32 จะมีไลบรารี FreeRTOS ช่วยให้การกำหนดทาสก์รายคาบทำได้ง่ายและเป็นระบบ

Saturday, April 20, 2019

การใช้งาน EEPROM บน NodeMCU ร่วมกับ NETPIE

โพสต์นี้กล่าวถึงเนื้อหาที่เพิ่มไปในหนังสือ "พัฒนาไอโอทีโดย ESP8266 และเน็ตพาย" ที่มอบให้กับผู้ฝึกอบรม เกี่ยวกับการใช้ไลบรารี EEPROM เขียนข้อมูล WiFi และ NETPIE ลงบนหน่วยความจำ Flash ของ NodeMCU โดยไม่ต้องแก้ไขโปรแกรมเพื่อคอมไพล์และโหลดใหม่ ซึ่งจะมีประโยชน์กรณีที่พัฒนาอุปกรณ์ IoT ให้บุคคลทั่วไปใช้งาน แต่ไม่ต้องการมอบ source code ไปด้วย หรือว่าให้กับผู้ใช้ที่ไม่มีความชำนาญในการเขียนโปรแกรม ซึ่งอาจพลาดไปแก้ไขส่วนอื่นๆ ทำให้อุปกรณ์ทำงานผิดพลาดและยากต่อการบำรุงรักษา วิธีการนี้จะมีคำสั่งให้ผู้ใช้งานสามารถป้อนข้อมูล ssid, password, APPID, KEY, SECRET, ALIAS ทางพอร์ตอนุกรมและเซฟลงบน EEPROM ซึ่งสามารถจะเปลี่ยนแปลงใหม่ได้ทุกเวลาตามที่ผู้ใช้งานกำหนด เพื่อความง่ายในการทดลอง โปรแกรมที่ใช้ประกอบการศึกษานี้จะไม่ต้องการฮาร์ดแวร์อื่นใดนอกจากบอร์ด NodeMCU V2 สิ่งที่ผู้อ่านต้องเตรียมไว้คือข้อมูล ssid, password จาก WiFi router ที่ใช้ และข้อมูล APPID, KEY, SECRET จากบัญชี NETPIE ของท่าน

Friday, January 11, 2019

NETPIE Freeboard : วิธีแยกข้อมูลจาก widgets ควบคุมโดยกำหนดชื่อ topic

ปัญหาหนึ่งที่ผู้เริ่มต้นพัฒนา NETPIE Freeboard ประสบเมื่อเพิ่ม widget สำหรับควบคุมฮาร์ดแวร์จำนวนมากกว่า 1 ตัวขึ้นไป คือต้องการให้อุปกรณ์ทางด้านรับสามารถแยกได้ว่าข้อมูลถูกส่งมาจาก widget ตัวใด เพื่อที่จะตอบสนองต่อคำสั่งนั้นได้อย่างถูกต้อง ทางแก้ที่ผู้เขียนเคยนำเสนอและใช้ได้ดีคือการเพิ่มสตริงส่วนที่เป็นคำสั่งเข้าไปในข้อมูลที่ chat มาจาก widget แต่ละตัว และสร้างฟังก์ชันแปลคำสั่งทางด้านรับ อย่างไรก็ตามสำหรับ IoT ขนาดเล็กที่มี widget ควบคุมเพียง 2-3 ตัว การเขียนฟังก์ชันแปลคำสั่งอาจจะเกินความจำเป็น ดังนั้นในบทความนี้จะนำเสนอทางเลือกอีกวิธีหนึ่ง คือทางด้านส่งใช้ฟังก์ชัน microgear.publish() โดยระบุ topic ที่แตกต่างกัน ทำให้ทางด้านรับสามารถแยกข้อมูลและทำงานตาม topic ที่ตั้งไว้

Wednesday, December 26, 2018

แนะนำหนังสือ "ระบบควบคุมและอินเทอร์เน็ตเชื่อมต่อสรรพสิ่ง"

ปัจจุบันอินเทอร์เน็ตเข้ามามีบทบาทอย่างมากในชีวิตประจำวันของมนุษย์ การพัฒนาอุปกรณ์ต่างๆ ให้สามารถเชื่อมต่อกับเครือข่ายได้จะช่วยให้สามารถทำงานตอบสนองความต้องการของผู้ใช้ได้อย่างชาญฉลาด เช่นการสั่งงานและแสดงผลจากระยะไกล การตรวจสอบสถานะสินค้าโดยอัตโนมัติ การติดตามตำแหน่งผ่านระบบ GPS เป็นต้น ได้มีการบัญญัติศัพท์ที่ใช้เรียกอุปกรณ์เหล่านี้ว่า Internet of Things (IoT) หรือเรียกชื่อภาษาไทยว่า “อินเทอร์เน็ตเชื่อมต่อสรรพสิ่ง” ซึ่งใช้ในชื่อหนังสือ โดยจะใช้ตัวย่อ IoT เป็นหลักเพื่อความกระชับ

Sunday, December 16, 2018

Topic: เรียนรู้ตัวกรองแบบดิจิทัลบน ESP8266 และ NETPIE

ในปัจจุบันอุปกรณ์ที่เป็นแบบแอนะล็อกทั้งในชีวิตประจำวัน ด้านการแพทย์ ในภาคอุตสาหกรรม และหลายสาขาวิชาเริ่มเหลือน้อยลงเนื่องจากข้อด้อยหลายประการเมื่อเทียบกับระบบดิจิทัลที่มาแทนที่ ตัวกรอง (filters) เป็นตัวอย่างหนึ่งที่ในอดีตสร้างจากอุปกรณ์อิเล็กทรอนิกส์ เช่นตัวต้านทาน ตัวเก็บประจุ ตัวเหนี่ยวนำ ออปแอมป์ ปัญหาหลักที่เกิดขึ้นคือ วงจรจะกินพื้นที่แผ่นวงจรพิมพ์ตามขนาดและจำนวนของอุปกรณ์ หากต้องการเปลี่ยนโครงสร้างต้องออกแบบบอร์ดและลงอุปกรณ์ใหม่ บางครั้งหาค่าอุปกรณ์ที่คำนวณได้ไม่มีขาย อุปกรณ์มีการแปรค่าตามกาลเวลาและอุณหภูมิ การปรับความถี่คัทออฟต้องใช้อุปกรณ์แบบปรับค่าได้ซึ่งมีปัญหาเมื่อหน้าสัมผัสสกปรก แตกต่างจากอัลกอริทึมที่เป็นซอฟต์แวร์รันบนตัวประมวลผลที่มีความยืดหยุ่นมากกว่า และขจัดปัญหาต่างๆ ของระบบแอนะล็อกที่กล่าวถึงมา ในบทความนี้เราจะมาเรียนรู้การสร้างตัวกรองแบบความถี่ต่ำผ่าน (Low Pass Filter) หรือเรียกย่อว่า LPF โดยสามารถปรับความถี่คัทออฟ (cutoff frequency) ได้โดยคำสั่ง และเชื่อมต่อกับ NETPIE เพื่อปรับค่าได้จากระยะไกล นอกจากนั้นยังสร้างสัญญาณรบกวนขึ้นในโปรแกรมเพื่อศึกษาการทำงานของตัวกรอง

Friday, November 30, 2018

NETPIE Microgear : การสื่อสารโดยวิธี chat และ publish

NETPIE Microgear เป็นไลบรารีสนับสนุนสำหรับการพัฒนา IoT ร่วมกับ NETPIE โดยสามารถใช้ได้กับอุปกรณ์หลายประเภททั้งแบบฮาร์ดแวร์และซอฟต์แวร์ ผู้เขียนได้อธิบายการใช้งาน Microgear ขั้นพื้นฐานแล้วทั้งในเว็บนี้และในหนังสือ แต่จากปัญหาที่ถามโดยผู้ใช้งานพบว่าในบางกรณีต้องการการเชื่อมต่อที่นอกเหนือไปจากที่เคยกล่าวถึง เช่นการสื่อสารระหว่าง IoT หลายตัว ดังนั้นจุดมุ่งหมายของบทความนี้คืออธิบายภาพรวมของการสื่อสารโดยวิธี chat และ publish พร้อมสาธิตการรับส่งข้อมูลระหว่างบอร์ด NodeMCU 2 ตัวกับ NETPIE โดยหวังว่าจะตอบโจทย์ผู้พัฒนาที่ต้องการการทำงานในลักษณะดังกล่าว

Sunday, July 16, 2017

ทดสอบการใช้งานวงจร LAG3 ร่วมกับบอร์ด WEMOS D1 R2

ในหนังสือ ตัวควบคุมป้อนกลับบนอินเทอร์เน็ตโดย ESP8266 และใน IoFC workshop ที่ ม.นเรศวร เราได้ใช้บอร์ด ESPino ที่ผลิตโดย ThaiEasyElec ทำหน้าที่ควบคุมบอร์ดจำลองถังน้ำ 3 ระดับ เรียกโดยย่อว่าบอร์ด LAG3 มาจากชื่อ 3rd order lag [1] ซึ่งเป็นพลานต์ที่มีความเหมาะสมมากในการศึกษาการวิเคราะห์และออกแบบระบบควบคุม การสร้างโมเดลโดยวงจรอิเล็กทรอนิกส์ให้ผลที่ใกล้เคียงกับการจำลองโดยคอมพิวเตอร์และมีความสะดวกในเชิงปฏิบัติการ คือมีขนาดเล็ก สามารถใช้ไฟเลี้ยงจากบอร์ดควบคุม และใช้ทดสอบตัวควบคุมได้ตั้งแต่แบบ PID จนถึงการป้อนกลับสเตต (state feedback) เนื่องจากเอาต์พุตของออปแอมป์ทั้ง 3 ภาคสามารถวัดค่าได้ ผู้เขียนได้ใช้บอร์ด LAG3 นี้ทดสอบตัวควบคุมแบบไม่เป็นเชิงเส้นตามแนวคิดใหม่ที่นำเสนอในงานประชุมวิชาการ ICCRE2017 [2]

Wednesday, July 12, 2017

First IoFC workshop ที่ ม.นเรศวร

ภาพบรรยากาศจาก workshop นอกสถานที่ครั้งแรก จัดขึ้นที่ภาควิชาพิสิกส์ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร เนื้อหาเกี่ยวกับการอิมพลิเมนต์ตัวควบคุมป้อนกลับที่สามารถควบคุมและแสดงผลผ่านอินเทอร์เน็ต โดยอาศัย ESP8266, ซอฟต์แวร์ Scilab และ NETPIE

วิทยากรขอขอบคุณ ผศ.อนันตชัย สุวรรณาคม ผู้ติดต่อประสานงานและจัดการให้ workshop ครั้งนี้เกิดขึ้นได้และประสบความสำเร็จตามเป้าหมาย

การใช้งาน NETPIE FEED เบื้องต้น

NETPIE Series

Freeboard widgets พื้นฐานที่กล่าวในหนังสือ “ตัวควบคุมป้อนกลับบนอินเทอร์เน็ตโดย ESP8266” จะใช้ในการแสดงข้อมูลปัจจุบันให้ผู้ใช้งาน ในกรณีที่ต้องการเก็บข้อมูลเป็นชุดตามฐานเวลาในลักษณะเช่นเดียวกับการใช้ ThingSpeak ในบทที่ 4 จะต้องใช้บริการอีกรูปแบบหนึ่งที่มีให้ใน NETPIE เรียกว่า Feeds ซึ่งจากการทดสอบใช้งานได้ดีแม้จะมีข้อจำกัดการใช้งานอยู่บ้าง เช่นอัตราการเก็บข้อมูลเฉลี่ยประมาณ 15 วินาทีต่อหนึ่งจุด เพื่อการแบ่งปันทรัพยากรสำหรับการใช้งานฟรีโดยผู้ใช้ทั่วไป แต่โดยรวมแล้วเห็นว่าเหมาะสมเพราะสามารถเชื่อมต่อกับ Freeboard ได้

การส่งข้อมูลจาก Freeboard Slider หลายตัวไปยัง ESP8266 microgear

NETPIE Series

จากตัวอย่าง ex5_3.ino ในหนังสือ “ตัวควบคุมป้อนกลับบนอินเทอร์เน็ตโดย ESP8266” ได้แสดงการควบคุมและแสดงผลผ่าน NETPIE เบื้องต้น โดยใช้ slider widget ส่งคำสั่งอ้างอิงให้กับตัวควบคุม และส่งข้อมูล 3 ค่ากลับไปแสดงผล จากตัวอย่างจะเห็นว่าการส่งข้อมูลหลายชุดไปยัง NETPIE สามารถทำได้โดยง่าย แต่การที่จะส่งข้อมูลจาก NETPIE ไปยังบอร์ดมากกว่าหนึ่งตัวยังคงเป็นปัญหาที่ยังไม่มีการแสดงวิธีการอย่างชัดเจน ซึ่งจากการบรรยายในชั้นก็มีคำถามนี้จากผู้เรียน

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

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