24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 城市空气:一氧化碳、...
技术专题
城市空气:一氧化碳、温湿度监测物(wù)联网系统
城市空气:一氧化碳、温湿度监测物(wù)联网系统
由于空气质量低、温度异常和其他(tā)危及居民(mín)健康的因素,世界各地的城市地區(qū)都受到严重影响。该项目旨在监测和采样城市中目标地点的大气参数,例如一氧化碳浓度、温度和湿度。随后对收集到的数据进行采样和分(fēn)析,以确定影响这些关键参数的因素。在这个项目中,我们记录了城市人口中两个相距 5 公里的地点的数据。我们对数据进行了分(fēn)析并推导出了影响这些结果的因素。
项目简介:
该项目由基于 ESP8266 的开发板 NodeMCU 控制。它使用(yòng) MQ07 传感器收集 CO 浓度数据,并使用(yòng) DHT11 传感器监测温度和湿度。一旦收集到数据,它将每分(fēn)钟上传到云(ThingSpeak 平台)。
我们在两个不同的日子在两个不同的地方收集了数据。数据已在每个位置收集了 24 小(xiǎo)时。然后我们分(fēn)析数据以找出 CO、温度和湿度读数的模式。这些数据模式帮助我们分(fēn)配可(kě)能(néng)的原因并得出结论。
当 NODEMCU 将数据上传到云端时,它会在 Thingspeak 云平台上打上时间戳。ThingSpeak 将允许我们以图表的形式可(kě)视化数据,以便我们可(kě)以定期监控数据。此外,上传的数据可(kě)以在任何时區(qū)以“CSV”格式下载。
硬件:
NodeMCU板
DHT11(温湿度传感器)
MQ-07(气體(tǐ)传感器)
连接電(diàn)線(xiàn)。
原型:
仪表板:
地点性质:
我们在两个不同的地点收集了 24 小(xiǎo)时的数据。
位置1:这是一栋公寓楼,大约有(yǒu)20户人家。典型的城市氛围,树木(mù)较少,交通污染中等。
位置 2:在特定地点紧凑且紧凑的独立房屋。典型的城市氛围,树木(mù)较少,交通污染中等。
数据集:
上述 Excel 電(diàn)子表格由 CO、温度和湿度数据组成。请注意,我们在位置 2 收集数据时遇到了 DHT11 问题,此后湿度和温度已被丢弃。以下是这些数据集中的一些有(yǒu)趣观察结果。
位置 1:烹饪引起的 CO 水平峰值
地点一:夜间下雨,气温下降,湿度偏高
位置 2:烹饪导致的高 CO 水平
位置 2:室外空气的二氧化碳含量低于室内空气
从下面的数据集中,我们可(kě)以推断出以下观察结果。
两个地点的 CO 水平在早上到下午都达到峰值。这是由于使用(yòng)液化石油气的家庭烹饪。这导致 CO 水平急剧上升,随后下午 CO 水平下降。
来自位置 2 的数据集显示 CO 水平突然下降。这是由于传感器放置在敞开的窗户附近的原因。这允许更多(duō)的室外气氛与传感器交互。这得出结论,室外空气中的 CO 水平低于室内空气。这项关于室内和室外空气比较的研究有(yǒu)一些类似的有(yǒu)趣观察。
温度和湿度是成反比的。每当温度升高时,湿度就会下降,反之亦然。
算法:
将所需的密钥(例如 API 密钥、Thing Speak 的通道 ID、WiFi SSID 和密码)作為(wèi)字符串。
配置模拟和数字引脚以获取输入。
等待设备连接到 WiFi 热点。
从 DHT11(温度和湿度)和 MQ-07 读取并存储数据,然后将其存储在变量中。
将硬件设置為(wèi)每分(fēn)钟读取传感器数据。
将数据上传到云端。
重复这些步骤。
代码:
下载这些库并将其移动到您的 Arduino 库文(wén)件夹中。ESP8266、DHT-11库和MQ-7。该项目由 L Mrudula Qury 构建和测试。您可(kě)以在此处从GitHub 存储库下载所有(yǒu)文(wén)件。
//图书馆
#include <ESP8266WiFi.h>
#include "dht.h" //for dht11 //温湿度传感器库
#include "MQ7.h" //for mq07 //气體(tǐ)传感器库
//....库结束
//DHT设置
#define dht_apin D3 //数字引脚传感器连接到NodeMCU的D3
DHT DHT;
//...设置结束
//Wifi 设置和 Thingspeak 凭证
char* ssid="你的 SSID"; //获取wifi的ssid
char* pass="您的密码"; //输入对应的密码
char* host="api.thingspeak.com";
char* writeapikey="IIHQG7GURQAKBDDM"; //
//...结尾
//引脚设置
const int mq07=A0; //Mq07连接到NodeMCU的模拟引脚A0
//...结尾
//MQ7设置
MQ7 mq7(A0, 3.3); //至于nodeMCU vcc=3.3v
//...结尾
无效设置(){
Serial.begin(115200);
WiFiClient客户端;//客户端变量
//引脚模式
pinMode(mq07,输入);
//...结尾
//无線(xiàn)连接
WiFi.begin(ssid, pass);
而(WiFi.status()!= WL_CONNECTED)
{
延迟(200);
Serial.print("..");
}
Serial.println();
Serial.println("NodeMCU 已连接!");
Serial.println(WiFi.localIP());
//---------------------
}
// 项目所需的变量
浮动温度、湿度;
浮动共同数量;
const int httpport = 80;
//--------------------------------------
无效循环(){
延迟(2000);
//来自DHT11的温度和湿度
DHT.read11(dht_apin);
温度=DHT.温度;//加载温度
湿度=DHT.湿度;//加载湿度
Serial.print("当前湿度 = ");
Serial.print(湿度);
Serial.print("%");
Serial.print("温度 = ");
Serial.print(温度);
Serial.println("C");
//.....结尾
//来自MQ07的CO
coquantity = mq7.getPPM(); //以PPM读取COquantity
Serial.print("COquantity :");
Serial.print(coquantity);
Serial.println("ppm");
Serial.println("----------------------------------------- -------");
//....结尾
// 客户端并将数据推送到服務(wù)器(云)
WiFiClient客户端;
if(!client.connect(host,httpport))
{
Serial.println("没有(yǒu)客户端");
返回;
}
字符串 url="/update?key=";
url+=writeapikey;
//上传温度数据
url+="&field1=";
url+=字符串(湿度);
//----------------------------
// 上传湿度数据
url+="&field2=";
url+=字符串(温度);
//-------------
// 上传光照强度数据
url+="&field3=";
url+=String(coquantity);
//-------------
// 上传url到云端并断开客户端
client.print(String("GET ") + url + "HTTP/1.1\r\n" + "Host :" + host + "\r\n" + "Connection: close\r\n\r\n" );
客户端停止();
//-------------
// 等待 60 秒(miǎo)
延迟(60000);
}