Answers:
可用温度范围是多少?
Raspberry Pi是由符合不同温度范围要求的商用芯片构建的。LAN9512由制造商指定,其合格温度范围为0°C至70°C,而AP则为-40°C至85°C。您可能会发现该板将在这些温度范围之外工作,但我们并没有使板本身达到这些极限。
LAN chip
温度,因为它的死温度远低于Soc Chip
,我相信/opt/vc/bin/vcgencmd measure_temp
命令只能报告Soc Chip
温度,对吗?
据文章所述,它将下降至<-70°C:Raspberry Pi被浸入液氮中时被证明是稳定的。
我对Raspberry Pi 3的体验:SoC将在大约80摄氏度时开始减速,以我的经验,绝不会让自己温度超过85摄氏度。当然,这是核心温度-芯片外部的温度必须低得多,以促进有效的热交换。
尽管您(可能不相信我的话)无法通过不冷却来破坏SoC,但性能会受到严重影响。(电源,BTW也是如此)。在我们的实验室中,我们开始注意到帧丢失和视频处理能力的显着下降,结果发现1)没有散热器时它变得太热2)由于5V电源线太长而导致电压降至4.6V以下。
在任何一种极端情况下,您的处理能力很可能首先会降低,而其他问题则要晚得多(如果有的话)出现。当试图找出软件错误(“为什么我的程序突然突然运行如此缓慢?!?”)时,这会导致大量时间浪费,只是发现电线太细或散热器太小,所以要当心!
关于下限,应检查所有组件。我最近在-12C低温下启动了Raspi3,并且相机无法正常工作(数周内第一次,但其他时候晚上的温度却不太低)。等待15分钟后,我重新启动了它,它开始正常工作。
另外,我认为主板上的网络/ USB芯片本身的额定温度不低于0C。如果您需要这种极端条件,我建议您等待Compute Module 3(温度范围为-20至80C),只需不提供问题的电源即可。芯片:)
我看到OP的问题已经得到了权威的回答,但这是我2分钱的经验值:
使用基本的透明塑料无风扇外壳和散热器,ARM AP的运行温度约为50C(122F),我的Pi3可以正常工作。当我取下塑料外壳的顶部时,温度下降到47-48。
因此,我的结论是,外壳在这方面不会造成任何可衡量的危害。
在stdout中返回CPU温度的命令是vcgencmd measure_temp
我在评论中看到uhoh
提到,如果要在Python程序中使用温度,该命令os.popen('vgencmd measure_temp').read()
将返回温度编号的文本版本。
这是我使用Popen将温度转换为整数变量的方法:
from subprocess import Popen, PIPE
.
.
.
cmd = 'vgencmd measure_temp'
p = Popen(cmd,stdout=PIPE, stderr=PIPE, shell=True)
stdout, stderr = p.communicate()
CPUtemp = int(stdout)
.
.
etc
上面是从此代码中获取的:
这篇文章展示了如何以fping
几种不同的方式使用,即使结果以stderr
还包括一个从摇篮到坟墓的示例,该示例利用数据并对其进场进行实时绘制。它显示了Python和gnuplot。我们在这里看不到这些完整的系统示例。
os.popen('vcgencmd measure_temp').read()
使温度(文本)在Python中也可用。一样commands.getstatusoutput('vcgencmd measure_temp')[1]
os.popen
和.read
类似的方法可能非常方便。更不用说commands.getstatusoutput ... [1]
我倾向于将Python与外部命令一起使用很多,但是没有遇到任何一个。做得好。顺便说一句,您回答的问题越多,您将获得的积分就越多,并且限制也会很快消除。这个特定的SE是一个艰苦的人群,但是他们肯定会认识到对数据库的宝贵贡献。
以下是一个超出问题范围的问题,但是可能会提供一些想法的一般用例。
它可以适应任何类型的输入,gpio传感器,互联网数据。
如何绘制CPU温度超时图?
安装gnuplot
Gnuplot可以在终端中绘制数据图,不需要任何X服务器,并且使用很少的资源。
即使在最慢的树莓派模型1 / zero上,它也能正常工作。
sudo apt install gnuplot
生成gnuplot
文件的脚本示例:
temperature
脚本来存储数据超时。
#!/bin/sh
echo $(date +%s ; cat /sys/class/thermal/thermal_zone0/temp) | tee >> temperature.plot
授予此脚本执行权:
chmod +x temperature
断开并以1s循环运行,直到下次重新启动:
nohup watch ./temperature &
以后,绘制数据图:
gnuplot -e "set terminal dumb $(tput cols) $(tput lines);plot 'temperature.plot' using 0:2 with lines"
这是一个准系统示例,温度以摄氏度* 1000为单位,自开始以来的秒数,将在您自己的脚本套件中进行扩展。
为了杀死watch
循环,killall watch
快乐黑客;)
while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-2));cat /sys/class/thermal/thermal_zone0/temp;tput rc;done &
将在控制台的右上角显示cpu temp。用于监视。