รีวิว Amazon FreeRTOS ระบบปฏิบัติการเพื่อ Internet of Things ด้วย ESP32
Amazon FreeRTOS ระบบปฏิบัติการที่ออกแบบมาเพื่อไมโครคอนโทรลเลอร์
ประมาณเดือนธันวาคมปี 2017 Amazon ได้เปิดตัวระบบปฏิบัติการสำหรับงาน Internet of Things ที่ชื่อ Amazon FreeRTOS โดยมีจุดประสงค์เพื่อช่วยให้การพัฒนางานทางด้าน Internet of Things บนไมโครคอนโทรลเลอร์สะดวกขึ้นคำว่าสะดวกขึ้นในที่นี้คืออะไร
งานหลักๆ ของ ไมโครคอนโทรลเลอร์ในระบบ Internet of Things มักจะประกอบไปด้วยหัวข้อดังต่อไปนี้
- การ Deploy อุปกรณ์ใหม่จะต้องง่าย เช่นการลงทะเบียน การจัดการอุปกรณ์ ( เพิ่ม, ลบ เป็นต้น )
- การจัดการเรื่องพลังงาน และเชื่อมต่อ Internet
- การรักษาความปลอดภัยของข้อมูล ในการสื่อสารกับเซอเวอร์
- สามารถย้ายแพลตฟอร์มฮาร์ดแวร์ได้โดยง่าย
- อัพเกรดเฟริมแวร์หลังจากติดตั้งอุปกรณ์หรือ OTA ( Over The Air )
ที่กล่าวมาทั้งหมดนี้ Amazon FreeRTOS จะช่วยให้งานเหล่านี้สะดวกขึ้น
จากรูปด้านบนส่วนสีส้มจะเห็นว่า Amazon จะเข้าไปพัฒนาปรับแต่งจนถึงส่วนของ FreeRTOS Kernel เลย และนอกจากนั้น จะเป็น Library ที่ใช้เชื่อมต่อกับ AWS IoT เอง
แล้วทำไมต้อง FreeRTOS
FreeRTOS เป็น Real Time Operating System ที่ถูกใช้มาอย่างยาวนานมากบนไมโครคอนโทรลเลอร์ จุดเด่นคือได้รับการพัฒนา kernel จนเสถียร และเทียบชั้น RTOS ที่ต้องเสียค่าใช้จ่ายได้เลย และที่สำคัญคือ API ในการพัฒนาส่วนของ System programming ตัวอย่างเช่น
- Multitasking scheduler สามารถสร้าง Application ที่ต้องการทำงานแบบ Multitasking ได้
- Multiple Memory Allocation options สามารถเลือกวิธีการจองหน่วยความจำได้ ตัวอย่างเช่นจองแบบ statically ทั้งระบบ
- Inter-task communication, message queue, etc. วิธีการเชื่อมต่อระหว่าง Task การสื่อสาร การจัดการ Task
- Tickeless Timer mode สำหรับงานทางด้าน Low power application
Amazon น่าจะต้องการเจาะกลุ่มนักพัฒนาที่พัฒนางาน Embedded System ที่มี RTOS อยู่แล้ว จึงได้เลือก FreeRTOS มาเป็น ระบบปฏิบัติการที่จะพัฒนาเพิ่มเติมให้เข้ากับ AWS
Amazon FreeRTOS Library
ไลบรารี่หลักๆ สำหรับนักพัฒนาต้องดู
- Amazon Cloud connectivity
การเชื่อมต่อกับ Cloud หรือ AWS IoT จะทำผ่าน MQTT Protocol โดยมีส่วนของการเชื่อมต่อกับ Device shadow มาให้ด้วย ใช้ในกรณีที่อุปกรณ์ Offline จะรับข้อมูลจาก Device shadow โดยอัตโนมัต - Greengrass connectivity
Greengrass discovery API ใช้ในกรณีที่ระบบของเรามี Amazon Greengrass ที่อยู่บน gateway ในระบบ - Amazon FreeRTOS Security
- FreeRTOS Wi-FI interface
หลักๆ ตอนนี้ฮาร์ดแวร์ยังใช้ Wi-FI อยู่ จะเป็น API สำหรับการเชื่อมต่อ WiFI ธรรมดา หรือ สั่งปิด WiFi เป็นต้น - OTA Agent Library จัดการเรื่อง notification, verify firmware, download firmware จาก Cloud
มาทดลองเริ่มต้นทดลองเล่น Amazon FreeRTOS บน ESP32 กันดู
ที่อยากเขียนบทความนี้ขึ้นมาก็เนื่องจาก Amazon FreeRTOS ประกาศว่ารองรับ ESP32 อย่างเป็นทางการแล้ว หมายความว่าเราจะใช้ชุดทดลองที่หาได้ง่ายอย่าง ESP32-DevkitC มาทดสอบได้
ในบทความนี้ผมจะทดสอบด้วย ESP32 WroveKit เป็น ESP32 รุ่นที่มี LCD นะครับ
การที่จะเริ่มต้น Amazon FreeRTOS ได้จำเป็นจะต้องมี Account ของ AWS IoT ก่อนเลย สามารถสมัครได้ตามลิงค์ด้านบน
หลังจากนั้นให้ Login เข้าไปได้เลยจะเจอหน้า Dashboard ของ AWS IoT
ต่อมาสามารถเริ่มต้นได้โดยทำตาม Getting Started ของ Amazon ตามลิงค์ด้านล่างนี้ โดยเป็น Getting Started ของ Espressif hardware หรือ ESP32 นั่นเอง
https://docs.aws.amazon.com/freertos/latest/userguide/getting_started_espressif.html
หลังจากคอมไพล์โปรแกรมตัวอย่างแล้วโหลดโปรแกรมลงไปบนบอร์ดจะพบว่าสามารถเชื่อมต่อ AWS IoT ได้แล้ว
สามารถดูข้อมูลได้จากเมนู Test ของ AWS IoT และ Subscribe ไปที่
freertos/demos/echo
หลังจากนี้ เราก็สามารถปรับแต่งชุดข้อมูลที่ส่งขึ้น AWS IoT และนำข้อมูลไปใช้ต่อกับ service ต่างๆ ของ AWS ได้โดยง่ายแล้ว
ถามความเห็นผู้เขียนก็เป็น ระบบปฏิบัติการที่น่าสนใจ แต่ข้อเสียคือคงไม่เหมาะกับผู้เริ่มต้นทางด้าน Embedded system และซอฟต์แวร์ก็ยังซับซ้อนพอสมควร แต่สำหรับนักพัฒนาที่เคยใช้ FreeRTOS บนแพลตฟอร์มอื่นมาบ้างและต้องการพัฒนางานทางด้าน IoT ต้องบอกเลยว่าคือ ชุดเครื่องมือที่ดีมาก เพราะงานทางด้าน การเชื่อมต่อ การรักษาความปลอดภัย เรื่องการจัดการพลังงาน ยังเป็นเรื่องที่ถ้าต้องทำเองทั้งหมดจะเสียเวลาพอสมควร Amazon FreeRTOS จะเข้ามาช่วยตรงนี้ได้อย่างมาก