# BBC Micro:bit Overview

## บอร์ดไมโครบิต

**Python** (ไพธอน) เป็นภาษาคอมพิวเตอร์หนึ่งในหลายภาษาที่ได้รับความนิยมอย่างมาก ได้เริ่มเผยแพร่มาตั้งแต่ราวปีค.ศ. **1991** ถูกพัฒนาขึ้นครั้งแรกโดย **Guido Van Rossum** และหลายคนก็คิดว่า เป็นภาษาคอมพิวเตอร์ที่ง่ายต่อการเรียนรู้สำหรับผู้เริ่มต้น

ไพธอนเป็นซอฟต์แวร์ประเภท **Open Source** มีการแบ่งออกเป็นสองเวอร์ชันคือ **Python 2** และ **Python 3** (แต่สำหรับ **Python 2** ไม่มีการพัฒนาต่อไป ตั้งแต่ 1 มกราคม ค.ศ. **2020**)&#x20;

ในปัจจุบันก็มีตัวเลือกหลากหลายสำหรับซอฟต์แวร์ประเภท **IDE** ที่รองรับการเขียนโค้ดภาษานี้ และใช้งานได้ฟรี ทั้งแบบ **Offline** และ **Online** (**Web-based/Cloud-based IDE**)

**คำถาม**: ถ้าอยากจะใช้ภาษา **Python 3** และเขียนโค้ดเพื่อใช้งานสำหรับไมโครคอนโทรลเลอร์ จะเป็นไปได้หรือไม่ ?

