# CircuitPython with Piper Make

## Piper Make Editor

[**Piper Make**](https://make.playpiper.com/) เป็น **Online Code Editor / Drag-and-Drop Coding Platform** สำหรับการเขียนโค้ดด้วยวิธีการต่อบล็อก และใช้สำหรับบอร์ดไมโครคอนโทรลเลอร์ [**Raspberry Pi Pico**](https://www.raspberrypi.org/products/raspberry-pi-pico/) ที่ใช้ตัวประมวลผล [**RP2040 SoC**](https://datasheets.raspberrypi.org/rp2040/rp2040-datasheet.pdf)

![รูป: Piper Make Concept (Source: Piper)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDQuxKEBAnx43dWSWR%2FPiper_Make_Concept.png?alt=media\&token=4c030a7b-9708-4a9e-a11e-df6bfbc26337)

ผู้พัฒนาและให้บริการ **Piper Make** คือ บริษัท [**Piper**](https://www.playpiper.com/pages/about) ซึ่งได้ก่อตั้งขึ้นเมื่อปีค.ศ. **2014** และเป็นบริษัท **Startup** ในประเภท **EdTech** ตั้งอยู่ในเมือง **San Francisco, CA** สหรัฐอเมริกา และในปีค.ศ. **2021** ได้จัดตั้งมูลนิธิชื่อว่า [**Piper Foundation**](https://www.playpiper.com/pages/foundation) เพื่อสนับสนุนกิจกรรมด้าน **STEM Education**

## เริ่มต้นใช้งาน Piper Make Editor

เริ่มต้นใช้งานโดยการเปิดเว็บเบราว์เซอร์ เช่น **Google Chrome** ไปยังเว็บ <https://make.playpiper.com/> ตามรูปตัวอย่างต่อไปนี้

![รูป: Piper Make - Main Page ](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDQliofSD2P8Q339M4%2FPiper_Make-1.png?alt=media\&token=3f1048fd-a658-44ed-94ee-e22906fc095b)

ถัดไปจะต้องเตรียมบอร์ด **Raspberry Pi Pico** และเลือกทำขั้นตอน  **Tools > Setup my Pico**

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDRg3eloU41RT8lDke%2FPiper_Make_Pico_Setup-1.png?alt=media\&token=40816a8a-acf1-4381-8173-5219cf47c4ef)

ถัดไปเป็นการอัปโหลดไฟล์เฟิร์มแวร์ (**Firmware**) ที่ได้มาจากเว็บไซต์ของ **Piper Make** เพื่อนำไปใส่ลงในหน่วยความจำแฟลซของบอร์ด **Pico**&#x20;

ในขั้นตอนนี้ บอร์ด **Pico** จะต้องเข้าสู่โหมด **UF Bootloader** ซึ่งทำได้โดยการกดปุ่ม **BOOTSEL** บนบอร์ด **Pico** ค้างไว้ แล้วเสียบสาย **USB** เข้าที่พอร์ต **microUSB** และอีกด้านหนึ่งของสาย ให้เสียบเข้ากับพอร์ต **USB** ของคอมพิวเตอร์ผู้ใช้ จากนั้นเมื่อปล่อยปุ่มแล้ว จะมองเห็น **USB Drive** ปรากฏขึ้น (`RPI-RP2`)&#x20;

**Piper Make** จะแสดงขั้นตอนที่ต้องดำเนินการไปตามลำดับดังนี้&#x20;

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDRxF1DvDpbLpsO00O%2FPiper_Make_Pico_Setup-2.png?alt=media\&token=d6358fab-2ea2-4a0c-9049-fae86e4d6816)

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDSk_O1nTIgoUHfDFR%2FPiper_Make_Pico_Setup-3.png?alt=media\&token=075e5732-0456-4ab2-92dd-32e92ac25f67)

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDSmvdCHcG7kThbUgp%2FPiper_Make_Pico_Setup-4.png?alt=media\&token=b3191f92-aa96-44c9-be10-5f31caa0b7b2)

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDSpH0E1BWxbT_nlxQ%2FPiper_Make_Pico_Setup-5.png?alt=media\&token=2c2d2da4-fb48-4917-9077-24b9a8c97058)

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDSwdJLlYa1qya_JhK%2FPiper_Make_Pico_Setup-6.png?alt=media\&token=f3149304-afa4-4f7e-9872-3ec92c07dc00)

![รูป: ลำดับขั้นตอนการติดตั้งไฟล์ UF2 Firmware](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDOwNZjhOkj8Klzqbu%2F-MWDT12hK44YTmOcmJfl%2FPiper_Make_Pico_Setup-7.png?alt=media\&token=24eefe12-87b3-4a60-9786-70511b03d076)

