欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

树莓派程序用什么语言编程(python入门教程)

程序员文章站 2024-03-26 19:29:17
2021年初,树莓派pico板一经面世我就获得了cytron提供的测试版,并使用微python和c进行了编程。我从官方文档件入手,以快速使用树莓派pico运行ubuntu 20.04操作系统的计算机入...

2021年初,树莓派pico板一经面世我就获得了cytron提供的测试版,并使用微python和c进行了编程。

我从官方文档件入手,以快速使用树莓派pico运行ubuntu 20.04操作系统的计算机入门指南为操作案例,对每一个细节进行记录,哪怕是led闪烁这样微小的事项都会被纳入收录范围。另外,windows 和 mac 操作系统的说明也与此类似。

准备硬件

从理论上讲可以单独开始使用开发板,但由于板子有一些接头,因此便借机尝试由minix neo p2 usb-c电源供电的pining64 pinecil烙铁。

树莓派程序用什么语言编程(python入门教程)

焊接准备工作

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

树莓派程序用什么语言编程(python入门教程)

焊接完成图示

不使用这些头是一个耻辱,所以我将树莓派pico插入到面包板,并增加了一个led与附带的电路。

树莓派程序用什么语言编程(python入门教程)

接入面包板

5v 连接到 vbus(引脚 40),gnd 连接到引脚 38,我决定使用最靠近 led 的 gpio 即 gp15(引脚 20)。树莓派pico上的gpio标记仅显示在板的底部,当板连接到面包板时,原理图会有所帮助。

树莓派程序用什么语言编程(python入门教程)

树莓派pico原理图

硬件设置现已完成,我只需要一个微型 usb转 usb-a 电缆将电路板连接到我的笔记本电脑。

树莓派pico上的micropython

首先,我们应将micropython固件烧录到板中。为此,可从入门指南下载最新的固件(审核时为
pico_micropython_20210121.uf2)。

其次,在连接到带有 usb 端口的计算机时按板上的 bootsel 键,并在连接后释放按键。我这样做了,但什么也没发生。那是因为我使用自行车灯的usb电缆,缺乏数据线……

最后,我选择一个适当的micro usb到usb-a型电缆,树莓派pico顺利在我的笔记本电脑上正确识别了:

树莓派程序用什么语言编程(python入门教程)

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

为rpi-rp2大容量存储设备安装设备。

树莓派程序用什么语言编程(python入门教程)

安装的rpi-rp2


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

树莓派程序用什么语言编程(python入门教程)

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

在这一点上,树莓派网站上的入门指南不是很有用,我们只好切换到python sdk文档(pdf)。

该文档使用minicom进行串行控制台,但鉴于bootterm更容易使用故我更中意它。无论您在何种情况下进行 linux 编程,请确保当前用户已添加到dialout组,否则您需要将所有程序作为root用户身份运行:

树莓派程序用什么语言编程(python入门教程)

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

bootterm正确检测到ttyacm0端口,所以我只运行”bt”来访问micropython repl接口,并键入一些micropython命令。

树莓派程序用什么语言编程(python入门教程)

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

我可以打开板载 led (gp25), 但当我为面包板上的 led (gp15)执行相同操作时, 它不起作用。我重新检查了电路,并使用万用表检查电压,发现gp25仍然拉低。网络搜索显示gp15在电路python中被禁用,源于它会干扰usb接口。

gp15由内部usb外围设备使用,不应故意使用它

micropython也是如此,所以我切换到相邻的引脚(gp14,引脚19):

树莓派程序用什么语言编程(python入门教程)

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

树莓派程序用什么语言编程(python入门教程)

运行成功的电路

果然,成功了!如果您想了解有关micropython api 的更多信息,请按 ctrl+b 并输入帮助():

树莓派程序用什么语言编程(python入门教程)

前往“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。

树莓派程序用什么语言编程(python入门教程)

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

然后, 我进入run->select interpreter… 选择了“micropython (树莓派pico)“.

选择micropython

从用户界面,我可以输入一些代码来关闭板载led:

树莓派程序用什么语言编程(python入门教程)

代码示例

为了以一秒的间隔闪烁板载 led 和面包板 led,我复制并修改了 python sdk 文档中的一些代码:

树莓派程序用什么语言编程(python入门教程)

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

我保存文件作为我的电脑上的blink.py,它运行正常。但是,如果您想在没有 pc 的情况下运行代码,则可以将其保存到树莓派pico。点击file->save copy,然后点击”树莓派pico”按钮,

树莓派程序用什么语言编程(python入门教程)

保存文件到树莓派pico

并将程序保存为main.py。现在,您可以通过将板连接到任何 usb 电源自动运行程序。

树莓派pico上的 c/c++

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

因此,我们必须安装c/c++ sdk、依赖关系和示例,具体如下:

树莓派程序用什么语言编程(python入门教程)

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

我们可以看看
pico-examples/blink/blink.c的闪烁示例:

树莓派程序用什么语言编程(python入门教程)

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

在修改之前,我们应尝试先导出 sdk 路径并配置构建:

树莓派程序用什么语言编程(python入门教程)

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

现在可以进入一个blink目录(一个新目录,由cmake生成),然后运行make:

树莓派程序用什么语言编程(python入门教程)

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

现在有一堆文件:

树莓派程序用什么语言编程(python入门教程)

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

最重要的是blink.uf2,我们可以复制到树莓派pico运行程序,并闪烁.elf,可用于调试器(openocd + gdb),但这是入门指南的范围。

现在,我们知道如何为pico板编译 c 程序,让我们修改闪烁.c示例,或者打开和关闭连接到 pin 14 的板载 led 和外部 led:

树莓派程序用什么语言编程(python入门教程)

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

再次构建程序:

树莓派程序用什么语言编程(python入门教程)

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

进入boot模式并复制blink.uf2到板,成功了!

树莓派程序用什么语言编程(python入门教程)

实践证明,可以通过 c 或 python 程序实现相同的结果,另外,我们将在即将发布的帖子中查看 rp2040 的 pio (可编程 io) 界面,因为 afaict 是树莓派 rp2040 与其他微控制器最大的区别所在。

我要感谢cytron发送树莓派pico进行评审。如果您位于东盟,可以以 4.98 美元的价格购买他们商店的板子,如果您有时间,可以以相同的价格为树莓派pico提供5美元的树载板,该板已焊接,并已在全球范围出货。