afbgs7zw5b 发表于 2022-12-16 22:05:11

树莓派Pico快速上手教程之MicroPython和C使用说明

文章来源:树莓派Pico快速上手教程之MicroPython和C使用说明 - CNX Software中文站

https://p3-sign.toutiaoimg.com/pgc-image/69818945af9b4a58bfc0a550b0583b93~tplv-tt-large.image?x-expires=1986562900&x-signature=%2FAC2XYXsKtZPWjO68AFDhLU7kCw%3D

树莓派Pico板带排针
2021年初,树莓派Pico板一经面世我就获得了Cytron提供的测试版,并使用微Python和C进行了编程。
我从官方文档件入手,以快速使用树莓派Pico运行Ubuntu 20.04操作系统的计算机入门指南为操作案例,对每一个细节进行记录,哪怕是LED闪烁这样微小的事项都会被纳入收录范围。另外,Windows 和 Mac 操作系统的说明也与此类似。
准备硬件

从理论上讲可以单独开始使用开发板,但由于板子有一些接头,因此便借机尝试由MINIX NEO P2 USB-C电源供电的Pining64 Pinecil烙铁。

https://p3-sign.toutiaoimg.com/pgc-image/d547ac442c394ed1915d2b81bee83a3a~tplv-tt-large.image?x-expires=1986562900&x-signature=xVtT5EE3Kc3FPJ%2Bmc%2BuBrPN1ez8%3D

焊接准备工作
烙铁工作了大约一分钟,开始出现焊接问题……看着屏幕,可以看到Zzzz并且温度下降。因为焊锡不够,所以我没有移动烙铁,因此未检测到任何活动而后进入睡眠状态。更改运动灵敏度或睡眠超时可以轻松地解决此问题,同时,我可以完成手头的任务。

https://p3-sign.toutiaoimg.com/pgc-image/d032694fc3fd47798d5da878eba8ed92~tplv-tt-large.image?x-expires=1986562900&x-signature=foVtqU%2Bo1HvCceDPocyGmzwK5bY%3D

焊接完成图示
不使用这些头是一个耻辱,所以我将树莓派Pico插入到面包板,并增加了一个LED与附带的电路。

https://p3-sign.toutiaoimg.com/pgc-image/8078713b26ec430e960a58ec3a69dec9~tplv-tt-large.image?x-expires=1986562900&x-signature=Mj8MJlgWodAt92cgg5g9CoPmUA0%3D

接入面包板
5V 连接到 VBUS(引脚 40),GND 连接到引脚 38,我决定使用最靠近 LED 的 GPIO 即 GP15(引脚 20)。树莓派Pico上的GPIO标记仅显示在板的底部,当板连接到面包板时,原理图会有所帮助。

https://p3-sign.toutiaoimg.com/pgc-image/64ca5125b1d9487da3ad14ae5ee86e58~tplv-tt-large.image?x-expires=1986562900&x-signature=t0%2BhGoNvSUcJ4xbAXAQ8BkW%2FafI%3D

树莓派Pico原理图
硬件设置现已完成,我只需要一个微型 USB转 USB-A 电缆将电路板连接到我的笔记本电脑。
树莓派Pico上的MicroPython

首先,我们应将MicroPython固件烧录到板中。为此,可从入门指南下载最新的固件(审核时为pico_micropython_20210121.uf2)。
其次,在连接到带有 USB 端口的计算机时按板上的 BOOTSEL 键,并在连接后释放按键。我这样做了,但什么也没发生。那是因为我使用自行车灯的USB电缆,缺乏数据线……
最后,我选择一个适当的Micro USB到USB-A型电缆,树莓派Pico顺利在我的笔记本电脑上正确识别了:

https://p3-sign.toutiaoimg.com/pgc-image/14fd398c3f1a4ccbbb3a8f80d06908cd~tplv-tt-large.image?x-expires=1986562900&x-signature=AYvabOoNnB%2Fb2fK1XbeLXkWgbjg%3D

前往“CNX Software中文站”官网,查看完整信息
为RPI-RP2大容量存储设备安装设备。

https://p3-sign.toutiaoimg.com/pgc-image/7ffaca021c8d4cd79a8c17135d414225~tplv-tt-large.image?x-expires=1986562900&x-signature=ZkA%2BZ6G2YQuzgkP5eT78FE037L8%3D

安装的RPI-RP2
将pico_micropython_20210121.uf2文件复制到驱动器后, 它会自动卸载且作为串行设备重新启动:

https://p3-sign.toutiaoimg.com/pgc-image/3823f5953701405abbda92e7d479bbc7~tplv-tt-large.image?x-expires=1986562900&x-signature=FRrD%2FAPqtGHn2i4ofxwEJJUdXD8%3D

