Category Archives: Single-board microcontroller

Sticky Post

เลิกใช้ Delay แบบไร้สาระกันเสียทีเถอะ

แนะนำกันก่อน เรื่องนี้เริ่มต้นจากการสังเกตปัญหายอดนิยมในการพัฒนาโปรแกรมบน Arduino หรือผู้เริ่มต้นเรียนรู้การพัฒนาโปรแกรมบนภาษาอื่นๆ เช่น C หรือ Python ที่มักจะมีการใช้ฟังก์ชันในการรอเวลา (Time Delay) ไม่ว่าจะเป็นการรอเวลาเพื่อตอบกลับการร้องขอ การรอเวลาให้ระบบปลายทางพร้อมทำงาน หรือการรอให้ครบกำหนดเวลาในการทำงาน เป็นต้นซึ่งการรอเวลานั้นมีความจำเป็นในการพัฒนาโปรแกรมอยู่มาก เพราะระบบจะทำงานได้ดี มีความจำเป็นที่จะต้องทำให้อุปกรณ์ที่เชื่อมต่อกันอยู่ ทำงานประสานกันได้ดี แต่ในขณะเดียวกัน ถ้าหากในระบบมีการรอเวลากันอย่างมากมาย ก็จะกระทบกับการทำงานของระบบเช่นกัน ทั้งทำให้ระบบทำงานได้ช้า ตอบสนองช้า และความล่าช้านี้อาจจะก่อให้เกิดปัญหากับเสถียรภาพในการทำงานของระบบโดยรวมด้วย ดังนั้นแล้วการใช้ฟังก์ชันเพื่อรอเวลานั้น มีข้อควรระวังในการใช้งานอยู่ไม่น้อย แต่การที่เราจะเลี่ยงไม่ใช้ฟังก์ชันรอเวลาพวกนี้ มันไม่ได้ง่ายเลย มันจะต้องเริ่มต้นด้วยการวางแผนอย่างเป็นระเบียบ เพื่อทำให้ระบบที่เราพัฒนาสามารถทำงานร่วมกันได้ ดังนั้นในบทความนี้จะแนะนำแนวคิดในการพัฒนาโปรแกรมที่ลดการใช้ฟังก์ชันรอเวลาเหล่านี้ลงกัน เริ่มต้นด้วยไฟกระพริบ ในบทความตอนนี้จะพัฒนาไฟกระพริบด้วยโปรแกรม Arduino โดยใช้บอร์ด ESP32 DOIT-Devkit-V1 ในการพัฒนา และจะแบ่งออกเป็น 4 ส่วนดังนี้ ไฟกระพริบปกติ ที่ใช้ Delay โดยจะติด

True NB-IoT Arduino Sheild with Arduino Uno

True NB-IoT board ส่งข้อมูลไป InfluxDB ด้วย UDP

ในการทำ IoT (Internet of Things) แน่นอนว่าสิ่งที่จะขาดไปไม่ได้ก็คือการสื่อสารกันระหว่างอุปกรณ์ต่างๆ ในระบบ ซึ่ง NB-IoT หรือ Narrowband IoT ก็เป็นเครื่อข่ายสื่อสารรูปแบบหนึ่งที่น่าสนใจ เพราะใช้พลังงานน้อยและใช้เครือข่ายเดียวกับเซลลูลาร์ทำให้สามารถสื่อสารได้ในระยะไกล ในไทยมีเปิดตัวมาสองเจ้าคือ AIS กับ True ซึ่งของ True เราเพิ่งได้บอร์ดมาถึงมือ มาลองดูกันว่ายังไง เปิดกล่องมาก็จะประกอบไปด้วย True NB-IoT Arduino Shield Antenna NB-IoT Sim (อยู่ใน socket sim ที่ติดมากับบอร์ด Shield แล้ว) บอร์ดใช้โมดูล Quectel BC95-B8   ความถี่ 900 Hz  ในระบบเครือข่าย LTE Cat.

ติดตั้ง Platform IO IDE บน VSCode

***ในบทความนี้ติดตั้ง Platform IO  ใน Visual Studio Code บน Windows 10 นะคะ*** Platform IO เป็นระบบโอเพนซอร์สใช้สำหรับพัฒนา IoT รองรับการพัฒนาอุปกรณ์ Embeded ที่หลากหลาย ทั้ง Arduino, ESP, STM ฯลฯ เขาว่ารองรับ embedded boards ได้ 400 กว่าแบบแน่ะ สามารถติดตั้งใช้งานในแบบ CLI หรือจะใช้งานร่วมกับ IDE อย่าง Atom หรือ VS Code การติดตั้ง PIO IDE Python ***ต้องเป็น python 2.7.6

แกะกล่อง DOIT ESP32 DEVKIT V1 และ PINOUT

ก่อนหน้านี้เราเคยมีโปรเจคเล็กๆน้อยๆ กับ NodeMCU  V2 ซึ่งเป็น ESP8266 ด้วยเสียงลือเสียงเล่าอ้างเรื่องความสามารถของ ESP32 ที่พัฒนาความสามารถเพิ่มมาแก้จุดด้อยของ ESP8266 ทั้งรองรับการเชื่อมต่อแบบ Hybrid ทั้ง WiFi และ Bluetooth มีพอร์ตรองรับ I/O ได้เพิ่มขึ้น รองรับ touch sensor มี hardware เข้ารหัสสำหรับ HTTPS และอีกมามาย ชาวบ้านเค้าพูดถึงกันไปหมดละ อยากรู้รายละเอียดลองค้นๆ ดูแล้วกัน ด้วยเหตุผลที่ว่าไปแล้วและราคาที่ไม่แพง รอบนี้เลยได้ ESP32 Development Board มาจากเถาเป่า ชื่อเต็มคือ DOIT ESP32 DevKit V1  ใช้โมดูล ESP-WROOM-32 นี่เพิ่งซื้อมายังไม่มีโปรเจคเป็นชิ้นเป็นอันว่าจะทำอะไร แต่ซื้อมาแล้วก็ต้องลองก่อนสิเนอะ อยากรู้รายละเอียดเพิ่มเติมของ DOIT

การควบคุม Servo และ LED ด้วย ESP8266 ผ่าน Web Browser

เมื่อต้นเดือนที่ผ่านมา มีภารกิจเล็กๆน้อยๆ โดยต้องการควบคุมกลไกง่ายๆ โดยใช้เซอร์โว 2 ตัว กับหลอด LED 1 ชุดและที่สำคัญคือมันจะต้องเป็นอะไรที่ Portable มีขนาดไม่ใหญ่มาก และเคลื่อนย้ายอุปกรณ์ได้ง่าย สามารถควบคุมผ่าน Android หรือ Iphone ได้ มองไปมองมา เห็นบอร์ด Nodemcu V2 (ESP-12E) อยู่ เลยคิดว่าจะเอามาใช้เป็น Access Point และทำเป็น Web Server เพื่อให้อุปกรณ์ เช่นโทรศัพท์ หรือคอมพิวเตอร์สามารถเข้ามาควบคุมได้โดยผ่าน เครือข่าย WIFI ของตัว Nodemcu เอง ทำให้ไม่จำเป็นต้องพัฒนาแอพพลิเคชั่นเพื่อรองรับอุปกรณ์ทุกตัว ซึ่งลดงานไปได้เยอะมาก