本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
室内大气监测系统是一个由可变传感器和控制板组成的系统,用于监测多个房间/位置的温度、湿度和空气质量。信息管理系统的目标是解决缺乏房间当前状态信息的问题,并以非侵入性的方式提供这些信息。该系统包含一个钟面,以及在空气中有危险污染时发出铃声的能力,类似于火警,这使得其成为一种多功能设备,真正提高了它的新颖性。
创建三个版本的温度、湿度和空气质量传感器系统,每个传感器系统都放置在房子的不同房间中,并显示LED灯。当空气中没有有毒气体的威胁时,传感器系统将相互独立工作,并通过LED灯显示房间的温度和湿度。当其中一个传感器系统检测到有毒气体的威胁时,它们都会进行通信,并开始闪烁所有红色的发光二极管,以通知所有房间有危险。
硬件组件:
传感器板电路图:
传感器板布局图:
代码:
1)传感器板代码(将数据传输至接收器代码和板)
//物联网项目I.A.M.S室内空气质量监测仪
//Nate Hardy - 2021
#include <Adafruit_DHT.h> //包括Afruit DHT库
#define DHTPIN 5 //DHT11传感器针脚
#define DHTTYPE DHT11 //设置正确的DHT传感器类型
DHT dht(DHTPIN, DHTTYPE); //使用指定的DHT销和类型使DHT传感器小型化
const int TMP36Pin = A1; //TMP-36温度传感器引脚
const int MQ2 = A5; //MQ-2 CO2传感器引脚
double voltage, TMP36F, TMP36C, h, t, f, MQ2value;
int reading = 0;
void setup() {
//启动串行并打印消息!
Serial.begin(9600);
Serial.println("IOT PROJECT IAMS Serial Test OKAY");
pinMode(TMP36Pin, INPUT); //在输入模式下启动TMP36的引脚
pinMode(MQ2, INPUT); //在输入模式下启动MQ-2的引脚
dht.begin(); //Initilize the DHT sensor
//启动Paricle.io变量
Particle.variable("DHT-11 in degF", f);
Particle.variable("DHT-11 in degC", t);
Particle.variable("DHT-11 in %h", h);
Particle.variable("TMP36 in degF", TMP36F);
Particle.variable("TMP36 in degC", TMP36C);
Particle.variable("TMP36 volts", voltage);
Particle.variable("MQ-2 Data", reading);
}
void loop() {
delay(2000); // 在测量之间等待几秒钟。
MQ2value = analogRead(MQ2); //从MQ-2传感器读取数据
reading = analogRead(TMP36Pin); //从TMP36读取数据
//转换来自TMP36的数据
voltage = (reading * 3.3) / 4095.0; //将数据转换为10mv/deg
TMP36C = (voltage - 0.5) * 100.0; //计算degC值
TMP36F = (TMP36C * (9/5) ) + 32.0; //根据温度梯度值计算温度梯度
//读取温度或湿度大约需要250毫秒!
//传感器读数也可能长达2秒(这是一个非常慢的传感器)
h = dht.getHumidity(); // 读取温度
t = dht.getTempCelcius(); // 读取温度为℃
f = dht.getTempFarenheit(); // 读取温度为℉
// 检查是否有读取失败,并提前退出(重试)。
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
//返回;
}
/* ==============================================
发送云数据
============================================== */
Particle.publish("DHT-11 in degF", String(f));
Particle.publish("DHT-11 in %h", String(h));
Particle.publish("TMP36 in degF", String(TMP36F));
Particle.publish("MQ-2 Data", String(MQ2value));
/* ==============================================
发送串行数据
============================================== */
//MQ-2传感器数据
Serial.println("MQ-2 DATA");
Serial.println(MQ2value);
Serial.println("");
//TMP-36 传感器数据
Serial.println("TMP-36 DATA");
Serial.print("Voltage: ");
Serial.println(voltage);
Serial.print("degC");
Serial.println(TMP36C);
Serial.print("degF");
Serial.print(TMP36F);
//DHT11 传感器数据
Serial.println("Humid: ");
Serial.print(h);
Serial.print("% - ");
Serial.print("Temp: ");
Serial.print(t);
Serial.print("*C ");
Serial.print(f);
Serial.print("*F ");
// 计算热指数
//必须以华氏温度发送!
/* float hi = dht.getHeatIndex();
float dp = dht.getDewPoint();
float k = dht.getTempKelvin(); */
/* Serial.print(k);
Serial.print("*K - ");
Serial.print("DewP: ");
Serial.print(dp);
Serial.print("*C - ");
Serial.print("HeatI: ");
Serial.print(hi);
Serial.println("*C");
Serial.println(Time.timeStr()); */
}
2)接收器板代码(它根据传感器板和程序发送的数据调整发光二极管)
//物联网项目IAMS接收器代码
//Nate Hardy - 2021
const int redP = 2; //RGB LED红色引脚
const int greenP = 3; //RGB LED绿色引脚
const int blueP = 4; //RGB LED蓝色的引脚
const int baseTemp = 70; //将测量温度与基础温度进行比较
const int baseHumid = 30; //将测量值与基准湿度进行比较
const int goodCO2 = 1350; //CO2水平被视为“安全”
double temp; //计算温度值
int DHT11TempVar, DHT11HumidVar, TMP36temp, MQ2Var; //其他氩气传感器值的变量
int red, green, blue; //发送到LED的红色、绿色和蓝色值
void DHT11temp(const char *event, const char *data) {
DHT11TempVar = atof(data); //从DHT-11温度读取云数据
}
void DHT11humid(const char *event, const char *data) {
DHT11HumidVar = atof(data); //从DHT-11卫星读取云数据
}
void TMP36(const char *event, const char *data) {
TMP36temp = atof(data); //从TMP-36读取云数据
}
void MQ2(const char *event, const char *data) {
MQ2Var = atof(data); //从MQ-2传感器读取云数据
}
void RGBWrite(int redV, int greenV, int blueV) {
analogWrite(redP, redV); //函数将数据写入RGB LED
analogWrite(greenP, greenV);
analogWrite(blueP, blueV);
}
void setup() {
Serial.begin(9600); //串行设置和自检
Serial.println("Serial Test OK");
pinMode(redP, OUTPUT); //RGB LED的设置引脚模式
pinMode(greenP, OUTPUT);
pinMode(blueP, OUTPUT);
red = 100; //初始化不同颜色的值
green = 100;
blue = 100;
Particle.subscribe("DHT-11 in degF", DHT11temp); //订阅其他服务器输出的数据
Particle.subscribe("DHT-11 in %h", DHT11humid);
Particle.subscribe("TMP36 in degF", TMP36);
Particle.subscribe("MQ-2 Data", MQ2);
}
void loop() {
delay(2000);
Serial.println(DHT11TempVar); //打印接收到的串行数据
Serial.println(DHT11HumidVar);
Serial.println(TMP36temp);
Serial.println(MQ2Var);
temp = (DHT11TempVar + TMP36temp)/2; //两个传感器之间的平均温度
RGBWrite(0,0,0);
if (MQ2Var >= goodCO2) {
RGBWrite(255,0,0);
} else if (temp >= baseTemp + 5) {
RGBWrite(0,0,255);
} else if (temp <= baseTemp - 5 ) {
RGBWrite(0,0,255);
} else if (DHT11HumidVar <= baseHumid - 10) {
RGBWrite(255,255,0);
} else if (DHT11HumidVar >= baseHumid + 10) {
RGBWrite(0,255,255);
} else {
RGBWrite(0,0,0);
}
}
项目演示:
ThingSpeak的实时数据:点击查看。
开启“人工智能”——贝尔金WeMo智能插座套装拆解
2014-05-23
iPhone 6 plus最专业传感器深入解析
2014-10-22
智能手机里面都装着哪些传感器?它们都记录了你的什么?
2016-04-11
NXP开发板不知道选什么,看这里就对了!
2016-07-28
盘点全球知名传感器芯片巨头Top10
2015-08-21
这套工业物联网解决方案把乐高变成了一座智慧城市
2019-06-24
[项目实录]全流程LoRaWAN开发
2019-07-22
【视频秀】用STM32和光传感器控制电机马达开关窗户
2019-06-12
一款小尺寸、高性能的智能家居设备
2019-06-21
无线传感器网络——传感器原理与应用系列课程
2019-07-24
讨论