หน้าแรก อุตสาหกรรม Mbed คืออะไร, Mbed Simulator เขียนโค้ดไมโครคอนโทรลเลอร์ทดลองได้ไม่ต้องมีบอร์ด

Mbed คืออะไร, Mbed Simulator เขียนโค้ดไมโครคอนโทรลเลอร์ทดลองได้ไม่ต้องมีบอร์ด

2868
0

ในปัจจุบัน เทคโนโลยีการพัฒนา Microcontroller เริ่มมีความซับซ้อนมากขึ้นเมื่อต้องเชื่อมต่อกับงานทางด้าน Internet โดยเฉพาะในยุค Internet of Things แบบนี้

เรื่องที่ต้องคำนึงถึงในการพัฒนา Internet of Things สำหรับอุปกรณ์ขนาดเล็กเช่น

  • กระบวนการในการเชื่อมต่อเน็ตเวิร์คต่างๆ เช่น LoRA, NB-IoT
  • ความปลอดภัยของการเชื่อมต่อ และ ความปลอดภัยในตัวอุปกรณ์
  • เรื่องของการจัดการพลังงาน
  • การเชื่อมต่อฮาร์ดแวร์ต่างๆ เช่น SD card, PWM, GPIO เป็นต้น
  • เวลาเปลี่ยน Hardware ใหม่ ไม่อยากมานั่งเขียนโค้ดใหม่ตั้งแต่ต้น

ทั้งสามเรื่องนี้ในงาน Microcontroller ถ้าเริ่มเขียนเองตั้งแต่ต้น นับว่าเป็นงานที่ยุ่งยาก และเสียเวลาพอสมควร ในการจัดการงานระดับล่าง ซ้ำๆ จึงเป็นแนวคิดที่ว่าจะดีกว่าไหมถ้ามี framework สำหรับ Microcontroller ที่สามารถจัดการเรื่องด้านบนได้ง่ายโดยไม่ต้องมาทำเองซ้ำๆ

มารู้จักกับ Mbed กัน

จริงๆ ต้องเล่าให้ฟังก่อนครับว่าที่ตัดสินใจเขียนเรื่อง Mbed นี่เกิดมาจาก ตอนนี้งานทางด้าน LoRA ที่เราใช้ในการอบรม IoT ของบริษัท ใช้ Mbed สอนด้วยและตัวอย่างสำหรับงานทางด้าน Internet of Things ก็น่าสนใจมากเลยลองนำมาแนะนำครับ

Mbed ครั้งแรกมีแนวคิดทำมาเพื่อไมโครคอนโทรลเลอร์ตระกูล ARM เลยในยุคแรกๆ จะเป็นการเขียนบน compiler ที่อยู่บน Cloud เท่านั้น และหลังจากนั้นถูก ARM ซื้อไป และมีเวอร์ชั่นใหม่ ที่สามารถ export มาเป็น offline compiler ได้ จึงทำให้ได้รับความสนใจมากขึ้นหลายเท่า

องค์ประกอบหลักๆ ของ mbed ประกอบไปด้วย

  • Mbed Cloud

ระบบ Cloud ที่ออกแบบมาจัดการอุปกรณ์ของ Mbed โดยเฉพาะ โดยเฉพาะเรื่องจาการสร้าง ลบ และอัพเดตุอุปกรณ์ ตรงนี้เราจะเลือกไม่ใช้ก็ได้ เพราะไม่ใช่ส่วนที่รวมเข้ามาในบอร์ดของเรา

  • Mbed OS

พระเอกของ Mbed เป็นระบบปฏิบัติการสำหรับ IoT Device โดยเฉพาะ โดยรวมในเรื่องของ Security, IoT networking , IoT communication เข้ามาด้วย เพื่อให้นักพัฒนาเน้นไปที่การออกแบบ Application ได้ โดยไม่ต้องกังวลกับระดับล่าง

  • Mbed TLS

เป็นอีกหนึ่งไลบรารี่ของทาง Mbed ที่แสดงให้เห็นความสามารถทางด้าน IoT ของทีม Mbed ที่เป็นจุดประสงค์เพื่อ commercial โดยเฉพาะ

Mbed TLS เป็นไลบรารี่ที่ช่วยเรื่องของการเข้ารหัสข้อมูลเช่น SSL/TLS ที่ใช้กันในอินเตอร์เน็ตในปัจจุบันนั่นเอง จุดเด่นของไลบรารี่นี้คือ ใช้หน่วยความจำน้อย เป็น opensource ที่ได้รับความนิยมมาก และยังสามารถพอร์ตไปสถาปัตยกรรมอื่นได้ด้วย 
ไลบรารี่การเชื่อมต่ออินเตอร์เน็ตบนไมโครคอนโทรลเลอร์หลายๆ เบอร์ถ้าเราค้นจะเจอ Mbed TLS นี่ละอยู่ในนั้น

