树莓派Zero 2 W凭借小巧体积与完整.NET IoT支持,成为物联网开发的理想选择,但新手常因忽视细节陷入“卡顿”“配置丢失”等困境。本文主要介绍这些问题的解决方案,帮助新手更快上手树莓派Zero 2 W。

1. 背景

之前又买了两个玩具,一个是 Luckfox Pico Ultra BW ,一个是树莓派Zero 2 W。这两个开发板都是我第一次接触,这两个开发板都可以安装完整的.NET运行环境,但是一个是 arm32 ,一个是 arm64。使用起来还是有一些区别的,总之是各有优缺吧。前面主要是在使用 Luckfox,这几天开始使用树莓派Zero 2 W,其中也发现了一些特别容易忽略的问题,所以写了这篇文章,希望能帮助到其他新手。

请添加图片描述

2. SSH卡顿之谜:被忽视的供电陷阱

作为一款售价仅百元左右的开发板,树莓派Zero 2 W凭借其支持完整.NET IoT环境的能力,成为物联网开发的性价比之选。但很多新手在初次使用或多或少都会遇到一些问题。其中最常见的问题就是SSH卡顿,即在使用SSH远程连接树莓派Zero 2 W时,输入命令后会出现卡顿现象,甚至无法输入命令。

我也是第一次使用树莓派,只是看了烧录系统镜像的软件,就直接开整,这期间的软件安装,初始配置,烧录,SSH远程,更换apt源,更新软件,一套丝滑小连招下来,都是异常的顺利。

请添加图片描述

直到第二天,我发现SSH远程连接树莓派时,输入命令后会出现卡顿现象,甚至无法输入命令。这个问题让我很是困扰,因为我之前的操作都是正常的,咋就突然出现这个问题。

忍着卡顿的煎熬,检查了内存和CPU使用情况,发现都是正常的。

sangsq@sangpi:~ $ free -h
               total        used        free      shared  buff/cache   available
Mem:           417Mi       128Mi       227Mi       880Ki       111Mi       288Mi
Swap:          511Mi          0B       511Mi
sangsq@sangpi:~ $ top
top - 19:17:05 up 9 min,  1 user,  load average: 0.02, 0.08, 0.07

使用电脑 ping 树莓派,延迟确是有些离谱。

PS C:\Users\sangs> ping 192.168.31.134

正在 Ping 192.168.31.134 具有 32 字节的数据:
来自 192.168.31.134 的回复: 字节=32 时间=73ms TTL=64
来自 192.168.31.134 的回复: 字节=32 时间=79ms TTL=64
来自 192.168.31.134 的回复: 字节=32 时间=62ms TTL=64
来自 192.168.31.134 的回复: 字节=32 时间=7ms TTL=64

192.168.31.134 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 7ms,最长 = 79ms,平均 = 55ms

好家伙,快100ms了,局域网内一般都是<1ms的延迟,这个延迟确实有些离谱。

经过询问大模型,原因可能是集中在网络、系统配置、散热和电源问题上。网络和配置应该没什么大问题,散热也不至于,摸了CPU和WiFi盖板都是正常的温度。
那就是电源问题了。

为了图方便,我直接将树莓派Zero 2 W的电源插在了电脑的USB口上,而且这个USB口还是一个分线器,虽然是USB3.0,但是供电能力还是不够的。

USB 3.0 端口的供电能力通常为 5V 900mA(0.9A),这对于某些低功耗设备来说是足够的。然而,树莓派推荐电源输出为 5V 2.5A,以确保其在高负载下能够稳定运行。树莓派官方提供的电源也是 12.5W Micro USB 电源适配器。

好吧,还好充电宝是快充的,默认输出是 5V 3A。插上充电宝,SSH远程连接树莓派,卡顿问题果然好了很多。延迟也降到了 10ms 左右。

更重要的是,换了移动电源后,这不就可以放到离路由器更近的地方了嘛。

当然,要想继续降低延迟,还是需要网线连接。这个设备带的 Wifi 性能并不是很好。不过 Zero 2 W 的扩展性还是很好的,如果需要网口,微雪也有一些扩展板是带有百兆网口和 USB 接口的。不过,观其价格,不如直接加一些钱买树莓派Zero 2 w转3B扩展板,这样一步到位。

请添加图片描述

3. SPI接口的"记忆丢失"之谜:安全关机很重要

这几天一直在调试一个 SPI 显示屏设备的驱动,raspi-config 里面的 SPI 接口已经打开过了,但是每次开机后,/dev/spidev0.0/dev/spidev0.1 都会消失,导致无法正常使用 SPI 设备。需反复执 raspi-config 打开 SPI 接口。

经过几番调试,发现是因为我每次都是直接拔电源关机,导致系统没有正常关闭,修改的 SPI 接口的配置就一直没有保存。好嘛,竟然是因为图方便,结果反而更麻烦。

请添加图片描述

所以,安全关机很重要,不要直接拔电源关机,这样会导致系统配置丢失,甚至损坏存储卡。

对于新手来说,最应该学习的第一课就是如何安全关机,危险操作不要轻易尝试,后果很严重:

  • 文件系统损坏率提高,可导致系统无法启动
  • 系统配置丢失,需要重新配置
  • SD卡寿命缩短至正常使用的1/3
  • GPIO状态不可控可能损坏外接设备

为了防止一些奇奇怪怪的问题出现,最好的办法就是安全关机,我们可以挑一个自己喜欢的命令来关机:

  • sudo shutdown -h now
  • sudo poweroff
  • sudo init 0
  • sudo halt

如果实在懒得输入命令,建议调试开发阶段使用硬件关机按钮。经过如此这番折腾,我甚至有些怀疑我上面的网络问也是这个直接拔电源导致的。

4. 总结

树莓派Zero 2 W是一款性价比很高的开发板,但是新手在使用时很容易忽略一些细节,导致一些问题的出现。本文主要介绍了SSH卡顿和SPI接口记忆丢失的问题,希望这些经验能帮助你少走弯路,享受开发的乐趣!

更多推荐