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


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
对于许多忙碌的人来说,节省一秒钟的时间也很有帮助。使用此系统,您不再需要花费时间来考虑适合天气的最佳服装。该系统使用三个粒子氩气感测温度和湿度,并输出服装组合以获得最佳舒适度。
该系统通过三个传感器对温度、湿度进行局部测量,并将数据发送到粒子氩,粒子氩对这些数据进行评估,并生成理想的服装组合,且温湿度值会显示在液晶显示器上。
流程图:
硬件组件:
电路图:
1、湿度传感器电路图
2、温度传感器电路图
3、液晶显示电路图
设计步骤:
步骤一
为各个传感器布线、编码,使其能够相互独立地正确执行功能。
下图为三个回路的图像,液晶显示器显示使用从另外两个传感器收集的数据的初步测试结果。
代码:
1)温度传感器代码
//这个#include语句是由粒子IDE自动添加的。
#include <ThingSpeak.h>
TCPClient client;
unsigned long myChannelNumber = 1352061;
const char * myWriteAPIKey = "RUZQZYJ8SDJ84MXY";
int B = A5;
int C = D7;
int previouschecktime = 0;
double temperature_celcius() {
return (analogRead(B) *(3.3/4096) -.5)/ .01;
// 从模拟读数到毫伏的转换,以及制造商偏移
}
// 应该是直接连接
#define Data_Upload_Frequency 10000
void setup() {
ThingSpeak.begin(client);
Particle.variable("outputTemperatureCelcius133171",temperature_celcius);
Particle.subscribe("recievedconfirmation",clean);
Particle.subscribe("Howard_LCD",sweep);
pinMode(C, OUTPUT);
}
void loop() {
temperature_celcius();
int fahr;
fahr = ((1.8*temperature_celcius())+32); //将摄氏温度转换为华氏温度
if (previouschecktime + Data_Upload_Frequency < millis()){
previouschecktime = millis();
}
Particle.publish("Gordon_TempC", String(temperature_celcius()));
Particle.publish("Gordon_TempF", String(fahr));
ThingSpeak.writeFields(1352061, myWriteAPIKey);
ThingSpeak.setField(3,fahr);
}
void clean(const char *event, const char *data){
if (data){
digitalWrite(C, HIGH);
delay(2000);
digitalWrite(C, LOW);
delay(8000);
}
}
void sweep(const char *event, const char *data){
if (data){
delay(5000);
digitalWrite(C, HIGH);
delay(2000);
digitalWrite(C, LOW);
}
}
void tempsubscribe(const char *event, String data){
int dataval;
dataval=String(data).toInt();
if (dataval > 80){
digitalWrite(B, HIGH);
}
else{
digitalWrite(B, HIGH);
delay(1000);
digitalWrite(B, LOW);
}
if ((previouschecktime + Data_Upload_Frequency < millis()) && (dataval)) {
int previouschecktime = millis();
delay(4000);
publishdata();
}
}
void publishdata() {
Particle.publish("recievedconfirmation", "TemperatureRecieved1", PRIVATE);
}
2)温湿度传感器代码
//这个#include语句是由粒子IDE自动添加的。
#include <Adafruit_DHT.h>
//这个#include语句是由粒子IDE自动添加的。
#include <ThingSpeak.h>
//本例假设传感器插入到CONN2中
#define DHTPIN D6 // what pin we're connected to
//这里我们定义使用的传感器类型
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
bool humid = false;
TCPClient client;
unsigned long myChannelNumber = 1352061;
const char * myWriteAPIKey = "RUZQZYJ8SDJ84MXY";
void setup() {
ThingSpeak.begin(client);
pinMode(D7, OUTPUT);
Serial.begin(9600);
dht.begin();
Particle.subscribe("Howard_LCD", l, ALL_DEVICES);
}
void loop() {
//在测量之间等待几秒钟。
delay(2500);
//读取温度或湿度大约需要250毫秒!
//传感器读数也可能高达2秒
float h = dht.getHumidity();
//读取温度为摄氏度
float t = dht.getTempCelcius();
//读取温度为华氏温度
float f = dht.getTempFarenheit();
//检查是否有读取失败,并提前退出(重试)。
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Particle.publish("Wilton_TempF", String (f));
Particle.publish("Wilton_Humidity", String (h));
ThingSpeak.setField(1,h);
ThingSpeak.setField(2,f);
Serial.print(dht.getHumidity());
Serial.println("h");
Serial.print(dht.getTempFarenheit());
Serial.println("t");
ThingSpeak.writeFields(1352061, myWriteAPIKey);
delay(5000); // ThingSpeak只会接受每15秒的更新。
}
void l(const char *event, const char *data) {
digitalWrite(D7, HIGH);
delay(2000);
digitalWrite(D7, LOW);
delay(1000);
}
3)液晶显示器代码
//这个#include语句是由粒子IDE自动添加的。
#include <LiquidCrystal.h>
//这个#include语句是由粒子IDE自动添加的。
#include <Adafruit_DHT.h>
//本例假设传感器插入到CONN2中
#define DHTPIN D6 // what pin we're connected to
//这里我们定义使用的传感器类型
#define DHTTYPE DHT11 // DHT11
//DHT dht(DHTPIN, DHTTYPE);
int tempf=0;
int humidity=0;
LiquidCrystal lcd(5, 4, 3, 2, 1, 0);
void setup() {
lcd.clear();
lcd.begin(16, 2);
//lcd.设置光标(0,0);
//lcd.显示(" 温度 ");
//lcd.设置光标(0,1);
//lcd.显示("湿度");
Particle.subscribe("Wilton_Humidity", h, ALL_DEVICES);
Particle.subscribe("Gordon_TempF", f, ALL_DEVICES);
// 打开一个串行端口来监控传感器值
//顺序.开始(9600);
//顺序.显示("DHT11 test!");
//dht.开始();
}
void loop() {
// 在测量之间等待几秒钟
delay(2000);
Particle.publish("Howard_LCD",PUBLIC);
}
void f(const char *event, const char *data) {
// 通过串行方式打印数据
lcd.clear();
String temp=data;
tempf=temp.toInt();
lcd.setCursor(0,0);
lcd.print(data);
lcd.setCursor(4,0);
lcd.print("F ");
if (tempf > 72) {
lcd.setCursor(8,1);
lcd.print("Shorts");
}else {
lcd.setCursor(8,1);
lcd.print("Pants");
}
}
void h(const char *event, const char *data) {
lcd.clear();
lcd.setCursor(7,0);
lcd.print(data);
lcd.setCursor(10,0);
lcd.print("% ");
String humid=data;
humidity=humid.toInt();
if (humidity > 64) {
lcd.setCursor(0,1);
lcd.print("T-Shirt");
}else {
lcd.setCursor(0,1);
lcd.print("LSleeve");
}
}
步骤二
让粒子氩处理、输出数据,通过让传感器使用粒子发布功能将收集的数据发送到云中,并使用粒子订阅功能从这些数据中提取液晶显示器显示来实现的。一旦数据被拉进液晶显示器代码,它可以被评估和配置,以输出基于温度和湿度的服装组合。
步骤三
查看的配置显示数据。通过将衣服的细节限制在各层(即短袖层、长袖层和外层)来实现的。温度和湿度的显示也包括在内,以说明通常感觉更热或更冷的人,并允许这种类型的人根据自己的偏好调整建议。
测试:
为了显示温度感应功能,将传感器带入HVAC单元出现故障的房间。除了低湿度外,这个房间还非常温暖(可以在下图中看到)。为了显示湿度,将DHT-22传感器放置在潮湿环境中一段时间,然后将其带入除湿建筑物。显示温度和湿度的图表如下所示:
史上最暴力的拆解——基于ZigBee技术的幻腾智能照明套装拆解
2014-07-21
E拆解:智能摄像机--360、小蚁拆解对比
2015-06-22
开启“人工智能”——贝尔金WeMo智能插座套装拆解
2014-05-23
智能家居新伙伴——iMagic智能LED灯评测拆解
2014-06-09
华为荣耀体脂秤拆解——颜值尚可,内部做工一般,国产主控,利润可期
2017-06-22
最简单的智能家居构建-ESP32-CAM实现PIR运动侦测
2019-08-14
智能家居我来也:ESP32-S2横空出世
2019-07-19
基于Arduino的DIY自动植物浇水系统
2021-08-16
讨论