首页 > 其他分享 >智能空调解决方案:8266+红外控制模块

智能空调解决方案:8266+红外控制模块

时间:2023-08-09 23:01:21浏览次数:48  
标签:解决方案 454 空调 478 476 模块 8266 482 480

前言

炎炎夏日, 你是否有这样的困惑:

  • 睡觉时,并不觉得热,然而后半夜被热醒,然后在极其不爽的情绪下,开启空调继续谁?
  • 睡觉时,空调温度刚刚好,然而后半夜下雨了,被冻醒?

看完我们今天的内容,我相信以上两个问题都能被解决,而且方法绝对简单,好了,废话少说,让我们直接开始吧。

智能空调解决方案

准备工作

环境准备

这块我们就不展开讲了,包括Arduino IED的安装和配置、esp8266开发板的使用等, 可以参考我们之前的内容。

材料部分

序号 名称 数量 备注
1 esp8266开发板 1 开发板
2 红外发射模块 1 用来发射控制信息,38KHZ
3 红外接收模块 1 用来接收空调遥控器红外信号,解码信息,38KHZ
4 DHT11温湿度传感器 1 用来采集房间内的温度和湿度
5 杜邦线 若干 模块连接

本次项目成本总计15元左右,最贵的是esp8266开发,12元左右

解码空调遥控器信息

这里主要是通过红外接收模块和esp8266开发板,接收并解析红外信息,为后面控制空调做准备,也就是把空调各种控制信息,包括开、关、温度加减、风速等控制信号输出并保存,这样我们在后续的控制中,可以直接通过esp8266+红外发射模块来发射这些信息,从而实现空调的智能控制。

接收端接线

这里的接线比较简单,因为红外模块只有三个引脚,一个信号线,两个电源引脚,所以连接很简单:

序号 红外引脚 esp8266
1 out d5(GPIO14)
2 VVC 3V
3 GND G

电源部分可以连接3V3或者5V都可以,发送端建议连接5V,不然距离太远发送的红外信号太弱,空调接收不到。

解码

这里解码我们要用到IRremoteESP8266包下的一个示例项目,如果没有这个包的小伙伴先去安装这个包:

安装完成之后,连接esp8266,然后打开Arduino IDE,打开IRremoteESP8266的示例项目IRrecvDumpV2:

因为示例项目的默认接收引脚是14,这也是我们前面接线用14号引脚的原因:

将示例代码上传至esp8266,然后我们打开串口监视器,端口115200,拿遥控器对准红外接收模块,按下对应的键,终端便会展示该按键对应的控制信息:

这里我们把相关信息保存下,方便后面使用。

空调控制红外信息发射

发射端连线
序号 红外引脚 esp8266
1 out d2(GPIO4)
2 VVC VV
3 GND G

esp8266vv引脚是5v,电压高一点确保红外信号可以发射远一点

温湿度传感器连线
序号 红外引脚 esp8266
1 out d5(GPIO14)
2 VVC 3V
3 GND G

发射端编码

编码本身很简单,主要还是实现思路,先说我的需求:

  • 通过温度传感器来采集温度,温度作为控制依据;
  • 当温度高于某个值(比如30度),且空调未开启,则发送开启空调指令;
  • 当温度低于某个值(比如26度),且空调是开启的,则发送关闭指令

下面是代码实现

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <DFRobot_DHT11.h>;  // 温度传感器DHT11依赖

#define DHT11_PIN 13  // 温度传感器引脚,GPIO13--D7
const uint16_t kIrLed = 4;  // ESP8266 GPIO pin to use. Recommended: 4 (D2).