**ข้อสังเกต:** ในขั้นตอนการติดตั้งไฟล์เฟิร์มแวร์ จะมีการดาวน์โหลดไฟล์จาก [https://make.playpiper.com/assets/firmware/piper\_circuitpython.uf2 <br>](https://make.playpiper.com/assets/firmware/piper_circuitpython.uf2) มายังเครื่องคอมพิวเตอร์ของผู้ใช้&#x20;

ในขณะที่จัดทำเอกสารนี้ เวอร์ชันของไฟล์เฟิร์มแวร์ที่ได้ดาวน์โหลดและติดตั้งใช้งานคือ

`Adafruit CircuitPython 6.2.0-beta.3-74-gaa0288a21-dirty on 2021-03-17`&#x20;

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

## การสร้างโปรเจกต์ใหม่และเริ่มต้นต่อบล็อก

ในหน้าต่างหลัก จะเห็นว่า มีไอคอนให้เลือกคือ **New Project** สำหรับการสร้างโปรเจกต์ใหม่ หรือจะลองดูตัวอย่างโปรเจกต์ที่มีมาให้แล้ว เช่น **Blink** หรือ **Traffic Light** เป็นต้น

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDUFmmusXJABtJG8Ta%2F-MWDUjDO4MY_tnGdTgt1%2FPiper_Make_New_project.png?alt=media\&token=ac9ad15e-ddbd-4bfc-a28d-634052310bc2)

ให้ลองสร้างโปรเจกต์ใหม่ แล้วตั้งชื่อโปรเจกต์ใหม่&#x20;

![รูป: การสร้างโปรเจกต์ใหม่](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDUFmmusXJABtJG8Ta%2F-MWDVJEMrUZUfDu6JDt9%2FPiper_New_Project-2.png?alt=media\&token=d18a93c3-9afa-48b9-87f3-c23ff18feee7)

ถัดไปลองกดปุ่ม **Connect** บริเวณมุมซ้ายล่าง เพื่อลองดูว่า สามารถเชื่อมต่อกับบอร์ด **Pico** ที่ได้ติดตั้งเฟิร์มแวร์ไว้แล้วได้หรือไม่&#x20;

![รูป: ตัวอย่างการเลือกพอร์ต USB Serial ที่ตรงกับบอร์ด Pico](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDUFmmusXJABtJG8Ta%2F-MWDUGp4iocC6UqoY17W%2FPiper_Make_Pico_Setup-8.png?alt=media\&token=403ae961-3bad-4f4d-b69a-f1ce0c5f9c55)

เมื่อสามารถเชื่อมต่อกับบอร์ด **Pico** ได้แล้ว ข้อความ **Connect** (สีเขียว) จะเปลี่ยนเป็น **Disconnect** (สีแดง)

ลองดูบล็อกคำสั่งต่าง ๆ ซึ่งมีการจัดแบ่งเป็นกลุ่ม ตามรูปตัวอย่างดังนี้&#x20;

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDUFmmusXJABtJG8Ta%2F-MWDY1AildDJeI2DApkT%2FPiper_Make_Show_Block-1_2.png?alt=media\&token=3e9e793b-4c45-4c2d-8532-4a8f9fc29201)

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDUFmmusXJABtJG8Ta%2F-MWDY2x0QI3dmF9xzibp%2FPiper_Make_Show_Block-3-4.png?alt=media\&token=15ad848e-d933-41e3-a85f-25232c77eee9)

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDUFmmusXJABtJG8Ta%2F-MWDY4hr8b3m1X5hkeNm%2FPiper_Make_Show_Block-5-6.png?alt=media\&token=a687c5e2-936f-49b9-939a-14b910b3efd8)

ถัดไปให้ตั้งชื่อโปรเจกต์ใหม่ เช่น `Pico_Demo-1`  จากนั้นมาลองต่อบล็อกเพื่อทำให้ **LED** บนบอร์ด **Pico** กระพริบได้ (ตรงกับขา **GP25**) และลองส่งข้อความผ่านทาง **USB-to-Serial**&#x20;

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDYApnXvaOQqPDQmJn%2F-MWDYBvlfuChv4MDyVje%2FPiper_Make_Pico_blocks-1.png?alt=media\&token=68243b9a-24e1-4ca0-91af-7afdc1bb8984)

เมื่อต่อบล็อกตามตัวอย่างได้สำเร็จแล้ว ถ้ากดปุ่ม **DOWNLOAD** จะได้ไฟล์ **.PNG**&#x20;

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDYApnXvaOQqPDQmJn%2F-MWDYY2d_TRyMUIVkWaJ%2FPiper_Make_Pico_LED_Blink-1.png?alt=media\&token=00492193-692b-4fd2-b254-c5e0e52582db)

