当前位置: 首页 > news >正文

使用“NodeMCU”、“红外模块”实现空调控制

项目思路

空调遥控器之所以能够实现对空调的控制,是因为它能够向空调发射出特定的红外信号。从理论上来说,任何能够发射出这种相同红外信号的红外发射器,都可以充当空调遥控器(这也正是手机能够控制多种不同品牌空调的原因所在)

虽然我们可以根据空调厂家所提供的红外通信协议来生成控制空调所需的红外信号,但这种方法往往涉及大量的工作。为了简化这一过程,我们可以利用一些现成的开源库,例如本项目所用到的Arduino平台上的IRremoteESP8266库。该库已经内置了市面上绝大多数空调品牌的控制指令,我们只需进行简单的配置,便可实现空调的控制。

此外,IRremoteESP8266库还提供了空调红外信号的接收与解析示例,本项目会利用该示例查看并分析空调遥控器以及我们自制的红外发射器所发出的红外信号的具体内容。

元件

NodeMCU开发板

数字38kHz红外发射模块
数字38kHz红外接收模块

接线

NodeMCU

红外发射

VCC

VCC

GND

GND

D2

DAT

红外发射接线

NodeMCU

红外接收

VCC

VCC

GND

GND

D2

DAT

红外接收接线

开发环境搭建

1.选择“NodeMCU 1.0 (ESP-12E Module)”开发板

2.安装IRremoteESP8266.h红外库

发射红外信号,实现空调控制

下面以格力品牌旗下的俊扬系列空调所使用的YAP0F3型号遥控器为例。

格力YAP0F3型空调遥控器
/*可通过IRremoteESP8266库中的IRrecvDumpV2示例来解析出空调遥控器的红外编码,其包括遥控器型号等信息,方便修改本程序以适配不同型号的空调
*/#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <ir_Gree.h>    //格力空调红外编码解析库,是<IRremoteESP8266.h>的子库,<IRremoteESP8266.h>还有其他主流品牌的红外编码解析子库const uint16_t kIrLed = 4; //ESP-12F芯片的4引脚,即(NODEMCU)开发板的D2引脚.
IRGreeAC ac(kIrLed);void setup() 
{ac.begin();delay(100);
}void loop() 
{//这几句程序的顺序不要变ac.on();        //ac.off();ac.setModel(YBOFB);   //遥控器型号ac.setMode(kGreeHeat);  //  kGreeCoolac.setFan(1); // 1风速低、2风速中、3风速高、0自动风速ac.setTemp(28);ac.setSwingVertical(1,kGreeSwingAuto);  // ac.setSwingVertical(0,kGreeSwingLastPos);ac.send();delay(2000);  
}

关于格力空调的更多配置,可以按照以下方式找到ir_Gree库,通过参考该库中所定义的对象、方法以及枚举值,对上面的代码进行相应的调整。

以此类推,通过查看ir_Haier.cpp、ir_Haier.h和ir_Midea.cpp、ir_Midea.h等库,可实现海尔、美的等品牌的空调控制。

解码空调红外信号

Arduino IDE中的IRremoteESP8266库中的IRrecvDumpV2示例可以将识别与解析到的空调遥控器发射的红外信号通过串口打印出来(波特率为115200)。用此实例可查看本项目向空调发射的红外信号的具体内容。

其中的GREE、Model: 2 (YBOFB)、Power: On、Mode: 4 (Heat)、Temp: 24C、Fan: 2 (Medium)、Swing(V): 1 (Auto)分别表明了此次系统向空调发射的红外信号的品牌、遥控器型号、开关状态、模式、温度、风速、扫风状态。

注意事项

避免强光干扰

参考

ESP8266-NodeMCU项目(三):ESP8266-NodeMCU+Blinker+红外模块(实现远程遥控空调)_esp8266不能接温度湿度模块和红外发射模块吗-CSDN博客

IRremoteESP8266库 红外控制空调方法-CSDN博客


http://www.mrgr.cn/news/80981.html

相关文章:

  • 时间序列预测论文阅读和相关代码库
  • vue2实现word在线预览
  • C++ List(双向链表)
  • 数据压缩比 38.65%,TDengine 重塑 3H1 的存储与性能
  • 矩阵的基本知识
  • FFmpeg第一话:FFmpeg 简介与环境搭建
  • Day12 梯度下降法的含义与公式
  • php各个版本的特性以及绕过方式
  • 基础电路的学习
  • 在VBA中结合正则表达式和查找功能给文档添加交叉连接
  • 分析excel硕士序列数据提示词——包含对特征的筛选
  • k8s迁移——岁月云实战笔记
  • JWT令牌与微服务
  • Pytorch | 利用MI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
  • GTID详解
  • (耗时4天制作)详细介绍macOS系统 本博文含有全英版 (全文翻译稿)
  • 本地计算机上的MySQL服务启动后停止(connection refused: connect)解决一系列数据库连接不上的问题
  • 在UE5中调用ImGui图形界面库
  • [创业之路-202]:任正非管理华为的思想与毛泽东管理党、军队、国家的思想的相似性与差异性
  • Linux——卷
  • 【day09】面向对象编程进阶
  • 汽车IVI中控开发入门及进阶(43):NanoVG
  • Leetcode-208. 实现Trie(前缀树)
  • SQL进阶技巧:如何计算算法题分发糖果问题?
  • Java开发经验——数据库开发经验
  • 深度学习笔记——VQ-VAE和VQ-VAE-2