// 开空调指令
uint16_t ACon[273] = {4490, 4400,  504, 1670,  480, 594,  482, 1670,  480, 1668,  482, 592,  482, 594,  482, 1668,  482, 594,  480, 594,  482, 1668,  482, 592,  482, 592,  482, 1670,  480, 1668,  482, 592,  482, 1670,  482, 1668,  480, 594,  480, 1670,  480, 1670,  478, 1670,  480, 1670,  478, 1670,  478, 1672,  478, 596,  478, 1672,  480, 596,  478, 596,  480, 596,  476, 598,  454, 620,  452, 622,  402, 1750,  400, 674,  422, 652,  422, 652,  422, 652,  424, 650,  426, 650,  446, 628,  450, 626,  450, 1700,  474, 1676,  474, 1676,  476, 1674,  476, 1674,  476, 1674,  476, 1672,  478, 5276,  4326, 4434,  470, 1700,  448, 624,  454, 1700,  448, 1686,  466, 624,  452, 622,  452, 1680,  470, 622,  454, 622,  454, 1698,  452, 620,  454, 622,  454, 1696,  476, 1674,  478, 598,  478, 1670,  482, 1668,  480, 594,  482, 1668,  480, 1668,  482, 1668,  482, 1668,  482, 1668,  454, 1694,  456, 618,  456, 1696,  454, 620,  456, 618,  456, 618,  456, 618,  454, 620,  454, 620,  456, 1694,  456, 620,  424, 650,  424, 650,  424, 650,  426, 648,  426, 650,  424, 650,  424, 650,  448, 1702,  448, 1702,  450, 1700,  450, 1702,  472, 1678,  472, 1678,  474, 1676,  472, 5298,  4300, 4462,  444, 1682,  466, 1734,  416, 658,  416, 1732,  418, 658,  418, 1732,  418, 658,  416, 1734,  418, 658,  416, 1734,  414, 1736,  416, 658,  416, 684,  390, 1760,  392, 1758,  392, 684,  390, 684,  390, 684,  366, 708,  366, 710,  366, 708,  366, 708,  366, 734,  342, 734,  342, 734,  342, 734,  340, 734,  340, 760,  316, 760,  314, 760,  314, 786,  288, 812,  262, 840,  236, 814,  260, 840,  232};  // COOLIX B2BF80

// 关空调指令
uint16_t ACoff[199] = {4470, 4424,  478, 1696,  452, 596,  484, 1694,  452, 1696,  454, 594,  484, 590,  482, 1696,  454, 592,  484, 592,  478, 1698,  454, 622,  448, 574,  480, 1720,  428, 1720,  430, 644,  430, 1720,  432, 642,  432, 1720,  486, 1664,  462, 1688,  498, 1652,  492, 584,  520, 1630,  496, 1654,  518, 1632,  520, 554,  520, 556,  518, 556,  520, 556,  518, 1630,  518, 558,  518, 556,  430, 1720,  440, 1686,  452, 1698,  468, 630,  448, 628,  472, 602,  472, 602,  450, 626,  450, 624,  476, 598,  478, 596,  478, 1672,  454, 1696,  480, 1668,  480, 1670,  482, 1668,  484, 5262,  4336, 4424,  480, 1670,  478, 596,  478, 1674,  476, 1672,  478, 596,  476, 596,  476, 1674,  476, 598,  476, 598,  476, 1676,  474, 598,  476, 598,  476, 1696,  452, 1698,  454, 600,  474, 1696,  454, 602,  472, 1698,  452, 1698,  450, 1700,  450, 1700,  452, 622,  452, 1700,  450, 1700,  450, 1702,  448, 626,  448, 628,  446, 628,  424, 650,  424, 1728,  420, 654,  420, 656,  418, 1732,  418, 1732,  442, 1710,  440, 634,  440, 634,  442, 634,  440, 634,  440, 634,  440, 656,  418, 656,  418, 656,  420, 1730,  418, 1732,  418, 1732,  418, 1732,  418, 1732,  418};  // COOLIX B27BE0

int khz = 38; // 38kHz carrier frequency for the NEC protocol

// 温度传感器
DFRobot_DHT11 DHT;

IRsend irsend(kIrLed);  // Set the GPIO to be used to sending the message.

boolean acIsOn = false;
void setup() {
  irsend.begin();
  Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
}

void loop() {
  Serial.println("loop");

  // 读取温湿度
  DHT.read(DHT11_PIN);
  Serial.print("temp:");
  int temp = DHT.temperature;
  int hum = DHT.humidity;
  Serial.print(temp);
  Serial.print("  humi:");
  Serial.println(hum);

  // 如果温度高于30度且空调未开启,则开启空调
  if (!acIsOn && temp >= 30) {
    irsend.sendRaw(ACon, sizeof(ACon) / sizeof(ACon[0]), khz); delay(2000); //Send
    acIsOn = true;
  }

  // 如果温度低于28度,且空调已开启,则关闭空调
  if (acIsOn && temp < 28) {
    //delay(10000);
    irsend.sendRaw(ACoff, sizeof(ACoff) / sizeof(ACoff[0]), khz); delay(2000);//Send
  }
  delay(2000);
}

当然你还可以根据你的需要增加控制指令,比如温度低于某个温度(比如18度),开启制热模式,或者根据当前室温调整空调温度,方法类似。

结语

这个项目完全是兴起之作,本来以为应该很简单,然而当真正开始的时候,才发现我对红外通信知之甚少,比如NEC协议,比如红外编码解码,所以毫无意外刚开始就卡在遥控器解码这里了,结果差点放弃,然后我又不死心地搜了一些相关博客,最终顺利完成。

参考内容:https://www.elecfans.com/d/1939738.html

标签:解决方案,454,空调,478,476,模块,8266,482,480
From: https://www.cnblogs.com/caoleiCoding/p/17619038.html

相关文章

  • 残差网络ResNet(超详细代码解析) :你必须要知道backbone模块成员之一
      本文主要贡献代码模块(文末),在本文中对resnet进行了复现,是一份原始版本模块,里面集成了权重文件pth的载入模块(如函数:init_weights(self,pretrained=None)),layers的冻结模块(如函数:_freeze_stages(self)),更是将其改写成可读性高的代码,若你需要执行该模块,可直接将其代码模块粘......
  • python语言--------csv模块将txt文件转换为表格csv格式
    上代码:importcsvcsvFile=open("C:/Users/Administrator/Desktop/1.csv",'w',newline='',encoding='utf-8')writer=csv.writer(csvFile)csvRow=[]f=open("C:/Users/Administrator/Desktop/np.txt",'r'......
  • Oracle 安装 Failed to Create oracle Oracle Home User 解决方案
    WindowsServer2016安装Oracle12报错:FailedtoCreateoracleOracleHomeUser的解决方案:1、打开域安全策略(secpol.msc)-安全设置-账户策略-密码策略-密码必须符合复杂性要求。定义这个策略设置为:已禁用。 2、最后cmd运行刷新组策略命令为:gpupdate/force 3、重新......
  • allocator 不是模板 解决方案
    场景严重性 代码 说明 项目 文件 行 禁止显示状态错误(活动) E0864 allocator不是模板 cvos_srtmp_service C:\ProgramFiles(x86)\MicrosoftVisualStudio\2019\Professional\VC\Tools\MSVC\14.16.27023\include\regex 1175 错误(活动) E0864 associated_allocator不是模板 ......
  • MySQL数据表的损坏及容灾解决方案
    引言在互联网应用中,MySQL是最常用的关系型数据库之一。然而,数据表的损坏可能会导致数据丢失或无法正常访问,给业务运营带来严重影响。本文将讨论MySQL数据表容易损坏的情况,并提供相应的容灾解决方案。数据表容易损坏的情况MySQL数据表在以下情况下容易发生损坏:硬件故障:例如磁盘......
  • 免费 | 线上直播 | Google Cloud 如何为零售业提供增长解决方案?
    新的线上直播课程又来咯!赶快报名参加吧!时间:8月16日15:00-15:30直播地址:点击链接报名获取01.活动流程15:00-15:20GoogleCloud如何为零售业提供增长解决方案?15:20-15:30Q&A02.活动亮点亮点1:零售业多方面多维度讲解助您全面获取零售业相关信息。亮点2:零售领域深度......
  • MT8788安卓核心板详细参数_MTK安卓主板开发板智能通讯模块
    MT8788安卓核心板集成了一个高效的12nmSoC,内置4GLTE调制解调器,将强大的硬件与到处可连接的全面功能设计相结合。MTK8788智能终端具备许多功能,包括4G、2.4G/5G双频WiFi、蓝牙4.2BLE、2.5W功放、USB、mipi屏接口、三路摄像头接口、GPS和各种传感器等等。MTK8788智能终端还采用了超......
  • 解决window移植到linux shell执行Python脚本提示找不到模块问题
    1、将工程目录添加到sys.path中(测试有效importsyscpath='project_path'#写成项目的地址最好是绝对地址因为有的地方确实会报错不清楚原因sys.path.append(cpath) eg:sys_path=os.path.abspath(os.curdir)sys.path.append(sys_path.split('test_case')[0])#为了......
  • Linux基础33 nginx访问控制模块, 状态模块, 连接限制, 请求限制, location
    1.访问认证模块ngx_http_auth_basic_module1)语法#注释(没什么用,但要写,不然为off不开)Syntax:auth_basicstring|off;#string写任意字符串,除360浏览器提示,其他浏览器看不到Default:auth_basicoff;Context:http,server,location,limit_except#指定认......
  • 01-[Linux][regmap]regmap模块介绍
    1、什么是regmap?Linux引入regmap是为了统一管理内核的i2c,spi等总线,将i2c、spi驱动做了一次重构,把I/O读写的重复逻辑在regmap中实现。只需初始化时指定总线类型、寄存器位宽等关键参数,即可通过regmap模型接口来操作器件寄存器。将i2c、spi、mmio、irq等抽象出统一接口regmap_read......