“温控空调”的版本间的差异
853387039@qq.com(讨论 | 贡献) (→设备) |
853387039@qq.com(讨论 | 贡献) |
||
第22行: | 第22行: | ||
| [[Microduino-IR transmitter/zh]]||1||红外发射传感器 | | [[Microduino-IR transmitter/zh]]||1||红外发射传感器 | ||
|} | |} | ||
+ | *其他设备 | ||
+ | **USB数据线 | ||
[[File:_temp_air.jpg|600px|center|thumb]] | [[File:_temp_air.jpg|600px|center|thumb]] | ||
==搭建硬件== | ==搭建硬件== | ||
− | *Setup | + | *Setup 1:将红外发射传感器通过转接板接到Sensorhub的D6引脚上,温湿度传感器接到Sensorhub的IIC引脚上。 |
+ | [[File:temp_ir_sensor.jpg|600px|center|thumb]] | ||
+ | **Setup 2:将所有模块叠堆,通过USB线连接到电脑。 | ||
[[File:CoreUSB_Ble_Sensorhub.jpg|600px|center|thumb]] | [[File:CoreUSB_Ble_Sensorhub.jpg|600px|center|thumb]] | ||
− | |||
− | |||
− | |||
==软件调试== | ==软件调试== | ||
+ | *打开Arduino IDE,将下列代码复制到IDE中。 | ||
+ | <source lang="cpp"> | ||
+ | #include <Wire.h> | ||
+ | #include <AM2321.h> | ||
+ | #include <IRremote.h> | ||
+ | |||
+ | IRsend irsend; | ||
+ | AM2321 am2321; | ||
+ | |||
+ | #define POWER_ON 0xC1602680 | ||
+ | #define TEMP_MAX 30 | ||
+ | #define TEMP_MIN 25 | ||
+ | float temp = 0; // | ||
+ | unsigned long runTime = 0; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | am2321.read(); | ||
+ | temp = am2321.temperature/10.0; | ||
+ | if(millis()>runTime+180000) | ||
+ | { | ||
+ | if(temp > TEMP_MAX) | ||
+ | { | ||
+ | irsend.sendNEC(POWER_ON,32); | ||
+ | irsend.sendCode(0x00000000,16); | ||
+ | runTime = millis(); | ||
+ | } | ||
+ | else if(temp <TEMP_MIN) | ||
+ | { | ||
+ | irsend.sendNEC(0xC1602680,32); | ||
+ | irsend.sendCode(0x00000000,16); | ||
+ | runTime = millis(); | ||
+ | } | ||
+ | } | ||
+ | delay(1000); | ||
+ | } | ||
+ | </source> | ||
+ | |||
*空调红外遥控编码定义,此处控制的是科龙空调,采用NEC编码格式。 | *空调红外遥控编码定义,此处控制的是科龙空调,采用NEC编码格式。 | ||
<source lang="cpp"> | <source lang="cpp"> | ||
第63行: | 第105行: | ||
} | } | ||
delay(1000); | delay(1000); | ||
− | |||
</source> | </source> | ||
− | |||
− | |||
− | |||
==结果== | ==结果== |
2015年10月28日 (三) 09:15的版本
Language | English |
---|
目的监测环境温度来控制空调工作,当温度升高到一定温度时启动空调,当温度下降到一定温度时关闭空调。 原理利用温湿度传感器AM2321检测室温,然后红外发射传感器通过匹配编码控制空调的启动和停止。 设备
搭建硬件
软件调试
#include <Wire.h>
#include <AM2321.h>
#include <IRremote.h>
IRsend irsend;
AM2321 am2321;
#define POWER_ON 0xC1602680
#define TEMP_MAX 30
#define TEMP_MIN 25
float temp = 0; //
unsigned long runTime = 0;
void setup()
{
}
void loop() {
am2321.read();
temp = am2321.temperature/10.0;
if(millis()>runTime+180000)
{
if(temp > TEMP_MAX)
{
irsend.sendNEC(POWER_ON,32);
irsend.sendCode(0x00000000,16);
runTime = millis();
}
else if(temp <TEMP_MIN)
{
irsend.sendNEC(0xC1602680,32);
irsend.sendCode(0x00000000,16);
runTime = millis();
}
}
delay(1000);
}
IRsend irsend; //红外发射
AM2321 am2321; //温湿度传感器AM2321
#define POWER_ON 0xC1602680 //空调开关机编码
float temp = 0; //温度值
unsigned long runTime = 0; //空调开关机时间
am2321.read(); //获得当前温度值
temp = am2321.temperature/10.0;
if(millis()>runTime+180000) //控制空调间隔时间大于180s
{
if(temp > 30) //温度大于30度,开启空调
{
irsend.sendNEC(0xC1602680,32);
irsend.sendCode(0x00000000,16);
runTime = millis();
}
else if(temp <25) //温度小于30度,关闭空调
{
irsend.sendNEC(0xC1602680,32);
irsend.sendCode(0x00000000,16);
runTime = millis();
}
}
delay(1000);
结果当温度大于30度时,空调启动,温度小与25时,空调关闭,可以通过检测温度值来控制空调的其他功能。 视频 |