关于 raspberry pi 的一点心得

  • fennng 
我本来是想用一个 respberry pi 来控制车库门的遥控器的,之前在面包板上实验成功。 所以就兴致冲冲的去搞了个PI回来, 最后发现 PI上面的 GPIO pin 的电流只有几毫安, 根本驱动不了继电器, 继电器需要60毫安左右的电流。 所以需要买一个可以用微电流驱动的继电器模组。 模组可以直接接5V电压,然后用 GPIO的电压来控制继电器是否连通。 已经下单,还要等个两周到货。 现在先来讲讲心得吧。
刚开始买了个 respberry pi 3b+, 因为比较便宜,只有5的一半。 3B+没有插卡直接通电的话, 屏幕是完全没有反应的,要先到官网下载官方工具把操作系统写入内存卡,插卡后就能自动启动了。
后来发现我买的3B+, 1G内存的比 4B 1G内存的还贵几刀。 太不划算了, 就赶紧去换 4B。 3B+太老了, 谁买谁傻X。
后来在柜员的耸涌下,我直接入了5,5的话支持比较多的启动方式, 不仅仅是插卡, 所以不插卡也是可以点亮屏幕的。
说说安装系统吧,这个是真的超级简单。 网上很多教程过时了, 非常麻烦。 现在官网推出了 Respberry pi manager, 工具, 打开跟着界面一直下一步就可以了。这个工具会把你插进电脑的SD卡格式化并写入 respberry pi 的系统。 写完后拔出来插进 respberry pi 开机就行了。 记得先插鼠标,键盘,显示器再插电。 因为插电后直接就启动了, 是不要按开关的。 不过 5上面是有个小开关的, 这个小开关可以长按强制关机。 也可以在关机后重启。 而3B+是没有这样一个开关的。 Respbeery pi manager 在操作的时候你可以设置 ssh, wifi 什么的。 所以如果你的PI正常工作的话, 其实不连鼠标键盘和显示器也是没问题的。 进路由器看看最新连进来的设备找到IP, 直接SSH上去就可以用了。
还有一点要注意, 3B+用的是常用的HDMI接口。 而5用的是 micro HDMI 接口。 我是用了一个转接器。 因为两个口很近, 所以我是插不了两个显示器的。 要买 micro HDMI 到 普通HDMI的线才有足够空间吧。 5有两个HDMI口, 我发现0口可以支持我的4K显示器, 但是1口就支持不了。 1口可以支持我的便携4K显示器,不知道是为什么。
几个新学的指令

kmsprint

输出
`Connector 0 (32) HDMI-A-1 (connected)
Encoder 0 (31) TMDS
Crtc 2 (86) 3840×2160@60.00 594.000 3840/176/88/296/+ 2160/8/10/72/+ 60 (60.00) P|D
Plane 2 (76) fb-id: 303 (crtcs: 2) 0,0 3840×2160 -> 0,0 3840×2160 (XR24 AR24 AB24 XB24 RG16 BG16 AR15 XR15 RG24 BG24 YU16 YV16 YU24 YV24 YU12 YV12 NV12 NV21 NV16 NV61 P030 XR30 AR30 AB30 XB30 RGB8 BGR8 XR12 AR12 XB12 AB12 BX12 BA12 RX12 RA12)
FB 303 3840×2160 XR24
Plane 22 (278) fb-id: 304 (crtcs: 2) 0,0 64×64 -> 1918,1078 64×64 (XR24 AR24 AB24 XB24 RG16 BG16 AR15 XR15 RG24 BG24 YU16 YV16 YU24 YV24 YU12 YV12 NV12 NV21 NV16 NV61 P030 XR30 AR30 AB30 XB30 RGB8 BGR8 XR12 AR12 XB12 AB12 BX12 BA12 RX12 RA12)
FB 304 64×64 AR24
Connector 1 (41) HDMI-A-2 (disconnected)
Encoder 1 (40) TMDS
`

可以显示连接了几个显示器, 连上我的4K显示器的时候,如果用1口, 可以检测到连接, 但屏幕就是不亮。 如果连0口,就可以正常工作。

也可以用以下指令查显示器连接状态

`cat /sys/class/drm/card1-HDMI-A-1/status`

安装 docker

`sudo apt install docker.io`

显示温度

`vcgencmd measure_temp`

显示电压

`vcgencmd measure_volts`

查看电源是否稳定

`vcgencmd get_throttled`

查看内核日志

`dmesg`

 

一个简单的控制 relay 的webAPI, 之前用在  3B+上用 RPi.GPIO, 发现在 5 上就不好使了。 在5上我换用了 gpiod. 使用下面的代码开一个简单的WEB服务器, 再配合 localtonet 或 ngrok 内网穿透一下。 就可以在任何地方开关继电器了。 我是直接用我的telegram 机器人来调用这个API的。可以在telegram 上控制 家里的设备。

“`
from flask import Flask, request, jsonify
import gpiod
import time

app = Flask(__name__)

# Define the GPIO chip and line
chip = gpiod.Chip(‘gpiochip4’)
line = chip.get_line(17)

# Configure the line for output
config = gpiod.LINE_REQ_DIR_OUT

@app.route(‘/control_relay’, methods=[‘POST’])
def control_relay():
if request.method == ‘POST’:
try:
# Request the line as output
line.request(consumer=’relay-control’, type=config)

# Set the line high (turn on the relay)
line.set_value(1)
print(“relay pass through”)
time.sleep(1)  # Keep the relay on for 1 second

# Set the line low (turn off the relay)
line.set_value(0)
print(“relay block”)

return jsonify({‘message’: ‘Success’})

except Exception as e:
return jsonify({‘error’: str(e)})

finally:
# Release the line
line.release()

if __name__ == ‘__main__’:
app.run(debug=True, host=’0.0.0.0′)
“`

播放YOUTUBE自动关机的问题。 我在youtube 上播放 4K的视频(其它分辨率没试过)。 播几分钟 PI 就自动关机了。 现在怀疑两个原因。 一是电源功率不够,我用的是我的苹果电脑的140W充电器, 5V的话只支持3A, 我没有5V 5A的充电器, 已下单 。 第二个可能就是过热, 虽然我摸了下CPU我没有多热,我还是下单了一个带风扇的盒子。更新, 问题居然是充电线上,原来使用的是便携显示器送的usb c 电源线,后来换了一根支持100w的usb c线, 还是使用苹果电脑的充电器, 这次再播放 youbue 就没有自动关机了。 所以说,线也很重要,不是所有的USB C线都能支持大电流的,而且很难分辨哪根可以。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注