首先感谢发烧友平台提供的免费测试活动,拿到开发板后,第一时间开箱,就看到了黑色的板子,配合镀金焊盘,看起来也挺漂亮。
BPI-Pico-RP2040 是 Banana Pi 推出的一款搭载RP2040芯片的微控制器开发板,其最显著的特性是,在尽量保留Raspberry Pi Pico的功能,外形尺寸,引脚布局的前提下,增加一颗板载 WS2812 彩色LED;将 3-Pin DEBUG 接口替换为一个JST SH 1mm 4-Pin 插座,可与 Qwiic & STEMMA QT 或任何可能的外设连接;将micro-USB插座替换为USB Type-C插座,支持正反插,与绝大多数现代智能手机的USB Type-C线通用,无需额外购买。
关键特性
- 双核 ARM Cortex M0+ CPU 内核(高达 133 MHz)
- 264K SRAM
- 2MB Flash
- 26个可用GPIO引脚,其中4个支持ADC模拟输入
- 1 × LED
- 1 × WS2812 LED
- 1 × JST SH 1mm 4-Pin 插座
- 1 × USB Type-C插座
相对树莓派官方的rp2040来说,引脚是完全兼容的,只是Flash体积从4MB减小到2MB(大部分代码应用无所谓,不好做带图片的GUI设计而已)。
从官方的wiki可以找到引脚图(见下图)和尺寸图、以及原理图。还是相当不错的。
好了,闲扯这么多,现在就开始准备circuitPython点灯吧
1、circuitPython是什么
CircuitPython是对初学者友好的 Python 开源版本,支持常见的单片机平台,如ESP32,stm32,rp2040等等。从 CircuitPython 7.0.0 开始,就支持直接使用code.circuitpython.org网页直接访问蓝牙、Wifi以及USB设备,进行在线编程和调试。这里就不再说明,本文和以后的文章,均使用VSCode编写代码,串口调试。有兴趣的朋友可以自己试一下。
简单来说,CircuitPython是MicroPython的一个分支,相对MPy来说,CircuitPython的支持库更专业化,代码案例更丰富。由于对应库都是由adafruit公司维护的,代码的可读性和专业性更高。同时,CircuitPython固件烧录到设备后,默认都是开启U盘模式的,对用户来说,可以直接访问U盘修改库和源码,对用户更友好一些(不需要各种环境)。
2、下载固件并烧录
打开CircuitPython官方网站的pi_pico页面并点击下载按钮,把固件保存到本地。
然后我们拿出BPI-Pico-RP2040开发板,按住BOOT键不放,插入USB连接到电脑。电脑上会出现RPI-RP2名称的U盘,把上一步下载到的adafruit-circuitpython-raspberry_pi_pico-en_US-8.0.3.uf2文件直接拖到U盘图标上,就开始自动烧录固件了。
烧录完毕后,设备会自动重启,不出意外的话,资源管理器会自动打开名称为CIRCUITPY这个U盘,并显示以下内容。重要的目录和文件已标识。
用串口工具连接到串口后,也可以看到以下内容,通过串口的提示,可以看出CircuitPython运行用户程序,需要通过以下两种方式:
1、未开启REPL时,单片机会定期检测code.py文件是否更新,若更新后自动重新运行程序。
2、在REPL环境下,用户可按下CTRL+D快捷键进行重启用户应用操作。
3、点灯
好了,现在环境也准备好了,我们就开始编写点灯程序吧。CircuitPython提供了非常多的库支持,和mpy的也用法一样。最著名的点灯库不外乎neopixel
,这里我们就用它来点灯吧。
以下是点灯程序
import board
import neopixel
from adafruit_led_animation.animation.blink import Blink
import adafruit_led_animation.color as color
if hasattr(board, "NEOPIXEL"):
NEOPIXEL = board.NEOPIXEL
else:
NEOPIXEL = board.GP3
pixels = neopixel.NeoPixel(NEOPIXEL, 1, brightness=0.1, auto_write=False)
blink = Blink(pixels, 0.1, color.JADE)
while True:
blink.animate()
以上代码其实很简单,引入需要用到的库,board库包含了开发板的对应引脚和LED等外设资源。neopixel库实现了WS2812的操作代码。Blink和color分别是adafruit_led_animation.animation库的对应软件实现。简简单单几句代码,就完成了对应的点灯功能。
保存文件到code.py后,终端会提示import语句出错,找不到对应的lib文件。这时是否有想起前边我们说过,非内置的库需要复制到libs文件夹内呢?
我们打开官网网站的libs下载页面,下载### Bundle for Version 8.x压缩包,有需要的也可以下载对应源码学习。
解压缩Bundle 包之后,我们找到以下的几个文件和目录,并复制到libs目录里。
然后我们重新插拔开发板(或者在串口终端里按下CTRL+D),就可以看到板子上的led开始愉快的闪烁啦。
是不是特别简单?