ในเดือนมีนาคมปีค.ศ. **2015** ทาง **BBC** (**British Broadcasting Corp.**) ซึ่งเป็นสถานีโทรทัศน์สื่อสาธารณะของสหราชอาณาจักร ได้เปิดตัวโครงการบอร์ด [**BBC Micro:bit**](https://en.wikipedia.org/wiki/Micro_Bit) (ไมโครบิต) ภายใต้ชื่อ [**BBC’s Make It Digital Campaign**](https://www.bbc.co.uk/programmes/articles/1gkwk58DPmRzt2TzDp3pr9x/about-make-it-digital) โดยมีวัตถุประสงค์ เพื่อส่งเสริมการเรียนรู้ด้านโค้ดดิ้งและวิทยาการคำนวณให้แก่เยาวชน และมีการแจกจ่ายบอร์ดไปยังโรงเรียนต่าง ๆ ในประเทศอังกฤษ

บอร์ดไมโครบิต มีชิป [**nRF51822** ](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF51822)**(32-bit ARM Cortex-M0)** ของบริษัท [**Nordic Semiconductor**](https://www.nordicsemi.com/) เป็นตัวประมวลผลหลัก มีหน่วยความจำแบบ **Flash** ขนาด **256 KB** หน่วยความจำแบบ **SRAM** ขนาด **16 KB** และใช้ความเร็วในประมวลผลที่ความถี่ **16 MHz**&#x20;

บอร์ดไมโครบิตใช้แรงดันไฟเลี้ยงจากพอร์ต **microUSB (5V)** แต่วงจรบนบอร์ดนั้นทำงานที่ระดับแรงดัน **3.3V** หรือจะใช้แบตเตอรี **3V (2x 1.5V)** ต่อเข้าที่ช่อง **Battery Connector** (ระวังการต่อกลับขั้ว + และ -) เป็นแหล่งจ่ายไฟเลี้ยงแทน **USB** ก็ได้ (ศึกษาข้อมูลเพิ่มเติมได้จาก [**Micro:bit Power Supply**](https://tech.microbit.org/hardware/powersupply/))

ผู้อ่านสามารถศึกษาข้อมูลเพิ่มเติมเกี่ยวกับรายละเอียดในเชิงฮาร์ดแวร์ของบอร์ดไมโครบิตได้จาก [**https://tech.microbit.org/hardware/**](https://tech.microbit.org/hardware/)&#x20;

![รูปภาพ: BBC Micro:bit Board](/files/-MIKB4fJ3ft0V3Ex8hdb)

**Micro:Bit Schematic Files (PDF)**

ทางผู้พัฒนาได้แชร์ไฟล์ [**Schematic**](https://github.com/bbcmicrobit/hardware) เช่น สำหรับบอร์ดเวอร์ชัน **v1.3B** และ **v1.5** (ให้ลองศึกษาผังวงจรของบอร์ดไมโครบิต เพื่อเป็นกิจกรรมการเรียนรู้ด้านระบบสมองกลฝังตัว)

{% file src="/files/-MIO67sIfbhUKHvUpcFk" %}
Schematic File v1.3B
{% endfile %}

{% file src="/files/-MIO6J7ruurZpxi3dG8p" %}
Schematic File v1.5
{% endfile %}

**ข้อสังเกต**: ขอบด้านหนึ่งของบอร์ดไมโครบิต เป็นบริเวณที่เรียกว่า [**Edge Connector**](https://tech.microbit.org/hardware/edgeconnector/) และมีทั้งสองด้าน (**Front & Back Side**) แต่ไม่เหมือนขา **Pin Header** แบบทั่วไป ขามีลักษณะเป็น **Pads** มีสองขนาด ขาที่มีขนาดใหญ่กว่าปรกติ และมีการเจาะรูขนาด 4 มม. ได้แก่ **0**, **1**, **2** (หรือ **P0**, **P1**, **P2**) ซึ่งเป็นขา **I/O** (เรียกว่า **Touch Pads**) และ **3V** กับ **GND** สามารถนำใช้เพื่อจ่ายแรงดันไฟเลี้ยง **+3.3V** ให้อุปกรณ์อื่นได้ (แต่ต้องใช้ปริมาณกระแสไม่มาก โดยรวมไม่ควรเกิน **100 mA**)&#x20;

![รูปภาพ: Micro:bit (v1) Edge Connector & Pins](/files/-MINPw0sb3SLkW-x0stK)

**ข้อสังเกต:** ขา **P0**, **P1**, **P2** (หรือ **PAD1**, **PAD2**, **PAD3**) สามารถใช้เป็นขา **Touch Input** ได้ เนื่องจากมีตัวต้านทานขนาด **10 เมกกะโอห์ม** ที่ขาเหล่านั้นต่อไปยัง **VCC (+3.3V)** &#x20;

ในการต่อวงจรภายนอก อาจจำเป็นต้องใช้โมดูลเสริม เพื่อนำบอร์ดไมโครบิตมาเสียบเข้าที่บริเวณ **Edge Connector** ในปัจจุบันก็มีหลายบริษัทที่ผลิตโมดูลหรืออุปกรณ์เสริมประเภทนี้ออกมาจำหน่าย ดังนั้นควรศึกษาคู่มือการใช้งาน ก่อนนำมาใช้สำหรับการต่อวงจร

{% hint style="info" %}
ในวันที่ **13 ตุลาคม ค.ศ. 2020** ทาง [**Micro:bit Educational Foundation**](https://microbit.org/) ได้เปิดตัวบอร์ดไมโครบิตเวอร์ชันใหม่ ([**Micro:bit V2 Revision**](https://tech.microbit.org/latest-revision/)) ที่แตกต่างหรืออัปเกรดจากเวอร์ชันแรก เช่น การเลือกใช้ตัวประมวลผลที่มีประสิทธิภาพสูงขึ้น คือ [**nRF52833**](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52833) **(64MHz Cortex-M4F, 512kB Flash, 128kB RAM)** ซึ่งรองรับการสื่อสารไร้สายคลื่น **2.4GHz** เช่น **Bluetooth 5.0 / Bluetooth Mesh**, **Thread**, **Zigbee** \
\
บอร์ดรุ่นใหม่นี้ได้เพิ่มไอซีประเภท **MEMS Microphone** สำหรับใช้เป็นไมโครโฟนดิจิทัลรับสัญญาณเสียง และมีลำโพงเสียง (**Onboard Speaker**) เป็นต้น แต่ยังคงขนาดและส่วนเชื่อมต่อ **Edge Connector** ให้เหมือนเวอร์ชันแรก
{% endhint %}

![รูปภาพ: ตัวอย่างโมดูล Edge Connector (ElecFreaks sensor:bit)](/files/-MINvaQVHzRDFn-2EDJo)

![รูปภาพ: ตัวอย่างโมดูล Edge Connector (ของบริษัท Keyestudio)](/files/-MINvesxP0H10v1sPGm4)

![ตารางเปรียบเทียบบอร์ดไมโครบิต v1.5 กับ v2 (Source: https://tech.microbit.org/)](/files/-MJVYBu55YsGflZAJKPU)

![รูปภาพ: Online Document MicroPython API for Micro:bit](/files/-MIK5EAnpP6zzkHqRHUN)

## ตัวเลือกสำหรับการเขียนโค้ด

รูปแบบการเขียนโปรแกรมสำหรับไมโครบิตที่คนส่วนใหญ่รู้จักและใช้งานกัน เป็นวิธีการต่อบล็อก (**Block-based Coding**) บนหน้าเว็บเบราว์เซอร์ ซึ่งจะถูกแปลงให้เป็นโค้ดในภาษา [**Static TypeScript (STS)**](https://www.microsoft.com/en-us/research/publication/static-typescript/) และไฟล์ **.hex** ได้โดยอัตโนมัติ การทำงานในส่วนนี้เป็นผลงานโดยทีมวิจัยของบริษัท **Microsoft** ภายใต้โปรเจกต์ที่มีชื่อว่า [**MakeCode**](https://makecode.com/about) หรือ [**PXT**](https://github.com/Microsoft/pxt) **(Programming Experience Toolkit)**

ข้อดีของการใช้งาน **Microsoft MakeCode** สำหรับผู้เริ่มต้นคือ สามารถใช้วิธีการเขียนโค้ดแบบต่อบล็อกซึ่งเป็นวิธีที่ง่าย ถัดไปสามารถเรียนรู้ตัวอย่างการเขียนโค้ดด้วยภาษา **JavaScript / Static TypeScript** หรือ **Python** สำหรับไมโครบิต ช่วยให้เห็นความเชื่อมโยงระหว่างสองรูปแบบในการเขียนโค้ดได้ (**Visual** และ **Text-based**)

ในปี ค.ศ. **2015** ราวเดือนตุลาคม **Damien George** ก็ได้เผยแพร่เวอร์ชันของ [**MicroPython**](https://github.com/bbcmicrobit/micropython) (ไมโครไพธอน) ที่สามารถใช้งานร่วมกับบอร์ดไมโครบิตได้ นอกจากนั้นได้มีการพัฒนา **Web App** เป็น [**Online MicroPython Editor**](https://python.microbit.org/) ให้ผู้ใช้สามารถเขียนโค้ด โดยใช้เว็บเบราว์เซอร์ได้ด้วย ดังนั้นภาษาไมโครไพธอน ก็เป็นอีกหนึ่งตัวเลือกที่น่าสนใจสำหรับบอร์ดไมโครบิต

ผู้ที่สนใจสามารถศึกษาเพิ่มเติมได้จากเอกสารออนไลน์ (**Online Documentation**) ที่ทางทีมผู้พัฒนาได้จัดทำไว้ เช่น

* [**BBC micro:bit MicroPython API documentation**](https://microbit-micropython.readthedocs.io/en/latest/microbit_micropython_api.html)
* [**BBC micro:bit MicroPython tutorial**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/introduction.html)

## **ตัวเลือกซอฟต์แวร์ IDE สำหรับเขียนโค้ด**&#x20;

หลังจากได้ติดตั้งไฟล์เฟิร์มแวร์ของไมโครไพธอนไว้ในหน่วยความจำ **Flash** ของบอร์ดไมโครคอนโทรลเลอร์แล้ว เราสามารถใช้วิธีสื่อสารผ่านทาง **USB-to-Serial** ระหว่างบอร์ดไมโครบิตกับคอมพิวเตอร์ของผู้ใช้ เช่น การทำคำสั่งหรือรันโค้ดผ่านทางรูปแบบที่เรียกว่า [**REPL** ](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop)**prompt** **(Read Evaluate Print Loop**) และการสร้างไฟล์ใหม่ แก้ไขและบันทึกไฟล์ **.py** ไว้ในระบบไฟล์ (**Flash-based** **File System**) ของไมโครไพธอน เป็นต้น

ในปัจจุบันก็มีหลายตัวเลือกในกลุ่มซอฟต์แวร์ประเภท **Editors / IDEs** ที่ใช้งานได้ จำแนกออกเป็นประเภท **Offline** (ต้องติดตั้งโปรแกรมในเครื่องคอมพิวเตอร์ของผู้ใช้) และ **Online** (ใช้งานผ่านเว็บเบราว์เซอร์) และในบางกรณีเราก็สามารถจำลองการทำงานของโค้ดโดยไม่จำเป็นต้องใช้ฮาร์ดแวร์จริงได้&#x20;

* **MicroPython Editor for Microbit (Online):**\
  <https://python.microbit.org/v/2.0>
* **Microsoft MakeCode Editor (Version: beta):**\
  <https://makecode.microbit.org/beta#>
* **Mu Editor**: \
  <https://codewith.mu/en/download>
* **Thonny IDE**: \
  <https://thonny.org/>
* **EduBlocks Python Editor (Online):**\
  <https://app.edublocks.org/#MicroBit>
* **PyCharm IDE (Community edition) + Plugin:**\
  <https://plugins.jetbrains.com/plugin/9777-micropython>
* **Microsoft VS Code +** [**Device Simulator Express**](https://marketplace.visualstudio.com/items?itemName=ms-python.devicesimulatorexpress)**:**\
  <https://www.microsoft.com/en-us/garage/profiles/device-simulator-express/>

ซอฟต์แวร์ที่เป็น **Web App** อย่างเช่น **Python Editor for Micro:bit** ([**Source Code**](https://github.com/bbcmicrobit/PythonEditor)) และ **Microsoft MakeCode for Micro:bit** ([**Source Code**](https://github.com/microsoft/pxt-microbit)) ทำงานโดยใช้เว็บเบราว์เซอร์ เช่น **Chrome** บนเครื่องคอมพิวเตอร์ของผู้ใช้ ไม่ต้องติดตั้งซอฟต์แวร์ และเมื่อเสียบสาย **USB** เชื่อมต่อกับบอร์ด เราก็สามารถดาวน์โหลดโค้ดที่เขียนไปยังบอร์ดไมโครบิตทางผ่าน [**WebUSB**](https://wicg.github.io/webusb/) ได้ค่อนข้างสะดวก

**Python Editor for Micro:bit** เหมาะสำหรับการฝึกเขียนโค้ดด้วยภาษา **MicroPython** และทดสอบการทำงานของโค้ดโดยใช้บอร์ดไมโครบิต ในขณะที่ **Microsoft MakeCode for Micro:bit** สามารถเขียนโค้ดด้วยวิธีการต่อบล็อก (ฺ**Block Mode**) หรือเลือกเขียนโค้ด (**Text Mode**) ในโหมดภาษา **Python** (แต่ **MakeCode Python** ใช้ชุดคำสั่งและมีหลักการทำงานที่แตกต่างจาก **MicroPython for Micro:bit**) หรือใช้ภาษา [**Static TypeScript**  (**STS**) ](https://www.microsoft.com/en-us/research/publication/static-typescript/)อย่างใดอย่างหนึ่งได้ อีกทั้งสามารถจำลองการทำงานได้ด้วย (มี **built-in Simulator**)

[**Thonny IDE**](https://thonny.org/) และ [**Mu Editor**](https://codewith.mu/) สามารถนำมาใช้เป็น **IDE** แบบ **Offline** สำหรับเขียนโค้ดไมโครไพธอน สามารถได้กับบอร์ดไมโครบิต บอร์ด **STM32** และบอร์ด **ESP32** เป็นต้น เพื่อทดสอบการทำงานของโค้ดด้วยฮาร์ดแวร์จริง

ถ้าเลือกใช้ **Microsoft VS Code +** [**Device Simulator Express Extension**](https://marketplace.visualstudio.com/items?itemName=ms-python.devicesimulatorexpress) เป็น **IDE** สำหรับเขียนโค้ดไมโครไพธอน ก็อาจดูซับซ้อนกว่า แต่ก็จำลองการทำงานของโค้ดได้เช่นกัน

![รูปภาพ: Thonny IDE Editor](/files/-MIXA0ycKf2RVSk9_IGr)

![รูปภาพ: การตั้งค่าใช้งาน Thonny IDE สำหรับบอร์ดไมโครบิต](/files/-MIqmMWQUrUY0tFf7w8M)

![รูปภาพ: Online Python Editor for Micro:bit (Version 2.0)](/files/-MIK6Uxze1u6pY1LUGTt)

![รูปภาพ: Online MakeCode Editor for Micro:bit (Version: Beta)](/files/-MIK6ZXav5g0ry-5nYqP)

![รูปภาพ: การเขียนโค้ดไพธอนสำหรับไมโครบิต โดยใช้ Online MakeCode Editor](/files/-MIN2ZQAa2cc8I0u2Rk2)

## **ชุดคำสั่งของไมโครไพธอนสำหรับไมโครบิต**

ชุดคำสั่ง (**API)** ของไมโครไพธอนสำหรับไมโครบิต แบ่งเป็นกลุ่มตามฟังก์ชันการทำงานได้ดังนี้

* [**Display**](https://microbit-micropython.readthedocs.io/en/latest/display.html) เป็นกลุ่มคำสั่งที่เกี่ยวข้องกับการแสดงผลบนแผง **5x5 LED Matrix** (**Screen**) สีแดงขนาดเล็ก (มีลักษณะเป็น **SMD LEDs**) บนบอร์ดไมโครบิต (อยู่ด้านที่เรียกว่า ด้านหน้า หรือ **Front Side**) เช่น ใช้ในการแสดงตัวเลข หรือข้อความแบบเลื่อนไป &#x20;
* [**Images**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/images.html) เป็นกลุ่มคำสั่งที่เกี่ยวข้องกับการกำหนดชื่อของรูปกราฟิกหรือไอคอนที่ได้มีการประกาศใช้งานไว้แล้ว
* [**Buttons**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/buttons.html) เป็นกลุ่มคำสั่งเกี่ยวข้องกับปุ่มกดบนบอร์ดไมโครบิต (มีสองปุ่มได้แก่ **A** และ **B**) เช่น ตรวจสอบดูว่า มีการกดปุ่ม **A** หรือ **B** หรือไม่ หรือระบุว่า มีการกดปุ่มไปแล้วกี่ครั้งหลังจากที่ได้ตรวจสอบไปคราวที่แล้ว เป็นต้น
* [**Input/Output**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/io.html) หรือ **Pins** กลุ่มคำสั่งเกี่ยวกับการใช้งานขา **I/O** ที่ **Edge Connector** ของบอร์ดไมโครบิต เช่น การกำหนดค่าให้ขาเอาต์พุต-ดิจิทัล การอ่านค่าจากขาอินพุต-ดิจิทัล การอ่านค่าจากขาอินพุต-แอนะล็อก การสร้างสัญญาณเอาต์พุตแบบ **PWM** และการตรวจสอบสถานะของขาแบบสัมผัส เป็นต้น
* [**Music**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/music.html) เป็นกลุ่มคำสั่งเกี่ยวกับการสร้างสัญญาณเอาต์พุตให้เป็นเสียงดนตรี เมื่อนำไปต่อกับวงจรประเภทบัซเซอร์เสียง (**Sound Buzzer**)
* [**Movement**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/movement.html) การอ่านค่าจากไอซีวัดความเร่งแบบสามแกน ([**Accelerometer**](https://microbit-micropython.readthedocs.io/en/latest/accelerometer.html)) ในแกน x, y, z ค่าที่อ่านได้มีหน่วยเป็น 1/1000 ของค่า g (หรือ milli-g)
* [**Gestures**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/gestures.html) เป็นกลุ่มคำสั่งที่ใช้ **Accelerometer** (ไอซีตรวจวัดความเร่ง) ตรวจสอบท่าทางแบบต่าง ๆ ของบอร์ด เช่น การเอียง การวางคว่ำหรือหงายของบอร์ด การเขย่าบอร์ด เป็นต้น
* [**Compass**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/direction.html) เป็นกลุ่มคำสั่งสำหรับการอ่านค่าจากไอซีเข็มทิศแบบดิจิทัล (**Digital Compass**)
* [**I2C**](https://microbit-micropython.readthedocs.io/en/latest/i2c.html) เป็นกลุ่มคำสั่งสำหรับการสื่อสารข้อมูลกับอุปกรณ์อื่นด้วยบัส **I2C** โดยใช้ขาสัญญาณเพียง 2 เส้นคือ **SCL (Serial Clock Line)** และ **SDA (Serial Data Line)** และสามารถนำไปใช้เชื่อมต่อเพื่อรับส่งข้อมูลกับอุปกรณ์หรือโมดูลอิเล็กทรอนิกส์ได้หลายชนิด เช่น โมดูลเซ็นเซอร์ เป็นต้น
* [**SPI**](https://microbit-micropython.readthedocs.io/en/latest/spi.html) เป็นกลุ่มคำสั่งสำหรับการสื่อสารข้อมูลกับอุปกรณ์อื่นด้วยบัส **SPI** โดยใช้ขาสัญญาณ 3 เส้น ได้แก่ **SCK (Serial Clock), MOSI (Master-Out-Slave-In)** และ **MISO (Master-In-Slave-Out)** โดยทั่วไปแล้วก็จะมีอัตราการรับหรือส่งข้อมูลได้สูงกว่าบัส **I2C**
* [**UART**](https://microbit-micropython.readthedocs.io/en/latest/uart.html) เป็นกลุ่มคำสั่งสำหรับการสื่อสารข้อมูลกับอุปกรณ์อื่นแบบบิตอนุกรม (**Serial**) แบบไม่ต้องมีสัญญาณ **Clock** ควบคุม โดยใช้ขาสัญญาณ **TX** (ข้อมูลบิตส่งออก) และ **RX** (ข้อมูลบิตรับเข้า)
* [**Radio**](https://microbit-micropython.readthedocs.io/en/latest/tutorials/radio.html) เป็นกลุ่มคำสั่งสำหรับการติดต่อสื่อสารแบบไร้สายระหว่างบอร์ดไมโครบิตด้วย **Bluetooth** แม้ว่าบอร์ดไมโครบิตไม่ได้รองรับการใช้งานผ่าน **Wi-Fi** แต่การใช้ **Bluetooth** ก็ช่วยให้บอร์ดไมโครบิตสามารถสื่อสารกันเอง หรือสื่อสารกับคอมพิวเตอร์หรือสมาร์ทโฟนได้

{% hint style="info" %}
ผู้อ่านสามารถศึกษาคำสั่งต่าง ๆ ได้จากเอกสาร [**"BBC micro:bit MicroPython Documentation"** (PDF)](https://readthedocs.org/projects/microbit-micropython/downloads/pdf/latest/) และเวอร์ชันปัจจุบัน (ขณะที่จัดทำ **Gitbook** นี้) คือ Release 1.0.1 (Aug 24, 2020) จำนวน 139 หน้า หรือจะศึกษาจาก[เอกสารออนไลน์บนหน้าเว็บ](https://microbit-micropython.readthedocs.io/en/latest/)
{% endhint %}

## การใช้งาน Python Editor for Micro:bit

มีขั้นตอนดังนี้

* ให้เปิดเว็บเบราว์เซอร์ เช่น **Google Chrome** แล้วไปที่เว็บ  [**https://python.microbit.org/v/2.0**](https://python.microbit.org/v/2.0) หรือ [**https://python.microbit.org/v/beta**](https://python.microbit.org/v/beta) (ถ้าต้องการลองใช้เวอร์ชัน **Beta**)
* เสียบบอร์ดไมโครบิตกับคอมพิวเตอร์ด้วยสาย **USB** จากนั้นจะปรากฏ **Drive** ชื่อ **MICROBIT** ในเครื่องคอมพิวเตอร์
* ในแถบเมนูที่เป็นปุ่มกดของ **Python Editor** ให้กดปุ่ม **Connect** เพื่อเชื่อมต่อระหว่างคอมพิวเตอร์ของผู้ใช้กับบอร์ดไมโครบิต จากนั้นจะมี **Pop-up window** แสดงข้อความว่า "**BBC micro:bit CMSIS-DAP": paired** และให้กดปุ่ม **Connect** (ถ้าเชื่อมต่อได้ ชื่อปุ่มจะเปลี่ยนจาก **Connect** เป็น **Disconnect**)
* เมื่อเชื่อมต่อได้แล้ว ให้ลองใช้โค้ดตัวอย่าง และหลังจากได้เขียนโค้ดในบริเวณ **Code Editor** แล้ว ให้ตั้งชื่อไฟล์ในช่อง **Script Name** สำหรับโค้ดดังกล่าว
* กดปุ่ม **Flash** เพื่อทำการคอมไพล์โค้ด และอัปโหลดไปยังบอร์ด&#x20;
* ผู้ใช้สามารถบันทึกการแก้ไขลงไฟล์ (เก็บไว้ในเครื่องคอมพิวเตอร์ของผู้ใช้) โดยกดปุ่ม **Save** หรือถ้าต้องการเปิดไฟล์แก้ไข ก็ให้กดปุ่ม **Load** เป็นต้น&#x20;
* หรือจะโหลดไฟล์ **.hex** ที่ได้จากการแปลงโค้ดไมโครไพธอน มาเก็บไว้ในเครื่องคอมพิวเตอร์ของผู้ใช้ก็ได้เช่นกัน

![รูปภาพ: Python Editor for Micro:bit](/files/-MIM5uyfHN3DE3dP2iOG)

ตัวอย่างโค้ดสาธิตที่แสดงข้อความและรูปสัญลักษณ์ (หัวใจ) บน **5x5 LED Matrix Display**

```python
from microbit import *

while True:
    display.scroll('Hello, World!')
    display.show(Image.HEART)
    sleep(2000)
```

![รูปภาพ: ขั้นตอนการอัปโหลดโค้ดไปยังบอร์ดไมโครบิต (Flashing)](/files/-MIM5Lb6u3Uw9YhHfNbs)

![รูปภาพ: การทำขั้นตอน Load หรือ Save File](/files/-MIM7le_Gm1f4C7jmEUR)

หลังจากได้ลองใช้ **Python Editor** แล้ว ถัดไปก็ให้ศึกษาและทดลอง้โค้ดตัวอย่าง โดยใช้อุปกรณ์ฮาร์ดแวร์จริง (บอร์ดไมโครบิต) ให้เชื่อมต่อกับบอร์ดและอัปโหลดโค้ดตัวอย่าง (หรือการทำขั้นตอน **Flashing** สำหรับไฟล์ .hex) ได้แล้ว  ถ้าเราลองกดปุ่ม **Open Serial** จะเปลี่ยนไปหน้าสำหรับ **REPL** และถ้ากดปุ่ม **Ctrl+C** จะเข้าสู่โหมด **REPL Shell** และจะสังเกตเห็นสัญลักษณ์ **>>>** จากนั้นก็สามารถลองทำคำสั่งในภาษาไพธอนได้ ถ้าต้องการกลับไปสู่หน้า **Code Editor** และออกจาก **REPL Shell** ก็ให้กดปุ่ม **Close Serial** &#x20;

![รูปภาพ: ตัวอย่างการทำคำสั่งใน REPL Shell สำหรับ MicroPython](/files/-MIWsoY4P4spORGFVNHG)

นอกจากความสามารถในการทดลองคำสั่งต่าง ๆ และรันโค้ดโดยใช้บอร์ดไมโครบิตได้ทันทีแล้ว  ประโยชน์อีกประการหนึ่งของ **REPL Shell** คือ ถ้าเรารันโค้ดไพธอนแล้วเกิดปัญหา **Runtime Error**  เราสามารถเปิดดูข้อความใน **REPL** ผ่านทาง **Serial** ได้ เช่น ในกรณีที่ได้เขียนโค้ดไม่ถูกต้อง (**Invalid Syntax**) จะมีการระบุหมายเลขบรรทัดของโค้ดที่ทำให้เกิดข้อผิดพลาด เพื่อให้เราตรวจสอบและแก้ไข

## การใช้งาน Python Editor for Micro:bit แบบ Offline

ถ้าต้องการทดลองใช้งาน **Python Editor** แบบ **Offline (**&#xE40;ช่น ระบบปฏิบัติการ **Windows** หรือ **Linux)** สำหรับบอร์ดไมโครบิต ก็สามารถทำตามขั้นตอนที่ระบุไว้ในเอกสาร [**https://github.com/bbcmicrobit/PythonEditor**](https://github.com/bbcmicrobit/PythonEditor)

สำหรับผู้ใช้ **Windows 10** แนะนำให้ติดตั้งใช้งาน [**WSL/WSL2 Ubuntu for Windows**](https://docs.microsoft.com/en-us/windows/wsl/install-win10) จากนั้นจึงทำคำสั่งเพื่อติดตั้งและเปิดใช้งาน **Python Editor (**[**http://localhost:8000/editor.html**](http://localhost:8000/editor.html)**)**

![รูปภาพ: ตัวอย่างการทำคำสั่งเพื่อติดตั้งใช้งาน Python Editor for Micro:bit](/files/-MJVjsisouyg4OPaCBVx)

![รูปภาพ: ทดลองใช้งาน Python Editor v2.0.1 for Micro:bit (localhost)](/files/-MJVk-4A46AvC75ZfEsl)

## การใช้งาน Mu Editor สำหรับไมโครบิต

ถ้ายังไม่เคยติดตั้งและใช้งานซอฟต์แวร์ [**Mu Editor**](https://codewith.mu/en/download) ในเครื่องคอมพิวเตอร์ของผู้ใช้ ให้ดาวน์โหลดไฟล์และติดตั้งให้พร้อมใช้งานก่อน (เช่น สำหรับระบบปฏิบัติการ **Windows**,  **Mac OS X** หรือ **Raspbian** เป็นต้น)&#x20;

เมื่อได้เชื่อมต่อบอร์ดไมโครบิตกับเครื่องคอมพิวเตอร์ และเปิดใช้งานโปรแกรมนี้ จะมีการเลือกโหมดการทำงานสำหรับ **BBC Micro:bit** โดยอัตโนมัติ&#x20;

![รูปภาพ: หน้าต่างหลัก (Main Windows) ของ Mu Editor (v1.1.0alpha2)](/files/-MJFA29vQBiLhrM0hVcv)

ส่วนบนในหน้าต่างหลักของ **Mu Editor** เป็นแถบเมนูคำสั่ง หรือ ปุ่มไอคอน เช่น **Mode**, **New**, **Load**, **Save**, **Flash**, **Files**, **REPL** เป็นต้น&#x20;

* ถ้าจะสร้างไฟล์ใหม่เพื่อเขียนโค้ด ก็ให้กดปุ่ม **New**
* เมื่อเขียนหรือแก้ไขโค้ดไมโครไพธอนลงในบริเวณ **Code Editor Tab** แล้วบันทึกลงไฟล์ โดยกดปุ่ม **Save**&#x20;
* ถ้าต้องการทดสอบการทำงานของโค้ด ให้อัปโหลดไปยังบอร์ดไมโครบิต โดยกดปุ่ม **Flash** (โค้ดที่ถูกอัปโหลดไปนั้น จะบันทึกลงในไฟล์ชื่อ **main.py** เก็บไว้ใน **Flash Storage** ของอุปกรณ์ไมโครบิต)
* ถ้าต้องการดูรายการในเครื่องคอมพิวเตอร์ของผู้ใช้ และรายการไฟล์ใน **Flash Storage** ของอุปกรณ์ (ในหน่วยความจำของบอร์ดไมโครบิต) ให้กดปุ่ม **Files** จะมีการแสดงรายการแบ่งเป็น 2 กลุ่ม (แบ่งเป็นด้านซ้ายกับขวามือ) เราสามารถเลือกไฟล์จากกลุ่มหนึ่ง ลากไปวางใส่อีกกลุ่มหนึ่ง ซึ่งเป็นการสำเนาไฟล์ระหว่างคอมพิวเตอร์กับอุปกรณ์ไมโครบิต
* ถ้าต้องการเปิด **REPL Shell** เช่น เพื่อทำคำสั่ง หรือดูข้อความเอาต์พุตจากการทำงานของไมโครบิต ให้กดปุ่ม **REPL**&#x20;

![รูปภาพ: ตรวจสอบหรือเลือกโหมดการทำงานของ Mu Editor](/files/-MJFADtERIyN0FdESIw6)

![รูปภาพ: แสดงรายการไฟล์ในหน้าต่างของ Mu Editor](/files/-MJFAOaf8k-3HfWYXZyK)

![รูปภาพ: เปิดใช้งาน REPL Shell ใน Mu Editor](/files/-MJFAbDNELWUPA8Z_iFA)

## การติดตั้งเฟิร์มแวร์ไมโครไพธอนโดยใช้ Thonny IDE&#x20;

ถ้ายังไม่เคยใช้งานมาก่อน การติดตั้งเฟิร์มแวร์สำหรับไมโครไพธอนไปยังบอร์ดไมโครบิต สามารถทำได้ง่าย เช่น โดยใช้วิธีการลากไฟล์ [**.hex**](https://bitbucket.org/KauriRaba/thonny-microbit/src/master/thonnycontrib/microbit/firmware/) ไปใส่ลงในไดร์ฟชื่อ **MICROBIT** เมื่อเสียบสาย **USB** เชื่อมต่อกับคอมพิวเตอร์

อีกวิธีหนึ่งคือ การใช้โปรแกรม **Thonny IDE** ซึ่งมีขั้นตอนดังนี้

1. เปิดใช้งาน **Thonny IDE** (ในตัวอย่างนี้ใช้กับ **Ubuntu**)
2. เสียบสาย **USB** เชื่อมต่อบอร์ดไมโครบิตกับคอมพิวเตอร์ของผู้ใช้
3. เลือกเมนู **Run > Select Interpreter** จะปรากฏ **Tab** ให้เลือก "**MicroPython (BBC Micro:bit)"** และเลือก **Port** ที่ตรงกับบอร์ดไมโครบิต
4. จากนั้นกดปุ่ม **"Open the dialog for installing or upgrading Micropython on your device"** จากนั้นจะปรากฏหน้าต่าง **Dialog** ใหม่ ให้กดปุ่ม **Install** แล้วรอจนเสร็จขั้นตอน

![รูปภาพ: การทำขั้นตอนติดตั้งเฟิร์มแวร์สำหรับไมโครไพธอน](/files/-MJexUSvFfreyLiz5P_C)

![รูปภาพ: ขณะที่ทำการติดตั้งเฟิร์มแวร์ไปยังบอร์ดไมโครบิต](/files/-MJexfIFFGmgca9qaQbh)

## กล่าวสรุป

บอร์ด **BBC Micro:bit** เป็นหนึ่งตัวอย่างของบอร์ดไมโครคอนโทรลเลอร์ที่ได้รับความนิยมทั่วโลก มีการนำมาใช้ในโรงเรียนสำหรับฝึกเขียนโค้ดโดยเริ่มต้นด้วยวิธีการต่อบล็อก ดังนั้นการฝึกเขียนโค้ดภาษาไพธอน (ไมโครไพธอน) และการนำมาใช้งานร่วมกับอร์ดไมโครบิตได้ก็เป็นอีกหนึ่งกิจกรรมเรียนรู้ที่น่าสนใจ

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://think-embedded.gitbook.io/micropython/micropython-for-bbc-micro-bit/bbc-micro-bit-overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
