湿度和温度是在许多地方(例如农场,温室,医疗,工业家庭和办公室)测量的非常常见的参数。我们已经介绍了使用Arduino进行的湿度和温度测量,并在LCD上显示了数据。
在此物联网项目中,我们将使用ThingSpeak监视Internet上的湿度和温度 ,我们将使用ThingSpeak服务器显示Internet上的当前湿度和温度数据。它是通过Arduino,DHT11传感器模块,ESP8266 WIFI模块和LCD之间的数据通信来完成的。摄氏温度计和百分湿度计通过LCD显示屏显示环境温度和湿度,并将其发送到ThingSpeak服务器,以便在世界任何地方进行实时监视。
工作和ThingSpeak设置:
这个基于物联网的项目分为四个部分,首先是湿度和温度传感器DHT11感测湿度和温度数据。其次,Arduino Uno将DHT11传感器的数据提取为适当的百分比和摄氏比例数,然后将其发送到Wi-Fi模块。第三,Wi-Fi模块ESP8266将数据发送到ThingSpeak的服务器。最后ThingSpeak分析数据并以Graph形式显示。可选的LCD也用于显示温度和湿度。
ThingSpeak为基于IoT的Arduino项目提供了非常好的工具。通过使用ThingSpeak网站,我们可以在任何地方通过Internet监视数据,还可以使用ThingSpeak提供的频道和网页通过Internet控制我们的系统。ThingSpeak通过触发反应来“收集”来自传感器的数据,“分析并可视化”数据和“行为”。在这里,我们介绍了如何使用ESP8266 WIFI模块向ThingSpeak服务器发送数据:
1.首先,用户需要在ThingSpeak.com上创建一个帐户,然后登录并单击“入门”。
2.现在转到“频道”菜单,然后单击同一页面上的“新频道”选项以进行进一步处理。
3.现在,您将看到一个用于创建频道的表格,根据您的选择填写名称和说明。然后在“字段1”和“字段2”标签中填写“湿度”和“温度”,勾选两个字段的复选框。还要在下面的表格中选中“公开”选项的复选框,最后保存频道。现在,您的新频道已创建。
4.现在单击“ API密钥”选项卡并保存Write和Read API密钥,这里我们仅使用Write密钥。您需要在代码中的 char * api_key 中复制此密钥。
5.之后,单击“数据导入/导出”,然后复制“更新频道供稿GET请求URL”,即:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6.现在,用户需要使用 httpGet 函数将 postUrl 作为“ update?api_key = SIWOYBX26OXQ1WMS&field1 = 0”打开“ api.thingspeak.com” ,然后使用数据源或更新请求地址发送数据。
在发送数据之前,用户需要使用温度和湿度数据字段编辑此查询字符串或 postUrl ,如下所示。在这里,我们在使用 httpGet 将数据发送到服务器之后,在需要使用GET请求发送到服务器的字符串中添加了两个参数。检查下面的完整代码。
sprintf(postUrl,“ update?api_key =%s&field1 =%s&field2 =%s”,api_key,humidStr,tempStr); httpGet(“ api.thingspeak.com”,postUrl,80);。
本文结尾的视频部分演示了整个过程。
该项目的工作基于单线串行通信,用于从DHT11中获取数据。首先Arduino向DHT模块发送启动信号,然后DHT给出包含数据的响应信号。Arduino分两部分收集和提取数据,第一部分是湿度,第二部分是温度,然后将其发送到16x2 LCD和ThingSpeak服务器。ThingSpeak以Graph形式显示数据,如下所示:
您可以在此处了解有关DHT11传感器及其与Arduino接口的更多信息。
电路说明:
这个ThingSpeak温度和湿度监控项目的连接非常简单。此处,液晶显示器用于显示温度和湿度,它以4位模式直接连接到Arduino。 LCD的引脚,即RS,EN,D4,D5,D6和D7连接到Arduino数字引脚编号14、15、16、17、18和19。该LCD是可选的。
DHT11传感器模块连接到Arduino的数字引脚12。Wi-Fi模块ESP8266的Vcc和GND引脚直接连接到 3.3V ,而Arduino的GND和CH_PD也连接到3.3V。ESP8266的Tx和Rx引脚直接连接到Arduino的引脚2和3。这里还使用软件串行库来允许在Arduino的引脚2和3上进行串行通信。我们已经详细介绍了ESP8266 Wi-Fi模块与Arduino的接口。
编程部分:
该项目的编程部分在执行所有操作中起着非常重要的作用。首先,我们包括必需的库和初始化变量。
#include“ dht.h” //包含dht #include库
之后,输入您的Write API密钥并获取一些字符串。
char * api_key =“ SIWOYBX26OXQ1WMS”; //从ThingSpeak静态字符postUrl输入您的Write API密钥;int humi,tem; void httpGet(String ip,String path,int port = 80);
在 void loop() 函数中,我们读取温度和湿度,然后在LCD上显示这些读数。
void send2server() 函数用于将数据发送到服务器。Send2server函数是一个计时器中断服务例程,每20秒调用一次。当我们调用更新函数时,将调用定时器中断服务程序。
void send2server(){char tempStr; 字符湿度 dtostrf(tem,5,3,tempStr); dtostrf(humi,5,3,wetStr); sprintf(postUrl,“ update?api_key =%s&field1 =%s&field2 =%s”,api_key,humidStr,tempStr); httpGet(“ api.thingspeak.com”,postUrl,80); }