แกะกล่อง EFR32MG24 Dev Kit
สมาคมสมองกลฝังตัวไทย (TESA) จะร่วมมือกับ Arrow Electronics (Thailand) จัด hands-on workshop แนะนำการใช้ไมโครคอนโทรลเลอร์ของ Silicon Labs (เรียกสั้นๆว่า SiLabs) เพื่อพัฒนาอุปกรณ์ไร้สายที่รองรับโพรโทคอล Matter ผมเลยได้รับบอร์ด EFR32MG24 Dev Kit มาเพื่อลองใช้ก่อน โพสต์นี้เลยขอมาเล่าประสบการณ์ในการแกะกล่องแล้วลองใช้แบบเร็วๆ เพราะนักพัฒนาไทยอาจจะไม่ค่อยรู้จัก MCU ค่ายนี้ แต่ SiLabs จัดเป็นบริษัทที่มีประวัตินานพอควรด้วยจุดแข็งด้าน Bluetooth, ZigBee และ low-power ครับ
เปิดกล่องดูสเปค
EFR32MG24 Dev Kit มาพร้อมกับเซ็นเซอร์หลากหลายชนิด ทำให้บอร์ดตัวนี้มีความสามารถในการวัดค่าต่างๆ ได้อย่างครอบคลุม ไม่ว่าจะเป็น
- Relative Humid+Temp Sensor รุ่น Si7021 ของ SiLabs
- Intertial Measurement Unit แบบ 6 แกนรุ่น ICM-20689 ของ TDK InvenSense
- ไมค์โครโฟน Stereo แบบ MEMS รุ่น ICS-43434 ของ TDK Invensense
- Barometric pressure sensor รุ่น BMP384 ของ Bosch
- Ambient light sensor รุ่น VEML6035 ของ Vishay
- Hall-effect sensor รุ่น Si7210 ของ SiLabs
นอกจากเซ็นเซอร์ที่หลากหลายแล้ว EFR32MG24 Dev Kit ยังมาพร้อมกับหน่วยประมวลผล EFR32MG24B310F1536IM48 ที่ทรงพลัง ด้วยหน่วยความจำ Flash ขนาด 1.5 MB และ RAM ขนาด 256 kB พร้อมทั้งรองรับ AI/ML Hardware Accelerator ทำให้สามารถประมวลผลข้อมูลจากเซ็นเซอร์ต่างๆ ได้อย่างรวดเร็วและมีประสิทธิภาพ เหมาะสำหรับการพัฒนาแอปพลิเคชันที่ต้องการความสามารถในการเรียนรู้ของเครื่อง (machine learning) เช่น การจดจำเสียง การสร้างแบบจำลองของสภาพแวดล้อม หรือการวิเคราะห์พฤติกรรมผู้ใช้
MCU EFR32MG24 ในซีรีส์ 2 นั้นโดดเด่นด้วยความสามารถในการรองรับทั้ง Bluetooth Low Energy และ ZigBee บนย่านความถี่ 2.4 GHz ทำให้สามารถสื่อสารกับอุปกรณ์อื่นๆ ได้หลากหลายรูปแบบ และมีความยืดหยุ่นในการใช้งานมากขึ้น ตัวอย่างเช่น สามารถสร้างเครือข่าย ZigBee เพื่อควบคุมอุปกรณ์ภายในบ้าน และใช้ Bluetooth Low Energy เพื่อเชื่อมต่อกับสมาร์ทโฟนได้อย่างง่ายดาย
นอกจากนี้ บอร์ด EFR32MG24 Dev Kit ยังมีขนาดที่กะทัดรัดเพียง 3x5 เซนติเมตร และมาพร้อมกับช่องใส่แบตเตอรี่ CR2032 ทำให้เหมาะสำหรับการพัฒนาอุปกรณ์พกพาหรืออุปกรณ์ IoT ขนาดเล็กที่ไม่ต้องเสียบปลั๊ก เช่น เซ็นเซอร์วัดค่าต่างๆ ที่สามารถติดตั้งได้ทุกที่ การออกแบบให้สามารถเปิด/ปิดการจ่ายไฟให้เซ็นเซอร์แต่ละตัวได้อย่างอิสระ ช่วยให้ผู้ใช้งานสามารถปรับแต่งการทำงานของบอร์ดให้เหมาะสมกับความต้องการของแอปพลิเคชันได้อย่างยืดหยุ่น ซึ่งสอดคล้องกับแนวคิดการประหยัดพลังงานของ Silicon Labs
เครื่องมือพัฒนา
EFR32MG24 Dev Kit มาพร้อมกับ J-Link on-board debugger (ช่วงหลังเห็นบ่อย ส่วนค่ายจีนจะใช้ ARM DAPLink) ซึ่งเป็นดีบักเกอร์ที่ทรงประสิทธิภาพ ช่วยให้การพัฒนาซอฟต์แวร์เป็นไปอย่างรวดเร็วและสะดวกสบาย คุณสามารถใช้ J-Link เพื่อดีบักโค้ดแบบเรียลไทม์ ตั้งจุดหยุด และตรวจสอบค่าตัวแปรต่างๆ ได้อย่างง่ายดาย
Simplicity Studio เป็น IDE ที่ออกแบบมาโดยเฉพาะสำหรับผลิตภัณฑ์ของ Silicon Labs โดยสามารถดาวน์โหลดและใช้งานได้ฟรี อินเทอร์เฟซผู้ใช้ของ Simplicity Studio นั้นใช้งานง่ายและเป็นมิตร ทำให้ผู้เริ่มต้นสามารถสร้างโครงการและเขียนโค้ดได้อย่างรวดเร็ว นอกจากนี้ Simplicity Studio ยังมาพร้อมกับตัวอย่างโค้ด (demo) ที่หลากหลาย ช่วยให้ผู้ใช้งานสามารถเรียนรู้และทดลองใช้งานบอร์ดได้อย่างง่ายดาย เพียงแค่เชื่อมต่อบอร์ดกับคอมพิวเตอร์ และเปิด Simplicity Studio คุณก็สามารถเลือกตัวอย่างโค้ดที่ต้องการและรันบนบอร์ดได้ทันที
ลองกดเลือก GATT Thermometer ที่เป็น demo ของการอ่านเซ็นเซอร์ Si7021 แล้วรายงานผ่าน BLE ด้วย GATT protocol ตัว Simplicity Studio เหมือนจะดาวน์โหลดตัว image แล้วติดตั้งเลย เพราะเร็วมากและไม่เห็น status ของการ build
ผมลองใช้แอป nRF Connect (ทาง SiLabs มี EFR Connect แต่ไม่ได้ลอง) เพื่อเชื่อมต่อกับอุปกรณ์ BLE ที่กำลังทดสอบ โดยสามารถสแกนพบอุปกรณ์ได้อย่างรวดเร็ว หลังจากเชื่อมต่อแล้ว ผมได้เข้าไปที่บริการ Health Thermometer และเปิดใช้งานการแจ้งเตือน (notification) สำหรับค่าอุณหภูมิ ซึ่งสามารถรับค่าอุณหภูมิที่อัปเดตทุก 1 วินาทีได้ตามที่ตั้งค่าไว้ใน demo การใช้งานถือว่าราบรื่นและใช้งานง่าย ทำให้ผมประทับใจกับประสบการณ์การใช้งานโดยรวม
ลองดูรายการของ demo มีให้เลือกมากกว่า 30 รายการ โดยมีหลายรายการที่น่าสนใจอยู่ เช่น
- Network Co-Processor สร้างหน่วยประมวลผลที่รับผิดชอบเฉพาะการสื่อสารไร้สาย โดยทำงานตามการสั่งการผ่าน UART กับหน่วยประมวลผลหลัก
- Matter profile สาธิตการทำอุปกรณ์ เช่น lock, switch, sensor ที่สั่งการด้วย Matter protocol ผ่านการสื่อสารแบบ Thread
- Network Lighting Control สาธิตการทำอุปกรณ์ เช่น occupancy sensor, dimming control ในระบบควบคุมแสงสว่างผ่าน Bluetooth Mesh
ตัว Simplicity Studio ถูกพัฒนาต่อยอดจาก Eclipse Framework เหมือนกับอีกหลายค่าย ซึ่งเมนูต่างๆก็น่าจะคุ้นเคยหากมีประสบการณ์เคยใช้ IDE ของค่ายอื่นมาบ้าง การติดตั้งชุดเครื่องมือพัฒนาสามารถทำได้อัตโนมัติจากการตรวจจับบอร์ด ไม่ต้องไปค้นว่าบอร์ดที่ใช้อยู่เป็น MCU รุ่นไหน
การสร้าง project สามารถเริ่มจากเลือก project ตัวอย่างจากตัว demo ในระหว่างขั้นตอนของ wizard ซึ่งก็สะดวกพอสมควร การได้ลอง demo ทำให้รู้ว่าตรงกับความต้องการไหม จัดเป็นจุดเริ่มต้นที่ง่ายหน่อยสำหรับการพัฒนาเฟิร์มแวร์ที่เกี่ยวข้องกับโพรโทคอลสื่อสารไร้สาย
พอสร้าง project แล้ว จะเห็นว่ามีรายการของไฟล์มาเยอะพอสมควร เพราะไฟล์ส่วนหนึ่งมีไว้สำหรับการตั้งค่าและดำเนินกระบวนการ build/flash/debug การพัฒนาซอฟต์แวร์ใน Simplicity Studio แบ่งออกเป็น 2 โหมดหลักเหมือน IDE ทั่วไป คือ โหมดการเขียนโค้ดเพื่อ build เป็นไฟล์ image ซึ่งมีการเตรียม ARM gcc toolchain รุ่น 12.2.1 มาให้ พอกด debug จะสลับไปโหมด debug ซึ่งจะมีการโปรแกรมไฟล์ image ลงไปในหน่วยความจำของบอร์ด
project ตัวอย่างที่เลือกคือ GATT Thermometer แบบใช้ FreeRTOS ลองมองไปที่โค้ดเลยเห็นว่าส่วน infinite loop จะถูก disable ไว้ ส่วนโค้ดจริงจะอยู่ในฟังก์ชัน app_init()
ที่ไปสร้าง task สำหรับอ่านและอัพเดทค่าลงใน characteristics ของ BLE ส่วนข้อมูลที่รายงานไปยังอุปกรณ์ที่มาเชื่อมต่อจะอาศัยการทำงานของส่วนโค้ด BLE stack อีกที พอ build สำเร็จ ลองเช็คการแบ่งหน่วยความจำพบว่าขนาดของส่วน .text ที่เก็บโค้ดคือ 220 kB ส่วน .bss และ .data สำหรับข้อมูลใช้ไป 15 kB เรียกได้ว่ายังเหลือๆเมื่อเทียบกับ 1.5 MB Flash 256 kB RAM ของตัวชิพเอง
พอ build เสร็จ กดปุ่ม F11 หรือเลือกเมนู Run > Debug จะเป็นการติดตั้งแล้วเปิด SEGGER GDB server เพื่อเข้าสู่โหมด debug ผ่านทาง J-Link ตัวหน่วยประมวลผลจะถูก break ไว้หลังจากเข้าสู่ฟังก์ชัน main()
คือ ฟังก์ชัน sl_system_init()
จากนั้นเราสามารถเลือกจะ continue หรือไปตั้ง breakpoint ก่อนเริ่ม run
อีกตัวเลือกในการพัฒนา
แน่นอนว่าการจับที่ตลาดการศึกษาและมือใหม่สำหรับการพัฒนาเฟิร์มแวร์ของ MCU คงจะหนีไม่พ้น Arduino ทางค่าย SiLabs เองเพิ่งเปิดตัว Silicon Labs Arduino Core ที่แม้จะช้าเมื่อเทียบกับค่ายอื่น เช่น ST Micro และ Espressif แต่มีแซงทางโค้ง เพราะไปร่วมมือกับองค์กร Arduino ขายบอร์ด Arduino Nano Matter ที่ใช้ MCU รุ่น MGM240S ของ SiLabs ออกมา พร้อมกับแถลงข่าว Matter API ที่รองรับอย่างเป็นทางการมาด้วย ดังนั้น API ในการเขียนโค้ดกับบอร์ด SiLabs น่าจะกลายเป็น default ของ Arduino ไป เหมือนกับ API ของ WiFi และ BLE ที่ค่าย 3rd party อื่นๆต้องเดินตาม
เสียดายที่ Platform.io ยังไม่รองรับ Arduino Core ของ SiLabs จึงต้องไปติดตั้ง Arduino IDE 2.x ก่อนติดตั้งใช้งาน (ถอนทิ้งไปนานแล้ว หลังจากใช้ Platform.io) การติดตั้งชุดเครื่องมือพัฒนาแบ่งออกเป็น 2 เฟสคือ
- ป้อน URL ของ toolchain ในหน้าต่าง Preferences จากนั้นจึงเลือกเมนู Tools > Board > Board Manager เพื่อติดตั้ง toolchain ของ Silicon Labs
- ดาวน์โหลดและติดตั้ง J-Link software เพื่อเตรียมโปรแกรม JLinkGDBServer จากนั้นเตรียมไฟล์ debug_custom.json ที่ระบุบอร์ด xg24devkit และรุ่นของหน่วยประมวลผล EFR32MG24B310F1536IM48 และตำแหน่งของไฟล์โปรแกรม JLinkGDBServer
การตั้งค่าบอร์ดเริ่มจากใช้เมนู Tools เพื่อเลือกบอร์ด xG24 Dev Kit และเลือก Programmer เป็น Simplicity Commander
[
{
"configId": "SiliconLabs:silabs:xg24devkit:programmer=commander",
"servertype": "jlink",
"device": "EFR32MG24B310F1536IM48",
"interface": "swd",
"serverpath": "C:\Program Files\SEGGER\JLink_V810\JLinkGDBServerCL.exe"
}
]
รายการของโค้ดตัวอย่างเลือกได้จากเมนู File > Examples > Silicon Labs โดยผมลองเลือกเป็น ble_health_thermometer แล้ว copy ไฟล์ custom_debug.json มาไว้ในโฟลเดอร์เดียวกัน สำหรับตัวเลือกของ Protocol stack ให้เลือกเป็น BLE (SiLabs) จากนั้นเราจะต้องโปรแกรม bootloader ให้กับบอร์ดก่อน โดยเลือกจากเมนู Tools > Burn bootloader จากนั้นเราจะสามารถเลือก Build / Upload และ Debug ที่เป็นปุ่มที่ 3 กับบอร์ดได้
พอติดตั้งลงบอร์ดแล้วเอาแอพ nRF Connect สแกนดู จะเห็น Thermometer Example โดยข้อแตกต่างคือ ค่าอุณหภูมิที่รายงานจะเป็นอุณหภูมิภายในหน่วยประมวลผล
終わりに (ในตอนท้าย)
ความรู้สึกจากการลองใช้บอร์ด EFR32MG24 Dev Kit คือ บริษัทเลือกจะพัฒนา UX ของ Simplicity Studio ที่ตอบโจทย์ในแง่ความง่ายและราบรื่น ซึ่งน่าจะเป็นเรื่องที่ดีสำหรับนักพัฒนาที่ยังไม่เคยใช้ MCU ค่ายนี้ ข้อไม่ดีอาจจะเป็น project ตัวอย่างมีไฟล์มาเยอะพอสมควร เพราะมีหลายไฟล์ที่ใช้สำหรับกำหนดขั้นตอนและเครื่องมือในกระบวนการ build/flash/debug นักพัฒนาที่ไม่ถนัดกับแนวทางนี้อาจจะต้องใช้เวลาพอสมควรเรียนรู้โครงสร้างและหน้าที่ของไฟล์ใน project
สำหรับผู้ที่สนใจบอร์ดนี้ทั้งในแง่ฟีเจอร์ของการสื่อสารไร้สาย (โดยเฉพาะโพรโทคอล Matter) และเซ็นเซอร์ (+ AI/ML accelerator?) คงต้องเฝ้าการประกาศรับสมัครเข้าร่วม hands-on workshop ที่ทาง TESA จัดร่วมกับ Arrow Electronics (Thailand) ในวันที่ 20 พย. 2567 คำเตือนคือ บอร์ดมีจำกัดแค่ 29 บอร์ด เพราะผมเอามาทดลองใช้อยู่ จึงคงต้องรีบลงทะเบียนกันหน่อย