如何使用树莓派将DHT11传感器数据发送到IBM沃森云平台
扫描二维码
随时随地手机看文章
我们已经熟悉了一些流行的物联网平台,如ThingSpeak, Adafruit IO, Blynk等,并已经使用这些平台构建了许多物联网项目。但除了这些平台之外,还有一些工业级物联网平台,如亚马逊网络服务、微软Azure和IBM沃森,它们经常被大型行业用于存储和分析从物联网设备收集的数据。这些平台更安全,并提供许多有用的服务,从获取数据到使用机器学习算法进行分析。
IBM Watson是一个强大的平台,它为您的产品提供语音到文本、文本到语音、视觉识别、自然语言处理和认知计算功能等服务。这个平台可以帮助分析和理解你的数据,这些数据可以是图像、音频、视频,甚至是简单的文本和数字。聊天机器人也可以使用这个平台创建,它们可以与用户交谈。IBM Watson是一个非常强大的机器学习框架,可以与树莓派一起使用来构建更强大的应用程序。该平台兼容MQTT协议、HTTP和REST api。
在本教程中,我们将设置IBM Watson帐户,并使用树莓派将DHT11温度和湿度数据发送给它。我们还将借助图形将这些数据可视化。以前,我们使用树莓派构建了许多基于物联网的应用程序。
需求
•Raspberry Pi,安装Raspbian OS。
•DHT11温湿度传感器
•跳线
在这里,我们将使用SSH访问笔记本电脑上的树莓派。如果你有显示器,那么它将非常容易开始,但如果你没有显示器,那么设置树莓派在无头模式或使用VNC服务器获得树莓派桌面在笔记本电脑上。
树莓派在构建基于物联网的项目中非常受欢迎,因为它具有对物联网的所有必要支持。它是一个手掌大小的电脑,内置Wi-Fi,蓝牙,USB端口,音频/视频端口,HDMI端口,摄像头端口等。你可以在这里查看所有基于树莓派的物联网项目。
线路图
硬件只涉及树莓派和DHT11传感器。DHT11的信号引脚连接树莓派的GPIO17, DHT11的Vdd和GND引脚分别连接树莓派的5v和GND引脚。
我们之前将DHT11传感器数据发送到许多其他物联网云以建立气象站
•基于物联网的温湿度监测使用BLYNK, ESP8266和DHT11传感器
•基于物联网的树莓派气象站,使用DHT11和BMP180传感器
•使用树莓派和辣椒进行云上温度和湿度监测
•Arduino接口与Node-RED监测网页上的温度和湿度
•物联网无线气象站使用Arduino, ESP8266和ThingSpeak
在树莓派上设置MQTT客户端
在之前的ESP32和IBM Watson教程中,我们使用pubsubclient在IBM平台上发送和接收MQTT消息。在Raspberry Pi中,我们也需要一个MQTT客户端来发送和接收消息,因此首先我们为其安装库。这里paho-mqtt库与Raspberry Pi一起使用。
首先,使用sudo apt-get update更新树莓派操作系统。
现在,运行以下命令安装paho mqtt客户端库
IBM沃森物联网平台的设置帐户
1. 要在IBM Watson平台上创建帐户,请转到IBM云页面并单击创建IBM帐户。输入您的详细信息并单击创建帐户,如下所示。
2. 要在IBM平台上使用任何服务,我们必须为它创建资源。因此,使用您的凭据登录(请注意,IBMid是您用于创建帐户的电子邮件id),您将被重定向到IBM云网站。现在,单击Create Resource。
3. IBM Cloud提供了许多服务,所有这些服务都可以在参考资料列表中看到。因为我们想要使用物联网服务。点击物联网,点击物联网平台。
4. 下一页上有一些预先填写的信息,保留这些信息,然后单击Create。
5. 现在我们已经准备好了物联网资源。通过单击Launch启动创建的资源。
6. 现在,您将被重定向到物联网页面。在这里,添加您的设备以将其连接到物联网平台。单击Add device。
7. 在下一页填写设备详细信息。在设备类型中给出任何名称,您的设备ID将是该设备的MAC地址。您可以使用ifconfig找到树莓派的MAC地址,如下所示。使用不带冒号的地址。
MAC地址将打印在串行监视器上,复制该数字并粘贴在设备ID中。单击Next。
8. 下一页,有一些与设备相关的信息。保留这些信息,然后单击下一步。Security部分也一样,保留它不填充,然后单击next,如图所示。
9. 在最后一页作为Summary,单击Finish。
10. 现在,我们已经成功创建了设备,设备凭据将显示在下一页上。复制所有凭证并将其保存在某个地方。代码中将需要它们。
11. 点击Devices,你会看到树莓派已经成功创建,但是还没有连接。现在,我们将通过编写代码将树莓派与该平台连接起来。
12. 要以图形格式显示温度和湿度,请通过进入设备并单击使用概况板创建模板。
13. 现在,单击Add New Card。在这里,您将找到要显示的不同类型的图形。我们将使用折线图,所以继续点击折线图。
14. 选择我们之前创建的设备并单击Next。在下一页点击连接新数据集。
15. 现在,输入要显示在图上的数据。我们将在status1事件上发送温度值(代码中提到了status1变量)。将属性和名称设置为温度,类型设置为数字,单位设置为摄氏度,然后单击Next。
16. 选择图形大小,点击下一步,然后在下一页选择图形颜色,点击提交。
17. 现在,您将看到如下所示的图表。重复以上步骤制作另一个湿度图,并将事件设为status2,属性和名称设为湿度,值设为Number,单位设为%。
18. 启用IBM云和树莓派之间的通信。转到安全选项并单击连接安全。
19. 在默认规则下,选择安全级别为TLS可选,然后单击保存。
就是这样。我们已经成功地为树莓派建立了IBM Watson物联网平台。现在,我们必须编写Python代码来将温度和湿度的值发送到这个平台。
代码与说明
在继续之前,按照以下步骤在树莓派上安装DHT传感器库:
通过运行下面的命令从github下载DHT库
现在使用cd Adafruit_Python_DHT进入Adafruit_Python_DHT目录,并使用以下命令安装库
安装库之后,您可以通过在同一目录中运行示例代码来测试DHT传感器。
在本教程的最后给出了完整的python代码和工作视频,在这里我们解释了完整的程序,以了解项目的工作原理。
首先,导入时间、DHT传感器和MQTT客户机所需的所有库
初始化DHT传感器连接的引脚编号,并声明一个变量来存储传感器数据,然后该数据将在两个不同的变量中共享-湿度和温度。
然后定义在Watson平台上添加设备时复制的所有凭据,如下所示。
现在,提供将发布数据的服务器链接和主题。我们有2个主题,一个是温度,一个是湿度,分别命名为status1和status2。将AuthMethod设置为“use-token-auth”,然后定义clientID,如下所示。
为MQTT客户机初始化一个变量,以便使用MQTT的功能。在connect功能中设置端口号和服务器名称。
现在,在while循环中,我们将每隔5秒连续向IBM云发送温度和湿度数据。
现在完成了将数据发送到IBM云的Python代码。您可以在本教程的末尾找到完整的代码和工作视频。
最后,如连接图所示,将DHT传感器与gpio17连接,并使用python filename.py命令运行脚本。
在IBM Watson物联网平台上检查上传的数据
1. 现在,是时候检查IBM Watson平台上上传的数据了。一旦您的模块与Wi-Fi连接,您将看到IBM Watson平台上的连接状态,如下所示。
2. 转到Boards并单击Usage Overview选项。
3. 这里创建了两个图表,用于查看每秒钟更新的温度和湿度值,如下所示。
4. 通过在仪表板中选择适当的选项,可以看到不同格式的值,如图表形式或仪表。
您还可以在Recent Events选项卡中检查传入数据,如下所示。
IBM Watson平台还有许多其他特性需要探索。这就是树莓派如何将数据发送到IBM沃森物联网云平台。
本文编译自iotdesignpro