前往“CNX Software中文站”官网,查看完整信息
在这一点上,树莓派网站上的入门指南不是很有用,我们只好切换到Python SDK文档(PDF)。
该文档使用minicom进行串行控制台,但鉴于Bootterm更容易使用故我更中意它。无论您在何种情况下进行 Linux 编程,请确保当前用户已添加到dialout组,否则您需要将所有程序作为root用户身份运行:

https://p3-sign.toutiaoimg.com/pgc-image/36b6d628083b4efe8619d2b9d67daf48~tplv-tt-large.image?x-expires=1986562900&x-signature=%2Bo2GQlE4b6K6C%2BuSQW8Sve8IaDs%3D

前往“CNX Software中文站”官网,查看完整信息
Bootterm正确检测到ttyACM0端口,所以我只运行”bt”来访问MicroPython REPL接口,并键入一些MicroPython命令。

https://p3-sign.toutiaoimg.com/pgc-image/dda6cbe2a19642369d9ef5a266fdbffb~tplv-tt-large.image?x-expires=1986562900&x-signature=Fp6jhRACRzJXkvRhfLI5mq2JjNM%3D

前往“CNX Software中文站”官网,查看完整信息
我可以打开板载 LED (GP25), 但当我为面包板上的 LED (GP15)执行相同操作时, 它不起作用。我重新检查了电路,并使用万用表检查电压,发现GP25仍然拉低。网络搜索显示GP15在电路Python中被禁用,源于它会干扰USB接口。
GP15由内部USB外围设备使用,不应故意使用它
MicroPython也是如此,所以我切换到相邻的引脚(GP14,引脚19):

https://p3-sign.toutiaoimg.com/pgc-image/1e5a8614aff74b8b875db8903b7fc614~tplv-tt-large.image?x-expires=1986562900&x-signature=b1A4VX787Sv%2FMlazVhNRi8bItSw%3D

前往“CNX Software中文站”官网,查看完整信息


https://p3-sign.toutiaoimg.com/pgc-image/80dc86968e9c42898106e22d47a7bd30~tplv-tt-large.image?x-expires=1986562900&x-signature=zciuchZID9waqjbqPGPuarlJv7M%3D

运行成功的电路
果然,成功了!如果您想了解有关MicroPython API 的更多信息,请按 Ctrl+B 并输入帮助():

https://p3-sign.toutiaoimg.com/pgc-image/44fb900961534a5abc12cc715c1f0f91~tplv-tt-large.image?x-expires=1986562900&x-signature=CPaUZfJLT1f3M31WLWCiascLJYQ%3D

前往“CNX Software中文站”官网,查看完整信息
Ubuntu 20.04 确实有Thonny 3.2.7 在其存储库中, 我们可以使用 sudo apt install thonny进行安装,但它不支持树莓派Pico, 因此, 我用pip3安装了最新版本的程序(v3.3.3):我们可以用”Ctrl+”后面跟着”q”退出bootterm。但如果我们想在板上保存Python程序并自动运行呢?我在Python SDK文档中未见到任何关于这一点内容,所以我不得不跳到第三个指南,找到的最佳方法是使用Thonny。

https://p3-sign.toutiaoimg.com/pgc-image/7433d180263b480dace7a340f614fcfc~tplv-tt-large.image?x-expires=1986562900&x-signature=zfQKpOyDA8ZRQPCQXY5Xwryny1w%3D

前往“CNX Software中文站”官网,查看完整信息
然后, 我进入Run->Select interpreter… 选择了“MicroPython (树莓派Pico)“.
选择MicroPython
从用户界面,我可以输入一些代码来关闭板载LED:

https://p3-sign.toutiaoimg.com/pgc-image/2b23a06a486544378af7674a14f60b5d~tplv-tt-large.image?x-expires=1986562900&x-signature=W50VnEyoYCeZkXtp%2BuWtGD%2Bxyts%3D

代码示例
为了以一秒的间隔闪烁板载 LED 和面包板 LED,我复制并修改了 Python SDK 文档中的一些代码:

https://p3-sign.toutiaoimg.com/pgc-image/d143e8e49ce4430e8aefa6e9b96c3a6d~tplv-tt-large.image?x-expires=1986562900&x-signature=gxhH%2Fg1b%2F9W3dLQ9FyzpCG8XAC8%3D

前往“CNX Software中文站”官网,查看完整信息
我保存文件作为我的电脑上的blink.py,它运行正常。但是,如果您想在没有 PC 的情况下运行代码,则可以将其保存到树莓派Pico。点击File->Save copy,然后点击”树莓派Pico”按钮,

https://p3-sign.toutiaoimg.com/pgc-image/9f2af0b668d9446b8033061faf5e1abc~tplv-tt-large.image?x-expires=1986562900&x-signature=JoLFkrVHvgy1RXg5Xs618GN8OqM%3D

保存文件到树莓派Pico
并将程序保存为main.py。现在,您可以通过将板连接到任何 USB 电源自动运行程序。
树莓派Pico上的 C/C++

让我们尝试一下”C/C++ SDK”,除了一些用 C++ 编写的工具外,基本上都是 C 语言。我们可以回到官方入门文档,在boot模式下,我们被要求将blink.uf2复制到树莓派Pico,它确实使板载 LED 闪烁。它的工作原理非常简单,因为二进制是预构建的,但我们真正想做的是修改源代码,并建立我们自己的二进制文件来使内部和外部 LED 闪烁。
因此,我们必须安装C/C++ SDK、依赖关系和示例,具体如下:

https://p3-sign.toutiaoimg.com/pgc-image/c973d113351646fd980f40f53b866ae6~tplv-tt-large.image?x-expires=1986562900&x-signature=svFYwYezJfi2Q%2BmniE2A9pog9gw%3D

前往“CNX Software中文站”官网,查看完整信息
我们可以看看pico-examples/blink/blink.c的闪烁示例:

https://p3-sign.toutiaoimg.com/pgc-image/1f8266c8c53d476d8a1247c8e8976d55~tplv-tt-large.image?x-expires=1986562900&x-signature=5nGnF4p1gXncHCSY2uIt2fjUb7A%3D

前往“CNX Software中文站”官网,查看完整信息
在修改之前,我们应尝试先导出 SDK 路径并配置构建:

https://p3-sign.toutiaoimg.com/pgc-image/03da238b8fdf4e1cb09f9ca1fe497803~tplv-tt-large.image?x-expires=1986562900&x-signature=L6Jw4V1njH%2FcXQ08WIPNEd%2BLY%2Fk%3D

前往“CNX Software中文站”官网,查看完整信息
现在可以进入一个blink目录(一个新目录,由cmake生成),然后运行make:

https://p3-sign.toutiaoimg.com/pgc-image/21687b9a25374b8b833f80e196cc5228~tplv-tt-large.image?x-expires=1986562900&x-signature=2EFyHQo7yqOrB68Urs8Fo3eEi5Q%3D

前往“CNX Software中文站”官网,查看完整信息
现在有一堆文件:

https://p3-sign.toutiaoimg.com/pgc-image/107ca37635d94b2fab9262856179210e~tplv-tt-large.image?x-expires=1986562900&x-signature=u0FkxMv9ZRHs7Lia3Zud3pb5daM%3D

前往“CNX Software中文站”官网,查看完整信息

最重要的是blink.uf2,我们可以复制到树莓派Pico运行程序,并闪烁.elf,可用于调试器(OpenOCD + GDB),但这是入门指南的范围。
现在,我们知道如何为Pico板编译 C 程序,让我们修改闪烁.c示例,或者打开和关闭连接到 PIN 14 的板载 LED 和外部 LED:

https://p3-sign.toutiaoimg.com/pgc-image/46acd963046c48639b7dc70e54eaec04~tplv-tt-large.image?x-expires=1986562900&x-signature=s%2BxgV%2BN38smAfUUjaD%2FVyrPCar0%3D

前往“CNX Software中文站”官网,查看完整信息
再次构建程序:

https://p3-sign.toutiaoimg.com/pgc-image/f3e70345453a4bf684df8245a5a3276f~tplv-tt-large.image?x-expires=1986562900&x-signature=cxXybHGiZosDUoDo20m8zam3y04%3D

前往“CNX Software中文站”官网,查看完整信息
进入boot模式并复制blink.uf2到板,成功了!

https://p3-sign.toutiaoimg.com/pgc-image/23285dd66e7946cab76c7fd3cc5fd298~tplv-tt-large.image?x-expires=1986562900&x-signature=2n18uPjUsOFoZe0OARrWQgUTPok%3D

实践证明,可以通过 C 或 Python 程序实现相同的结果,另外,我们将在即将发布的帖子中查看 RP2040 的 PIO (可编程 IO) 界面,因为 AFAICT 是树莓派 RP2040 与其他微控制器最大的区别所在。
我要感谢Cytron发送树莓派Pico进行评审。如果您位于东盟,可以以 4.98 美元的价格购买他们商店的板子,如果您有时间,可以以相同的价格为树莓派Pico提供5美元的树载板,该板已焊接,并已在全球范围出货。
更多干货,请点击:CNX SOFTWARE中文站 — 嵌入式开发者的新闻知识库!
页: [1]
查看完整版本: 树莓派Pico快速上手教程之MicroPython和C使用说明