![รูป: โค้ดที่ประกอบด้วยบล็อกที่ได้นำมาต่อกัน (ดาวน์โหลดมาเป็นไฟล์ .PNG)](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDYApnXvaOQqPDQmJn%2F-MWDZ8hDncL9EQeD65tX%2FPico_Demo-1.png?alt=media\&token=d2c7f3b6-9580-49ad-8b8e-c7f4a8a38c8c)

ถ้าต้องการรันโค้ด โดยใช้บอร์ด **Pico** ให้กดปุ่ม **START** ตรงมุมซ้ายบน &#x20;

ให้ลองกดปุ่ม **DIGITAL VIEW** แล้วจะมองเห็นรูปกราฟิกของบอร์ด ซึ่งจะมีการเปลี่ยนแปลงที่บริเวณ **LED25** ติดและดับสลับกัน

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDYApnXvaOQqPDQmJn%2F-MWDZh5_2tPdKVzU_wR4%2FPiper_Make_Pico_LED_Blink-3.png?alt=media\&token=af4ca1a9-9dc7-4aad-9e19-dbf4c6dbef75)

หรือถ้าเปลี่ยนไปหน้า **CONSOLE** ก็จะเห็นข้อความที่ได้รับมาจากบอร์ด **Pico**

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDYApnXvaOQqPDQmJn%2F-MWDZeMscguf0YWlSrGk%2FPiper_Make_Pico_LED_Blink-2.png?alt=media\&token=73914a94-ff3f-4cda-8be3-94dda70e476d)

ถ้าเปลี่ยนไปหน้า **PYTHON** ก็จะเห็นโค้ด **CircuitPython** ที่ได้มีการแปลงโดยอัตโนมัติมาจากบล็อกคำสั่งที่ได้นำมาต่อเข้าด้วยกัน

![](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MWDYApnXvaOQqPDQmJn%2F-MWD_ntGQCqym4Apmv6V%2FPiper_Make_Pico_LED_Blink-4.png?alt=media\&token=66749b64-0fb7-40a8-a63d-af5b4a85cbd7)

ตัวอย่างโค้ด **CircuitPython** จากตัวอย่างในรูป มีดังนี้

```python
## ---- Imports ---- ##
from piper_blockly import *
import time
import board

## ---- Definitions ---- ##
GP25 = piperPin(board.GP25, "GP25")

## ---- Code ---- ##
consoleClear()
print('Hello Raspberry Pi Pico!')
while True:
  GP25.setPin(1)
  time.sleep(1)
  GP25.setPin(0)
  time.sleep(1)
```

แม้ว่า **Piper Make**r จะมีบล็อกคำสั่งให้เลือกใช้สำหรับเขียนโค้ดได้โดยทั่วไป แต่ยังขาดบล็อกสำหรับโมดูลฮาร์ดแวร์ประเภทต่าง ๆ จากที่เห็นได้ในส่วนของ **LIBRARY** มีรายการให้เลือกค่อนข้างจำกัด เช่น&#x20;

* อุปกรณ์พื้นฐาน เช่น ปุ่มกด สวิตช์เลื่อน หลอด LED
* โมดูล **Temperature Sensor**
* โมดูล **Color Sensor**
* โมดูล **Ultrasonic Range Finder Sensor**
* โมดูล **R/C Servo**

![รูป: ตัวอย่างโมดูลที่สามารถนำมาใช้งานได้](https://969412697-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIHfYo9IV3uTFm2tkDn%2F-MZJXlK8kKDEYoY2K_8w%2F-MZJYLo_v9qPjlXWD4LO%2Fimage.png?alt=media\&token=b7e6b17f-8837-4a44-b603-2223fabcb024)

## กล่าวสรุป

**Piper Make Editor** ก็ถือว่าเป็นบริการฟรีที่ทำให้ผู้ใช้สามารถฝึกเขียนโค้ดแบบต่อบล็อกบนหน้าเว็บเบราว์เซอร์ สำหรับบอร์ดไมโครคอนโทรลเลอร์ **Raspberry Pi Pico** ซึ่งมีราคาไม่แพง การทำงานของ **Piper Make** ในส่วนที่เป็นเฟิร์มแวร์นั้นได้ใช้ **CircuitPython** ของบริษัท **Adafruit** เป็นพื้นฐานในการทำงาน&#x20;


---

# 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/circuitpython/circuitpython-with-piper-make.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.
