使用“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.rhkb.cn/news/495752.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git--tag标签远程管理

目录 一、git 标签 tag管理 1.创建一个轻量级标签 2.创建一个带有附注的标签 3.删除标签 二、标签推送 1.再创建两个分支 2.把多个标签推送到远程 三、标签拉取 四、删除远程标签 1.命令 2.查看远程仓库&#xff0c;标签被删除 3.远程标签删除后本地标签不会消失&a…

43. Three.js案例-绘制100个立方体

43. Three.js案例-绘制100个立方体 实现效果 知识点 WebGLRenderer&#xff08;WebGL渲染器&#xff09; WebGLRenderer是Three.js中最常用的渲染器之一&#xff0c;用于将3D场景渲染到网页上。 构造器 WebGLRenderer(parameters : Object) 参数类型描述parametersObject…

【论文阅读笔记】Scalable, Detailed and Mask-Free Universal Photometric Stereo

【论文阅读笔记】Scalable, Detailed and Mask-Free Universal Photometric Stereo 前言摘要引言Task 相关工作方法SDM-UniPS预处理尺度不变的空间光特征编码器像素采样变压器的非局部交互 PS-Mix数据集 实验结果训练细节评估和时间&#xff1a; 消融实验定向照明下的评估没有对…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口&#xff08;如何创本地服务器&#xff0c;放最后说&#xff09;&#xff0c;连接成功后会回调 协议号Connect是101&#xff0c;其他如下…

攻防世界 robots

开启场景 根据提示访问/robots.txt&#xff0c;发现了 f1ag_1s_h3re.php 拼接访问 /f1ag_1s_h3re.php 发现了 flag cyberpeace{d8b7025ed93ed79d44f64e94f2527a17}

gitlab克隆仓库报错fatal: unable to access ‘仓库地址xxxxxxxx‘

首次克隆仓库&#xff0c;失效了&#xff0c;上网查方法&#xff0c;都说是网络代理的问题&#xff0c;各种清理网络代理后都无效&#xff0c;去问同事&#xff1a; 先前都是直接复制的网页url当做远端url&#xff0c;或者点击按钮‘使用http克隆’ 这次对于我来说有效的远端u…

数字IC后端设计实现十大精华主题分享

今天小编给大家分享下吾爱IC社区星球上周十大后端精华主题。 Q1:星主&#xff0c;请教个问题&#xff0c;长tree的时候发现这个scan的tree 的skew差不多400p&#xff0c;我高亮了整个tree的schematic&#xff0c;我在想是不是我在这一系列mux前边打断&#xff0c;设置ignore p…

华为管理变革之道:管理制度创新

目录 华为崛起两大因素&#xff1a;管理制度创新和组织文化。 管理是科学&#xff0c;150年来管理史上最伟大的创新是流程 为什么要变革&#xff1f; 向世界标杆学习&#xff0c;是变革第一方法论 体系之一&#xff1a;华为的DSTE战略管理体系&#xff08;解决&#xff1a…

CentOS7下的vsftpd服务器和客户端

目录 1、安装vsftpd服务器和ftp客户端&#xff1b; 2、配置vsftpd服务器&#xff0c;允许普通用户登录、下载、上传文件&#xff1b; 3、配置vsftpd服务器&#xff0c;允许anonymous用户登录、下载、上传文件&#xff1b; 4、配置vsftpd服务器&#xff0c;允许root用户登录…

Python Polars快速入门指南:LazyFrames

前文已经介绍了Polars的Dataframe, Contexts 和 Expressions&#xff0c;本文继续介绍Polars的惰性API。惰性API是该库最强大的功能之一&#xff0c;使用惰性API可以设定一系列操作&#xff0c;而无需立即运行它们。相反&#xff0c;这些操作被保存为计算图&#xff0c;只在必要…

【论文阅读笔记】IC-Light

SCALING IN-THE-WILD TRAINING FOR DIFFUSION-BASED ILLUMINATION HARMONIZATION AND EDITING BY IMPOSING CONSISTENT LIGHT TRANSPORT 通过施加一致的光线传输来扩展基于扩散模型的真实场景光照协调与编辑训练 前言摘要引言相关工作基于学习的基于扩散模型的外观和光照操纵光…

学习threejs,THREE.CircleGeometry 二维平面圆形几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.CircleGeometry 圆形…

AWS Certified AI Practitioner 自学考试心得

学习目标&#xff1a; 考取 AWS Certified AI Practitioner 那什么是 AWS Certified AI Practitioner 认证 是基础级的认证 比较简单 — 学习内容&#xff1a; 1. AWS网站自学网站 极客时间免费课程&#xff1a;http://gk.link/a/12sJL 配合极客时间课程的章节测试检验自…

WebRTC服务质量(07)- 重传机制(04) 接收NACK消息

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 安装部署

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 安装部署 flyfish 1. 确保 vm.max_map_count ≥ 262144 这是指要调整Linux内核参数vm.max_map_count&#xff0c;以确保其值至少为262144。这个参数控制着进程可以映射的最大内存区域数量。对于某些应用程序&#xff08;如Ela…

图神经网络_图嵌入_SDNE

0 提出背景 SDNE&#xff1a;Structural Deep Network Embedding 之前的DeepWalk、LINE、node2vec、struc2vec都使用了浅层结构&#xff0c;浅层模型往往不能捕获高度非线性的网络结构。 SDNE方法使用了多个非线性层来捕获节点的embedding。 1 预备知识 1阶相似度衡量的是…

redis——岁月云实战

单线程序&#xff0c;基于IO多路复用&#xff0c;基于内存和c语言编写&#xff0c;性能高。redis官方命令 1 数据结构 1.1 key的层级 redis的key可以通过冒号&#xff08;:&#xff09;来划分层级&#xff0c;如下图mms:company:order&#xff0c;但系统中可以看到有不少没有…

参数名在不同的SpringBoot版本中,处理方案不同

参数名在不同的SpringBoot版本中&#xff0c;处理方案还不同&#xff1a; 在springBoot的2.x版本&#xff08;保证参数名一致&#xff09; springBoot的父工程对compiler编译插件进行了默认的参数parameters配置&#xff0c;使得在编译时&#xff0c;会在生成的字节码文件中…

五、Swagger 介绍(Flask+Flasgger的应用)

Swagger 介绍 0. 引言1. Swagger 介绍2. Flasgger 介绍3. Flasgger效果3.1 原始flask代码3.2 转化成Flasgger形式3.3 使用Try it out调试3.4 多个url接口自动生成和调试 4. 使用教程4.1 使用 docstrings 作为规范4.2 使用外部 YAML 文件4.3 使用 Python 字典作为原始规范 5. 和…

LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测

LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测 目录 LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.LSTM-SVM时序预测 | Matlab基于LSTM…