发 帖  
4周PADS强化班 HOT
林超文手把手教你学!
张飞暑期特训班
教你1000种电路设计思路
年度IP:PFC电源
张飞硬件电路之PFC全集
30天AD项目众筹
参与免费送VIP+原创视频
最全模电系列教程 NEW
运放、ADC、电磁兼容

[经验] 【NanoPi NEO Plus2开发板试用体验】+8.获取cpu内部温度

[复制链接]

技术员

发表于 2017-10-13 20:50:28   1351 查看 1 回复 显示全部楼层 倒序浏览
分享
本帖最后由 letsgo 于 2017-10-13 20:50 编辑

前面讲了gpio的简单操作,那么这一篇帖子就讲解几种方法来获取cpu内部温度。本篇帖子讲解的是文件操作,因为在linux系统中任何设备的操作都可以抽象成为文件的读写,并且通过读取/sys/class/thermal/thermal_zone0/temp文件中的内容便获得树莓派CPU的温度。我采用以下几种方法来读取:

一、shell命令操作:
  1、输入命令,进入到/sys/class/thermal/thermal_zone0目录下:
    cd /sys/class/thermal/thermal_zone0
  2、我们在输入:ls,查看有哪些文件:

    1.png
  3、再用命令:cat temp得到温度值,见下图:

    2.png

经过百度可知。再除以1000才是具体的温度值,所以温度为t = 23010/1000= = 23.010℃。
     当然我们也可以写成一个脚本,这里就不再写了。


二、c语言文件操作:

   新建一个cpu.c文件,文件下面写入:

  1.     #include <stdio.h>  
  2.     #include <stdlib.h>   
  3.       
  4.     #include <sys/types.h>  
  5.     #include <sys/stat.h>  
  6.     #include <fcntl.h>  
  7.       
  8.     #define TEMP_PATH "/sys/class/thermal/thermal_zone0/temp"  
  9.     #define MAX_SIZE 32  
  10.     int main(void)   
  11.     {  
  12.           int fd;  
  13.           double temp = 0;  
  14.           char buf[MAX_SIZE];  
  15.          
  16.           // 打开/sys/class/thermal/thermal_zone0/temp  
  17.           fd = open(TEMP_PATH, O_RDONLY);  
  18.          if (fd < 0) {  
  19.              fprintf(stderr, "failed to open thermal_zone0/temp\n");  
  20.              return -1;  
  21.         }  
  22.          
  23.          // 读取内容  
  24.          if (read(fd, buf, MAX_SIZE) < 0) {  
  25.              fprintf(stderr, "failed to read temp\n");  
  26.              return -1;  
  27.         }  
  28.          
  29.         // 转换为浮点数打印  
  30.          temp = atoi(buf) / 1000.0;  
  31.          printf("temp: %.2f\n", temp);  
  32.          
  33.         // 关闭文件  
  34.          close(fd);  
  35.     }  
复制代码

       gcc cpu.c -o cpu
    # 执行
    ./cpu

    # 执行返回
    temp: 23.01


三、python语言编程:
   1、新建一个.py文件并输入以下内容:
    # -*- coding: utf-8 -*-
    file = open("/sys/class/thermal/thermal_zone0/temp")#打开文件
    temp = float(file.read()) / 1000  #将读取到的数值除以1000得到温度
    file.close()                      #关闭文件
    print "temp : %.2f" %temp         #格式化输出

   2、执行python ./cpu3.py然后就可以看见下面数值啦。

四、分析与总结
   shell命令十分简单,几个命令就能将数据读出来。对于文件操作,前面那篇帖子也讲了,自己也现学现用,可以说对文件的读写也有了一定的了解。对于python更不用说了,十分简单方便,初学者十分容易上手,笔者接下来接下来就会用python编程上传数据到onenet,yeelink平台等等,实现无线点灯等等。



标签:nanopi cpu
发表于 2017-10-14 01:21:57   来自手机
牛逼
回复

点赞 举报

只有小组成员才能发言,加入小组>>

149个成员聚集在这个小组

加入小组

创建小组步骤

4周PADS强化班 HOT
林超文手把手教你学!
张飞暑期特训班
教你1000种电路设计思路
年度IP:PFC电源
张飞硬件电路之PFC全集
30天AD项目众筹
参与免费送VIP+原创视频
最全模电系列教程 NEW
运放、ADC、电磁兼容
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表