IoT 101 项目:来自 Raspberry Pi 的流温度
“你好世界!” – 这可能是您在学习如何编码时编写的第一个程序的输出。设置设备以流式传输温度数据正在迅速成为事实上的物联网 (IoT) “Hello World!”项目。如果打印“Hello World!”第一次是一项漫长而令人沮丧的任务,您可能从未编写过其他程序。你的第一个物联网项目应该只是让你脸上露出灿烂的笑容。这个有趣、简单的项目将向您介绍物联网数据流的精彩世界。
可以在以下位置找到整个项目的视频教程:
http://youtu.be/HMqPbfvCshs
以下是您需要的用品:
- 连接互联网的 Raspberry Pi 或您选择的单板计算机。
- DS18B20 温度传感器 (https://www.adafruit.com/product/381)。
- 用于连接简单电路的面包板(在 Adafruit Pi 入门套件中)。
- 一个 4.7K 到 10K 的电阻器(也在 Adafruit Pi 入门套件中)。
第一步:硬件设置
DS18B20 温度传感器与 Raspberry Pi 配合良好,因为它具有数字输出,而 Pi 没有板载模数转换器 (ADC)。 Raspbian 包含一个用于读取传感器输出的接口。我们只需要编写一些代码来获取和解析温度。 Adafruit 有一个关于使用 DS18B20 的很棒的教程,我们将简单地遵循和修改以流式传输温度,而不仅仅是将其输出到屏幕。
硬件设置很简单。 DS18B20 红线接 3.3V。黑线接地。蓝线连接到上拉电阻和 Pi 的 GPIO 引脚 4。
第 2 步:读取温度
要启动温度传感器读取接口,我们需要运行两个命令。转到 Pi 上的命令提示符或通过 SSH 进入 Pi。输入以下命令:
须藤 modprobe w1-gpio
须藤 modprobe w1-therm
温度传感器的输出现在正在写入 Pi 上的文件中。要找到该文件,
cd /sys/bus/w1/devices
在这个目录下,会有一个以“28-”开头的子目录。 “28-”之后是传感器的序列号。 cd 到那个目录。在此目录中,名为 w1_slave 的文件包含传感器的输出。该文件的内容如下所示:
a2 01 4b 46 7f ff 0e 10 d8 :crc=d8 是
a2 01 4b 46 7f ff 0e 10 d8 t=26125
“t=”后面的数字就是我们想要的数字。这是以 1/1000 摄氏度为单位的温度(在上面的示例中,温度为 26.125 C)。我们只需要一个简单的程序来读取这个文件并解析出那个数字。幸运的是,Adafruit 已经为我们创建了一个 Python 脚本,可以执行此操作并将温度输出到屏幕。在您的 Pi 上创建一个新文件(例如 temperature.py)并将以下代码复制粘贴到:
点击此处查看代码
运行此脚本(“sudo python temperature.py”)以在屏幕上查看温度传感器的输出。
第 3 步:流式传输温度
这是我们偏离 Adafruit 教程的地方。向屏幕发送温度很无聊。我们希望将这些数据流式传输到某个地方,我们不仅可以看到当前温度,还可以看到捕获的温度数据的历史记录(另外,谁想将一堆温度作为文本“读取”;我们想要一个漂亮的数据可视化)。首先安装初始状态流传输器,为我们的温度测量提供一个目的地(点击此处获取有关设置初始状态流传输器的说明;它非常简单,只需不到两分钟的时间)。我们将修改上面的脚本以将温度流式传输到我们的初始状态帐户,而不是将其输出到屏幕。修改如下:
点击此处查看代码
您需要在第 6 行的引号之间复制并粘贴与您的初始状态帐户关联的客户端密钥,其中 client_key =“”。登录帐户后,您可以在帐户设置下或登录页面上找到您的客户端密钥。
这些是我们刚刚做的修改:
- 在第 4 行,我们导入了 Initial State 数据流传输器模块。
- 在第 6 行,我们创建了一个名为“Temperature Stream”的新存储桶,并通过我们的客户端密钥将其与我们的帐户相关联。
- 在第 30 行,我们修改了 read_temp() 函数以仅返回摄氏温度。
- 在第 34 行,我们将 read_temp() 的输出转换为华氏度。
- 在第 35 和 36 行,我们流式传输了两个温度。
有关更多详细信息:IoT 101 项目:来自 Raspberry Pi 的流温度
制造工艺