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

限时干货下载:回复“教程”获取单片机电子书,回复“仿真”获取Proteus仿真资料,百度盘群组分享链接更新时间:-10-17,失效请在文末留言,不要在后台留言,你也可以在后台菜单“资源搜索”搜索更多你想要的网盘资源!

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

你会学到什么

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

如何在Python中运行系统命令

如何将数据写入文件

如何用matplotlib交互式绘制数据

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

你会需要什么软件

python3-matplotlib

软件安装

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

sudoapt-getinstallpython3-matplotlib温度记录

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

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

通过MenuProgrammingPython3(IDLE)打开一个新的Python3shell。

现在通过点击FileNewFile创建一个新的Python脚本。

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

fromgpiozeroimportCPUTemperature

然后可以创建一个cpu对象:

cpu=CPUTemperature()

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

cpu.temperature32.将数据写入CSV文件

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

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

fromtimeimportsleep,strftime,time

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

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

withopen("cpu_temp.csv","a")aslog:

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

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

withopen("cpu_temp.csv","a")aslog:whileTrue:

在循环中,您可以获取温度并将其存储为变量。

withopen("cpu_temp.csv","a")aslog:whileTrue:temp=cpu.temperature

现在,您要将当前日期和时间以及温度都写入CSV文件:

withopen("cpu_temp.csv","a")aslog:whileTrue:temp=cpu.temperaturelog.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)

整个脚本现在应该如下所示:

fromgpiozeroimportCPUTemperaturefromtimeimportsleep,strftime,timewithopen("cpu_temp.csv","a")aslog:whileTrue:temp=cpu.temperaturelog.write("{0},{1}\n".format(strftime("%Y-%m-%d%H:%M:%S"),str(temp)))sleep(1)实时绘制数据

您可以生成一个随着数据的记录CPU温度也更新的CPU温度图。为此,您需要使用matplotlib库。安装说明在这里。

首先,导入matplotlib库:

importmatplotlib.pyplotasplt

您的导入后可以接下来三行。他们告诉matplotlib你会做交互式绘图,并创建两个列表,将保存要绘制的数据:

plt.ion()x=[]y=[]

下一行都进入你的whileTrue循环,在CSV被写入之前,但temp=get_temp()在行之后。首先,将当前温度添加到y列表的末尾,并将列表的末尾添加到时间x:

y.append(temp)x.append(time())

接下来,需要清除绘图,然后计算点和线:

plt.clf()plt.scatter(x,y)plt.plot(x,y)

最后,可以画出线:

plt.draw()

运行你的程序,你应该看到交互式绘制的图形。打开一些程序,如Minecraft或Mathematica,并观察CPU温度的升高。

自动化脚本

当RaspberryPi启动时,最好让脚本自动运行。要做到这一点,最好是清理一下脚本,以便您可以轻松地注释掉绘制图形的线条。下面是与功能相同的脚本,并且图形绘制线注释掉:

fromgpiozeroimportCPUTemperaturefromtimeimportsleep,strftime,timeimportmatplotlib.pyplotaspltcpu=CPUTemperature()plt.ion()x=[]y=[]defwrite_temp(temp):withopen("cpu_temp.csv","a")aslog:log.write("{0},{1}\n".format(strftime("%Y-%m-%d%H:%M:%S"),str(temp)))defgraph(temp):y.append(temp)x.append(time())plt.clf()plt.scatter(x,y)plt.plot(x,y)plt.draw()whileTrue:temp=cpu.temperaturewrite_temp(temp)#graph(temp)sleep(1)

crontab自动化脚本很简单。这基本上是一个文件,其中可以放置可以在特定时间或某些事件之后运行的命令。首先打开一个终端窗口(按Ctrl+Alt+T)。

要编辑crontab,您只需键入:

crontab-e

滚动到文件的底部并添加单行:

rebootpython3.4/home/pi/temp_monitor.py

这里假设要调用的脚本为temp_monitor.py并保存在您的主目录中。

现在重新启动你的RaspberryPi。给它一点时间运行,然后在终端窗口中键入以下内容:

catcpu_temp.csv

这将使您能够看到CSV文件的内容。

如果您想查看图表,那么只需graph(temp)使用IDLE取消注释行并运行该文件。

本文翻译自:







































北京中科医院忽悠
北京哪家医院治白癜风费用少



转载请注明地址:http://www.fupenzia.com/fzpc/1037.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章