> For the complete documentation index, see [llms.txt](https://think-embedded.gitbook.io/micropython/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://think-embedded.gitbook.io/micropython/micropython-for-stm32/micropython-firmware-flashing-for-stm32.md).

# MicroPython Firmware Flashing for STM32

การติดตั้งไฟล์เฟิร์มแวร์ของไมโครไพธอนสำหรับบอร์ดไมโครคอนโทรลเลอร์ STM32

ขั้นตอนการดำเนินการสำหรับบอร์ด **STM32** &#x20;

* ถ้าใช้บอร์ด **WeAct STM32F411CEU6 (Black Pill)** ให้ดาวน์โหลดและติดตั้งไฟล์ [**MicroPython Firmware (pre-built binary file)**](https://github.com/WeActTC/MiniF4-STM32F4x1/tree/master/SDK/STM32F411CEU6/MicroPython) จาก **Github** ซึ่งมีประเภทของไฟล์ให้เลือก เช่น **.hex** หรือ **.dfu** และยังจำแนกตามรูปแบบการใช้หน่วยความจำ **Flash**
  * กรณีที่ใช้เฉพาะ **Internal Flash** (ไม่มี **External SPI Flash Chip**)
  * กรณีที่ใช้ **External SPI Flash 4MB**
  * กรณีที่ใช้ **External SPI Flash 8MB**
* ถ้าใช้บอร์ด **STM32 Nucleo** หรือ **Discovery** ให้ดาวน์โหลดไฟล์ **.dfu** ได้จาก <https://micropython.org/download/stm32/>
* **Windows**: ให้ดาวน์โหลดซอฟต์แวร์ของบริษัท **STMicroelectronics** แล้วติดตั้งในระบบให้พร้อมใช้งาน (มีขั้นตอนการรีจิสเตอร์ผู้ใช้ก่อน จึงจะสามารถดาวน์โหลดไฟล์จากเว็บไซต์ของทางบริษัทได้) มีอยู่ 3 ตัวเลือกดังนี้
  * โปรแกรม [**STM32 ST-Link Utility**](https://www.st.com/en/development-tools/stsw-link004.html) ถ้าใช้วิธีโปรแกรมผ่าน **SWD** (วิธีที่ 1) หรือ
  * โปรแกรม [**DfuSe**](https://www.st.com/en/development-tools/stsw-stm32080.html#get-software) ถ้าโปรแกรมด้วยวิธี **DFU** (วิธีที่ 2) หรือ
  * โปรแกรม [**STM32CubeProgrammer**](https://www.st.com/en/development-tools/stm32cubeprog.html) (ได้ทั้งวิธีที่ 1 และ 2) <= แนะนำให้เลือกใช้ตัวเลือกนี้ และโปรแกรมสามารถใช้ได้ทั้งกับ **Windows** และ **Linux**
  * โปรแกรม [**dfu-util for Windows**](https://sourceforge.net/projects/dfu-util/files/) เช่น [**dfu-util-0.9-win64.zip**](https://sourceforge.net/projects/dfu-util/files/dfu-util-0.9-win64.zip/download)
* **Linux (Ubuntu, Raspbian OS)**: ให้ติดตั้งโปรแกรม เช่น **openocd, stlink-tools** และ **dfu-util** เพื่อเอาไว้ใช้งาน

**ข้อสังเกต:** ถ้าใช้บอร์ด **STM32 Nucleo** หรือ **Discovery** การแฟลชเฟิร์มแวร์ (**Firmware Flashing**) สามารถทำได้ง่าย เนื่องจากเมื่อเสียบสาย **USB** กับคอมพิวเตอร์ จะมองเห็น **Virtual Drive (USB Mass Storage)** ผู้ใช้สามารถลากไฟล์ **.bin** ไปวางใส่ได้เลย **(Drag & Drop**)&#x20;

## **การโปรแกรมด้วยวิธี SWD สำหรับ Windows**

ถ้ามีอุปกรณ์ **ST-Link/V2** สำหรับการโปรแกรมด้วยวิธี **SWD** ก็สามารถใช้ไฟล์ **.hex** ได้เลย ในเครื่องคอมพิวเตอร์ (**Windows**) จะต้องมีการติดตั้งโปรแกรม **STM32 ST-Link Utility** ไว้แล้ว

![รูปภาพ: อุปกรณ์ ST-Link V2 USB Dongle (Low-Cost)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdcB-nLCCWrXhTX-Nx%2F-MIdcSsYJ21S-GEl3AYg%2Fstlink_v2_usb_dongle.jpeg?alt=media\&token=19880fcc-fd48-4e6c-b817-18261eb2418f)

![รูปภาพ: การเชื่อมต่ออุปกรณ์ ST-Link/V2 กับบอร์ด STM32F411CEU ที่ขา SWD](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdcB-nLCCWrXhTX-Nx%2F-MIdcV_4fzOWs1wQbCFM%2Fstm32f411_st-link_v2.jpeg?alt=media\&token=198b4d30-d77a-4086-aa6c-4c85eeaadce1)

&#x20;`STM32 (SWD) | ST-Link/V2` \
&#x20;  `GND <----------> GND`\
&#x20;  `SCK <----------> SWCLK`\
&#x20;  `DIO <----------> SWDIO`\
&#x20;  `3V3 <----------> 3.3V`

การเชื่อมต่อด้วยวิธี **SWD** จะใช้สายไฟเชื่อมต่อ 4 เส้น ระหว่างบอร์ด **STM32** กับอุปกรณ์ **ST-Link V2**

เมื่อเชื่อมต่อกับบอร์ด **STM32** ผ่านทาง **ST-Link V2** **USB** กับคอมพิวเตอร์ได้แล้ว ให้เปิดโปรแกรม **STM32 ST-Link Utility** จากนั้นไปที่เมนู **Target > Connect** ถ้าสามารถเชื่อมต่อได้ จะปรากฏข้อความระบุ **Device** ที่ตรวจพบ&#x20;

![รูปภาพ: ST-Link Utility และเปิดไฟล์ .hex สำหรับ WeAct STM32F411CEU](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIddyz4FJHQ6Uj9gWcd%2F-MIdephtiV3gb3QNVyls%2Fst-link_util_stm32f4_load_hex.png?alt=media\&token=bee2dd64-9b02-4bb6-b0e1-ee1c0d83bcf2)

ถัดไปให้เปิดไฟล์ **.hex** โดยทำคำสั่งจากเมนู **File > Open File** แล้วเลือกไฟล์ **.hex** ที่ต้องการจะโปรแกรมไปยังบอร์ดไมโครคอนโทรลเลอร์ จากนั้นทำขั้นตอน **Target > Program & Verify** (หรืออาจทำขั้นตอน **Erase Chip** ก่อนก็ได้ เพื่อเคลียร์หน่วยความจำ **Flash** ทั้งหมด)

![รูปภาพ: ข้อความแสดงสถานะการทำงานของ ST-Link Utility](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdfphHo933IxWcVCEM%2F-MIdgDeOlcwjQGHnLZZR%2Fst-link_util_stm32f4_flash_complete_message.png?alt=media\&token=a70f4b04-de41-474e-a764-d8aee7c725cc)

## **การโปรแกรมด้วยวิธี DFU สำหรับ Windows**

เมื่อได้ติดตั้งโปรแกรมชื่อ [**DfuSe**](https://www.st.com/en/development-tools/stsw-stm32080.html) ไว้สำหรับการอัปโหลดไฟล์เฟิร์มแวร์ด้วยวิธี **DFU** (**USB device firmware upgrade**) ถัดไปให้เตรียมอุปกรณ์ฮาร์ดแวร์ดังนี้ (ในกรณีที่ใช้บอร์ด **WeAct STM32F411CEU6**)

* เชื่อมต่อขา **A10 (PA0/USB\_FS\_ID**) ด้วยสาย **Jumper Wire** กับตัวต้านทาน **10k** แบบ **Pullup** ไปยัง **3.3V**
* เสียบสาย **USB-C** เชื่อมต่อบอร์ดไมโครคอนโทรลเลอร์กับคอมพิวเตอร์
* กดปุ่ม **BOOT0** กดค้างไว้ กดปุ่ม **RESET** แล้วจึงปล่อยปุ่ม **RESET** และ **BOOT0** ตามลำดับ

ถ้าต้องการจะแปลงไฟล์ **.hex** เป็น **.dfu** ก็ให้ใช้โปรแกรมชื่อ **DFU File Manager** ของ **DfuSe** โดยกดปุ่ม "**S19 or Hex"** แล้วเลือกไฟล์ **.hex** ตามด้วยการกดปุ่ม **Generate**

![รูปภาพ: การแปลงไฟล์ .hex ให้เป็น .dfu](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdgSk6sGhJxjVankoA%2F-MIdi6YUCKQYW7RzrdhY%2Fdfuse_hex_to_dfu.png?alt=media\&token=03628d6f-d371-4b1e-93b6-4e1f4af0ba40)

ถัดไปให้เปิดโปรแกรม **DfuSe Demo** ถ้าเชื่อมต่อบอร์ด **STM32** แล้วอยู่ในโหมด **DFU** จะมองเห็น **Vendor ID: 0483**, **Product ID: DF11** และ **Version: 2200**

![รูปภาพ: แสดงสถานะการมองเห็นอุปกรณ์ STM32 DFU Mode](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdisecd5Qo7uS_gX4o%2F-MIdjYLtxmFsHURDJFci%2Fdfuse_dfu_mode.png?alt=media\&token=3c869425-0c3a-4dfe-a1a5-184019edfca4)

กดปุ่ม **Choose…** ในส่วนของ **Upgrade or Verify Action** เลือกไฟล์ **.dfu** แล้วกดปุ่ม **Upgrade** เพื่อทำขั้นตอนสุดท้าย

![รูปภาพ: แสดงสถานะการเปิดไฟล์ .dfu ได้สำเร็จ](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdk-lLZEVDjOzS3bpq%2F-MIdkUkvWAzKuQtBgOyD%2Fdfuse_dfu_loaded.png?alt=media\&token=136a5295-d4f6-4bc4-a83b-5307db1ee853)

![รูปภาพ: ขั้นตอนการเขียนไฟล์ .dfu ไปยังบอร์ดไมโครคอนโทรลเลอร์](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdisecd5Qo7uS_gX4o%2F-MIdjs2KikaFn-gB6BDv%2Fdfuse_upgrading.png?alt=media\&token=564d5d4f-c6fc-4ba5-9c92-c2af4ccbc3e4)

ตัวอย่างสำหรับบอร์ด **STM32F405** (เข้าสู่ **DFU USB Bootloader** โดยต่อสายที่ขา **BOOT0** กับ **3.3V** แล้วกดปุ่มรีเซต) และเลือก [MicroPython Firmware: "Firmware for hand-made PYBv3 board"](https://micropython.org/download/pybv1/)

![รูปภาพ: บอร์ด STM32F405RGT6 Core Board](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MQGaLEFPBxDnlMpEjYp%2F-MQGanMwD1CxTL4u7aii%2Fstm32f405_micropython_board.png?alt=media\&token=c8041793-54d9-4e1b-9f46-0777b8a3f37a)

**ปัญหาที่พบ**

ถ้าได้ติดตั้งโปรแกรม [DfuSe ](https://www.st.com/en/development-tools/stsw-stm32080.html)และ [STM32CubeProgrammer](https://www.st.com/en/development-tools/stm32cubeprog.html) ของบริษัท **STMicroelectronics** สำหรับ **Windows 10** จะต้องเลือกใช้ **USB Driver** ให้ถูกต้อง

ลองใช้โปรแกรม [**USB Driver Tool**](https://visualgdb.com/UsbDriverTool/) ตรวจสอบรายการ **USB Drivers** ในระบบ (หรือเปลี่ยนตัวเลือก)

![รูปภาพ: STM32 Bootloader ใช้สำหรับ STM32CubeProgrammer](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MQGZIzeVx7nmbS0a1gI%2F-MQGZSbxdy0xmo9BYgTn%2Fwin10_stm32_dfu_driver-1.png?alt=media\&token=e1e0e21c-6282-4477-897a-ed43b3581a1e)

![รูปภาพ: STM32 Device in DFU Mode ใช้สำหรับ DfuSe Demo ](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MQGZIzeVx7nmbS0a1gI%2F-MQGZosisSEK8vtbM6i4%2Fwin10_stm32_dfu_driver-2.png?alt=media\&token=6e27f54b-0f58-4d4a-b289-ecac481b4af0)

## การใช้งาน **STM32CubeProgrammer สำหรับ Windows**

เราสามารถใช้ซอฟต์แวร์ **STM32CubeProgrammer** ซึ่งรองรับการใช้งานได้ทั้ง **SWD** (ใช้ร่วมกับ **ST-Link V2**) และ **DFU (USB)** และเลือกใช้ไฟล์ **.hex** ได้เลย (ไม่ต้องแปลงเป็น **.dfu**)&#x20;

การใช้งานโปรแกรมนี้ ก็ทำได้ง่าย เช่น เลือกใช้ **ST-Link** แล้วก็เชื่อมต่อกับบอร์ดไมโครคอนโทรลเลอร์ (**Connect**) จากนั้นเลือกไฟล์ **.hex** (**Open File**) แล้วก็กดปุ่ม **Download** เพื่อเขียนข้อมูลไปยังอุปกรณ์เป้าหมาย

![รูปภาพ: การเลือกอุปกรณ์ ST-LINK](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIgFwhv3jkU-VJ4O4g0%2F-MIgGv55wBqiJY4hMm6e%2Fstm32cubeprog_stlink-1.png?alt=media\&token=d058fd76-9700-4f0a-b35e-662529c6c5e6)

![รูปภาพ: การแฟลชไฟล์ .hex / .dfu ด้วยโปรแกรม STM32CubeProgrammer ](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIdl7gcmau3iZo_eoCG%2F-MIdlYg8umaxfA96KmJ0%2Fstm32cubeprog.png?alt=media\&token=383bee83-4584-4fe3-b5c7-2bec45b48f3a)

เมื่อติดตั้งเฟิร์มแวร์สำหรับไมโครไพธอนได้สำเร็จแล้ว และนำบอร์ด **STM32F411CEU6** ไปเชื่อมต่อเข้ากับพอร์ต **USB** ของคอมพิวเตอร์ (ใช้สาย **USB Type-C**) จะมองเห็นไดร์ฟชื่อ **STM32F411CE**

![รูปภาพ: รายการไฟล์ภายในไดร์ฟของบอร์ด STM32F411CE-MicroPython](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIgN87oakkZBfvC3PeH%2F-MIgQEfdWZoicrFqZRK9%2Fmicropython_stm32f411ce_drive.png?alt=media\&token=92e4e0c7-40cb-4eba-ba21-f2ae1e46574a)

## การใช้โปรแกรม stlink-tools สำหรับ Linux

ตัวอย่างการทำคำสั่งต่อไปนี้ ได้ทดลองใช้กับ **Raspbian OS** สำหรับบอร์ด **Raspberry Pi 4** แต่ก็นำไปใช้กับคอมพิวเตอร์ที่ทำงานด้วย **Linux Ubuntu** ได้เหมือนกัน

เริ่มต้นด้วยทำคำสั่งติดตั้งโปรแกรมนี้

`$ sudo apt-get install stlink-tools`

จากนั้นให้เชื่อมต่ออุปกรณ์ **ST-Link V2** กับบอร์ด **STM32F411CEU6** และพอร์ต **USB** ของคอมพิวเตอร์ แล้วทำคำสั่งต่อไปนี้ เพื่อลบข้อมูลทั้งหมดในหน่วยความจำ **Flash (Full Chip Erase)** และเขียนไฟล์ **.hex** ไปยังอุปกรณ์ ตามลำดับ

`$ st-flash erase`

`$ st-flash --reset write firmware_internal_rom_stm32f411_v1.12-540.hex 0x8000000`

![รูปภาพ: ตัวอย่างการทำคำสั่ง st-flash erase](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIgIqENyKrQPGVOvc0S%2F-MIgMlZe6jikagMEenXe%2Fstlink_tools_erase_chip_stm32f411.png?alt=media\&token=00f65213-fb29-4f97-af8f-188e32b973b7)

![รูปภาพ: ตัวอย่างการทำคำสั่ง st-flash write](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIgIqENyKrQPGVOvc0S%2F-MIgMp0VzfRdMP0DyRFx%2Fstlink_tools_flashing_stm32f411.png?alt=media\&token=8dcfbfdf-1470-46db-88b9-7f0d94740739)

## การใช้โปรแกรม dfu-util สำหรับ Linux

ตัวอย่างการทำคำสั่งต่อไปนี้ ได้ทดลองใช้กับ **Raspbian OS** สำหรับบอร์ด **Raspberry Pi 4** แต่ก็สามารถนำไปใช้กับคอมพิวเตอร์ที่ทำงานด้วย **Linux Ubuntu** ได้เหมือนกัน

เริ่มต้นด้วยการทำให้บอร์ด **STM32** เข้าโหมด **DFU Bootloader Mode** ก่อน จากนั้นจึงทำคำสั่งดังต่อไปนี้ เพื่อติดตั้งโปรแกรม แล้วจึงตรวจสอบดูว่า สามารถมองเห็นอุปกรณ์ในโหมด **DFU** หรือไม่

`$ sudo apt-get install dfu-util`

`$ dfu-util -d 0483:df11 -l`

จากนั้นให้ทำคำสั่งเพื่อเขียนไฟล์ **.dfu** ไปยังหน่วยความจำ **Flash** ภายในชิป **STM32** (ในตัวอยางนี้ได้ดาวน์โหลดไฟล์ **.dfu** ที่เป็นเฟิร์มแวร์ของไมโครไพธอนเวอร์ชัน **v1.12** สำหรับบอร์ด **WeAct STM32F411CEU6** มายังคอมพิวเตอร์ของผู้ใช้แล้ว)

`$ dfu-util -a 0 -D ./firmware_internal_rom_stm32f411_v1.12-540.dfu`

![รูปภาพ: ข้อความแสดงสถานะการเชื่อมต่อกับอุปกรณ์ในโหมด DFU](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIeGYFq5LbDaptxhRvh%2F-MIeJ7O795rfKY0OMong%2Fdfu_util_on_rpi4_connect.png?alt=media\&token=1bd11b5c-bdd2-4b86-a3d2-20632d97a189)

![รูปภาพ: ข้อความที่แสดงสถานะการทำงานของ dfu-util](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIeGYFq5LbDaptxhRvh%2F-MIeIoujmMulDLaG3MaD%2Fdfu_util_on_rpi4_flashing_success.png?alt=media\&token=b70e3805-31d9-4615-85b4-d4e7ee36d42e)

## การใช้โปรแกรม OpenOCD สำหรับ Linux

โปรแกรม **openocd** รองรับการใช้งานอุปกรณ์ **ST-LINK V2** เราจะมาลองใช้งานเป็นตัวอย่าง ตัวอย่างการทำคำสั่งต่อไปนี้ ได้ทดลองใช้กับ **Raspbian OS** สำหรับบอร์ด **Raspberry Pi 4** แต่ก็สามารถนำไปใช้กับคอมพิวเตอร์ที่ทำงานด้วย **Linux Ubuntu** ได้เหมือนกัน

เริ่มต้นด้วยการติดตั้งใช้งานโปรแกรมนี้ก่อน

`$ sudo apt-get install openocd libftdi-dev`

ถัดไปให้สร้างไฟล์ **./target\_stm32f4.cfg** ซึ่งเป็นการตั้งค่าการใช้งาน (**OpenOCD Configuration Settings**) ดังนี้

`source [find interface/stlink.cfg]` \
`transport select hla_swd` \
`source [find target/stm32f4x.cfg]` \
`telnet_port disabled` \
`gdb_port disabled` \
`reset_config none separate` \
`adapter speed 980`

เชื่อมต่ออุปกรณ์ให้พร้อม จากนั้นทำคำสั่งเพื่อลบข้อมูลในหน่วยความจำ **Flash** ของอุปกรณ์เป้าหมาย โดยทำคำสั่งดังนี้

`$ openocd -f ./target_stm32f4.cfg \`\
&#x20; `-c "init" -c "reset init" \`\
&#x20; `-c "stm32f2x unlock 0; reset halt" \`\
&#x20; `-c "flash erase_sector 0 0 last" \`\
&#x20; `-c "reset" -c "shutdown"`

คำสั่งถัดไปคือ การเขียนข้อมูลจากไฟล์เฟิร์มแวร์ไปยังอุปกรณ์เป้าหมาย

`$ export FIRMWARE=./firmware_internal_rom_stm32f411_v1.12-540.hex`\
\
`$ openocd -f ./target_stm32f4.cfg \`\
&#x20; `-c "init" -c "reset init" \`\
&#x20; `-c "program $FIRMWARE verify 0x8000000" \`\
&#x20; `-c "reset" -c "exit"`

![ีูรูปภาพ: แสดงข้อความเมื่อทำคำสั่ง openocd เพื่อเขียนไฟล์ .hex](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIgUSaTtlWnomuWA9-7%2F-MIgaZcmkZenlAedCIHm%2Fopenocd_stm32f411_flashing.png?alt=media\&token=e830e8e2-c793-46d7-b01c-83c4172f8b02)

## กล่าวสรุป

เราได้เห็นวิธีการและเครื่องมือประเภทซอฟต์แวร์ต่าง ๆ ที่เป็นตัวเลือกสำหรับการติดตั้งเฟิร์มแวร์ของไมโครไพธอน เพื่อให้ใช้ได้งานกับบอร์ดไมโครคอนโทรลเลอร์ **STM32** เช่น **STM32F411CEU6**&#x20;

เมื่อได้ติดตั้งเฟิร์มแวร์สำหรับไมโครไพธอนได้แล้ว ถัดไปก็สามารถลองใช้โปรแกรมอย่างเช่น **Thonny IDE** เชื่อมต่อไปยังบอร์ดไมโครคอนโทรลเลอร์ และทดลองเขียนโค้ดตามตัวอย่างในเนื้อหาถัดไป

{% hint style="info" %}
**เผยแพร่ภายใต้ลิขสิทธิ์**\
**Attribution-ShareAlike 4.0 International (**[**CC BY-SA 4.0**](https://creativecommons.org/licenses/by-sa/4.0/)**)**
{% endhint %}
