在 raspberry pi pico 上體驗 MicroPython


raspberry pi pico 官方提供 2 種開發方式,其中一種是使用 python3 開發,樹莓派提供了 MicroPython 固件,把這個固件燒錄進去,就可以 在 pico 上跑 python3 腳本。

1、MicroPython 相關資源

用 python 開發,官網能找到的資源有:
1、MicroPython 固件

2、文檔
3、MicroPython 例程

raspberrypi 官方 github 上有相關例程:pico-micropython-examples

2、下載、燒錄 MicroPython 固件

樹莓派官網提供了編譯好的 MicroPython 固件,也可以自己編譯, Raspberry Pi Pico Python SDK 給出了編譯教程。

這里直接使用官方編譯好的固件,下載下來是這樣的:

先按住板子上的按鍵,然后連上電腦,等電腦出現名字為 RPI-RP2的磁盤時,把下載到的固件拷貝到該磁盤,等拷貝完成就燒錄好了,燒錄完,設備會自動重新啟動,然后我的電腦上出現了這個:

設備管理器中多了個 COM 口:

PC上可以使用串口終端通過該 COM 口操作 pico。

3、使用 MobaXterm 操作 pico

我是用的串口終端是 MobaXterm,MobaXterm 什么?MobaXterm 官網的描述是:

Enhanced terminal for Windows with X11 server, tabbed SSH client, network tools and much more

可以創建SSH、Telnet 、串口終端等等,功能釋放強大,有免費版、也有收費的,免費的夠用了。

創建一個串口終端連接跑 MicroPython 的 pico,選擇對應的 COM 口,波特率115200,如下:

點擊 OK 后,界面烏漆嘛黑,什么都沒有,需要按下回車,然后就可以進行操作了,如下:

4、點燈

點下燈,從原理圖看,是 GPIO25 控制 LED:

在MobaXterm 執行一下 python 代碼,就可以點亮板子上的 LED 了:

from machine import Pin
led = Pin(25, Pin.OUT)
led.value(1)

5、附上 pico 跑 MicroPython 是 USB 相關信息

[Port2]  :  USB Composite Device

          ---===>Device Information<===---
English product name: "Board in FS mode"

ConnectionStatus:                  
Current Config Value:              0x01  -> Device Bus Speed: Full
Device Address:                    0x15
Open Pipes:                           3

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmAttributes:                      0x03  -> Interrupt Transfer Type
wMaxPacketSize:                  0x0008 = 0x08 bytes
bInterval:                         0x10

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x02  -> Direction: OUT - EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x82  -> Direction: IN - EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00

          ===>Device Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x01
bcdUSB:                          0x0200
bDeviceClass:                      0xEF  -> This is a Multi-interface Function Code Device
bDeviceSubClass:                   0x02  -> This is the Common Class Sub Class
bDeviceProtocol:                   0x01  -> This is the Interface Association Descriptor protocol
bMaxPacketSize0:                   0x40 = (64) Bytes
idVendor:                        0x2E8A = Vendor ID not listed with USB.org as of 03-19-2008
idProduct:                       0x0005
bcdDevice:                       0x0100
iManufacturer:                     0x01
     English (United States)  "MicroPython"
iProduct:                          0x02
     English (United States)  "Board in FS mode"
iSerialNumber:                     0x03
     English (United States)  "000000000000"
bNumConfigurations:                0x01

          ===>Configuration Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x02
wTotalLength:                    0x004B  -> Validated
bNumInterfaces:                    0x02
bConfigurationValue:               0x01
iConfiguration:                    0x00
bmAttributes:                      0xA0  -> Bus Powered
MaxPower:                          0x7D = 250 mA

          ===>IAD Descriptor<===
bLength:                           0x08
bDescriptorType:                   0x0B
bFirstInterface:                   0x00
bInterfaceCount:                   0x02
bFunctionClass:                    0x02  -> This is Communications (CDC Control) USB Device Interface Class
bFunctionSubClass:                 0x02
bFunctionProtocol:                 0x00
iFunction:                         0x00

          ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x00
bAlternateSetting:                 0x00
bNumEndpoints:                     0x01
bInterfaceClass:                   0x02  -> This is Communications (CDC Control) USB Device Interface Class
bInterfaceSubClass:                0x02
bInterfaceProtocol:                0x00
CAUTION:  This may be an invalid bInterfaceProtocol
iInterface:                        0x04
     English (United States)  "Board CDC"
  -> This is a Communications (CDC Control) USB Device Interface Class

          ===>Descriptor Hex Dump<===
bLength:                           0x05
bDescriptorType:                   0x24
05 24 00 20 01 
  -> This is a Communications (CDC Control) USB Device Interface Class

          ===>Descriptor Hex Dump<===
bLength:                           0x05
bDescriptorType:                   0x24
05 24 01 00 01 
  -> This is a Communications (CDC Control) USB Device Interface Class

          ===>Descriptor Hex Dump<===
bLength:                           0x04
bDescriptorType:                   0x24
04 24 02 02 
  -> This is a Communications (CDC Control) USB Device Interface Class

          ===>Descriptor Hex Dump<===
bLength:                           0x05
bDescriptorType:                   0x24
05 24 06 00 01 

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmAttributes:                      0x03  -> Interrupt Transfer Type
wMaxPacketSize:                  0x0008 = 0x08 bytes
bInterval:                         0x10

          ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x01
bAlternateSetting:                 0x00
bNumEndpoints:                     0x02
bInterfaceClass:                   0x0A  -> This is a CDC Data USB Device Interface Class
bInterfaceSubClass:                0x00
bInterfaceProtocol:                0x00
CAUTION:  This may be an invalid bInterfaceProtocol
iInterface:                        0x00

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x02  -> Direction: OUT - EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x82  -> Direction: IN - EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x00


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM