# 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](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIK8sNsH7w-9Z3ePALS%2F-MIKB4fJ3ft0V3Ex8hdb%2Fmicrobit-overview_v1_5_illustrated.png?alt=media\&token=b531d22d-df5f-4d10-b605-6257b71b513d)

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

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

{% file src="<https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIO5sJHV8MLa1ZH6x65%2F-MIO67sIfbhUKHvUpcFk%2FSCH_BBC-Microbit_V1.3B.pdf?alt=media&token=e2734417-024d-4bb4-a6da-81fbe19d844f>" %}
Schematic File v1.3B
{% endfile %}

{% file src="<https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIO5sJHV8MLa1ZH6x65%2F-MIO6J7ruurZpxi3dG8p%2FSCH_BBC-Microbit_V1.5.pdf?alt=media&token=6c5a87d8-febc-45a7-be04-39dccfe9b8dc>" %}
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](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MINPTIEHC7ZzGAkU3qj%2F-MINPw0sb3SLkW-x0stK%2Fmicrobit_pins.png?alt=media\&token=d4dfa2fd-621d-45c6-b86f-786be6ca34e7)

**ข้อสังเกต:** ขา **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)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MINuWsMaGhV47SQYsk8%2F-MINvaQVHzRDFn-2EDJo%2Fmicro_edge_connector-1.jpg?alt=media\&token=ff8098d3-6563-4f2b-b66f-1e4e33f8e645)

![รูปภาพ: ตัวอย่างโมดูล Edge Connector (ของบริษัท Keyestudio)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MINuWsMaGhV47SQYsk8%2F-MINvesxP0H10v1sPGm4%2Fmicro_edge_connector-2.jpg?alt=media\&token=64154015-6575-4fad-b2b9-b05f4e99be4c)

![ตารางเปรียบเทียบบอร์ดไมโครบิต v1.5 กับ v2 (Source: https://tech.microbit.org/)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJVXcPtG4L9KaesXMQM%2F-MJVYBu55YsGflZAJKPU%2Fmicrobit_comparison-table.png?alt=media\&token=f2e25d06-20df-4b54-b260-7f64cad94191)

![รูปภาพ: Online Document MicroPython API for Micro:bit](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIK3YalF_QVN9KViQ2f%2F-MIK5EAnpP6zzkHqRHUN%2Fmicropython_microbit_api_display.png?alt=media\&token=f56a26cb-dff3-4df8-a36d-da5bdee20b59)

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

รูปแบบการเขียนโปรแกรมสำหรับไมโครบิตที่คนส่วนใหญ่รู้จักและใช้งานกัน เป็นวิธีการต่อบล็อก (**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#](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](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIX4LxXZvP_xnqhEbAk%2F-MIXA0ycKf2RVSk9_IGr%2Fthonny_microbit-2.png?alt=media\&token=3722e62c-4fb5-4d08-8166-57e074a305b9)

![รูปภาพ: การตั้งค่าใช้งาน Thonny IDE สำหรับบอร์ดไมโครบิต](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIqm7Bd0-QAUF6h89Ci%2F-MIqmMWQUrUY0tFf7w8M%2Fthonny_microbit_setting-1.png?alt=media\&token=e2469acb-4985-4c94-8364-087a27991256)

![รูปภาพ: Online Python Editor for Micro:bit (Version 2.0)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIK3YalF_QVN9KViQ2f%2F-MIK6Uxze1u6pY1LUGTt%2Fmicropython_microbit_v2.png?alt=media\&token=800d03a9-c73d-456e-9e83-e2bb8168027f)

![รูปภาพ: Online MakeCode Editor for Micro:bit (Version: Beta)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIK3YalF_QVN9KViQ2f%2F-MIK6ZXav5g0ry-5nYqP%2Fmakecode_microbit_beta.png?alt=media\&token=5a0fecb1-e69d-4a73-8e4a-9d3b8a1aff15)

![รูปภาพ: การเขียนโค้ดไพธอนสำหรับไมโครบิต โดยใช้ Online MakeCode Editor](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIN04K3IUmJ7jDTkcCl%2F-MIN2ZQAa2cc8I0u2Rk2%2Fmakecode_python_demo-1.png?alt=media\&token=83114336-0f2f-4e73-bfa7-4343a1bfdba1)

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

ชุดคำสั่ง (**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](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIM5HjPSPnLIsoSslJx%2F-MIM5uyfHN3DE3dP2iOG%2Fpython_microbit_code-1.png?alt=media\&token=6df23be7-8b58-4c69-bb1e-02ee727b7313)

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

```python
from microbit import *

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

![รูปภาพ: ขั้นตอนการอัปโหลดโค้ดไปยังบอร์ดไมโครบิต (Flashing)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIM5HjPSPnLIsoSslJx%2F-MIM5Lb6u3Uw9YhHfNbs%2Fpython_microbit_flashing.png?alt=media\&token=a63810c4-a400-471c-83e2-3fc76372e041)

![รูปภาพ: การทำขั้นตอน Load หรือ Save File](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIM5HjPSPnLIsoSslJx%2F-MIM7le_Gm1f4C7jmEUR%2Fpython_microbit_editor_load_save.png?alt=media\&token=ef3804b1-e6c9-4d35-a7d4-ee53b00e04e7)

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

![รูปภาพ: ตัวอย่างการทำคำสั่งใน REPL Shell สำหรับ MicroPython](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MIWrtw-2usebR-gQhO9%2F-MIWsoY4P4spORGFVNHG%2Fpython_microbit_repl.png?alt=media\&token=473e07b4-e581-4d3c-8c9b-d815d4f76709)

นอกจากความสามารถในการทดลองคำสั่งต่าง ๆ และรันโค้ดโดยใช้บอร์ดไมโครบิตได้ทันทีแล้ว  ประโยชน์อีกประการหนึ่งของ **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](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJVYWH2SJwNN8EaH7L5%2F-MJVjsisouyg4OPaCBVx%2Fwsl_micropython_editor.png?alt=media\&token=2cc4f4a1-fc3e-454e-abf8-22693cde1af1)

![รูปภาพ: ทดลองใช้งาน Python Editor v2.0.1 for Micro:bit (localhost)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJVYWH2SJwNN8EaH7L5%2F-MJVk-4A46AvC75ZfEsl%2Fmicropython_editor_local.png?alt=media\&token=0e6594af-0fcb-420a-be76-7d96f81e1b70)

## การใช้งาน 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)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJF9CkfTpPjiPAgp2Q_%2F-MJFA29vQBiLhrM0hVcv%2Fmu_editor_main.png?alt=media\&token=d07f50be-1019-4557-94aa-dcb3cb24bf34)

ส่วนบนในหน้าต่างหลักของ **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](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJF9CkfTpPjiPAgp2Q_%2F-MJFADtERIyN0FdESIw6%2Fmu_micropython_microbit.png?alt=media\&token=837ea605-d1f8-4b6f-8253-a7aa5c32ecd3)

![รูปภาพ: แสดงรายการไฟล์ในหน้าต่างของ Mu Editor](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJF9CkfTpPjiPAgp2Q_%2F-MJFAOaf8k-3HfWYXZyK%2Fmu_editor_microbit_files.png?alt=media\&token=fc641803-b272-4d86-b3e3-bfb16ba22439)

![รูปภาพ: เปิดใช้งาน REPL Shell ใน Mu Editor](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJF9CkfTpPjiPAgp2Q_%2F-MJFAbDNELWUPA8Z_iFA%2Fmu_editor_microbit_repl_shell.png?alt=media\&token=ac97d39c-0aa6-4423-a135-324a68c8ed3a)

## การติดตั้งเฟิร์มแวร์ไมโครไพธอนโดยใช้ 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** แล้วรอจนเสร็จขั้นตอน

![รูปภาพ: การทำขั้นตอนติดตั้งเฟิร์มแวร์สำหรับไมโครไพธอน](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJev5TYcB-BH5WUKJsR%2F-MJexUSvFfreyLiz5P_C%2Fthonny_micropython_firmware_install.png?alt=media\&token=0620649e-0c2d-4ee1-80db-91b320210799)

![รูปภาพ: ขณะที่ทำการติดตั้งเฟิร์มแวร์ไปยังบอร์ดไมโครบิต](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MJev5TYcB-BH5WUKJsR%2F-MJexfIFFGmgca9qaQbh%2Fthonny_micropython_flashing-2.png?alt=media\&token=fa60981a-e6c5-4fbb-8a65-2d04e1e2b1e6)

## กล่าวสรุป

บอร์ด **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 %}
