树莓派存储温度数据并制作交互式图表

Raspberry Pi的芯片系统(SoC)具有温度传感器,可用用命令行测量其温度。它可以提供芯片在运行期间产生多少热量的信息,并且还报告环境温度。该项目的目的是创建一个简单的Python脚本,可以在启动您的Raspberry Pi时自动运行,并以特定间隔从温度传感器进行测量,并将其写入日后可以查看的文件。您还可以以交互式绘制的图形来查看数据。

你会学到什么

通过完成温度项目,您将学习:

  • 如何在Python中运行系统命令

  • 如何将数据写入文件

  • 如何用matplotlib交互式绘制数据

  • 如何设置脚本以使用crontab自动运行

你会需要什么

软件

python3-matplotlib

软件安装

要安装所需的软件,请在终端中运行以下命令:

sudo apt-get install python3-matplotlib

温度记录

Raspberry Pi的芯片系统(SoC)具有温度传感器,可用于从命令行测量其温度。它可以提供关于芯片在运行期间产生多少热量的信息,并且还可以报告环境温度。该项目的目的是创建一个简单的脚本,可以在您启动Raspberry Pi时自动运行,并以特定间隔从温度传感器进行测量,并将其写入日后可以查看的文件。

创建一个Python脚本来监视温度

  • 通过 Menu > Programming > Python 3 (IDLE) 打开一个新的Python 3 shell。

  • 现在通过点击 File > New File 创建一个新的Python脚本。

  • 您可以使用GPIO Zero模块查找CPU温度。首先你需要导入CPUTemperature类:

      from gpiozero import CPUTemperature
  • 然后可以创建一个cpu对象:

      cpu = CPUTemperature()
  • 保存并运行此程序(按Ctrl + S,然后按F5),然后交换到shell。在这里,您可以轻松查询CPU温度。

>>> cpu.temperature 32.552

将数据写入CSV文件

如果温度数据可以存储起来,这将非常有用。CSV(逗号分隔值)文件比较理想,因为它可以被Excel和LibreOffice等应用程序所使用。

  • 您将在获取CPU温度时记录日期和时间,因此需要一些额外的库。将其添加到您的导入:

      from time import sleep, strftime, time

    这些额外的模块让你暂停你的程序(sleep),将今天的日期作为一个字符串(strftime)获得,并在所谓的UNIX时间(time)中获得确切的时间。

  • 要写入文件,您首先需要创建它。在文件末尾添加以下行:

      with open("cpu_temp.csv", "a") as log:

    这将创建一个名为“新文件” cpu_temp.csv的名称log。它也以附加模式打开它,因此行只会写入文件的末尾。

  • 现在,您将需要启动一个无限循环,直到您用Ctrl + C杀死程序:

      with open("cpu_temp.csv", "a") as log:      while True:
  • 在循环中,您可以获取温度并将其存储为变量。

    设计包括硬件和软件设计两个部分。模块划分为数据采集、键盘控制、报警和显示等模块子函数。电路结构做成可划分为:热释电红外传感器、家庭智能报警器、单片机控制电路、LED控制电路及相关的控制管理软件组成。用户终端完成信息采集、处理、数据传送、功能设定、本地显示、本地报警等功能。

      with open("cpu_temp.csv", "a") as log:      while True:
              temp = cpu.temperature
  • 现在,您要将当前日期和时间以及温度都写入CSV文件:

      with open("cpu_temp.csv", "a") as log:      while True:
              temp = cpu.temperature
              log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp)))
  • 那条命令有点复杂,所以让我们把它分解一下:

    • log.write() 将括号中的任何字符串写入CSV文件。

    • "{0},{1}\n" 是一个包含两个占位符的字符串,用逗号分隔,并以新行结束。

    • strftime("%Y-%m-%d %H:%M:%S")插入第一个占位符。这是当前的日期和时间作为一个字符串。

    • str(temp) 是将CPU温度转换为字符串,这是在逗号后写入第二个占位符。

  • 最后,您可以在文件的末尾添加一行,以便在写入之间暂停脚本。这里暂停一秒钟,当然您可以使用任何您想要的间隔:

      sleep(1)
  • 整个脚本现在应该如下所示:

     from gpiozero import CPUTemperature
      from time import sleep, strftime, time
    
      with open("cpu_temp.csv", "a") as log:      while True:
              temp = cpu.temperature
              log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp)))
              sleep(1)

 

本文翻译自:https://projects.raspberrypi.org/en/projects/temperature-log

原文:树莓派温度记录

转载自:科技爱好者博客(http://blog.lxx1.com/ )

生成海报
点赞 0

thePro

我还没有学会写个人说明!

相关推荐

树莓派做一个获取GPS时间的NTP服务器

由于单位用的是内部网络,机器时间无法与internet同步,导致内网的所有设备各自为政,对工作和管理带来的麻烦说不清,为解决这个问题,决定用手里的树莓派做通过GPS获取时间&

DHT11温湿度传感器(详细)

DHT11温湿度传感器——使用LCD1602显示 先上效果图,以及简单的和室内温度对比图,相交而言测量的值还是非常准的。 我的这个做的很简陋,大家可以理解原理后自行升级。 注意学习单片机最重要的就

树莓派控制sg90舵机 驱动 Python详细教程|徐奥雯

灰色线为GND接地、红色线为VCC接5V供电、黄色线为脉冲输入 直接复制以下代码运行即可 运行前 请将脉冲输入所连接的树莓派GPIO引脚号 填写入下面的gpio_pin中 您可以直接运行此文件来测试他是否正常工作,你的舵机应该会开