“温控空调”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
设备
第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 1:将CoreUSB与Sensorhub叠堆。
+
*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]]
*Setup 2:将红外发射传感器通过转接板接到Sensorhub的D3引脚上,温湿度传感器接到Sensorhub的IIC引脚上。
 
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
 
[[File:temp_ir_sensor.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>
 
==程序==
 
[[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/MicroduinoAirConditioner MicroduinoAirConditioner]]
 
  
 
==结果==
 
==结果==

2015年10月28日 (三) 09:15的版本

Language English

目的

监测环境温度来控制空调工作,当温度升高到一定温度时启动空调,当温度下降到一定温度时关闭空调。

原理

利用温湿度传感器AM2321检测室温,然后红外发射传感器通过匹配编码控制空调的启动和停止。

设备

模块 数量 功能
Microduino-CoreUSB/zh 1 核心板
Microduino-Sensorhub/zh 1 传感器转接板
Microduino-Temp&Hum/zh 1 温湿度传感器
Microduino-IR transmitter/zh 1 红外发射传感器
  • 其他设备
    • USB数据线

搭建硬件

  • Setup 1:将红外发射传感器通过转接板接到Sensorhub的D6引脚上,温湿度传感器接到Sensorhub的IIC引脚上。
    • Setup 2:将所有模块叠堆,通过USB线连接到电脑。

软件调试

  • 打开Arduino IDE,将下列代码复制到IDE中。
#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);  
}
  • 空调红外遥控编码定义,此处控制的是科龙空调,采用NEC编码格式。
IRsend irsend;       //红外发射
AM2321 am2321;       //温湿度传感器AM2321

#define POWER_ON 0xC1602680    //空调开关机编码
float temp = 0;        //温度值
unsigned long runTime = 0;   //空调开关机时间
  • 每隔一秒钟检测当前温度值,当温度大于30时,开启空调,温度小于25度时,关闭空调,空调的开关控制间隔为180秒,避免空调频繁开启和关闭。
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时,空调关闭,可以通过检测温度值来控制空调的其他功能。

视频