Pico:ed V2 เป็นบอร์ดที่พัฒนาโดยบริษัท ELECFREAKS ใช้ไมโครคอนโทรลเลอร์ Raspberry Pi Pico RP2040 ที่ได้รับความนิยมมากที่สุดในปัจจุบัน มีปุ่ม Bootsel เพื่อให้ผู้ใช้งานสะดวกในการอัพเดทของเฟิร์มแวร์ ได้ง่ายขึ้น มีปุ่มกดอินพุต แบบกดติดปล่อยดับที่สามารถเขียนโปรแกรมรับค่าได้ 2 ปุ่ม มีการแสดงผล LED แบบ Dot Matrix 7×17 ติดตั้งอยู่บนตัวบอร์ดสำหรับการแสดงกราฟฟิกและข้อความ และมีลำโพงแบบพาสซีพบัซเซอร์เพื่อเล่นเสียงเพลงได้หลากหลาย บอร์ด Pico:ed V2 สามารถเขียนโปรแกรมด้วย CircuitPython หรือ C++ ได้ นอกจากนี้มีการออกแบบรูปทรงที่โค้งมนมากขึ้นเพื่มความน่ารัก และมีการออกแบบขอบพินเป็นคลื่นเพื่อให้ผู้ใช้งานไม่เจ็บมือขณะใช้งาน สีสันสดใส ทำให้มีความสวยงามมากขึ้น อีกทั้งยังสามารถเชื่อมต่อกับอุปกรณ์ต่อพ่วงต่างๆที่ใช้กับ BBC micro:bit ได้ เป็นการเพิ่มการเรียนรู้การเขียนโปรแกรมด้วยภาษา Python และ C/C++ ได้อีกด้วย
คุณสมบัติของบอร์ด Pico:ed V2
- Raspberry Pi RP2040 โปรเซสเซอร์ Arm Cortex M0+ แบบ Dual Core พร้อม RAM ภายใน 264kB และรองรับชิปแฟลชแบบ QSPI 2MB
- ขั้วต่อ USB และจุดเชื่อมต่อแบตเตอรี่
- ไฟ LED แสดงสถานะพลังงานและไฟ LED การถ่ายโอนข้อมูลของ USB
- แสดงผลด้วย LED 7*17 Dot-matrix
- ปุ่ม Bootsel และ ปุ่มรีเซ็ต
- จุดต่ออินพุต เอาต์พุต 25 พิน
- ปุ่มกดอิพุตแบบกดติดปล่อยดับ 2 ปุ่ม
- ลำโพงแบบพาสซีพบัซเซอร์
- สามารถใช้งานเข้ากับอุปกรณ์เสริม BBC micro:bit ได้
- สามารถใช้ MicroBlocks สำหรับการเขียนโปรแกรมแบบ Block-Base ได้
รายละเอียดสเปคของบอร์ด Pico:ed V2
รายละเอียด Pin ของบอร์ด Pico:ed V2
สามารถดาวน์โหลดรายละเอียด Pin แบบ HD ได้ที่นี่ >>> Pico-ed-V2-Pin-Diagram.pdf
การติดตั้งเฟิร์มแวร์ CircuitPython
Pico:ed รองรับการเขียนภาษา C, C++, MicroPython, CircuitPython
CircuitPython เป็นภาษาโปรแกรมที่ออกแบบมาเพื่อลดความซับซ้อนของการเรียนรู้ โดย CircuitPython เป็นวิธีที่ง่ายที่สุดในการเขียนโปรแกรมไมโครคอนโทรลเลอร์ สามารถดาวน์โหลด firmware .UF2 ได้ที่ Link นี้
หลังจากดาวน์โหลด Firmware CircuitPython จากนั้นให้กดปุ่ม BOOTSEL ค้างไว้
จากนั้นเชื่อมต่อ Pico:ed เข้ากับคอมพิวเตอร์ โดยใช้สาย USB และปล่อยปุ่ม BOOSEL บนบอร์ด Pico:ed จากนั้นจะเห็นไดร์ของ Pico:ed “RPI-RP2”
ทำการลากไฟล์ UF2 ที่ดาวน์โหลดมาก่อนหน้านี้ไปยังไดฟ์ “RPI-RP2” และเมื่อติดตั้งเสร็จสิ้น ไดรฟ์ “RPI-RP2” จะหายไป และไดรฟ์ “CIRCUITPY” จะปรากฏขึ้นแทนที่ จากนี้แสดงว่าคุณติดตั้ง CircuitPython สำเร็จแล้ว
สามารถเริ่มเขียนโปรแกรมใน code.py ใน CIRCUITPY ได้เลย
การติดตั้ง Thonny IDE
โดยการทดสอบกับบอร์ด Pico:ed เราจะใช้ Thonny เป็น Python IDE ระดับสำหรับเริ่มต้น ซึ่งออกแบบมาเหมาะสำหรับการเรียนรู้และการสอนการเขียนโปรแกรม พัฒนาโดย Tartu University ในเอสโตเนีย สามารถโหลดและติดตั้งโปรแกรมได้ที่ Link นี้
เปิด Thonny ขึ้นมา จากนั้นคลิกเมนู “Run” เลือก “Configure interperter”
- คลิกเลือก “Interpreter”
- คลิกเลือก “CircuitPython(generic)”
- คลิก “OK” จากนั้นก็ทำการตั้งค่าเสร็จสิ้น
ทดสอบ Onboard LED
Pico:ed V2 แสดงสถานะไฟ LED ที่ติดตั้งอยู่บนบอร์ดให้กระพริบ
โค้ด
1 2 3 4 5 6 7 8 |
import time from picoed import * while True: led.on() time.sleep(0.5) led.off() time.sleep(0.5) |
Button
Pico:ed V2 มีปุ่มกดแบบอินพุต 2 ปุ่มที่ด้านหน้า โดยแต่ละปุ่มสามารถตั้งโปรแกรมแยกกันหรือใช้ร่วมกันได้
โค้ดทดสอบจะทำการแสดงตัวเลข เริ่มต้นที่ 0 ถ้าหากมีการกดปุ่ม A ตัวเลขจะ -1 และถ้าหากมีการกดปุ่ม B ตัวเลขจะ +1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from picoed import * times = 0 display.show(times) while True: # Press button A once, count minus 1 if button_a.was_pressed(): times -= 1 display.show(times) # Press button_B once, add 1 to the count if button_b.was_pressed(): times += 1 display.show(times) |
Music
Pico:ed V2 ใช้ลำโพงแบบพาสซีพบัซเซอร์ สามารถตั้งโปรแกรมให้เล่นเสียงตามโน้ตดนตรีประเภทต่างๆ ได้ และยังมีคำสั่งของเพลงสำเร็จรูปมากกว่า 20 เพลงดังนี้
- DADADADUM
- ENTERTAINER
- PRELUDE
- ODE
- NYAN
- RINGTONE
- FUNK
- BLUES
- BIRTHDAY
- WEDDING
- FUNERAL
- PUNCHLINE
- PYTHON
- BADDY
- CHASE
- BA_DING
- WAWAWAWAA
- JUMP_UP
- JUMP_DOWN
- POWER_UP
- POWER_DOWN
โค้ดการทดสอบเล่นเสียงเพลง DADADADUM
1 2 3 |
from picoed import music music.play(music.DADADADUM) |
โค้ดการทดสอบเล่นเพลงแบบโน้ตเพลง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import asyncio from picoed import music, led # play Prelude in C. notes = [ 'c4:1', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'd', 'a', 'd5', 'f5', 'a4', 'd5', 'f5', 'c4', 'd', 'a', 'd5', 'f5', 'a4', 'd5', 'f5', 'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5', 'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5', 'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5', 'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5', 'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5', 'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5', 'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5', 'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5', 'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5', 'g3', 'b', 'd4', 'g', 'b', 'd', 'g', 'b', 'g3', 'b3', 'd4', 'g', 'b', 'd', 'g', 'b' ] async def blink(interval): while True: led.on() await asyncio.sleep(interval) led.off() await asyncio.sleep(interval) async def main(): player = asyncio.create_task(music.play_async(notes)) light = asyncio.create_task(blink(0.1)) await asyncio.gather(player) await asyncio.gather(light) asyncio.run(main()) |
LED dot-matrix screen
Pico:ed V2 แสดงผล LED แบบ Dot Matrix 7×17 ขับด้วยชิป IS31FL3731 ติดตั้งอยู่บนตัวบอร์ดสำหรับการแสดงกราฟฟิกและข้อความต่างๆ
โค้ดตัวอย่างแสดงข้อความและตัวเลข
1 2 3 4 5 6 7 8 9 10 11 12 |
import time from picoed import display # Display statically of 3 letters display.scroll("ABC") time.sleep(1) # Scroll to display the numbers display.scroll(1234567890) # Scroll to display the strings display.scroll("Hello, world!") |
พร้อมด้วยชุดคำสั่งแสดงกราฟฟิกมากกว่า 25 ชนิด
- NO
- SQUARE
- RECTANGLE
- RHOMBUS
- TARGET
- CHESSBOARD
- HAPPY
- SAD
- YES
- HEART
- TRIANGLE
- CHAGRIN
- SMILING_FACE
- CRY
- DOWNCAST
- LOOK_RIGHT
- LOOK_LEFT
- TONGUE
- PEEK_RIGHT
- PEEK_LEFT
- TEAR_EYES
- PROUD
- SNEER_LEFT
- SNEER_RIGHT
- SUPERCILIOUS_LOOK
- EXCITED
โค้ดตัวอย่างการแสดงกราฟฟิกแบบ HAPPY
1 2 3 |
from picoed import display, Image display.show(Image.HAPPY) |
โค้ดตัวอย่างการแสดงกราฟฟิกแบบสร้างเอง โดยตัวเลขแต่ละตำแหน่งหมายถึงความสว่างแต่ละดวงของ LED
- 1 คือแสงเบาสุด
- 9 คือแสงสว่างสุด
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from picoed import display, Image while True: display.show(Image( '12345678987654321:' '12345678987654321:' '12345678987654321:' '12345678987654321:' '12345678987654321:' '12345678987654321:' '12345678987654321:' )) display.show(Image( '87654321112345678:' '87654321112345678:' '87654321112345678:' '87654321112345678:' '87654321112345678:' '87654321112345678:' '87654321112345678:' )) |
Pins
Pico:ed V2 พินใช้เป็นวิธีการเชื่อมต่ออุปกรณ์ภายนอก และสามารถใช้สายคีบปากจระเข้ เพื่อขยายความสามารถในการใช้งานของ Pico:ed V2 ให้มากยิ่งขึ้น หรือใช้ร่วมกับบอร์ดขยายต่างๆที่ใช้กับบอร์ด BBC:microbit ได้
ในการทดสอบเราได้นำมาใช้งานร่วมกับ RGB:BIT เพื่อนำมาขับไฟ RGB (ws2812b) 16 ดวง โดยเชื่อมต่อ PIN16 (P16)
เราเรียกโปรเจคนี้ว่า RGB Light Box โครงสร้างเราออกแบบและปริ้นเครื่องด้วย 3D Printer ใช้ถ่าน AAA 2 ก้อน (3V)
การเพิ่ม lib สำหรับการการแสดงไฟ RGB
ในการเขียนโปรแกรมหลอดไฟ LED ชนิด RGB (ws2812b) ด้วย CircuitPython จะต้องใช้ไฟล์ไลบรารี่ neopixel ของ Adafruit สามารถดาวน์โหลดไฟล์ไลบรารี neopixel ได้โดย Link นี้และทำการคัดลอกไฟล์ไปไว้ในไดเร็กทอรี “lib” ของไดร์ “CIRCUITPY”
Pico:ed V2 นำมาเสียบกับ RGB:BIT ทำการเขียนโปรแกรมทดสอบแสดงไฟ RGB แบบ Rainbow
โค้ดแสดงไฟ RGB เปลี่ยนสีแบบ Rainbow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import time import board from rainbowio import colorwheel import neopixel pixel_pin = board.P16 num_pixels = 16 pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.9, auto_write=False) def rainbow_cycle(wait): for j in range(255): for i in range(num_pixels): rc_index = (i * 256 // num_pixels) + j pixels[i] = colorwheel(rc_index & 255) pixels.show() time.sleep(wait) while True: rainbow_cycle(10) # Increase the number to slow down the rainbow |
นำมาประกอบกันแล้วจะได้ RGB Light Box ที่สวยงามและเปลี่ยนสีได้และทดสอบการเขียนโปรแกรมเปลี่ยนสีแบบ Color Chase
โค้ดแสดงไฟ RGB เปลี่ยนสีแบบ Color Chase
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import time import board from rainbowio import colorwheel import neopixel pixel_pin = board.P16 num_pixels = 16 pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.9, auto_write=False) def color_chase(color, wait): for i in range(num_pixels): pixels[i] = color time.sleep(wait) pixels.show() time.sleep(0.05) RED = (255, 0, 0) YELLOW = (255, 150, 0) GREEN = (0, 255, 0) CYAN = (0, 255, 255) BLUE = (0, 0, 255) PURPLE = (180, 0, 255) while True: color_chase(RED, 0.1) # Increase the number to slow down the color chase color_chase(YELLOW, 0.1) color_chase(GREEN, 0.1) color_chase(CYAN, 0.1) color_chase(BLUE, 0.1) color_chase(PURPLE, 0.1) |
วิดีโอการทำงานและทดสอบบอร์ด Pico:ed V2 กับ RGB Light Box
สรุป
บอร์ด Pico:ed V2 การออกแบบของบอร์ดมีความน่ารัก สีสันสดใส และเป็นมิตรแก่ผู้ใช้งาน สร้างความไม่น่าเบื่อแก่ผุ้เรียน อีกทั้งสามารถนำไปใช้ต่อยอดการเรียนรู้ในการต่อโมดูลต่างๆได้อีกมากมาย หรือนำไปใช้การเรียนรู้ในห้องเรียนสำหรับเด็กๆ ในโรงเรียนที่ต้องการเรียนรู้เกี่ยวกับการเขียนโปรแกรมด้วย CircuitPython ซึ่งเป็นพื้นฐานมาจากภาษา Python ในปัจจุบัน นอกจากนี้ยังสามารถใช้กับอุปกรณ์ต่อพ่วงที่ micro:bit ต่อได้ซึ่งเรียกได้ว่าใช้แทนกันได้เลยเป็นอีกนึงตัวเลือกที่น่าสนใจ สำหรับผู้ที่จะเริ่มต้นเรียนรู้การเขียนโปรแกรมบอร์ด Pico:ed V2 สามารถเขียนได้ทั้ง ภาษา Block-Base (ลากวาง) ภาษา CircuitPython (Python) และภาษา C/C++ บอร์ดนี้ตอบโจทย์ของนักประดิษฐ์ที่จะเริ่มต้นสร้างโปรเจคเล็กๆของตนเองด้วยไมโครคอนโทรลเลอร์ Raspberry Pi RP2040
ผมต้องขอขอบคุณบริษัท ELECFREAKS ที่ส่งบอร์ด Pico:ed V2 ได้มาทดสอบ สามารถหาซื้อ Pico:ed V2 ในราคา $12.90 (~460฿) ที่ร้านค้า ELECFREAKS
กรรมการผู้จัดการของโรงเรียนเกี่ยวกับหุ่นยนต์ในจ.เชียงใหม่, ชนะเลิศการแข่งขันหุ่นยนต์ต่างๆ ทั้งในและต่างประเทศ ได้แก่ Robocon และ Makerthon