บอร์ด Raspberry Pi Pico ที่เพิ่งเปิดไปไม่นาน และต้องขอบคุณบริษัท Cytron ที่ส่งตัวอย่างมาให้ ฉันจึงมีเวลาเล่นกับบอร์ดโดยใช้โปรแกรมภาษา MicroPython และ C
ฉันเริ่มต้นจากการไปที่เอกสาร และสิ่งที่ฉันต้องการคือหลอด LED บางหลอดกะพริบ และฉันก็จะเริ่มบันทึกด้วยคู่มือการเริ่มต้นใช้งาน Raspberry Pi Pico โดยใช้คอมพิวเตอร์ที่ทำงานอยู่ในระบบปฏิบัติการ Ubuntu 20.04 ซึ่งจะคล้ายกันสำหรับ Windows และ Mac OS
การเตรียมฮาร์ดแวร์
ในทางทฤษฎีแล้ว เราสามารถเริ่มต้นด้วยบอร์ดเพียงอย่างเดียว แต่ฉันจะลองใช้หัวแร้งบัดกรี (Pinecil soldering iron l ) ด้วยตัวจ่ายไฟ MINIX NEO P2 USB-C
หัวแร้งบัดกรีใช้งานได้ดีประมาณหนึ่งนาที แล้วฉันก็เริ่มมีปัญหากับการบัดกรี … มองไปที่หน้าจอเป็น Zzzz และอุณหภูมิลดลง ซึ่งอาจเป็นเพราะไม่ได้ขยับการบัดกรี จึงไม่สามารถตรวจจับกิจกรรมใด ๆได้ และเข้าสู่โหมดสลีป(Sleep)ได้ ฉันจึงเปลี่ยนความไวในการเคลื่อนไหวหรือการหมดเวลาพักเครื่อง สามารถแก้ไขปัญหานี้ได้ง่ายและฉันสามารถทำให้เสร็จได้
แต่น่าเสียดายที่จะไม่ใช้ส่วนหัว (header)เหล่านั้น ดังนั้นฉันจึงใส่ Raspberry Pi Pico ลงในเบรดบอร์ด (bread board) และเพิ่ม LED พร้อมกับวงจรประกอบ
5 โวลต์ เชื่อมต่อกับ VBUS (พิน 40 ขา), GND ถึงพิน 38 ขา และฉันตัดสินใจใช้ GPIO ที่ใกล้เคียงที่สุดกับ LED คือ GP15 (พิน 20 ขา) หมายเลข GPIO บน Raspberry Pi Pico จะแสดงอยู่ที่ด้านล่างของบอร์ดเท่านั้น โดยดูจาก แผนภาพพินเอาต์
การตั้งค่าฮาร์ดแวร์เสร็จสมบูรณ์แล้วและสิ่งที่ต้องมีก็คือสาย Micro USB เป็น USB-A เพื่อเชื่อมต่อบอร์ดกับแล็ปท็อป (Laptop)
MicroPython บน Raspberry Pi Pico
เราจึงคัดลอกเฟิร์มแวร์ MicroPython ไปยังบอร์ดก่อน โดยดาวน์โหลดเฟิร์มแวร์ล่าสุดได้จากคู่มือการเริ่มต้นใช้งาน (pico_micropython_20210121.uf2 ) จากนั้นกดปุ่ม BOOTSEL บนบอร์ด ในขณะที่เชื่อมต่อกับคอมพิวเตอร์ด้วยพอร์ต USB และปล่อยปุ่มหลังจากการเชื่อมต่อ แต่ไม่มีอะไรเกิดขึ้น นั่นเป็นเพราะฉันใช้สาย USB ของไฟหน้าจักรยานซึ่งขาดสายข้อมูล…ดังนั้นจึงเลือกสายไมโคร USB เป็น USB-Type-A ที่เหมาะสมและ Raspberry Pi Pico ได้รับการยอมรับอย่างถูกต้องบนแล็ปท็อป
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[ 422070.155550 ] usb 1 - 2 : new full - speed USB device number 16 using xhci _ hcd
[ 422070.330829 ] usb 1 - 2 : New USB device found , idVendor = 2e8a , idProduct = 0003 , bcdDevice = 1.00
[ 422070.330836 ] usb 1 - 2 : New USB device strings : Mfr = 1 , Product = 2 , SerialNumber = 3
[ 422070.330839 ] usb 1 - 2 : Product : RP2 Boot
[ 422070.330842 ] usb 1 - 2 : Manufacturer : Raspberry Pi
[ 422070.330845 ] usb 1 - 2 : SerialNumber : E0C912D24340
[ 422070.415044 ] usb - storage 1 - 2 : 1.0 : USB Mass Storage device detected
[ 422070.415349 ] scsi host2 : usb - storage 1 - 2 : 1.0
[ 422070.415538 ] usbcore : registered new interface driver usb - storage
[ 422070.418743 ] usbcore : registered new interface driver uas
[ 422071.551633 ] usb 1 - 2 : reset full - speed USB device number 16 using xhci _ hcd
[ 422071.727779 ] scsi 2 : 0 : 0 : 0 : Direct - Access RPI RP2 1 PQ : 0 ANSI : 2
[ 422071.728263 ] sd 2 : 0 : 0 : 0 : Attached scsi generic sg2 type 0
[ 422071.728572 ] sd 2 : 0 : 0 : 0 : [ sdc ] 262144 512 - byte logical blocks : ( 134 MB / 128 MiB )
[ 422071.729857 ] sd 2 : 0 : 0 : 0 : [ sdc ] Write Protect is off
[ 422071.729860 ] sd 2 : 0 : 0 : 0 : [ sdc ] Mode Sense : 03 00 00 00
[ 422071.731895 ] sd 2 : 0 : 0 : 0 : [ sdc ] No Caching mode page found
[ 422071.731900 ] sd 2 : 0 : 0 : 0 : [ sdc ] Assuming drive cache : write through
[ 422071.767149 ] sdc : sdc1
[ 422071.771908 ] sd 2 : 0 : 0 : 0 : [ sdc ] Attached SCSI removable disk
.. และติดตั้งเป็นอุปกรณ์จัดเก็บข้อมูลขนาดใหญ่ RPI-RP2
หลังจากคัดลอกไฟล์ pico_micropython_20210121.uf2 ไปยังไดรฟ์แล้ว ไฟล์จะยกเลิกการต่อเชื่อมโดยอัตโนมัติ และบอร์ด Pico จะรีบูตเป็นอุปกรณ์แบบอนุกรม:
[ 422425.812363 ] usb 1 - 2 : new full - speed USB device number 19 using xhci _ hcd
[ 422425.990450 ] usb 1 - 2 : New USB device found , idVendor = 2e8a , idProduct = 0005 , bcdDevice = 1.00
[ 422425.990459 ] usb 1 - 2 : New USB device strings : Mfr = 1 , Product = 2 , SerialNumber = 3
[ 422425.990463 ] usb 1 - 2 : Product : Board in FS mode
[ 422425.990466 ] usb 1 - 2 : Manufacturer : MicroPython
[ 422425.990470 ] usb 1 - 2 : SerialNumber : 000000000000
[ 422426.016529 ] cdc _ acm 1 - 2 : 1.0 : ttyACM0 : USB ACM device
ณ จุดนี้คู่มือเริ่มต้นใช้งานบนเว็บไซต์ Raspberry Pi จะไม่มีประโยชน์และเราต้องเปลี่ยนเอกสาร Python SDK (PDF )
เอกสารประกอบใช้มินิคอม (minicom) สำหรับคอนโซลที่เป็นอนุกรม แต่ตอนนี้ฉันชอบ Bootterm มากกว่าเพราะมันใช้ง่ายกว่า แต่ไม่ว่าจะเป็นแบบใด หากคุณตั้งโปรแกรมบอร์ดใน Linux ต้องตรวจสอบให้แน่ใจว่ามีการเพิ่มผู้ใช้ปัจจุบันของคุณในกลุ่ม dialout หรือคุณจะต้องเรียกใช้โปรแกรมทั้งหมดในฐานะรูท (root):
sudo usermod - a - G dialout $ ( whoami )
Bootterm ตรวจพบพอร์ต ttyACM0 อย่างถูกต้องดังนั้นฉันจึงเรียกใช้“ bt” เพื่อเข้าถึงอินเทอร์เฟซ MicroPython REPL และพิมพ์คำสั่ง MicroPython
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ bt - l
port | age ( sec ) | device | driver | description
-- -- -- + -- -- -- -- -- -- + -- -- -- -- -- -- + -- -- -- -- -- -- -- -- -- + -- -- -- -- -- -- -- -- -- -- --
* 0 | 29 | ttyACM0 | cdc_acm | Board CDC
$ bt
No port specified , using ttyACM0 ( last registered ) . Use - l to list ports .
Trying port ttyACM0 . . . Connected to ttyACM0 at 115200 bps .
Escape character is 'Ctrl-]' . Use escape followed by '?' for help .
>>> print ( "Hello, Pico!" )
Hello , Pico !
>>> from machine import Pin
>>> led = Pin ( 25 , Pin . OUT )
>>> led . value ( 1 )
>>> led2 = Pin ( 15 , Pin . OUT )
>>> led2 . value ( 1 )
>>>
ฉันสามารถเปิดหลอดLED ออนบอร์ด (GP25) ได้ แต่เมื่อฉันทำเช่นเดียวกันกับ หลอดLED บนเบรดบอร์ด (GP15) มันไม่ทำงาน ฉันตรวจสอบวงจรของฉันอีกครั้งและใช้มัลติมิเตอร์เพื่อตรวจสอบระดับแรงดันไฟฟ้าและพบว่า GP25 ยังคงถูกดึงต่ำ จากการค้นหาเว็บพบว่า GP15 ถูกปิดใช้งานใน CircuitPython เนื่องจากจะรบกวนจากอินเทอร์เฟซ USB
นี่เป็นสาเหตุหนึ่งที่ไม่ควรใช้ GP15 โดยใช้อุปกรณ์ต่อพ่วง USB
อืม…ฉันคิดว่ามันเหมือนกันสำหรับ MicroPython ดังนั้นฉันจึงเปลี่ยนไปใช้พินข้างเคียง (GP14, พิน 19 ขา)
>>> led2 = Pin ( 14 , Pin . OUT )
>>> led2 . value ( 1 )
และแน่นอนว่ามันได้ผล! หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ MicroPyton API ให้กด Ctrl + B แล้วพิมพ์ help ():
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
33
34
35
36
37
38
39
40
>>>
raw REPL ; CTRL - B to exit
>
MicroPython v1 . 13 - 290 - g556ae7914 on 2021 - 01 - 21 ; Raspberry Pi Pico with RP2040
Type "help()" for more information .
>>> help ( )
Welcome to MicroPython !
For online help please visit https : / / micropython . org / help / .
For access to the hardware use the 'machine' module . RP2 specific commands
are in the 'rp2' module .
Quick overview of some objects :
machine . Pin ( pin ) -- get a pin , eg machine . Pin ( 0 )
machine . Pin ( pin , m , [ p ] ) -- get a pin and configure it for IO mode m , pull mode p
methods : init ( . . ) , value ( [ v ] ) , high ( ) , low ( ) , irq ( handler )
machine . ADC ( pin ) -- make an analog object from a pin
methods : read_u16 ( )
machine . PWM ( pin ) -- make a PWM object from a pin
methods : deinit ( ) , freq ( [ f ] ) , duty_u16 ( [ d ] ) , duty_ns ( [ d ] )
machine . I2C ( id ) -- create an I2C object ( id = 0 , 1 )
methods : readfrom ( addr , buf , stop = True ) , writeto ( addr , buf , stop = True )
readfrom_mem ( addr , memaddr , arg ) , writeto_mem ( addr , memaddr , arg )
machine . SPI ( id , baudrate = 1000000 ) -- create an SPI object ( id = 0 , 1 )
methods : read ( nbytes , write = 0x00 ) , write ( buf ) , write_readinto ( wr_buf , rd_buf )
machine . Timer ( freq , callback ) -- create a software timer object
eg : machine . Timer ( freq = 1 , callback = lambda t : print ( t ) )
Pins are numbered 0 - 29 , and 26 - 29 have ADC capabilities
Pin IO modes are : Pin . IN , Pin . OUT , Pin . ALT
Pin pull modes are : Pin . PULL_UP , Pin . PULL_DOWN
Useful control commands :
CTRL - C -- interrupt a running program
CTRL - D -- on a blank line , do a soft reset of the board
CTRL - E -- on a blank line , enter paste mode
For further help on a specific object , type help ( obj )
For a list of available modules , type help ( 'modules' )
เราสามารถออกจาก bootterm ด้วย“ Ctrl +]” ตามด้วย“ q” แต่ถ้าเราต้องการบันทึกโปรแกรม Python บนบอร์ดและเรียกใช้โดยอัตโนมัติล่ะ? ฉันอาจจะพลาดสิ่งนั้นในเอกสาร Python SDK ดังนั้นฉันจึงต้องข้ามไปยังคู่มือที่สาม คือการใช้ Thonny เพื่อค้นหาวิธีที่ดีที่สุด
Ubuntu 20.04 มี Thonny 3.2.7 ในพื้นที่เก็บข้อมูลซึ่งเราสามารถติดตั้งด้วย sudo apt install thonny ได้ แต่ไม่รองรับ Raspberry Pi Pico ดังนั้นฉันจึงติดตั้งโปรแกรมเวอร์ชันล่าสุด (v3.3.3) ด้วย pip3 แทน:
จากนั้นไปที่ Run-> Select interpreter …เพื่อเลือก“ MicroPython (Raspberry Pi Pico)“
จากอินเทอร์เฟซผู้ใช้ ฉันสามารถพิมพ์รหัสเพื่อปิดหลอด LED ออนบอร์ดได้:
เพื่อที่จะให้หลอดLED กะพริบออนบอร์ด และหลอด LED บนเบรดบอร์ดด้วยเวลาหนึ่งวินาที ฉันคัดลอกและแก้ไขโค้ดบางส่วนจากเอกสาร Python SDKได้:
from machine import Pin , Timer
led = Pin ( 25 , Pin . OUT )
led2 = Pin ( 14 , Pin . OUT )
led . value ( 0 )
led2 . value ( 1 )
tim = Timer ( )
def tick ( timer ) :
global led , led2
led . toggle ( )
led2 . toggle ( )
tim . init ( freq = 1 , mode = Timer . PERIODIC , callback = tick )
ฉันบันทึกไฟล์เป็น blink.py บนพีซีของฉันและมันก็ทำงานได้ดี แต่ถ้าคุณต้องการเรียกใช้โค้ดโดยไม่ใช้พีซี คุณสามารถบันทึกลงใน Raspberry Pi Pico ได้ คลิกที่ไฟล์ -> บันทึกสำเนาจากนั้นคลิกที่ปุ่ม“ Raspberry Pi Pico”
และบันทึกโปรแกรมเป็น main.py ตอนนี้คุณสามารถเรียกใช้โปรแกรมโดยอัตโนมัติ โดยเชื่อมต่อบอร์ดของคุณกับแหล่งจ่ายไฟ USB ใดก็ได้
ภาษาC/C++ บน Raspberry Pi Pico
ลองใช้ “ภาษาC/C++ SDK” ซึ่งโดยพื้นฐานแล้วเป็นภาษา C ทั้งหมด ยกเว้นเครื่องมือบางอย่างที่เขียนด้วย C++ เราสามารถย้อนกลับไปที่เอกสารการเริ่มต้นใช้งาน ซึ่งจะคัดลอก blink.uf2 เป็น Raspberry Pi Pico ขณะอยู่ในโหมดบูตและจะกะพริบ LED บนบอร์ด ใช้งานได้และง่ายมากเนื่องจากไบนารีถูกสร้างไว้ล่วงหน้า แต่สิ่งที่เราต้องการทำจริงๆคือ การแก้ไขซอร์สโค้ดและสร้างไบนารีของเราเอง เพื่อกะพริบทั้ง LED ภายในและภายนอก
ดังนั้นเราจะต้องติดตั้งภาษา C/C++ SDK การอ้างอิงและตัวอย่างดังต่อไปนี้:
sudo apt install cmake gcc - arm - none - eabi libnewlib - arm - none - eabi build - essential
git clone https : //github.com/raspberrypi/pico-sdk
cd pico - sdk
git submodule update -- init
cd . .
git clone - b master https : //github.com/raspberrypi/pico-examples.git
เราสามารถดูตัวอย่างการกะพริบได้ในตัวอย่าง pico / blink / blink.c:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "pico/stdlib.h"
int main ( ) {
const uint LED_PIN = 25 ;
gpio_init ( LED_PIN ) ;
gpio_set_dir ( LED_PIN , GPIO_OUT ) ;
while ( true ) {
gpio_put ( LED_PIN , 1 ) ;
sleep_ms ( 250 ) ;
gpio_put ( LED_PIN , 0 ) ;
sleep_ms ( 250 ) ;
}
}
ดี, ก่อนที่เราจะแก้ไขเราควรพยายามสร้างโดยส่งออกเส้นทาง SDK ก่อนและกำหนดค่าการสร้าง:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ cd pico - examples / blink
$ export PICO_SDK_PATH = . . / . . / pico - sdk
$ cmake . .
Using PICO_SDK_PATH from environment ( '../../pico-sdk' )
Pico SDK is located at / home / jaufranc / edev / sandbox / pico - sdk
Defaulting PICO_PLATFORM to rp2040 since not specified .
Defaulting PICO platform compiler to pico_arm_gcc since not specified .
-- Defaulting build type to 'Release' since not specified .
PICO compiler is pico_arm_gcc
PICO_GCC_TRIPLE defaulted to arm - none - eabi
-- The C compiler identification is GNU 9.2.1
-- The CXX compiler identification is GNU 9.2.1
-- The ASM compiler identification is GNU
-- Found assembler : / usr / bin / arm - none - eabi - gcc
Defaulting PICO target board to pico since not specified .
Using board configuration from / home / jaufranc / edev / sandbox / pico - sdk / src / boards / include / boards / pico . h
-- Found Python3 : / usr / bin / python3 . 8 ( found version "3.8.5" ) found components : Interpreter
TinyUSB available at / home / jaufranc / edev / sandbox / pico - sdk / lib / tinyusb / src / portable / raspberrypi / rp2040 ; adding USB support .
-- Could NOT find Doxygen ( missing : DOXYGEN_EXECUTABLE )
ELF2UF2 will need to be built
PIOASM will need to be built
-- Configuring done
-- Generating done
-- Build files have been written to : / home / jaufranc / edev / sandbox / pico - examples / blink
ตอนนี้เราสามารถเข้าสู่ไดเร็กทอรี blink (อันใหม่สร้างโดย cmake) และเรียกใช้ make:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ cd blink
$ make - j8
Scanning dependencies of target ELF2UF2Build
Scanning dependencies of target bs2 _ default
[ 0 % ] Creating directories for 'ELF2UF2Build'
[ 0 % ] No download step for 'ELF2UF2Build'
[ 0 % ] No patch step for 'ELF2UF2Build'
[ 0 % ] No update step for 'ELF2UF2Build'
[ 0 % ] Building ASM object pico_sdk / src / rp2_common / boot_stage2 / CMakeFiles / bs2_default . dir / boot2_w25q080 . S . obj
[ 0 % ] Performing configure step for 'ELF2UF2Build'
[ 0 % ] Linking ASM executable bs2_default . elf
[ 0 % ] Built target bs2 _ default
. . .
[ 50 % ] Building CXX object blink / CMakeFiles / blink . dir / home / jaufranc / edev / sandbox / pico - sdk / src / rp2_common / pico_standard_link / new_delete . cpp . obj
[ 50 % ] Building C object blink / CMakeFiles / blink . dir / home / jaufranc / edev / sandbox / pico - sdk / src / rp2_common / pico_standard_link / binary_info . c . obj
[ 100 % ] Building C object blink / CMakeFiles / blink . dir / home / jaufranc / edev / sandbox / pico - sdk / src / rp2_common / pico_stdio / stdio . c . obj
[ 100 % ] Building C object blink / CMakeFiles / blink . dir / home / jaufranc / edev / sandbox / pico - sdk / src / rp2_common / pico_stdio_uart / stdio_uart . c . obj
[ 100 % ] Linking CXX executable blink . elf
[ 100 % ] Built target blink
ตอนนี้เรามีไฟล์มากมาย:
jaufranc @ cnx - laptop - 4 : ~ / edev / sandbox / pico - examples / blink / blink $ ls - l
total 636
- rwxrwxr - x 1 jaufranc jaufranc 12696 Jan 24 11 : 42 blink . bin
- rw - rw - r -- 1 jaufranc jaufranc 197019 Jan 24 11 : 42 blink . dis
- rwxrwxr - x 1 jaufranc jaufranc 204232 Jan 24 11 : 42 blink . elf
- rw - rw - r -- 1 jaufranc jaufranc 172574 Jan 24 11 : 42 blink . elf . map
- rw - rw - r -- 1 jaufranc jaufranc 35778 Jan 24 11 : 42 blink . hex
- rw - rw - r -- 1 jaufranc jaufranc 25600 Jan 24 11 : 42 blink . uf2
drwxrwxr - x 4 jaufranc jaufranc 4096 Jan 24 11 : 41 CMakeFiles
- rw - rw - r -- 1 jaufranc jaufranc 1004 Jan 24 11 : 39 cmake_install . cmake
drwxrwxr - x 4 jaufranc jaufranc 4096 Jan 24 11 : 39 elf2uf2
- rw - rw - r -- 1 jaufranc jaufranc 89141 Jan 24 11 : 39 Makefile
สิ่งที่สำคัญที่สุดคือ blink.uf2 ที่เราสามารถคัดลอกไปยัง Raspberry Pi Pico เพื่อเรียกใช้โปรแกรมและ blink.elf ที่สามารถใช้โดยดีบักเกอร์ (OpenOCD + GDB) แต่นั่นอยู่นอกขอบเขตของคู่มือเริ่มต้นใช้งานนี้
ตอนนี้เรารู้วิธีรวบรวมโปรแกรม ภาษาC สำหรับบอร์ด Pico แล้วเรามาปรับเปลี่ยนตัวอย่าง blink.c เพื่อเปิดและปิด หลอดLED ออนบอร์ดและ หลอดLED ภายนอกที่เชื่อมต่อกับพิน 14 ขา
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "pico/stdlib.h"
int main ( ) {
const uint LED_PIN = 25 ; /* onboard LED */
const uint LED2_PIN = 14 ; /* external LED */
gpio_init ( LED_PIN ) ;
gpio_set_dir ( LED_PIN , GPIO_OUT ) ;
gpio_init ( LED2_PIN ) ;
gpio_set_dir ( LED2_PIN , GPIO_OUT ) ;
while ( true ) {
gpio_put ( LED_PIN , 1 ) ;
gpio_put ( LED2_PIN , 0 ) ;
sleep_ms ( 1000 ) ;
gpio_put ( LED_PIN , 0 ) ;
gpio_put ( LED2_PIN , 1 ) ;
sleep_ms ( 1000 ) ;
}
}
และสร้างโปรแกรมอีกครั้ง:
จากนั้นเข้าสู่โหมดบูตและคัดลอก blink.uf2 ไปที่บอร์ดและประสบความสำเร็จ!
เราสามารถบรรลุผลลัพธ์เดียวกันได้ด้วยโปรแกรมภาษา C หรือ Python เราจะดูอินเทอร์เฟซ PIO (Programmable IO) ของ RP2040 เป็นสิ่งที่ทำให้ Raspberry Pi RP2040 แตกต่างจากไมโครคอนโทรลเลอร์อื่น ๆ มากที่สุด
ฉันต้องขอขอบคุณบริษัท Cytron ที่ส่ง บอร์ดPico ของ Raspberry Pi มาให้ตรวจสอบ หากคุณอาศัยอยู่ในอาเซียนคุณสามารถซื้อบอร์ดได้ในราคา $ 4.98 หรือหากคุณมีเวลาพอสมควรจะเสนอบอร์ดผู้ให้บริการ $ 5 สำหรับ Raspberry Pi Pico ในราคาเดียวกันกับบอร์ดที่บัดกรีแล้ว ซึ่งคาดว่าจะจัดส่งในเดือนกุมภาพันธ์ อันดับ 10 และวางจำหน่ายทั่วโลกไม่ใช่เฉพาะในอาเซียน
แปลจากบทความภาษาอังกฤษ Getting Started with Raspberry Pi Pico using MicroPython and C
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT