使用“NodeMCU”、“红外模块”实现空调控制
项目思路
空调遥控器之所以能够实现对空调的控制,是因为它能够向空调发射出特定的红外信号。从理论上来说,任何能够发射出这种相同红外信号的红外发射器,都可以充当空调遥控器(这也正是手机能够控制多种不同品牌空调的原因所在)
虽然我们可以根据空调厂家所提供的红外通信协议来生成控制空调所需的红外信号,但这种方法往往涉及大量的工作。为了简化这一过程,我们可以利用一些现成的开源库,例如本项目所用到的Arduino平台上的IRremoteESP8266库。该库已经内置了市面上绝大多数空调品牌的控制指令,我们只需进行简单的配置,便可实现空调的控制。
此外,IRremoteESP8266库还提供了空调红外信号的接收与解析示例,本项目会利用该示例查看并分析空调遥控器以及我们自制的红外发射器所发出的红外信号的具体内容。
元件
接线
| 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型号遥控器为例。
/*可通过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博客
相关文章:
使用“NodeMCU”、“红外模块”实现空调控制
项目思路 空调遥控器之所以能够实现对空调的控制,是因为它能够向空调发射出特定的红外信号。从理论上来说,任何能够发射出这种相同红外信号的红外发射器,都可以充当空调遥控器(这也正是手机能够控制多种不同品牌空调的原因所在&a…...
2023年西南大学数学建模C题天气预报解题全过程文档及程序
2023年西南大学数学建模 C题 天气预报 原题再现: 天气现象与人类的生产生活、社会经济、军事活动等方方面面都密切相关,大到国家,小到个人,都受到极端天气的影响。2022年6月,全球陆地地区出现了自1850年代末人类有系…...
【大模型】使用DPO技术对大模型Qwen2.5进行微调
前言 定义 DPO(Direct Preference Optimization)即直接偏好优化算法,是一种在自然语言处理领域,特别是在训练语言模型时使用的优化策略。它的主要目的是使语言模型的输出更符合人类的偏好。 背景和原理 在传统的语言模型训练中&a…...
Maven 生命周期
文章目录 Maven 生命周期- Clean 生命周期- Build 生命周期- Site 生命周期 Maven 生命周期 Maven 有以下三个标准的生命周期: Clean 生命周期: clean:删除目标目录中的编译输出文件。这通常是在构建之前执行的,以确保项目从一个…...
网络不通该如何手动下载torch
如果遇到pip install torch2.5.0 下载不了的情况,大部分是网络的问题.可以考虑下载wheel文件在去安装 查看对应的cuda版本(举个例子:cuda为12.4,找到这个版本的 复制到服务器上下载): 有conda和pip下载的两种方式,二者选其一:如果没有安装anaconda,就直接使用pip的方式下载 如…...
基础电路的学习
1、戴维南定理 ①左边的图可简化为一个电阻+一个电压源。② ③电压源可相当于开路。将R2移到左边,R1和R2相当于并联。RR1//R2 Rx和Rt相等时,灵敏度最大,因此使Rt10K。 104电容是0.1uf。 三位数字的前两位数字为标称容量的有效数…...
对 MYSQL 架构的了解
MySQL 是一种广泛使用的关系型数据库管理系统,其架构主要包括以下几个关键部分: 一、连接层 客户端连接管理:MySQL 服务器可以同时处理多个客户端的连接请求。当客户端应用程序(如使用 Java、Python 等语言编写的程序)…...
C#中方法参数传值和传引用的情况
对于引用类型 - 传类类型的具体值时 此时传的是引用 - 单纯传类类型 此时传的是个test引用的副本,在方法内修改的是这个副本的指向 传string,集合同理,只要是指向新对象,就是引用副本在指向 对于值类型 - 传普通值类型 …...
获取显示器(主/副屏)友好名称(FriendlyName)
在开发涉及多显示器的应用程序时,获取显示器的友好名称(Friendly Name)是一个常见需求。本文将深入探讨GetMonitorFriendlyName 方法,了解其实现细节和工作原理。 方法签名 public static string GetMonitorFriendlyName(bool i…...
Apache Solr RCE(CVE-2017-12629)--vulhub
Apache Solr 远程命令执行漏洞(CVE-2017-12629) Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个…...
2.3 携程的hook实现及dlsym函数
背景知识:(排除static 情况) 一个进程中可以有相同的命名吗? -- 不能 两个进程之间可以有相同的命名吗?--可以 一个进程和另一个静态库可以有相同的命名吗?--不能 一个进程和另一个动态库之间可以有相同…...
机器学习之KNN算法
K-Nearest Neighbors (KNN) 是一种常见的机器学习算法,广泛应用于分类和回归问题。KNN是一种基于实例的学习方法,它利用训练数据集的实例来进行分类或回归预测。在KNN中,预测的结果依赖于距离度量函数计算出的最近邻实例的标签或值。下面我们…...
《全排列问题》
题目描述 按照字典序输出自然数 11 到 nn 所有不重复的排列,即 nn 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 nn。 输出格式 由 1∼n1∼n 组成的所有不重复的数字序列,每行一个序列。 每个数字保留…...
pycharm 快捷键
PyCharm 是一款功能强大的集成开发环境(IDE),提供了丰富的快捷键来提高开发效率。以下是一些常用的 PyCharm 快捷键(基于 Windows/Linux 系统,Mac 系统可能略有不同): 通用快捷键 功能快捷键&a…...
若依微服务如何获取用户登录信息
文章目录 1、需求提出2、应用场景3、解决思路4、注意事项5、完整代码第一步:后端获取当前用户信息第二步:前端获取当前用户信息 5、运行结果6、总结 1、需求提出 在微服务架构中,获取当前用户的登录信息是开发常见的需求。无论是后端处理业务…...
RunCam WiFiLink连接手机图传测试
RunCam WiFiLink中文手册从这里下载 一、摄像头端 1.连接天线(易忘) 2.打开摄像头前面的盖子(易忘) 3.接上直流电源,红线为正,黑线为负 4.直流电源设置电压为14v,电流为3.15A, 通…...
TCP三次握手,四次挥手
三次握手 第一次握手:客户端向服务器发送一个 SYN 包,其中 SYN 标志位被设置为 1,表示客户端请求建立连接,并随机生成一个初始序列号 seqx 。此时客户端进入 SYN_SENT 状态,等待服务器的确认1.第二次握手:服…...
Mono里建立调试C#脚本运行环境
前面已经介绍了怎么样来执行一个嵌入式的脚本框架, 这个框架是mono编写的一个简单的例子。 如果不清楚,可以参考前文: https://blog.csdn.net/caimouse/article/details/144632391?spm=1001.2014.3001.5501 本文主要来介绍一下,我们的C#脚本是长得怎么样的,它大体如下…...
Linux dnf 包管理工具使用教程
简介 dnf 是基于 Red Hat Linux 发行版的下一代包管理工具,它代替 yum 提供更好的性能、更好的依赖处理和更好的模块化架构。 基础语法 dnf [options] [command] [package] 常用命令用法 更新元数据缓存 sudo dnf check-update# 检查已安装的包是否有可用的更…...
Java 创建线程的方式有哪几种
在 Java 中,创建线程的方式有四种,分别是:继承 Thread 类、实现 Runnable 接口、使用 Callable 和 Future、使用线程池。以下是详细的解释和通俗的举例: 1. 继承 Thread 类 通过继承 Thread 类并重写 run() 方法来创建线程。 步…...
5个关键步骤:让你的Windows视频播放体验达到专业级水准
5个关键步骤:让你的Windows视频播放体验达到专业级水准 【免费下载链接】VideoRenderer Внешний видео-рендерер 项目地址: https://gitcode.com/gh_mirrors/vi/VideoRenderer 你是否曾经在Windows上观看高质量视频时,感觉画…...
你的旋钮漂移吗?EC11编码器在51单片机上的硬件消抖与软件滤波实战避坑指南
EC11编码器实战:从硬件消抖到软件滤波的稳定性优化全攻略 在嵌入式控制领域,旋转编码器作为人机交互的重要组件,其稳定性直接影响用户体验。EC11作为经济实用的机械编码器代表,广泛应用于音量调节、参数设置等场景。但当电机干扰、…...
如何永久保存你的数字记忆:WeChatMsg终极免费指南与AI相册创新
如何永久保存你的数字记忆:WeChatMsg终极免费指南与AI相册创新 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...
如何快速下载Steam创意工坊壁纸:Wallpaper Engine下载器完全指南
如何快速下载Steam创意工坊壁纸:Wallpaper Engine下载器完全指南 【免费下载链接】Wallpaper_Engine 一个便捷的创意工坊下载器 项目地址: https://gitcode.com/gh_mirrors/wa/Wallpaper_Engine 你是否曾在Steam创意工坊中发现心仪的动态壁纸,却因…...
人工智能学习之归一化和标准化的区别
归一化与标准化(机器学习核心预处理笔记) 核心前提:机器学习中,特征的量纲(单位)可能差异极大(如:身高cm、体重kg、收入万元),会导致模型(如KNN、…...
深入GD32F427的ENET外设:如何为你的LAN8720 PHY芯片选择正确的RMII时钟模式(REF_CLK In vs Out)
深入解析GD32F427与LAN8720的RMII时钟架构设计 在嵌入式以太网开发中,时钟信号的稳定性往往决定着整个通信系统的可靠性。当GD32F427微控制器通过RMII接口与LAN8720 PHY芯片协同工作时,REF_CLK时钟模式的选择不仅影响硬件成本,更直接关系到信…...
别再只会真彩色了!用ENVI玩转波段组合:揭秘植被红、水体蓝背后的遥感密码
遥感图像解译的艺术:ENVI波段组合背后的科学密码 当一张卫星遥感图像首次展现在眼前时,未经训练的眼睛往往只能看到一片模糊的色块。然而,对于掌握波段组合奥秘的解译专家来说,这些色彩背后隐藏着丰富的地表信息——健康的植被、水…...
深入STM32WLE5的LoRa核心:对比SX126x裸驱与LoRaWAN协议栈,哪个更适合你的项目?
STM32WLE5开发实战:裸驱与LoRaWAN协议栈的深度技术选型指南 当工程师面对STM32WLE5这颗集成了LoRa射频功能的跨界芯片时,第一个需要直面的灵魂拷问往往是:该用寄存器直接操作射频核心,还是拥抱现成的LoRaWAN协议栈?这个…...
告别FreeRTOS:在乐鑫ESP32-C3上为RT-Thread打上‘内核补丁’的完整指南
从FreeRTOS到RT-Thread:ESP32-C3内核替换的工程实践 在嵌入式开发领域,操作系统的选择往往决定了项目的技术栈和生态边界。对于习惯了ESP-IDF和FreeRTOS的开发者来说,RT-Thread以其模块化设计和丰富的中间件支持正成为颇具吸引力的替代方案。…...
nuScenes数据集“平替”指南:Mini版够用吗?完整版、Test版到底怎么选?
nuScenes数据集选型实战指南:从Mini版到完整版的决策逻辑 第一次接触nuScenes数据集时,面对动辄几百GB的庞然大物和仅有3.9GB的mini版本,相信不少研究者都会陷入选择困难。这就像站在自助餐厅里,既想品尝所有美味,又担…...
