Pico是啥

这个问题要从树莓派出了第一款微控制器RP2040说起

树莓派0到4全部用的博通的处理器,现在树莓派出了一款微控制器RP2040,注意是微控制器,Arm Cortex-M0系列(Arm最低端),有了这款微控制器后树莓派就出了一款开发板就是Pico,相当于是这款芯片的一个官方使用案例

当然除了树莓派,其它厂家也可以使用这款芯片做自己的开发板,例如Arduino的开发板

Arduino_Nano_RP2040_Connect

Pico共有两个型号Pico和PicoW,区别就是PicoW自带Wifi芯片

Pico的定位是微控制器,对标51单片机,Arduino和ESP8266这些

价格是树莓派中最便宜的板子了,Pico单板¥20,PicoW ¥50

Pico能干啥

既然Pico定位是一个单片机,那么它能干单片机能干的所有事情

Pico有40个引脚,包含UART,GPIO,ADC,SPI,I2C接口,可以用来控制这些接口的设备

Pico如何烧写程序

下面以Pico为例,讲解一下如何跑一个程序(方法对PicoW也是适用的)

我们先从最简单的点灯程序讲起,拿到手的Pico板子是这样的

板子上有个小按钮,叫做BOOTSEL,这个按钮是用来选择启动模式的。

树莓派Pico的烧录方式做的比较简单,不用USB转TTL线连串口,而是通过USB VCP(Virtual COM Port)的方式通过USB接口模拟一个串口协议,我们只需要一根microUSB线就可以下载程序或者板子交互执行命令

当你长按BOOTSEL按钮时插入电脑USB接口,Pico会进入程序烧录模式,这时候电脑上显示一个USB存储设备,将自己写好的固件拷进去就好了,拷贝完成后Pico会自动重启,执行你的程序

当你不按BOOTSEL按钮插入电脑时,进入内置Flash启动模式,会执行Pico中烧录的程序

说得比较抽象,我还是画个图吧

烧录模式:

  1. 长按BOOTSEL按钮同时插入电脑

  1. 电脑会显示Pico的存储设备

  1. 将下载的固件拖入Pico存储设备中

  1. Pico将自动重启执行固件程序

测试固件可以通过官网下载:

Raspberry Pi Datasheets

https://datasheets.raspberrypi.com

Pico板子使用blink.uf2

PicoW板子使用blink_picow.uf2

下载完固件后按上面的方式烧录固件,就能执行闪灯程序

MicroPython怎么玩

MicroPython是Python的精简版,适合在微控制器中执行,可以让微控制器执行Python代码,简化了开发的复杂度

由于MicroPython兼容了Pico开发板,所以Pico可以使用Python来开发程序,MicroPython支持很多开发板,学会了MicroPython之后就能写一套代码在多个板子上运行了

首先下载MicroPython固件

Pico固件地址:

MicroPython - Python for microcontrollers

https://micropython.org/download/rp2-pico/

PicoW固件地址:

MicroPython - Python for microcontrollers

https://micropython.org/download/rp2-pico-w/

找到最新的uf2文件下载即可

下载完成后按照上面烧录方式将固件烧录到Pico中

然后Pico会自动重启进入MicroPython的REPL模式(交互式Python控制台),这时候你会在电脑中找到一个串口设备,这个设备就是Pico

串口调试助手

现在就可以通过串口调试助手可以连接设备了

找一款串口调试助手工具,然后串口号选择你的Pico串口号,波特率选择9600,点击打开串口

然后在输入框中敲一下回车,点击左侧的手动发送,上面的输出框就会显示三个>

>>>这个符号的意思是Python的交互式界面提示符,说明我们连接Pico中的MicroPython成功了,现在运行的是MicroPython的REPL模式,也就是交互式命令模式

然后在输入框输入 help() 再敲一个回车,点击手动发送

MicroPython将返回帮助信息

上面演示了如何通过串口调试助手连接Pico,但是这种方式不太好用,需要每次点击按钮才能执行命令,体验不到交互式命令的快感。

这里推荐一个工具,就是

MobaXterm

下载地址:MobaXterm free Xserver and tabbed SSH client for Windows (mobatek.net)

https://mobaxterm.mobatek.net/

可以连串口,SSH,VNC,远程桌面,有了它你不仅能连Pico也能连其它树莓派系统的SSH和VNC

启动后点击Session,打开新建会话窗口,然后选择Serial(串口),

选择Pico的串口号,设置波特率为9600,点击OK

然后输入 help() 敲击回车

下来就可以在这个交互式命令窗口中写代码了

我们来实现一个点灯程序

点亮LED

依次输入下面这三行命令,每行后面需要敲个回车

from machine import Pin
led = Pin("LED", Pin.OUT)
led.on()

命令执行完后,Pico上的板载LED就被点亮了

代码讲解:

第一行代码就是导入模块,machine这个模块是MicroPython提供的

第二行定义一个变量led,led就是一个引脚

Pin第一个参数是引脚号,这里写的LED(因为Pico和PicoW的板载LED引脚不同,引脚号写LED可以兼容这两款板子)

Pin第二个参数是设置引脚为输出模式(输出就是写数据,输入是读数据)

第三行执行led.on(),Pico给这个引脚输出一个高电平,就点亮了LED

执行

import usys
usys.implementatio

可以输出当前板子信息和MicroPython信息

(name='micropython', version=(1, 19, 1), _machine='Raspberry Pi Pico W with RP2040', _mpy=4358)

执行

usys.ps1='hello-pico> '

可以将前面的提示符>>>修改为hello-pico>

如果遇到不明白的模块,可以执行

help(模块名)

help(usys)

会输出这个模块下的所有类和变量

object<module 'sys'> is of type module
__name__-- sys
path-- ['', '.frozen', '/lib']
argv-- []
version-- 3.4.0; MicroPython v1.19.1-915-g2bcd88d55 on 2023-03-02
version_info-- (3, 4, 0)
implementation-- (name='micropython', version=(1, 19, 1), _machine='Raspberry Pi Pico W with RP2040', _mpy=4358)
platform-- rp2
byteorder-- little
maxsize-- 2147483647
exit-- <function>
stdin-- <io.FileIO 0>
stdout-- <io.FileIO 1>
stderr-- <io.FileIO 2>
modules-- {'rp2': <module 'rp2' from 'rp2.py'>}  
print_exception -- <function>

本篇文章讲了Pico是啥,Pico如何烧录程序,MicroPython怎么玩,以及如何执行交互式命令

下一篇讲如何使用IDE来编写MicroPython代码

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