关于Raspberry Pi Pico的一切
如果你想购买你的第一个Raspberry Pi,Pico可能是一个非常有吸引力的选择。
但这里真正的问题是Raspberry Pi Pico是否适合你。
购买Raspberry Pi Pico有很多优点和缺点,重要的是要理解 "马到成功 "这句格言。
让我们回顾一下Raspberry Pi Pico的情况
Raspberry Pi Pico在Raspberry Pi产品系列中取得了新的突破,因为它是一个微控制器开发板。这代表了与其他树莓派不同的是,树莓派是微型计算机。
它采用RP2040芯片,该芯片由Raspberry Pi内部设计,其规格如下。
- 双核ARM Cortex M0+ CPU内核(高达133 MHz)。
- 264K SRAM
- 2MB 闪存
Raspberry Pi Pico以其高性能的微控制器而与众不同,并有许多有趣的用途。
优点。价格便宜,非常适合初次接触的人
我们出售的Raspberry Pi Pico价格为4.10欧元 这是你能买到的最便宜的Raspberry Pi。事实上,如果你是修补Raspberry Pi Pico的新手,你可以得到 24.95欧元的全套装备 其中包括你需要的一切,以建立简单的项目。
优点。非常适用于实时应用
Raspberry Pi Pico是需要为事件精确计时的项目的完美选择。例如,读取传感器、操作电机和监测任务。
专业:模拟输入
Raspberry Pi Pico是第一款出厂就有模拟输入的Raspberry Pi。
它总共有5个ADC输入(模拟数字转换器)。其中两个被Pico用于其内部温度传感器和电压监测。
那么,拥有一个模拟输入能给你带来什么好处呢?例如,我的一个项目使用一个电位器来调节一个继电器的开关频率。因此,Raspberry Pi Pico将能够从电位器上读取数值,并在我加载的程序中使用其数值。
Raspberry Pi Pico对ADC信号的分辨率为12位,这比Arduino Uno上的10位ADC要好。其他特征包括。
- SAR ADC(逐次逼近型ADC)
- 500 kS/s (使用外部48MHz时钟)
- ADC输入上的DMA接口,可以不使用CPU而访问内存
专业:可编程的IO(PIO)。
这是Raspberry Pi Pico最酷的功能之一,也是它赋予Pico的活力,而其他一些微控制器却没有。
PIO是一个硬件接口,可以独立于主处理器进行编程。因此,它可以模拟许多不同的接口。
- 8080和6800并行端口
- I2C
- 3针I2S
- SDIO(SD卡接口)
- Spi, DSPI, QSPI
- UART
- DPI或VGA(通过电阻网络/DAC)。
PIO状态机是完全可编程的,专门用于I/O。特别注意的是精确的时间。
例如,PIO接口可用于设置时间关键型(时间敏感型)的应用,如控制LED灯条,稳定可靠。
优点:可以通过修改输出视频
你看到上一节中的 "DPI或VGA "了吗?你知道这意味着什么...
是的,Raspberry Pi可以输出视频,这是你在大多数微控制器上连做梦都想不到的事情。
优点:适合在面包板上使用
在Raspberry Pi Pico上,引脚位于Pi Pico的两个相对的侧面,因此你可以将Pi Pico直接放在面包板上,每一面都隔着分界沟。
这使得原型设计更容易,因为你不需要用公-母线(或Arduino Uno的公-母线)来把Pico连接到面包板上。
你不能用其他树莓派做这个,因为它们的引脚都集中在一起。
优点:最小的树莓派
拥有一块小板是好事,因为它更容易在狭小的空间内安装,也更容易安装。例如,假设你想把Raspberry Pi Pico安装在墙上,或安装在一个封闭的环境内:机器人、手持设备、手表等。
优点:耗电量低
我提到Raspberry Pi Pico很小,可以放在小空间里。
最棒的是,由于Pico吸电,你将不需要一个大电池来运行它。
我是否还提到过,它的电压范围很广?它可以在1.8-5.5V的电压下运行,这很好,因为你可以用单个锂电池(3.7V)或串联的镍基电池(每个1.2V)来运行它。
Joey Castillo的分析 显示,如果你的电流<=10mA,Pico的降压转换器的效率在2.54V至3.2V(相当于2个完全充电的AA充电电池/碱性电池)达到峰值。
不过,在更高的电流下,你最好提供3节AA电池或一个锂电池的电压。
这些统计数据对Pico W来说可能并不真实,因为Pico W使用不同的降压转换器。Pico W使用的是 RT6154 而Pico使用 RT6150.点击链接可以看到各自的数据表。
这是Pico的降压转换器的图表。
中立。Raspberry Pi Pico上没有Linux支持
这是否是Raspberry Pi Pico的优点或缺点,取决于你的项目。没有Linux意味着你的项目加载速度更快,但总的来说,如果你有一个操作系统,你可以做得更多。
我说的加载速度快是什么意思?嗯,由于没有操作系统需要启动,你的代码将在你连接Pi Pico电源的同一时刻加载。
在任何其他Raspberry Pi上,要花更长的时间才能看到响应。
但不幸的是,没有操作系统,你只能用MicroPython或C语言编程,而有了操作系统,你可以用很多很多的语言进行编码。此外,你还可以玩游戏、上网和享受其他多媒体应用。
中立。没有WiFi
这是否是一个缺点取决于你的项目,但如果你正在开发一个需要检查天气或将数据上传到谷歌表格的项目,你将无法在Raspberry Pi Pico上完成。
公平地说,你可以使用售后部件安装WiFi或以太网,比如下面这个项目。
中性。GPIO输出3.3V
这是否是一个优点或缺点,取决于你打算将Raspberry Pi Pico与哪些组件配对。
我发现3.3V是一个障碍的情况是当我试图用5V的继电器来使用它时。哎呀!我无法通过足够的电压来使继电器开关。
因此,我转移到我的Arduino Uno,它的GPIO引脚输出5V。
另一个办法是在原型机上添加元件,以便3.3V电压可以升压,但是,呃,当我可以用Arduino Uno来做的时候,为什么要把事情复杂化?
当然,这只是一种情况。你的里程可能会有所不同,这取决于你正在做什么。
树莓派Pico的用途
Raspberry Pi Pico的使用范围是无限的。你可以做一些提高你生活质量的东西,或者做一些只是为了好玩的东西。
读取MicroPython的微控制器(而不只是C)。
如果你使用过Arduino,你会知道你必须用C语言编程。
然而,你可能不喜欢用C语言编程,你可能在Python方面有更强的背景。
因此,如果你为在Arduino上用C语言编写代码而挣扎,那么好消息是,无论Arduino能做什么,Raspberry Pi Pico都有可能能够满足你的使用情况。
因此,扔掉那些大括号,开始缩进你的代码吧!
电池供电的构建,运行时间长
如果你需要使用尽可能少的电力,那么你肯定会选择Raspberry Pi Pico,而不是像Raspberry Pi Zero这样更强大的产品。
原因如下:你可以使用更广泛的电源输入(1.8V至5.5V),而且由于Raspberry Pi Pico非常高效,你将能够获得比使用Raspberry Pi Zero这样的微型计算机更长的运行时间。
哦,我有没有提到Raspberry Pi Zero对你提供的电压非常挑剔?它只接受4.75-5.25V的电压*。
* 根据Arya在下面的评论,只要你没有任何USB外设,Raspberry Pi Zero就可以用一个锂电池运行。谢谢Arya。
宏观键盘、旋转拨动器和其他HID
Raspberry Pi Pico可以作为一个人机交互设备(HID)使用。
但与无聊的老式鼠标或键盘不同,Raspberry Pi Pico允许你创建一个设备,为你的使用情况做一些利基和特定的事情。
因此,你可以创建宏键盘,在按下一个按钮时打出一个长字符串。或者你可以用它来使Discord静音。或者用它来按CTRL + ALT + DEL。这种可能性是无穷无尽的。
医学研究中心
为你的键盘建立一个讽刺转换器。将普通键盘插入,打开开关,让世界了解你对事物的真实感受。 pic.twitter.com/J3cAOfCAvw
- Ben S (@BenSommerf) 2022年1月26日
用什么来表达讽刺更好:展示一个 /s 在你的文本末尾的标签,或在你的文本末尾的标签?
我确实更喜欢第二个,因为它立即传达了sArCaSm。
这个项目的创建者Ben S分享说,他使用两个Raspberry Pi Picos来实现这一目标。一个Pico充当计算机的USB HID键盘设备,另一个充当USB主机,从键盘上读取输入。然后,主机通过UART与设备进行通信,了解按键的内容。
Pico讽刺键盘在每次击键后都会开关大写锁定,从而使大写锁定成为可能。
Raspberry Pi Pico不能做什么?
让我们谈一谈更典型的直接出箱的配置。
我承认,你有很多方法可以增加Raspberry Pi Pico的功能。你可以输出视频,设置以太网,输出音频...
经过足够的修改,Raspberry Pi Pico将接近一台微型计算机的能力。
这就是说,没有一个理性的人要走那么远。超过一定程度的修改,它就变得不可行了。
为什么会变得不可行?
因为你还不如买一些直接开箱就能获得所有这些功能的东西!"。
你应该关注的一个接近的竞争对手是Raspberry Pi Zero 2。我们有一个 巨型文章将在这里回答你所有的问题.
从根本上说,Raspberry Pi Pico的计算能力较弱。与最便宜的微型计算机Raspberry Pi Zero相比,Pi Pico的默认时钟为133MHz,每秒可以完成361.76条Dhrystone Million指令(DMIPS),而Raspberry Pi Zero可以完成1250条DMIPS。
Raspberry Pi Zero还拥有512MB内存、操作系统、WiFi和一个SD卡插槽。对于像我这样最精通JavaScript的人来说,能够编写Node代码将其连接到谷歌云是我喜欢使用Pi微型计算机的一个原因。
微型计算机与微控制器
在说明前面的情况时,我使用了微型计算机和微控制器这两个术语。我将总结一些用途,其中一个比另一个更好。
单片机比微型计算机简单得多,因此让单片机完成简单的任务要容易得多。如果你只需要闪烁一个LED,旋转一个伺服,测量温度数据,一个微控制器可以非常容易和有能力地完成。
事实上,你确实得到了一些优势,如快速重新启动和更长的电池寿命。
简单的同时也有局限性。例如,用一台微型计算机将你的原型连接到互联网上要容易得多。例如,你可能想把你的原型连接到一个电子邮件服务上,以便在达到某些阈值时向你发出信号。我会在Raspberry Pi Zero上做这些项目,而不是试图让它与Raspberry Pi Pico一起工作。
场景 | 微控制器(如Raspberry Pi Pico)。 | 微型计算机(例如:Raspberry Pi Zero)。 |
运行一个服务器 | 没有 | 是 |
闪烁一个LED | 从开始到结束要快得多 | 速度慢得多;要经过许多程序 |
停电时自动重新启动程序? | 是 | 不是默认的 |
玩电子游戏 | 没有 | 是 |
用电池运行? | 是的,平均而言,更有可能持续更长时间 | 是的,平均使用时间没有那么长 |
热量管理? | 通常不需要 | 散热器、风扇、导热盒 |
费用? | 较低 | 更高 |
树莓派引脚
Raspberry Pi Pico有30个GPIO引脚,其中26个可供使用。
- 2个SPI
- 2 x UART
- 2 x I2C
- 8个双通道PWM
还有。
- 4个通用的时钟输出
- 4 x ADC输入
- 所有引脚的PIO
这里是Raspberry Pi Pico的引脚图。
事实上,一个叫C_King_Justice的Redditor也做了一个工具,可以帮助你找到你的Raspberry Pi Pico GPIO引脚。你可以 在此下载该文件。
树莓派Pico规格
树莓派Pico | |
价格 | €4.10 (董事会) €24.95 (初级的Raspberry Pi Pico套件) |
CPU | RP2040带有双核Cortex M0+,频率高达133MHz |
CPU能力 | 片上PLL允许可变的核心频率 |
CPU频率 | 高达133MHz,可超频/欠频 |
GPU | 没有GPU |
内存 | 6组264 kB的嵌入式SRAM |
网络 | 不包括,但你可以把它加进去 |
蓝牙 | 不包括 |
HDMI接口 | 不包括,但你可以把它加进去 |
USB接口 | 用于电源和数据的MicroUSB |
复合视频 | 不包括,但你可以把它加进去 |
复位引脚 | 不包括在内,但你可以把它焊上 |
照相机端口 | 无 |
消耗功率 | 在SLEEP模式下~1.3mA,在 "爆米花 "测试中~93mA |
电源供应 | 通过microUSB的5V或通过VSYS的1.8 - 5.5V |
形式因素 | 51 x 21 毫米 |
Raspberry Pi Pico有HDMI吗?
不,默认情况下是没有的。但你可以自己添加一个视频出来。 在此查看我们的指南.
请注意,虽然视频接口是一个HDMI接口,但这实际上是输出一个DVI信号。HDMI是DVI的继承者,所以DVI信号可以通过HDMI传输。
同样,你可以购买一个HDMI转DVI的适配器,将HDMI接口转换为DVI。
也就是说,请注意,这种设置并不输出音频。
Raspberry Pi Pico有以太网吗?
不,默认情况下是没有的。但你可以自己添加以太网。
Raspberry Pi官方发布了一份指南,你可以按照该指南进行操作。 在你的Raspberry Pi Pico上安装以太网。
基本上,你需要一个RMII以太网PHY,如LAN8720,一块面包板和跳线。你的Raspberry Pi Pico也必须有焊接好的接头。
Raspberry Pi Pico有WiFi吗?
没有,但你可以用售后零件来安装。一个能帮助你获得WiFi功能的兼容芯片是Adafruit Airlift WiFi Featherwing Co-Processor。
Raspberry Pi Pico有USB吗?
是的,Raspberry Pi Pico有一个microUSB端口。它可以用来为Raspberry Pi供电。
此外,你还可以将Raspberry Pi Pico用作人机交互设备。用适当的元件和代码把它连接到你的电脑上,可以让它成为一个操纵杆、宏键盘、切换器等。
Raspberry Pi Pico有蓝牙吗?
没有,但你可以使用售后零件进行安装。
通常情况下,在Raspberry Pi Pico上集成蓝牙需要你购买一个蓝牙模块,如HC-06蓝牙模块。
有没有Raspberry Pi Pico相机?
是的,你可以将Raspberry Pi Pico与一个摄像头模块整合在一起。
你可以使用的相机是Himax Imaging的HM01B0相机。使用这种相机的好处是,它的功率极低,根据拉尔夫-山本(Ralph Yamamoto)的描述,它只需要1-2毫瓦。 让相机与Raspberry Pi Pico一起工作的经验.
他的结论是:"我确信它需要大量的调整,"并进一步说,他觉得自己在处理方面的能力有限,而且相机的文件也缺乏。
树莓派Pico操作系统
一般来说,你不会在Raspberry Pi Pico上运行一个操作系统。
在大多数项目中,你可能只需要上传代码,然后只运行那一个程序。在这种情况下,不需要一个操作系统。
但你是那种在Chrome上有多个标签的人吗?现在,想象一下,如果你只能使用一个Chrome标签。
虽然Raspberry Pi Pico的 "经典 "编程方式是最节省资源的方式,但它也束缚了你运行多个任务的能力。
幸运的是,现在有一些操作系统可以在Raspberry Pi Pico上运行。
官方RTOS(实时操作系统)。
目前还没有,但Raspberry Pi在其FAQ中说(截至2022年2月),他们 "将很快致力于移植一个RTOS"。
逍遥游系统
Raspberry Pi Pico可以运行FreeRTOS。这里有一个简短的视频,它将指导你从裸机编程("典型 "的方式,你会闪烁一个LED)到基于操作系统的编程。
这个五部分的系列深入地介绍了FreeRTOS,它是如何工作的,以及你如何设置和使用它。
芙兹克斯
你不能让Raspberry Pi Pico运行具有图形用户界面的Linux,但你可以用Fuzix在Raspberry Pi Pico上运行Unix克隆。
树莓派有 出版了一份指南 你可以遵循,你需要的是什么。
- 用于串行连接的非Pico Raspberry Pi
- 树莓派Pico
- 用于Raspberry Pi Pico的MicroSD阅读器。
俾达斯(PyDOS)
Github用户RetiredWizard刚刚为RP2040/ESP32板创建了一个类似DOS的外壳。
正如你在上面的视频中所看到的,它真的把你带回到30多年前。
开始使用Raspberry Pi Pico
我们设计了几个套件,基于我们认为从长远来看对你享受Raspberry Pi Pico的旅程最有帮助的东西。
在最基本的方面,这里有一些推荐的Raspberry Pi Pico配件。
如果你打算给Pico运行第二个电源,肖特基二极管是必要的。这是在2.3V至5.5V电压范围内运行电源的最简单方法,可以是一个锂电池或三个AA电池。
添加这个二极管将允许你从VBUS和外部电压中 "OR "出两个电压来为VSYS供电,二极管可以防止任何一个电源对另一个电源进行反向供电。
然而,虽然这是最简单的,但也有效率损失。 Raspberry Pi的数据手册 详细解释了这一点,并在第4.5章中解释了如何减轻这种影响。
有了电池座,你就可以有备用电源(用肖特基二极管)或完全脱离电网运行你的设置。
这个是不言而喻的。你需要这条电缆来连接你的Raspberry Pi Pico和你的电脑,以便上传代码。它还可以作为一个电源。
两个20针头是必不可少的,因为你将需要它们将你的Raspberry Pi连接到组件或面包板上。
调试时需要三个针脚的接头。
不要买40针的接头,因为那是为其他树莓Pis准备的。
如果你不想自己焊接焊头,你可以考虑购买一个 带有预焊头的Pico。
在Raspberry Pi Pico上编程
你可以在Raspberry Pi Pico上用MicroPython、C/C++和CircuitPython编码。这里有一个表格,显示了闪动内部LED所需的努力。
语言 | 微蟒 | C/C++ | 循环器(CircuitPython |
首次运行的必要设置 | 中型 | 最高的 | 最低的 |
创建新程序的步骤 | 中型 | 最高的 | 最低的 |
对硬件的控制 | 中型 | 最高的 | 中型 |
树莓派Pico上的MicroPython
MicroPython本质上是Python精简版。或者说是减肥的Python。
它是带有Python标准库的一个小子集的Python,经过优化,可以在Raspberry Pi Pico等微控制器上运行。
为了使用MicroPython,你将需要下载 顿尼 然后到右下方写着 "Python 3.7.9 "的地方,点击它,选择MicroPython(Raspberry Pi Pico)。
你可能会看到一个弹出的窗口,要求你更新。请继续吧。
当我在Raspberry Pi操作系统上运行Thonny时,更新运行良好,然而在Windows上,出现了 "SSL: CERTIFICATE_VERIFY_FAILED "的错误。
你可以通过下载这个证书来解决这个问题(https://letsencrypt.org/certs/lets-encrypt-r3.der),然后右击下载的文件并 "安装证书",你就不会再遇到这个错误了。
在安装了MicroPython之后,你可以通过使用以下代码来完成Raspberry Pi Pico的 "Hello World",并使其内部的LED灯闪烁。
from machine import Pin, Timer
led = Pin(25, Pin.OUT)
timer = Timer()
def blink(timer):
led.toggle()
timer.init(freq=2.5, mode=Timer.PERIODIC, callback=blink)
按RUN,将其保存为 blink.py 而你的Raspberry Pi的内部LED应该闪烁。
有了这些,让我们看看C语言上的等效过程。
进一步阅读
PiCockpit也有一些向导,帮助你在Raspberry Pi Pico上开始使用MicroPython。
Windows上的Raspberry Pi Pico和MicroPython - 我们深入探讨了在Raspberry Pi的Windows上设置MicroPython,如何在Windows 8.1上安装正确的驱动程序,使用PuTTY连接到Pico,以及对Thonny的详细解释。
在Raspberry Pi Pico上为MicroPython提供C语言扩展 - 如果你可以同时运行MicroPython和C语言,并获得两种语言的好处,会怎么样?在计算量大的任务上,C语言比MicroPython表现得更好,有时你可能想在MicroPython中通过C语言的API来连接一些硬件。本指南分享了如何做到这一点。
用C/C++闪烁的LED
如果你需要更精细的控制,你可能会想写C/C++。
让你的Raspberry Pi Pico用C语言工作是一个很大的工作。它不像用Thonny编写MicroPython那样容易。
最直接的方法是使用带有Raspberry Pi操作系统的Raspberry Pi微型计算机。
如果你想使用Mac或Windows。 官方指南提供的说明 在第九章。
运行这三个命令。
wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
$ chmod +x pico_setup.sh
./pico_setup.sh
你将需要大约2GB的空间来运行这个命令。一旦完成,通过运行以下命令重新启动 sudo reboot .
一旦你启动了,打开Visual Studio Code(在开始菜单的Programming文件夹下),并打开位于 /home/pi/pico/pico-examples.你必须加载这个文件夹,而不是一个子文件夹。
然后你需要配置VS Code。参照上面的图片,做这些。
- 点击显示 "无套件 "的部分。
- 将出现一个弹出窗口。选择写有 "arm-none-eabi "的选项。
- 点击[全部],选择你要编译的项目。为了让内部的LED闪烁,我选择了 眨眼
- 新闻 构建
你将能够找到 眨眼.Uf2 文件中的 /build/blink 文件夹。
将UF2文件复制到你的Raspberry Pi Pico上,你会看到内部LED开始闪烁。
在C/C++上建立你自己的项目是比较复杂的。官方指南有 第八章 其中告诉你如何创建你自己的项目。
循环器(CircuitPython
与Raspberry Pi Pico一起使用的编程语言中的第三个参与者是CircuitPython。
要开始了。 在这里下载.UF2文件。
按住BOOTSEL按钮,把你的Pico插到电脑上。你应该看到一个新的驱动器。
把你下载的.UF2文件复制到该驱动器上。你的Pico将断开连接并重新连接到一个名为CIRCUITPY的新驱动器。
在该文件夹中,有一个文件名为 code.py然后用你喜欢的代码编辑器打开它(甚至记事本也可以)。
把这个代码放进去。
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
一旦你保存它,你会看到你的Pico的内部LED开始闪烁。
总的来说,CircuitPython是让你的内部LED闪烁的最顺畅、最直接的方法。其他两个选项比较繁琐,尤其是在Pico上运行C语言(如果你想让它在Mac/Windows上工作,那就更麻烦了)。
说到这里,如果你想长期使用CircuitPython,有一种说法是使用Thonny作为你的IDE,因为它可以为你下载软件包,你也可以通过按命令栏上的播放/停止按钮来运行和停止程序。
关于CircuitPython的进一步参考资料,见 Adafruit的文档。 要回到MicroPython。 从这里下载一个.UF2文件 并将其上传到你的CIRCUITPY驱动器。
奖金:Raspberry Pi Pico上的汇编程序
是的,如果你不想用C语言或Python语言为Raspberry Pi Pico编程,你可以用汇编语言编写。
Raspberry Pi的FAQ指出,Pico SDK有一些用汇编语言编写的功能,并且说。
"该处理器(双核ARM Cortex M0+)实现了ARMv6-M拇指指令集,包括一些使用拇指2技术的32位指令。ARMv6-M指令集包括ARMv7-M的所有16位拇指指令(CBZ、CBNZ和IT除外)以及32位拇指指令BL、DMB、DSB、ISB、MRS和MSR"。
奖励:树莓派Pico上的Rust编程语言
如果你因为是拉斯塔斯人,迫不及待地想用你喜欢的语言写作而感到暴躁,那么我有个好消息要告诉你。
这方面的核心是RP2040硬件抽象层,它可以 你可以在GitHub上获得(名为rp-hal)。.它适用于除Raspberry Pi Pico以外的许多使用RP2040微控制器的电路板。
这里有一个视频,告诉你如何设置它。
什么是UF2,为什么它在Raspberry Pi Pico上用得那么多?
这很神奇。你把一个UF2文件拖到你的Raspberry Pi Pico上,它突然用一个新的名字重新安装,或者它突然闪烁一个LED。
UF2(U F的平方)代表了USB闪存格式。当你把它拖到你的Raspberry Pi上时,你除了拖动你的代码外,还拖动了对bootloader的指示,以便它知道如何处理你所上传的内容。
通过串行终端连接Pico
窗户
使用串行终端连接到Pico是很容易的,而且 我们这里有一个指南。
连接到Raspberry Pi 4 (Linux)
为了将Raspberry Pi Pico连接到Raspberry Pi 4,你可以使用USB或UART引脚、minicom和一些跳线。
树莓派的 开始使用Pico 有 第四章的所有信息,特别是4.4和4.5。
调试Raspberry Pi Pico
底部的这三个针脚是做什么用的?
这些引脚将使你有能力重置Pico,将代码载入闪存,运行代码,最重要的是有调试能力。
最大的优势是你可以从这些针脚中获得高级调试能力。你现在能够做更精细的代码分析,因为你可以。
- 在你的代码中设置断点。断点允许你在检查变量的值时暂停进一步的代码执行,例如。
- 逐行查看代码执行情况。什么时候会出错?一行一行地看,可以更容易地进行调试。
它们可以通过其GPIO引脚连接到Raspberry Pi微机上。如果你想把它连接到其他机器上,可能是通过USB,那么你就需要一个调试探针。
Raspberry Pi Pico也可以作为一个调试探针,将你的电脑与你要工作的Pico连接起来。这样想吧:你的电脑没有建立UART/SWD连接所需的GPIO引脚,所以你要用Pico来提供这些连接以及 皮测仪 将启用的固件。
然而,如果你打算使用SWD进行调试,你应该使用基于UART的串行连接而不是USB连接。调试会停止RP2040的内核,这将导致USB连接断开。
让我们来谈一谈每个针脚的作用。
ǞǞǞ串行线调试输入/输出引脚在RP2040和主机(例如全尺寸计算机或Raspberry Pi微型计算机)之间传递调试信息。
屏蔽:接地。需要保持主机和Pico之间良好的信号完整性。
卫星导航系统(SWCLK):串行线时钟引脚可同步连接。
你最好的办法是参考 开始使用Pico Raspberry Pi的数据手册,具体重点是第5、6章和附录A:使用Picoprobe。
树莓派Pico项目
这里有一些适合初学者的项目,你可以用最少的额外零件要求开始。
简单的ArCasM键盘和宏键盘
这是一个有趣的项目,可以让你创建一个修改器,把正常的打字变成讽刺的情况。说正经的,知道如何使用Adafruit的HID库和开关,就可以创建宏按键。
在最基本的设计中,除了Raspberry Pi Pico之外,你不需要任何东西。然而,你的Raspberry Pi Pico应该有CircuitPython和Adafruit的HID库。
在Thonny的常规模式下,进入 工具 -> 管理软件包 并搜索 adafruit-circuitpython-hid.安装它。
还要确保你正在使用CircuitPython解释器,在Thonny的右下方找到。
把这个代码放进去。
import time
import board
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
keyboard = Keyboard(usb_hid.devices)
while True:
keyboard.press(Keycode.CAPS_LOCK)
time.sleep(0.2)
keyboard.release(Keycode.CAPS_LOCK)
将代码上传到你的Pico。如果需要,在Thonny中按下RUN按钮。
现在,每当你把Raspberry Pi Pico插到电脑上时......就在你的眼前看一看这个模型。
这个脚本的作用是,它每隔0.2秒切换一次大写字母锁的开关,正如在文件中声明的那样 时间.睡眠(0.2).如果你改变括号内的数值,你可以微调你的案件切换频率。
在这个项目中添加一个开关
这种基本设计有一个缺点,即你必须拉动USB才能停止讽刺。
让我们添加一个开关,使我们能够打开和关闭这个功能。
让我们也保持董事会的LED灯在讽刺被激活时亮起。
一个按钮开关有四个棱角。将3.3V引脚和GPIO 22(标示为GP 22)连接在按钮的对角线上。
这里发生的情况是,当你按下开关时,你将把3.3V电压连接到GPIO 22引脚,从而,用通俗的话说,激活它。
这是你唯一需要做的物理修改。这很容易。
至于代码,它增加了不少行,(黑体=与按钮有关,斜体=与LED有关)。
import time
import digitalio
import board
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
keyboard = Keyboard(usb_hid.devices)
<strong>btn1_pin = board.GP22
btn1 = digitalio.DigitalInOut(btn1_pin)
btn1.direction = digitalio.Direction.INPUT #GP22 is an input
btn1.pull = digitalio.Pull.DOWN #DOWN means it outputs False
</strong>
<em>led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT</em> #powering LED, so give it OUTPUT
activated = False #this variable stores if sarcasm is on or off
while True:
<strong>if btn1.value: #if user presses btn1, start sarcasm
activated = True</strong>
if activated:
<em>led.value = True</em> #turn on board LED
keyboard.press(Keycode.CAPS_LOCK)
time.sleep(0.2)
keyboard.release(Keycode.CAPS_LOCK)
if <strong>btn1.value: #if user presses btn1 while activated, cancels sarcasm
activated = False
<em>led.value = False</em> #turn off LED
time.sleep(0.2)</strong>
<strong>#pauses while loop to give user time to remove finger from btn1</strong>
将讽刺键盘转换为宏键盘
你可以用这个按钮来激活像ALT + TAB、CTRL + ALT + DEL这样的宏,或者其他任何东西,最多可以有六个常规键。
你只需要在这个方法中修改keyboard.press和keyboard.release。
import time
import digitalio
import board
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
keyboard = Keyboard(usb_hid.devices)
btn1_pin = board.GP22
btn1 = digitalio.DigitalInOut(btn1_pin)
btn1.direction = digitalio.Direction.INPUT
btn1.pull = digitalio.Pull.DOWN
while True:
if btn1.value:
<strong>keyboard.press(Keycode.ALT,Keycode.TAB )</strong>
time.sleep(0.2)
<strong>keyboard.release(Keycode.ALT,Keycode.TAB)</strong>
有很多事情你可以用这个键盘黑客做。例如,你可以用它来阻止你的屏保弹出,按一个无害的键,如Page Up。或者你可以专门用它来控制Zoom、Discord、OBS、Meet,等等。
使用DHT22的温度/湿度数据
如果你有一个DHT11、DHT22或AM2302传感器,你可以把它与Raspberry Pi Pico一起使用。
这些传感器可能最好与LCD搭配,或者让你保存数据的方式,但让我们从一个快速启动的项目开始。
你需要三根跳线,Raspberry Pi Pico上的接头和一个10K电阻。除了带接头的Raspberry Pi Pico之外,下面的软件包有你需要的一切。
使用Thonny、CircuitPython和Adafruit的DHT库,这真的很容易。
下面的步骤使用DHT22。
将DHT22传感器连接到Raspberry Pi Pico上
将DHT22连接到Pico上真的很容易。
DHT22上有四个引脚。从左到右,网状的一面朝向你,这些针脚是 碱性物质, 数据,北卡罗来纳州和 屏蔽.你不需要连接NC。
连接 碱性物质 到 3.3V引脚 在Pi上。
将10K电阻从3.3V连接到 数据,然后连接 数据 到GP0。这在面包板上更容易完成,这样你就可以分出3.3V的电压。如上图所示,一个电阻从最左边的引脚到第二个引脚,同样,绿色的线也连接到GPIO 0。
连接 屏蔽 到你的Raspberry Pi Pico的任何地线。
你已经完成了。是时候使用软件了。
用Thonny为Raspberry Pi Pico的DHT22编码
首先,打开Thonny,使你处于常规模式和CircuitPython(右下角)。上面有一份关于Thonny和CircuitPython的更详细的指南。
进入工具->管理软件包->搜索 adafruit-circuitpython-dht.
然后,输入这个由Adafruit提供的代码。
import time
import adafruit_dht
import board
dht = adafruit_dht.DHT22(board.GP0)
while True:
try:
temperature = dht.temperature
humidity = dht.humidity
# Print what we got to the REPL
print("Temp: {:.1f} *C \t Humidity: {}%".format(temperature, humidity))
except RuntimeError as e:
# Reading doesn't always work! Just print error and we'll try again
print("Reading from DHT failure: ", e.args)
time.sleep(1)
新闻 运转 在Thonny,你应该看到一个输出。
树莓派Pico显示器
Raspberry Pi Pico相当酷,因为它可以显示图像。
缺点是需要相当多的工作,需要一些技术知识,而且你得到的图像看起来像是来自Windows 3.1时代。
为什么会这样?因为264KB的有限内存。这限制了你的显示分辨率和颜色深度。
这就是说,这里有一些例子说明你可以如何输出。
用DVI袜套轻松实现视频输出
输出视频的最简单方法是按照我们的指南,使用DVI袜或VGA和音频扩展板。DVI接口使用HDMI电缆,这可能是与当今设备最兼容的端口。
连接Pico和显示器的DIY方法
还有其他方法可以在不购买外围设备的情况下输出视频。
Miroslav Nemecek写了一篇关于你如何使用 八个电阻和一个VGA端口用于连接显示器 到你的Raspberry Pi Pico。
这里有一个方法,你可以使用HDMI线和电阻来连接你的Pico和HDMI显示器。
Raspberry Pi Pico的功耗
Raspberry Pi的Pico数据手册为我们提供了一个很好的基础,让我们了解在某些典型用途的基础上,你可以从Pico获得多少功耗。
这些数字并不代表你可以从Raspberry Pi Pico中提取的绝对最大值,但却是一个好的起点。
他们的第一次测试包括视频、音频和SD卡访问,通过VGA、SD卡和音频板显示一个 "爆米花 "媒体播放器演示。
国家 | |
播放 爆米花 (视频、音频、SD卡) | 93.5mA |
BOOTSEL模式,有效 | 9.9mA |
DORMANT模式 | 0.8mA |
SLEEP模式 | 1.3mA |
你可能想知道:DORMANT和SLEEP之间有什么区别?
休眠需要一个外部触发器,操纵一个GPIO引脚来唤醒Raspberry Pi Pico,而SLEEP可以运行一个内部时钟来唤醒RP2040,如图所示。 RP2040数据手册.
在Raspberry Pi Pico常见问题中,他们进一步澄清了这一点。
"SLEEP模式是指处理器处于wfi/wfe状态,DMA不活动,所以你可以关闭大多数系统时钟,包括像总线结构这样的东西。
DORMANT模式是指你关闭所有的振荡器,所以仍然是较低的功率,但这样你就有较少的选择来唤醒。"
我可以通过电源箱运行Raspberry Pi Pico吗?
是的,你可以。
但是Raspberry Pi Pico可能无法从电源银行获得足够的电力,导致电源银行进入省电模式。
不幸的是,解决方案是通过在电源银行和Raspberry Pi Pico之间放置一个电阻来获取更多的电力。这里有一个视频来解释其来龙去脉。
给Pico供电(电压)
Raspberry Pi Pico可以使用microUSB端口供电。这是从5V的VBUS电压通过D1为VSYS供电。
如果你不使用USB端口为你的Raspberry Pi Pico供电,那么你可以将VSYS连接到你的电源上,电压为1.8V至5.5V。
然而,如果你同时连接这两个电源,你将需要通过一个肖特基二极管将第二个电源输入VSYS,这样可以防止任何一个电源给另一个电源供电。肖特基二极管也将允许VBUS电压或外部电压中的较高者流动。
然而,肖特基二极管上有一个电压降,所以你需要提供2.3V至5.5V的电压。
这意味着你可以用至少2个镍氢充电电池(2.4V)或1个锂基电池(3.7V)为Raspberry Pi Pico供电。
为了不因使用肖特基二极管而损失效率,你可以改用一个低电阻的P沟道MOSFET。
欲了解更多信息,请查看 Raspberry Pi Pico数据表。
我可以通过电视的USB给Raspberry Pi Pico供电吗?
是的,你可以。这是一张图片,我在其中闪烁了内部LED。
一个标准的USB端口应该能够提供高达500mA的电流,这远远超过了Raspberry Pi Pico的需求。正如你在Raspberry Pi所做的功耗测试中看到的,最激烈的测试只消耗了大约90mA。
如果你的Raspberry Pi Pico设置的电流超过500mA,你可能会遇到问题,例如,如果你的Pico正在运行耗电的外围设备。
树莓派Pico与其他板卡对比
Raspberry Pi Pico是一个较晚进入微控制器世界的产品,在2021年才发布。在微控制器的世界里已经有了激烈的竞争,如ESP32和Arduinos,它们有许多变种,可以帮助你的项目开始,并具有适当的功能,如WiFi。
Raspberry Pi Pico没有变体,所以你需要购买HAT和其他附加组件来实现同样的目标。
此外,如果你要在上面添加许多组件......什么时候才是直接购买一台微型计算机的时候?
让我们通过观察ESP32、Arduino Uno和Raspberry Pi Zero来回答这个问题。
树莓派Pico VS Espressif ESP32
ESP32在技术能力方面比Raspberry Pi Pico有了很大的进步。为了便于比较,我选择了PICO-KIT的变体,因为它在外形上感觉与Pico最相似。
首先,拥有WiFi和蓝牙是一个重大的游戏改变者。例如,你可以在Espressif ESP32上运行一个显示传感器数值的服务器,而在Raspberry Pi Pico上则不能这样做。
ESP32还拥有更快的处理器、更多的内存和更多的闪存,但所有这些都以更高的功耗为代价。
Raspberry Pi Pico的规格比较适中,但有两点比较突出。它可以接受1.8V到5.5V的电压,这使得你可以使用一个锂电池,从而创造出一个非常紧凑的封装。这在ESP32上是不可能的,除非你修改了单个锂电池的3.7V电压。
树莓派Pico | 实验性的ESP32-PICO-KIT | |
CPU频率 | 133MHz | 80/160/240MHz |
微控制器 | RP2040 | Xtensa LX6 |
磁芯 | 2 | 2 |
闪存 | 2MB | 4MB |
内存 | 256KB | 520KB |
芯片 | 26 (用户可使用的) | 36 |
有USB吗? | 微型USB | 微型USB |
WiFi和/或BT? | 没有 | 是的,都是 |
电压 | 1.8 - 5.5V或5V USB | 3.3V(通过引脚)或5V(通过USB)或5V-12V(通过稳压器)。 |
功率消耗(含活动)。 | 93mA(爆米花测试) | 100-128mA1 |
尺寸 | 51x21mm | 52x20mm |
语言 | MicroPython / C | MicroPython / C |
注意:ESP32上的功耗数字是运行一个空循环的程序。
树莓派Pico VS Arduino Uno Rev3
Arduino创造了一堆板子,就外形尺寸而言,Arduino Nano可能是最接近的,只有45 x 18mm。Arduino还生产了一块使用RP2040微控制器的板子。
然而,最常见的板子是Arduino Uno Rev3,所以我们来看看这两块板子的比较。
树莓派Pico | Arduino Uno Rev3 | |
CPU频率 | 133MHz | 16兆赫 |
微控制器 | RP2040 | ATmega328P |
闪存 | 2MB | 32KB |
内存 | 256KB | 2KB |
芯片 | 26 (用户可使用的) | 14个数字,6个模拟 |
有USB吗? | 微型USB | USB B |
WiFi和/或BT? | 没有 | 有WiFi版本 |
电压 | 1.8 - 5.5V或5V USB | 6-20V(建议7-12V)或通过USB。 |
尺寸 | 51x21mm | 68x53mm |
语言 | MicroPython / C | C |
对于初学者来说,需要注意的最大区别之一是Arduino Uno是在5V逻辑下工作的,而Raspberry Pi Pico则在3.3V逻辑下工作。
5V有可能使初学者更容易,因为有些组件需要5V输入,如继电器。如果你有一个想要在Raspberry Pi Pico上运行的5V组件,你将不得不提供额外的组件来将3.3V升到5V。
另一个区别是Arduino Uno是开源的,这意味着你可以买到更便宜的板子,但其能力完全相同。也就是说,Raspberry Pi Pico已经非常便宜了,$4或4.10欧元。
Arduino Uno还接受更广泛的电压范围(推荐7-12V),这意味着你可以在许多类型的电源上运行它。
在编程语言方面,Pico的优势是允许你用MicroPython编码,而你必须为Arduino编写C语言。这就是说,Arduino有一个更大的库,使其更容易与组件一起工作。
树莓派Pico VS 树莓派Zero
在某种程度上,Pico和Zero的能力是重叠的。在简单的电路中,你可以用Pico和Zero来做完全相同的事情。
但你如何达到同样的目的,在Pico和Zero之间会有所不同。
以下是我用来决定使用哪种方法的逻辑。
场景 | 得到什么 |
我更擅长于C/Python以外的语言 | 零度 |
我有 "无限 "的电力(即非太阳能或电池使用情况)。 | 零度 |
我需要WiFi和/或蓝牙 | 零度 |
我需要保存数据(如温度记录)。 | 零度 |
我需要使用相机 | 零度 |
我需要最紧凑的设置 | 皮克 |
我需要在崩溃/断电时快速重新启动 | 皮克 |
我不想建立一个操作系统 | 皮克 |
我想要更便宜的选择 | 皮克 |
关于为什么选择Pico或Zero的更详细的概述是 上述内容,这个链接将带你到它。.
树莓派Pico VS Teensy 4.1
Teensy 4.1是一个非常强大的板子,因为它的ARM Cortex-M7芯片运行频率为600MHz。
由PJRC在2021年发布的Teensy 4.1将吸引那些需要拥有大量处理能力、RAM、闪存、以太网和比Raspberry Pi Pico更多GPIO引脚的人。
你确实得到了55个输入/输出引脚,但只有42个是 "可用于面包板 "的。有35个PWM引脚,18个模拟输入,8个串行,3个SPI和3个I2C。
Raspberry Pi Pico的闪光之处在于它的简单性。如果你刚刚开始学习,并希望以最简单的方式开始进行简单的项目,Raspberry Pi Pico提供了最简单的方式来启动和运行。
例如,Raspberry Pi Pico选择的编程语言是MicroPython,而Teensy 4.1则主要用C语言编程。
在Raspberry Pi Pico上使用CircuitPython也非常容易,这使得构建项目更加容易。
Teensy 4.1的价格为$26.85,比$4的Raspberry Pi Pico高出不少。
另外,用电池给Raspberry Pi Pico供电要容易得多,因为它可以接受宽电压。
树莓派Pico | Teensy 4.1 | |
CPU频率 | 133MHz | 600MHz |
闪存 | 2MB | 8MB |
内存 | 256KB | 1024KB |
芯片 | 26 (用户可使用的) | 55个数字,18个模拟 |
有USB吗? | 微型USB | 微型USB |
WiFi和/或BT? | 没有 | 没有,但有以太网 |
电压 | 1.8 - 5.5V或5V USB | 通过USB或VIN的5V电压 |
尺寸 | 51x21mm | 61x15mm |
Raspberry Pi Pico 下载
我已经汇编了一个文件清单,可以帮助你的项目。它们中的大多数都住在 树莓派的数据手册子域 而这里的内容是与Raspberry Pi Pico相关的内容。
参考文献
树莓派Pico数据手册 (关于Pico,机械/电气规格,功能,供电,调试,原理图,元件位置)
Raspberry Pi Pico产品简介 (营销牌)
编程
Windows上的Raspberry Pi Pico和MicroPython
Raspberry Pi Pico的入门知识 (用于C/C++开发)
用于Raspberry Pi Pico的CircuitPython UF2文件
在Raspberry Pi Pico上开始使用MicroPython
Raspberry Pi Pico C SDK(软件开发工具包)文件
Raspberry Pi Pico MicroPython SDK(软件开发工具包)文件
消耗功率不是6W,是0.5W(5V下100mA)。
嘿,安东尼,我已经改正了。谢谢你的意见。
这就是为什么我们的产品会被称为 "Pinów"。在PICO的技术框架下,我们的目标是实现这一目标。
Puedo connectar por usb una Raspberry Pi Pico con un Arduino Nano. que la rrasberry envíe por usb datos al arduino?
谢谢你
pico w现在有wifi了
> 哦,我有没有提到Raspberry Pi Zero对你提供的电压非常挑剔?它只接受4.75 - 5.25V的电压。
不正确,这是规定的规格,但它需要比这更低的规格,而且效果也很好,见这里。 https://hackaday.io/project/19035/log/69596
写得非常好!我喜欢这个。"例如,我的一个项目使用一个电位器来调节一个继电器的开关频率。- 我想知道你是否能以这个项目为例详细介绍一下。 你是否使用了PIO/PIO状态机?
没有使用PIO!
基本上,当你把一个电位器连接到一个ADC时,你会得到一个值。转动电位器将增加或减少该值。
我基本上是用这些值来创建一个定时器。因此,例如,如果数值是2000,它将对应于2秒开,2秒关。
好的,树莓派Pico是否有可能在接收到一个2A的电源但电压为5V的输入时出现问题?
你使用的是有2A电压的移动电话吗?尽管一直存在风险,但我认为Pico只使用所需的电流,尽管你的移动电话可以使用2A(最大)。
你并不局限于用C或microPython编程。我有安装了FORTH和BASIC解释器的皮卡,而且还有CircuitPython。
谢谢你的反馈--知道你也可以在Pico上运行FORTH等语言,这很有意思!
在Raspberry Pi Pico W上不能安装adafruit-circuitpython-hid库。
在安装时,我发现有28个内存错误。
你在哪里?
谢谢 1000
很棒的文章!我用 Pico 制作了带有 kmk 固件(基于 python 的电路)的定制键盘,效果非常好。
我最近在 aliexpress 上买了一些 pico 克隆机,价格低至 2.7 美元,带 C 型和 16 MB......尚未测试。