1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

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

前言

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

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

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

智能空调解决方案

准备工作

环境准备

这块我们就不展开讲了,包括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

posted @ 2023-08-09 22:53  云中志  阅读(682)  评论(0编辑  收藏  举报