copy Copy chevron-down
MicroPython for STM32 แนะนำไมโครไพธอนสำหรับไมโครคอนโทรลเลอร์ STM32
บอร์ดไมโครคอนโทรลเลอร์ STM32
ไมโครไพธอนได้ถูกพัฒนาขึ้นเพื่อนำมาใช้งานกับไมโครคอนโทรลเลอร์ (MCU ) 32 บิต บอร์ดแรกเริ่มคือ PyBoard v1.1 arrow-up-right (หรือ PyBv1.1 arrow-up-right ) และทางผู้พัฒนาได้เลือกใช้ไมโครคอนโทรลเลอร์ STM32F405RGT6 (ARM Cortex-M4F, 168MHz, 1024KB Flash, 192KB SRAM ) หลังจากนั้นก็มีบอร์ดอีกหลายเวอร์ชันออกมา เช่น PyBoard D-Series arrow-up-right ที่ใช้ชิป STM32F722 หรือ STM32F767 (ARM Cortex-M7) เป็นต้น
รูปภาพ: PyBv1.1(Source: https://store.micropython.org/product/PYBv1.1) นอกจากตัวเลือกที่เป็น Official MicroPython Boards โดยบริษัท George Robotics Limited ก็ยังมีบอร์ดของบริษัท STMicroelectronics ที่นำมาใช้กับไมโครไพธอนได้ เช่น บอร์ดในกลุ่มที่เรียกว่า STM32 Nucleo Boards arrow-up-right ซึ่งเป็นบอร์ดที่มีราคาไม่แพง และมีมากกว่า 50 แบบให้เลือกใช้ แบ่งได้เป็น 3 กลุ่มย่อยตามจำนวนของขา I/O ของชิป MCU ได้แก่ Nucleo-32 , Nucleo-64 และ Nucleo-144 และยังมีบอร์ดในกลุ่มที่เรียกว่า STM32 Discovery Kits arrow-up-right ซึ่งจะมีราคาสูงกว่าบอร์ด Nucleo
รูปภาพ: ตัวอย่างบอร์ด STM32 Nucleo ข้อสังเกต : บอร์ด STM32 Nucleo หรือ Discovery Kits ได้รวมวงจร ST-Link V2 Programmer / Debugger เอาไว้บนบอร์ดแล้ว ทำให้สะดวกต่อการอัปโหลดเฟิร์มแวร์ (ไฟล์ประเภท .hex หรือ .bin ) ไปยังชิปไมโครคอนโทรลเลอร์ที่อยู่บนบอร์ดดังกล่าว
บอร์ดไมโครคอนโทรลเลอร์ตระกูล STM32 รองรับการเขียนโปรแกรมได้หลายรูปแบบ เช่น
C/C++ (Arduino Sketch ) โดยใช้
แนวทางการเลือกใช้บอร์ด STM32 สำหรับไมโครไพธอน
ถ้าจะเลือกใช้บอร์ด STM32 สำหรับผู้เริ่มต้น ก็แนะนำให้ใช้บอร์ดที่หาซื้อได้ไม่ยาก ราคาไม่แพง (อาจจะมีราคาต่ำกว่าหรือสูงกว่าหนึ่งพันบาท) แต่ที่สำคัญคือ บอร์ดที่จะเลือกใช้นั้น ต้องใช้ได้กับเฟิร์มแวร์ของไมโครไพธอน ดังนั้นให้ลองตรวจสอบดูว่า มีบอร์ดใดบ้างที่นำมาใช้ได้ เช่น ดูได้จากรายการในไดเรกทอรี ports/stm32/boards ของ MicroPython Source Code Repository arrow-up-right
รูปภาพ: ตัวอย่างรายชื่อบอร์ด STM32 Nucleo ที่ใช้ได้กับไมโครไพธอน
โดยความคิดเห็นส่วนตัวของผู้เขียน บอร์ด STM32 Nucleo ก็เป็นตัวเลือกที่น่าสนใจ เช่น Nucleo F401RE / L476RG / F446RE / F767Z แต่ก็มีข้อจำกัด ยกตัวอย่างเช่น บอร์ด Nucleo-64 หรือ Nucleo-144 มีรูปทรงหรือขนาดของบอร์ดไม่เหมาะสำหรับการนำไปต่องวงจรใช้งานบนเบรดบอร์ด (Breadboard )
แต่ถ้าต้องการเลือกใช้บอร์ด STM32 ที่มีราคาถูกและสามารถนำไปเสียบขาลงบนเบรดบอร์ดได้ ก็แนะนำให้ใช้บอร์ด STM32F411CEU6 Mini-F4 arrow-up-right (Black Pill V2.0 arrow-up-right ) ของ WeACT Studio arrow-up-right (จากประเทศจีน)
ข้อสังเกต : บอร์ด STM32F4x1 Mini-F4 นั้นมี 2 เวอร์ชันให้เลือกใช้ และแตกต่างกันที่ชิปไมโครคอนโทรลเลอร์ดังนี้
STM32F401CEU6 (84MHz, 256KB Flash, 64KB SRAM)
รูปภาพ: STM32F411CEU6 Mini-F4 Pinout (Source: WeAct Studio) รูปภาพ: มุมมองด้านบนและด้านล่างของบอร์ด STM32F411CEU6 BlackPill ข้อสังเกต : ด้านล่างของบอร์ด มี 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 arrow-up-right แต่ต้องใช้ร่วมกับอุปกรณ์ภายนอก เช่น ST-Link/V2 USB Debugger and Programmer arrow-up-right (หรืออุปกรณ์เวอร์ชัน V3 arrow-up-right ที่ใหม่กว่า) และใช้งานร่วมกับซอฟต์แวร์ STM32 ST-Link Utility arrow-up-right หรือ STM32CubeProgrammer arrow-up-right
แต่ชิปตระกูล STM32 เช่น STM32F4xx รองรับการทำงานในโหมด DFU Bootloader ช่วยให้โปรแกรมไฟล์ที่เป็นเฟิร์มแวร์ (ไฟล์ประเภท .dfu ) ผ่านทาง USB ได้เช่นกัน โดยจะต้องใช้งานร่วมกับซอฟต์แวร์ เช่น DfuSe Utility arrow-up-right หรือ STM32CubeProgrammer arrow-up-right หรือใช้โปรแกรมที่เป็น Open Source เช่น dfu-utils arrow-up-right ก็ได้
การเขียนข้อมูลจากไฟล์เฟิร์มแวร์สำหรับบอร์ดไมโครคอนโทรลเลอร์ STM32 มีหลายวิธีและสามารถเลือกใช้ซอฟต์แวร์ของบริษัท STMicroelectronics หรือซอฟต์แวร์ประเภท Open Source ได้เช่นกัน