MicroPython for STM32

แนะนำไมโครไพธอนสำหรับไมโครคอนโทรลเลอร์ STM32

บอร์ดไมโครคอนโทรลเลอร์ STM32

ไมโครไพธอนได้ถูกพัฒนาขึ้นเพื่อนำมาใช้งานกับไมโครคอนโทรลเลอร์ (MCU) 32 บิต บอร์ดแรกเริ่มคือ PyBoard v1.1 (หรือ PyBv1.1) และทางผู้พัฒนาได้เลือกใช้ไมโครคอนโทรลเลอร์ STM32F405RGT6 (ARM Cortex-M4F, 168MHz, 1024KB Flash, 192KB SRAM) หลังจากนั้นก็มีบอร์ดอีกหลายเวอร์ชันออกมา เช่น PyBoard D-Series ที่ใช้ชิป STM32F722 หรือ STM32F767 (ARM Cortex-M7) เป็นต้น

นอกจากตัวเลือกที่เป็น Official MicroPython Boards โดยบริษัท George Robotics Limited ก็ยังมีบอร์ดของบริษัท STMicroelectronics ที่นำมาใช้กับไมโครไพธอนได้ เช่น บอร์ดในกลุ่มที่เรียกว่า STM32 Nucleo Boards ซึ่งเป็นบอร์ดที่มีราคาไม่แพง และมีมากกว่า 50 แบบให้เลือกใช้ แบ่งได้เป็น 3 กลุ่มย่อยตามจำนวนของขา I/O ของชิป MCU ได้แก่ Nucleo-32, Nucleo-64 และ Nucleo-144 และยังมีบอร์ดในกลุ่มที่เรียกว่า STM32 Discovery Kits ซึ่งจะมีราคาสูงกว่าบอร์ด Nucleo

ข้อสังเกต: บอร์ด STM32 Nucleo หรือ Discovery Kits ได้รวมวงจร ST-Link V2 Programmer / Debugger เอาไว้บนบอร์ดแล้ว ทำให้สะดวกต่อการอัปโหลดเฟิร์มแวร์ (ไฟล์ประเภท .hex หรือ .bin) ไปยังชิปไมโครคอนโทรลเลอร์ที่อยู่บนบอร์ดดังกล่าว

บอร์ดไมโครคอนโทรลเลอร์ตระกูล STM32 รองรับการเขียนโปรแกรมได้หลายรูปแบบ เช่น

แนวทางการเลือกใช้บอร์ด STM32 สำหรับไมโครไพธอน

ถ้าจะเลือกใช้บอร์ด STM32 สำหรับผู้เริ่มต้น ก็แนะนำให้ใช้บอร์ดที่หาซื้อได้ไม่ยาก ราคาไม่แพง (อาจจะมีราคาต่ำกว่าหรือสูงกว่าหนึ่งพันบาท) แต่ที่สำคัญคือ บอร์ดที่จะเลือกใช้นั้น ต้องใช้ได้กับเฟิร์มแวร์ของไมโครไพธอน ดังนั้นให้ลองตรวจสอบดูว่า มีบอร์ดใดบ้างที่นำมาใช้ได้ เช่น ดูได้จากรายการในไดเรกทอรี ports/stm32/boards ของ MicroPython Source Code Repository

โดยความคิดเห็นส่วนตัวของผู้เขียน บอร์ด STM32 Nucleo ก็เป็นตัวเลือกที่น่าสนใจ เช่น Nucleo F401RE / L476RG / F446RE / F767Z แต่ก็มีข้อจำกัด ยกตัวอย่างเช่น บอร์ด Nucleo-64 หรือ Nucleo-144 มีรูปทรงหรือขนาดของบอร์ดไม่เหมาะสำหรับการนำไปต่องวงจรใช้งานบนเบรดบอร์ด (Breadboard)

แต่ถ้าต้องการเลือกใช้บอร์ด STM32 ที่มีราคาถูกและสามารถนำไปเสียบขาลงบนเบรดบอร์ดได้ ก็แนะนำให้ใช้บอร์ด STM32F411CEU6 Mini-F4 (Black Pill V2.0) ของ WeACT Studio (จากประเทศจีน)

ข้อสังเกต: บอร์ด STM32F4x1 Mini-F4 นั้นมี 2 เวอร์ชันให้เลือกใช้ และแตกต่างกันที่ชิปไมโครคอนโทรลเลอร์ดังนี้

  • STM32F401CEU6 (84MHz, 256KB Flash, 64KB SRAM)

  • STM32F411CEU6 (100MHz, 512KB Flash, 128KB SRAM)

ข้อสังเกต: ด้านล่างของบอร์ด มี Solder Pads (U3) สำหรับมีไว้สำหรับให้บัดกรีขาของไอซี SPI Flash (external) ที่ใช้ตัวถังแบบ SOIC-8 Package เพื่อช่วยเพิ่มความจุของ Flash Storage เมื่อใช้งานกับไมโครไพธอน หรือจะเลือกใช้จาก Internal Flash ของไมโครคอนโทรลเลอร์ STM32 เท่านั้นก็ได้

บอร์ดนี้มีขนาดเล็ก (2.1" x 0.8") สามารถเสียบขาลงบนเบรดบอร์ดได้ จึงเหมาะสำหรับนำมาใช้ในการเรียนรู้หรือทำอุปกรณ์ต้นแบบ (Prototyping) มีคอนเนกเตอร์ USB Type-C สำหรับป้อนแรงดันไฟเลี้ยงจาก USB (5V) และเชื่อมต่อกับคอมพิวเตอร์ได้

ไมโครคอนโทรลเลอร์ STM32F411CEU6 รองรับการใช้งาน USB OTG และสามารถทำงานในโหมด USB-CDC (Virtual Com Port), USB Mass Storage และ USB HID (Keyboard or Mouse)

การติดตั้งเฟิร์มแวร์ (.hex หรือ .bin) ลงในหน่วยความจำ Flash ภายในของชิปไมโครคอนโทรลเลอร์ สามารถทำได้โดยใช้ขา I/O ที่เรียกว่า SWD (Serial Wire Debug) Interface แต่ต้องใช้ร่วมกับอุปกรณ์ภายนอก เช่น ST-Link/V2 USB Debugger and Programmer (หรืออุปกรณ์เวอร์ชัน V3 ที่ใหม่กว่า) และใช้งานร่วมกับซอฟต์แวร์ STM32 ST-Link Utility หรือ STM32CubeProgrammer

แต่ชิปตระกูล STM32 เช่น STM32F4xx รองรับการทำงานในโหมด DFU Bootloader ช่วยให้โปรแกรมไฟล์ที่เป็นเฟิร์มแวร์ (ไฟล์ประเภท .dfu) ผ่านทาง USB ได้เช่นกัน โดยจะต้องใช้งานร่วมกับซอฟต์แวร์ เช่น DfuSe Utility หรือ STM32CubeProgrammer หรือใช้โปรแกรมที่เป็น Open Source เช่น dfu-utils ก็ได้

กล่าวโดยสรุป

การเขียนข้อมูลจากไฟล์เฟิร์มแวร์สำหรับบอร์ดไมโครคอนโทรลเลอร์ STM32 มีหลายวิธีและสามารถเลือกใช้ซอฟต์แวร์ของบริษัท STMicroelectronics หรือซอฟต์แวร์ประเภท Open Source ได้เช่นกัน

เผยแพร่ภายใต้ลิขสิทธิ์ Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

Last updated