มีฮาร์ดแวร์ให้เลือกเล่นเยอะมาก

https://os.mbed.com/platforms/

บอร์ดที่สามารถใช้กับ Mbed ได้จะเป็นตระกูล ARM โดยมีหลายบอร์ด และหลายผู้พัฒนามาก โดยเป็นผู้ผลิตอิเล็กทรอนิกส์ชั้นนำของโลกเช่น NXP, ST Micro, Renesas, Nordic เป็นต้น

ราคาฮาร์ดแวร์ก็ถือว่าไม่แพงมาก เช่นบอร์ด STM32 Nucleo มีราคาแค่ 10$ เท่านั้น แต่ได้ประสิทธิภาพของ ARM-Cortex เต็มๆ และมีหลากหลายเบอร์ให้เลือก

ซอฟต์แวร์ก็ดูใช้ง่าย

จากด้านบนเป็นตัวอย่างโค้ด ไฟกระพริบ
ถ้าใครเคยเขียนโค้ดบน Arduino หรือบนไมโครคอนโทรลเลอร์เบอร์อื่นมาบ้างจะเข้าใจไม่ยากเลย

ทางเลือกในการพัฒนาของเราตอนนี้หลังจากได้บอร์ดมาจึงแบ่งเป็น Online compiler กับ Offline Compiler ที่สามารถสมัครและทดลองตามวิธีบนเว็บได้ไม่ยากเลย

แต่วันนี้ผมจะมาแนะนำฟีเจอร์ใหม่ที่ทำให้การพัฒนาทดสอบง่ายขึ้นมาก โดยไม่ต้องมีบอร์ด ได้แก่

Mbed Simulator

หลายๆ ครั้งงานด้าน Network, Algorithm การทดสอบบนบอร์ดก็ค่อนข้างใช้เวลา Mbed Simulator จะเข้ามาช่วยตรงส่วนนี้ให้ง่ายขึ้น ถ้าพร้อมแล้วกดลิงค์ด้านล่างนี้ได้เลย

Open Simulator

ด้านซ้ายเขียนโค้ด ด้านขวา simulator

มาเริ่มเพิ่ม LED ซักดวงดีกว่า

สเต็ปแรกกดไปที่ + Add component

เลือก component ที่ต้องการในที่นี้ผมใช้ LED และเลือกพิน p5 ของบอร์ด

เพิ่มโค้ดกันหน่อย ตามรูปด้านบน และกด Run จะพบว่า LED สีแดงกระพริบแล้ว

ทีนี้ใครจะทำความคุ้นเคยกับไลบรารี่ของ Mbed หรือทดลองไลบรารี่ต่างๆ ก็สะดวกขึ้นมากแล้ว

LoRA, HTTP, HTTPs, CoAP เป็นตัวอย่างที่น่าสนใจมาก

ที่ตัดสินใจเขียนบทความนี้ขึ้นมา เพราะมีตัวอย่างที่น่าสนใจอย่าง LoRA, HTTP ที่ทำให้เราสามารถทดลองส่งข้อมูลขึ้นเซอเวอร์ที่เราสร้างขึ้นได้โดยไม่ต้องมีฮาร์ดแวร์จริง และยังได้เรียนรู้การทำงานได้ง่ายขึ้นอีกด้วย

ตัวอย่าง LoRA อันนี้ส่งขึ้น Network Server ได้จริงด้วยนะ สามารถทดสอบโดยใช้ The Things network ได้เลย เดี๋ยวบทความหน้าจะมาทดสอบกันครับ

Mbed Simulator ก็ลง Offline ได้นะ

Mbed Simulator สามารถรันบนโปรเจคไหนก็ได้ที่ใช้ Mbed OS5 จึงช่วยให้การพัฒนาง่ายขึ้น รูปด้านบน เป็นการทดสอบ Basic MNIST handwriting โดยใช้ uTensor ซึ่งเป็นไลบรารี่ด้าน AI ของ Mbed นั่นเอง เรื่อง uTensor นี่ทาง Deaware ก็มีๆ นำมาใช้บ้างแล้วในโปรเจคทางด้าน Microcontroller ก็ช่วยให้งานประมวลผลสัญญาณเพื่อตีความหมายออกมาง่ายมากขึ้นครับ