根据以上图片。红外模块要选5mm的直径宽度,三极管选择2n3904直插版。
需要安装以下库文件,解压复制库文件到\arduino-1.8.19\libraries
https://github.com/GYSS1204/IRsendMeidi_ESP8266-RN02S-Midea
以上链接是美的空调红外专用库文件,由于独特的编码技术。
点灯app新建设备选择arduino设备,然后复制密钥,替换程序中的密钥,同时替换wifi和密码。
ardunio代码如下
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#include <Blinker.h>
#include <Arduino.h>
#include "IRsendMeidi.h"
#include <IRsend.h>
const uint8_t IR_LED = D5; //设置发送信号的GPIO引脚号,官方推荐4
IRsendMeidi irsendmeidi(IR_LED); //声明类对象
char auth[] = "1b55916227fb";//点灯科技的Key
char ssid[] = "TP-LINK_7AC8";//Wifi名称
char pswd[] = "20030812";//Wifi密码
const int IR_RX = D1;//设置红外接收管脚
const uint16_t kIrLed = D5;//红外发射管脚
BlinkerButton Button1("btn-On");
BlinkerButton Button2("btn-Study");
BlinkerButton Button3("btn-Cool");
BlinkerButton Button4("btn-Hot");
BlinkerButton Button5("btn-Wind");
BlinkerButton Button6("btn-17");
BlinkerButton Button7("btn-26");
int isOn,isStudy,isIr_r,address;
void button1_callback(const String & state) {
BLINKER_LOG("开关按钮: ", state);
if(state=="tap" && isOn==0){
isOn=1;
Button1.color("#7CFC00");
Button1.text("开关-On");
address=1300;
Button1.print("开关-On");
irsendmeidi.setPowers(1); //打开空调
irsendmeidi.setPowers(1); //打开空调
}
else if(state=="tap" && isOn==1){
isOn=0;
Button1.color("#FF0000");
Button1.text("开关-Off");
Button1.print("开关-Off");
// SendIr();
irsendmeidi.setPowers(0); //关闭空调
}
}
void button2_callback(const String & state) {
BLINKER_LOG("学习按钮:", state);
if(state=="tap" && isStudy==0){
isStudy=1;
Button2.color("#7CFC00");
Button2.text("已进入学习模式!");
Button2.print("On");// 发送按键当前的状态
isIr_r=1;
// IRR.enableIRIn();
}
else if(state=="tap" && isStudy==1){
isStudy=0;
Button2.color("#FF0000");
Button2.text("已退出学习模式");
Button2.print("Off");
isIr_r=0;
// IRR.disableIRIn();
}
}
void button3_callback(const String & state) {
BLINKER_LOG("制冷模式按钮: ", state);
if(state=="tap" ){
address=1320;
Button3.color("#7CFC00");//Button3.print();
Button4.color("#000000");Button4.print();
Button5.color("#000000");Button5.print();
if(isStudy==1)
{Button3.print("正在学习:模式-制冷");}
else if(isStudy==0)
{Button3.print("制冷模式:开启");
// SendIr();
irsendmeidi.setModes(1); //设置为制冷模式
}}
}
void button4_callback(const String & state) {
BLINKER_LOG("制热模式按钮:", state);
if(state=="tap" ){
address=1330;
Button3.color("#000000");Button3.print();
Button4.color("#7CFC00");//Button4.print();
Button5.color("#000000");Button5.print();
if(isStudy==1)
{Button4.print("正在学习:模式-制热");}
else if(isStudy==0)
{Button4.print("制热模式:开启");
// SendIr();
}}
}
void button5_callback(const String & state) {
BLINKER_LOG("送风模式按钮:", state);
if(state=="tap" ){
address=1340;
Button3.color("#000000");Button3.print();
Button4.color("#000000");Button4.print();
Button5.color("#7CFC00");//Button5.print();
if(isStudy==1)
{Button5.print("正在学习:模式-送风");}
else if(isStudy==0)
{Button5.print("送风模式:开启");
// SendIr();
}}
}
void button6_callback(const String & state) {
BLINKER_LOG("17摄氏度按钮:", state);
if(state=="tap" ){
Button6.color("#7CFC00");//Button5.print();
irsendmeidi.setTemps(17);
Button6.print("17摄氏度模式:开启");
}}
void button7_callback(const String & state) {
BLINKER_LOG("23摄氏度按钮:", state);
if(state=="tap" ){
Button6.color("#7CFC00");//Button5.print();
irsendmeidi.setTemps(23);
Button6.print("17摄氏度模式:开启");
}}
void dataRead(const String & data){BLINKER_LOG("Blinker readString: ", data);}
void setup() {
Serial.begin(115200);
Serial.println("OK!");
#if defined(BLINKER_PRINT)
BLINKER_DEBUG.stream(BLINKER_PRINT);
#endif
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Button3.attach(button3_callback);
Button4.attach(button4_callback);
Button5.attach(button5_callback);
Button6.attach(button6_callback);
Button7.attach(button7_callback);
//button4_callback("tap");//默认送风模式
irsendmeidi.begin_2(); //初始化
irsendmeidi.setZBPL(40); //设置红外载波频率,单位kHz,不调用此函数则默认38,由于未知原因,我设置为40,示波器测得频率为38左右,当发送信号后没反应时,尝试更改此值。
irsendmeidi.setCodeTime(500,1600,550,4400,4400,5220); //设
Serial.println("All int is OK!");
delay(1000);
}
void loop() {
Blinker.run();
if(isIr_r==1)
{
}
delay(100);
}
点灯app的页面配置如下,进入点灯app选择页面配置输入以下代码,则页面组件就自动画好了。
{¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨btn¨¨ico¨¨fal fa-power-off¨¨mode¨É¨t0¨¨开关-Off¨¨t1¨¨文本2¨¨bg¨É¨cols¨Ë¨rows¨Ë¨key¨¨btn-On¨´x´É´y´Ï¨clr¨¨#EA0909¨¨lstyle¨É}{ßC¨deb¨ßGÉßLÉßMÑßNÌßO¨debug¨´x´É´y´Ê}{ßCßDßEßFßGÉßH¨模式-制冷¨ßJßKßLÉßMËßNËßO¨btn-Cool¨´x´É´y´¤AßSÉßQ¨#595959¨}{ßCßDßEßFßGÉßH¨模式-制热¨ßJßKßLÉßMËßNËßO¨btn-Hot¨´x´Ì´y´¤AßSÉßQßX}{ßCßDßEßFßGÉßH¨模式-送风¨ßJßKßLÉßMËßNËßO¨btn-Wind¨´x´Ï´y´¤AßSÉßQßX}{ßC¨ran¨ßH¨滑动条¨ßQ¨#389BEE¨¨max¨¤Q¨min¨¤HßLÉßMÑßNËßO¨ran-cl3¨´x´É´y´¤D¨rt¨»}{ßCßTßGÉßLÉßMÑßNÌßOßU´x´É´y´¤F}{ßC¨tim¨ßLÉßMËßNËßO¨timing¨´x´É´y´Í}{ßCßDßEßFßGÉßH¨17摄氏度¨ßJßKßLÉßMËßNËßO¨btn-17¨´x´Ë´y´Í}{ßCßDßEßFßGÉßH¨26摄氏度¨ßJßKßLÉßMËßNËßO¨btn-26¨´x´Í´y´Í}÷¨actions¨|÷¨triggers¨|÷ßi|ßh÷}