对于空调的控制 一般都是红外控制。这样我们就可以将esp模块和红外模块联合使用
这样来对空调进行远程的无线的控制
演示视频:
红外接收
使用的是引脚11 使用波特率是9600
调用的IRremote库,将接收到的光信号转换为数值。
#include <IRremote.h>
int PIN_RECV = 11;
IRrecv irrecv(PIN_RECV);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value);
irrecv.resume();
}
}
可以根据这个代码 来获取到 遥控器上相关按键的值
记录下来 用到下面进行发送
(在我的这个项目中 我是要演示效果,所以控制的是一个数码管 使用arduino pro mini 进行控制 通过红外接收 接收到的信息 处理后控制TM1637数码管进行显示)
红外发送
下列代码经过改造,是使用在要红外控制显示。思路是一样的
就是使用 sendNEC(); 函数发送值,可以发送十六进制的值或者十进制等。
代码网上很多
也可以参考我博客上
http://niehen.cn/arduino/arduino%e6%8e%a7%e5%88%b6%e7%ba%a2%e5%a4%96%e6%8e%a5%e6%94%b6%ef%bc%8c%e5%8f%91%e9%80%81/
使用esp开发
发送给esp相应的指令 进入callback函数中进行解析
解析之后 控制红外发送,发送相应的码段
使用的esp12f GPIO4引脚
使用到的库有
<IRremoteESP8266.h>
<IRsend.h> // 红外发送的库
<ESP8266WiFi.h>
<PubSubClient.h> // mqtt 的库
- 制定发送和接收的规则
char* order_infor[] ={“on”,“off”,“tema”,“tems”,“warm”,“cold”,“winda”,“winds”}; // 控制的温度
long enc[] ={0xFF30CF,0xFF18E7,0xFF7A85,0xFF10EF,0xFF38C7,0xFF5AA5,0xFF42BD,0xFF4AB5};//发射的红外 十六进制值
接收到0(打开) 发送第一个编码 接收到1 (关闭) 发送第二个编码…
2. callback中处理 接收到的值(防止出现错误的命令)
int isint = 0;// 如果有字母 就为1 全数字就为0
for (int i=0; i< strplayload.length();i++) // 检测接收到的命令里面是否含有 非数字的字符
{
if (!isDigit(strplayload[i]))
{
isint = 1;
break;
}
}
- 根据callback处理的结果 进行发送 (callback中代码)
if(isint == 0){
int older_air = strplayload.toInt() ; // 转换为 int类型
if(older_air >=1 && older_air<=8){
irsend.sendSony(enc[older_air - 1], 12);
client.publish("air_cond/status", "IR remote is running");
client.publish("air_cond/status", order_infor[older_air -1]);
}
代码
esp8266 mqtt使用arduino 开发
http://niehen.cn/esp8266/esp8266-mqtt-%e4%bd%bf%e7%94%a8arduino%e5%bc%80%e5%8f%91%e6%95%99%e7%a8%8b/
esp8266-12f使用介绍
http://niehen.cn/esp8266/esp8266-12f%e4%bb%8b%e7%bb%8d%e4%b8%8e%e4%bd%bf%e7%94%a8/
完整代码仅供参考
根据自己的应用场景 再进行相应的更改代码
项目参考代码链接
更多学习教程
ESP开发学习基础知识
基础知识包括对esp模块的认识与了解 mqtt协议的了解,arduino IDE运用代码编写等等。
- arduino基础学习
- esp系列模块的介绍
- mqtt协议的介绍与使用
- 利用mqtt esp模块 基于arduino IDE开发方法
- esp模块的AT指令 刷固件
- esp模块睡眠模式使用
- esp8266-01s介绍与使用
- esp8266-12f介绍与使用
- NodeMcu介绍与使用
esp开发IOT应用
基于esp8266的模块以及其他模块根据实际的应用场景与需求制作的物联网应用
来源:CSDN
作者:nie_hen_6174
链接:https://blog.csdn.net/Nirvana_6174/article/details/104563429