我们从2011年坚守至今,只想做纯粹的技术论坛,请不要发布和技术无关的话题。  本站有两万多份高大上的PCB和原理图下载,每日更新中,欢迎常回来看看

 找回密码
 立即注册
搜索
查看: 2046|回复: 5

[DIY秀] 树莓派 SAKS 扩展板实用应用 之 CPU 温度显示和警报

[复制链接]
飞天小猪20 该用户已被删除
发表于 2015-10-6 07:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本文所介绍的内容基于树莓派瑞士军刀扩展板(SAKS),由于 SAKS 基于树莓派通用的 GPIO 设计,文中的原理和代码也适用于其他情况。
本文由树莓派实验室创作,遵循CC协议(署名-非商业性使用-禁止演绎-相同方式共享),欢迎树莓派爱好者们遵循协议内容转载传播。谢绝不遵守协议的转载和抄袭。

                               
登录/注册后可看大图

本节以 SAKS 扩展板为硬件基础,实现将树莓派的 CPU 或 GPU 的温度显示在数码管上。当温度超过阀值时,自动触发 SAKS 扩展板上的蜂鸣器响起警报。
由于我们已经开始基于 SAKS SDK 开发(了解 SAKS SDK 发布的信息请阅读这里),本例程中涉及到的 SAKS 扩展板引脚编号我们根本不需要再关心。
可能你还不知道,树莓派内置了一个传感器你可以用来获取树莓派的CPU和GPU温度。这对于保护你的设备非常有用,这样就可以在树莓派温度过高的时候关掉树莓派或者在温度过热的时候报警。
首先,要获取树莓派 CPU 和 GPU 的温度,我们封装了以下方法:
import commandsdef get_cpu_temp():tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )cpu_temp = tempFile.read()tempFile.close()return float(cpu_temp) / 1000#如果你想使用华氏温度,打开注释#return float(1.8*cpu_temp)+32def get_gpu_temp():gpu_temp = commands.getoutput( '/opt/vc/bin/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( '\'C', '' )return float(gpu_temp)#如果你想使用华氏温度,打开注释# return float(1.8* gpu_temp)+32这里面有两个方法:get_cpu_temp 和 get_gpu_temp。它们俩都返回一个float型的摄氏温度值。(如果你想使用华氏温度,打开里面的两行注释)。现在,让我们把所有信息输出到 SAKS 扩展板的数码管上吧。
下面直接调用SAKS SDK的方法来让数码管和蜂鸣器工作(这里只定义了CPU温度获取,如果你希望显示GPU温度,加入上文中的方法定义并修改调用即可)。
#!/usr/bin/env python# -*- coding: utf-8 -*-#导入 SAKS SDK 模块from sakshat import SAKSHATimport timeimport commands#Declare the SAKS Board,定义一个SAKS对象SAKS = SAKSHAT()#返回浮点型的CPU温度def get_cpu_temp():tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )cpu_temp = tempFile.read()tempFile.close()return float(cpu_temp) / 1000#如果你想使用华氏温度,打开注释#return float(1.8*cpu_temp)+32#主程序入口if __name__ == "__main__":while True:t = get_cpu_temp()#如果你希望实时温度的数值输出在屏幕上请取消下面的注释#print("%.2f" % t)#调用SAKS的数码管对象(digital_display),让他按照指定格式显示(show)温度数值SAKS.digital_display.show("%.2f" % t)#这里暂时设定为50度警报响起if t > 50:#调用SAKS的蜂鸣器对象(buzzer),让他按照按照一定的频率发出警报(beepAction),下面的参数是以2毫秒的间隔鸣响30次SAKS.buzzer.beepAction(0.02,0.02,30)time.sleep(1)input("Enter any keys to exit...")其中 “%.2f” 格式化字符串表示显示的数值保留2位小数。由于数码管的 show 方法已经封装了数码管的逻辑,因此任何时候调用数码管显示数值,只需要调用这个方法,把数值作为参数提供即可。将上面的程序源码保存为 main.py 接下来如果要运行,请注意程序开头的 from sakshat import SAKSHAT,需要导入 SAKS SDK 模块。为此我们需要将 SAKS SDK 模块的相关文件和 main.py 放在一起才能正确执行 main.py 程序。我们准备了一个包含 main.py 和 SAKS SDK 的包并在 Github 上提供下载:https://github.com/spoonysonny/S ... temperature-display
下载源码,进入到程序目录 CPU-temperature-display 中,在终端运行:
git clone https://github.com/spoonysonny/SAKS-tutorials.gitcd CPU-temperature-displaysudo python main.pyCPU 温度数值实时显示在了 SAKS 扩展板上。有了这样的保护之后,你大概可以安心地超频了吧!
后面我们后面将开始介绍如何基于 SAKS 扩展板 DIY 各种有趣、实用的东西,欢迎持续关注!
本文属于《树莓派瑞士军刀扩展板(SAKS)DIY 教程》系列文章,查看系列文章目录,请访问:http://shumeipai.nxez.com/swiss- ... ry-pi-diy-tutorials
本文来自:树莓派实验室
链接地址:http://shumeipai.nxez.com/2015/0 ... play-and-alarm.html

1

主题

128

回帖

250

积分

二级逆天

积分
250

社区居民终身成就奖

QQ
发表于 2015-11-18 08:57 | 显示全部楼层
回复

使用道具 举报

头像被屏蔽

0

主题

161

回帖

488

积分

禁止发言

积分
488

社区居民终身成就奖

QQ
发表于 2015-11-18 17:25 | 显示全部楼层
回复

使用道具 举报

2

主题

68

回帖

66

积分

一级逆天

积分
66

社区居民

QQ
发表于 2016-1-6 16:15 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家II
  • 打卡总天数:259
  • 打卡月天数:0
  • 打卡总奖励:933
  • 最近打卡:2025-11-24 22:45:06

12

主题

292

回帖

1259

积分

二级逆天

积分
1259

社区居民终身成就奖

QQ
发表于 2022-9-11 09:10 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家III
  • 打卡总天数:742
  • 打卡月天数:0
  • 打卡总奖励:2905
  • 最近打卡:2026-08-20 09:00:04

3

主题

9037

回帖

1万

积分

三级逆天

积分
13663

社区居民终身成就奖特殊贡献奖原创先锋奖

QQ
发表于 2022-9-23 08:33 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请举报投诉

本站所有资料仅限参考学习交流,PCB原理图源码等所有资料不保证准确没问题,请不要用作生产。否则后果自负。

闽公网安备35062302000276号 | 闽ICP备2024076463号-1 | 论坛技术支持QQ群171867948 | 论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表