笔者最近在学习使用esp8266控制空调,其控制方法有如下三种,各方法均验证成功。

下载安装IRremoteESP8266

想要通过ESP8266控制空调,首先需要下载安装库,具体方法请读者自行查阅。

方法一

第一个方法,也是最简单、最常见的方法,通过红外接收头接收并解析红外原始数据,再通过send函数发送出去。

红外接收解析程序为该库自带例程IRrecvDumpV2。

烧录好,根据例程连接上红外接收头后,便可将红外发射的红外数据通过串口显示出来(本文以实验室的美的空调为例,因为没有遥控器,所以先用手机自带的万能遥控器)。

按下手机上空调遥控开机键后,串口打印出如下信息,将稍后其中的rawData数组复制到发送程序中。

python 红外控制空调 红外遥控怎么控制空调_arduino


本方法发送程序如下。

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>

const uint16_t kIrLed = 4;
IRsend irsend(kIrLed);   
//Timestamp : 000155.307Library   : v2.7.19
//Protocol  : COOLIXCode      : 0xB29F40 (24 Bits)Mesg Desc.: Power: On, Mode: 0 (Cool), Fan: 4 (Min), Temp: 24C, Zone Follow: Off, Sensor Temp: Off
uint16_t rawData[199] = {4418, 4488,  510, 1656,  534, 542,  536, 1632,  510, 1656,  510, 566,  510, 568,  510, 1658,  508, 568,  514, 564,  534, 1632,  512, 566,  510, 568,  518, 1674,  494, 1672,  486, 566,  512, 1656,  512, 1656,  512, 564,  516, 560,  518, 1650,  510, 1658,  534, 1632,  510, 1656,  510, 1656,  512, 566,  510, 1656,  512, 1654,  512, 566,  514, 564,  512, 566,  510, 566,  512, 566,  510, 566,  512, 1654,  514, 566,  534, 542,  512, 566,  510, 568,  512, 566,  512, 564,  512, 1656,  512, 566,  510, 1658,  510, 1658,  510, 1658,  508, 1656,  512, 1656,  510, 1656,  510, 5284,  4444, 4460,  512, 1656,  510, 566,  536, 1632,  512, 1656,  512, 566,  512, 566,  512, 1656,  514, 562,  512, 566,  512, 1656,  512, 566,  512, 566,  512, 1656,  510, 1658,  510, 566,  510, 1658,  510, 1656,  510, 566,  512, 566,  510, 1658,  510, 1656,  510, 1658,  510, 1656,  510, 1656,  512, 566,  512, 1656,  510, 1656,  510, 566,  512, 566,  512, 566,  510, 566,  512, 566,  516, 560,  512, 1656,  512, 566,  510, 566,  512, 566,  512, 566,  512, 566,  512, 566,  512, 1656,  512, 566,  510, 1656,  510, 1656,  512, 1658,  510, 1656,  510, 1656,  510, 1658,  510};  
// COOLIX B29F40uint64_t data = 0xB29F40;

void setup() {
  Serial.begin(115200);
  irsend.begin(); 
  delay(1000);
}
void loop() {
  irsend.sendRaw(rawData, 199, 38);
  delay(2000); 
}

烧录好发送程序,可通过接收程序进行验证。

方法二

使用方法二,首先也需要通过红外接收程序解析出红外遥控器所用的协议,再创建对应协议类,便可随意更改参数并控制空调。
本方法发送程序如下。

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <ir_Coolix.h>

const uint16_t kIrLed = 4; 
IRCoolixAC ac(kIrLed);

void setup() {
  Serial.begin(115200); 
  ac.begin();
  delay(1000);
}
void loop() {
  ac.on();
  ac.setMode(kCoolixCool);
  ac.setFan(4);
  ac.setTemp(24);
  ac.send();
  delay(2000);  
}

方法三

方法三,在通过红外接收程序解析出协议数据后,便可以直接发送数据。
比如方法一中解析到的数据为COOLIXCode : 0xB29F40
本方法发送程序如下。

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <ir_Coolix.h>

const uint16_t kIrLed = 4;
IRsend irsend(kIrLed);   
//Timestamp : 000155.307Library   : v2.7.19
//Protocol  : COOLIXCode      : 0xB29F40 (24 Bits)Mesg Desc.: Power: On, Mode: 0 (Cool), Fan: 4 (Min), Temp: 24C, Zone Follow: Off, Sensor Temp: Off
uint64_t data = 0xB29F40;
void setup() {
  Serial.begin(115200);
  irsend.begin(); 
  delay(1000);
}
void loop() {
  irsend.sendCOOLIX(0xB29F40);
  delay(2000);
}

注意事项

1、在使用各种协议时,需要在程序前面引用对应协议的头文件。

该库具体包含有哪些协议,可以到库文件中查看。

文件位置如下。

python 红外控制空调 红外遥控怎么控制空调_红外遥控_02


2、在进行红外数据解析时,注意将红外发射头对准接收头,同时应避免强光干扰。为获得正确解析数据,可能需要多发射接收几次,直到多次解析出的数据相同。

3、如果情况正常,每次解析出来的十六进制应是相同的,但是rawData数组中数据不可能完全相同。