本入门指南用于帮助您快速开始使用 BPI-Leaf-S3 开发板。
在 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 是一款对初学者非常友好的工具。可在其官网或 GitHub Releases 页面找到与当前操作系统对应的安装包,下载后按提示完成安装。
按照安装提示逐步完成安装。
也可以通过 pip 安装:pip install thonny。此方式需要 Python 环境,适用于 macOS 或 Linux。
将开发板连接到电脑。
运行 Thonny,然后单击 Run > Select interpreter。
选择 MicroPython (Raspberry Pi Pico)。
选择开发板对应的串口,然后单击 OK 确认设置。
选择 View > Files,打开文件管理栏。
REPL 是 Read-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:它读取输入、计算并求值、输出结果,再等待下一次输入,如此循环。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 执行软复位;复位后程序会立即运行并输出信息。
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 RGB LED 连接到 GPIO 3,只需一根信号线即可控制。请在 REPL 中输入以下代码。
>>> from machine import Pin
>>> from neopixel import NeoPixel
>>> neo = NeoPixel(Pin(3), 1)
neopixel模块提供 WS2812 RGB LED 驱动。更多信息请参阅 MicroPython 文档:neopixel。 输入以下代码,RGB LED 将亮起红光。
>>> neo[0] = (25,0,0)
>>> neo.write()
neo[0] = (25,0,0) 用于设置第一个 RGB LED 的颜色。
WS2812 中包含红、绿、蓝三个单色 LED。元组 (25,0,0) 中的三个元素依次控制它们的亮度,取值范围为 0~255;元素值越大,对应单色 LED 的亮度越高。
建议将各元素的值控制在 50 以下;数值过高时,近距离直视会十分刺眼。
执行 neo.write() 后,芯片会向板载 WS2812 RGB LED 发送控制信号。
可以修改元组中的数据来控制 RGB LED 的颜色。例如,在 REPL 中继续输入以下代码,可将 RGB LED 设置为白色。
>>> neo[0] = (25,25,25)
>>> neo.write()