Esp8266 mqtt无线控制空调

对于空调的控制 一般都是红外控制。这样我们就可以将esp模块和红外模块联合使用
这样来对空调进行远程的无线的控制

演示视频:

红外接收

TIM图片20190511141512
使用的是引脚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 的库

  1. 制定发送和接收的规则

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;
      }
    }
  1. 根据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/

完整代码仅供参考
根据自己的应用场景 再进行相应的更改代码

项目参考代码链接

GitHub地址

更多学习教程

ESP开发学习基础知识

基础知识包括对esp模块的认识与了解 mqtt协议的了解,arduino IDE运用代码编写等等。

  1. arduino基础学习
  2. esp系列模块的介绍
  3. mqtt协议的介绍与使用
  4. 利用mqtt esp模块 基于arduino IDE开发方法
  5. esp模块的AT指令 刷固件
  6. esp模块睡眠模式使用
  7. esp8266-01s介绍与使用
  8. esp8266-12f介绍与使用
  9. NodeMcu介绍与使用
esp开发IOT应用

基于esp8266的模块以及其他模块根据实际的应用场景与需求制作的物联网应用

  1. 基于FRID arduino 继电器 电磁锁开发的FRID门禁系统
  2. esp32-cam获取视频流图像处理
  3. 基于步进电机 esp8266 mqtt开发的自动窗帘控制
  4. 基于DHT11 Esp8266 mqtt获取室内温湿度
  5. 基于CCS811 esp8266 mqtt 获取室内空气质量
  6. 基于红外模块 esp8266 mqtt开发的智能遥控控制
  7. 基于ws2812 esp8266 mqtt开发的智能多级照明灯
  8. 基于ws2812 esp8266 mqtt开发的智能多模式氛围灯
  9. 基于mp3player esp8266 mqtt开发的智能语音播报系统
  10. IOT综合应用之智慧教室项目开发
发布了46 篇原创文章 · 获赞 59 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Nirvana_6174/article/details/104563429