MicroPython 固件下载与烧录

MicroPython官网可以找到支持RP2040芯片的固件,BPI-Pico-RP2040完全兼容Raspberry Pi Pico的固件: https://micropython.org/download/rp2-pico/

点击连接进入页面后即可在下方看到几列固件下载地址,推荐选择下载Releases栏的第一项,兼顾稳定性与新功能特性,后续例程基于v1.19.1固件编写。

Nightly builds 栏所提供的固件为每日构建,将拥有最新的功能特性,但稳定性可能稍差,且可能尚没有对应最新功能的使用文档。

下载完成后将得到一个 .uf2 扩展名的文件,将其烧录到BPI-Pico-RP2040开发板的方式非常简单,先确保有一根type-c数据线,一端连接到PC,拿起开发板,保持上面无任何连线或外围硬件,按住Boot按钮,将type-c数据线与开发板连接,松开Boot按钮,PC的系统中将出现一个名为RPI-RP2的新磁盘,将.uf2文件复制到此盘中,复制完成后开发板将自动复位,进入 MicroPython 模式。

安装Thonny IDE

以Windows为例,点击连接下载 thonny-3.3.13.zip,解压后得到thonny-3.3.13.exe

运行thonny-3.3.13.exe,按照安装提示逐步操作即可顺利完成安装 。

也可通过pip安装,pip install thonny==3.3.13,需要具备Python环境,适用于macOS或Linux。

建立开发板与Thonny的连接

连接开发板与电脑。

运行Thonny,点击 Run > Select interpreter 。

选择 MicroPython(Raspberry Pi Pico) 。

选择开发板所在的串行接口,点击OK确认设置。

勾选 View > Files 即可打开文件管理栏。

使用REPL输出Hello World

REPLRead-Eval-Print-Loop的缩写名词,译为 读取-求值-输出-循环

我们可以通过实际操作来明白它的意思。

将已经安装了MicroPython固件的开发板连接电脑,运行Thonny IDE并正确配置后,在Shell窗口中将出现这样的文本内容:

MicroPython v1.19.1 on 2022-06-18; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>> 

注意最后一行的>>>提示符,我们可以直接在这后面输入算式或是代码,按下键盘enter回车键就会立即在下一行得到输出结果。

>>> 1+2
3
>>> print("Hello World")
Hello World
>>> 

现在可以很直观的理解了,它会读取我们输入的信息,执行运算求值,输出结果,然后等待我们后续的输入,一直循环这个过程,这也是REPL又被译为交互式解释器的原因,我们可以直接通过输入代码来和硬件交互,没有像传统的C语言那样需要在中间执行编译的过程,我们输入的信息没有经过编译就传输给芯片自行解释并运行了,这本就是Python语言的一大重要特性,MicroPython完美继承了它。

如果仅仅是使用MicroPython REPL,很多具有串口信息收发功能的软件都可以操作,感兴趣的话可以试试各种串口工具,这可以令人更深刻的理解 “没有中间执行编译的过程” 的意思。

关于REPL的应用,更详尽全面的内容可以参考MicroPython文档:REPL

代码编辑器

Thonny IDE当然不仅仅可以进行REPL的操作,作为python代码编辑器,本职功能还是有的。

新建一个文件并在其编辑区内输入代码。

print(1+2)
print("Hello World")

完成代码编辑后,点击 Save,可以选择将文件保存到开发板中,这将直接将整个文件传输到开发板的flash中。可将文件命名为main.py,设备会在每次上电或复位后执行它。

现在点击 Run current script 运行,同样是无需编译的,在Shell中会立即得到结果。

3
Hello World

另外也可以尝试REPL的键盘控制快捷键ctrl+D软件复位,可以看到复位后程序立即执行并打印出信息。

点亮LED

BPI-Pico-RP2040上的板载LED连接到GPIO 25引脚,你可以在REPL上点亮它。当你看到REPL提示>>>时,请输入以下代码。

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

machine模块用于控制开发板上的硬件。这是所有MicroPython端口的标准配置,你可以在MicroPython文档:machine中了解更多有关它的信息。

输入以下代码LED将亮起。

>>> led.value(1)

输入以下代码将熄灭LED。

>>> led.value(0)

使用板载彩灯

BPI-Pico-RP2040上的板载 WS2812 彩灯连接到GPIO 3引脚,它仅需一个信号线即可控制,在REPL中输入以下代码。

>>> from machine import Pin
>>> from neopixel import NeoPixel
>>> neo = NeoPixel(Pin(3), 1)

neopixel模块为 WS2812 彩灯提供驱动程序。你可以在MicroPython文档:neopixel中了解更多有关它的信息。

输入以下代码,彩灯将亮起红色。

>>> neo[0] = (25,0,0)
>>> neo.write()

neo[0] = (25,0,0)设定第一颗彩灯的颜色。

WS2812 彩灯内有三颗纯色LED,它们的颜色分别是红,绿,蓝,(25,0,0)元组中的元素依次对应控制它们的亮度,数值范围 0 ~ 255, 元素的数值越大,它所控制的纯色LED就越亮。
建议将元素的数值控制在50以下,数值过高时近距离直视会刺眼。

neo.write()执行后,芯片会将控制信号传输给这颗板载的 WS2812 彩灯。

你可以尝试自行修改元组中的数据,控制彩灯的颜色,例如继续在REPL中输入以下代码,使彩灯亮白色。

>>> neo[0] = (25,25,25)
>>> neo.write()

参考资源