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

[复制链接]

技术员

发表于 2017-10-13 20:50:28   865 查看 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,查看有哪些文件:

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

   

经过百度可知。再除以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平台等等,实现无线点灯等等。



本帖子中包含更多资源

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

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

举报

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

107个成员聚集在这个小组

加入小组

创建小组步骤

关闭

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

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

推荐专区

技术干货集中营

专家问答

方案交易

用户帮助┃咨询与建议┃版主议事

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

电子展览展会专区

芯片求购|供应发布区