【精选】ESP8266 |
您所在的位置:网站首页 › 手机遥控空调红外装置是什么 › 【精选】ESP8266 |
错开の折腾经历:ESP8266 NodeMCU 文章目录 前言一、项目解析&准备1.项目思路2.材料清单 二、项目开始1.红外库的安装(IRremoteESP8266)2.解码空调遥控器3.Blinker_APP配置4.代码环节 三、实验测试总结 前言经过上一项目的学习,成功将DHT11的数据接入小爱同学,实现远程读取(嗯,智能家居(◕ᴗ◕✿) )。 这不,又有个新的idea了:既然我能够读取宿舍的温湿度状况,那是不是就可以按照宿舍温情况开启宿舍空调嘞!先接入Blinker_APP,实现app按键控制,然后再看看可不可以进一步接入小爱同学… 滴滴:以下是本篇文章正文内容 一、项目解析&准备 1.项目思路首先得对宿舍空调遥控器进行红外解码(红外接收模块),了解他编码规则、不同状态的值是多少,然后再根据以上数据,通过红外发射模块,对空调进行控制。红外模块接入ESP8266-NodeMCU板子后,可进行以上操作,并接入Blinker,通过APP控制空调。 2.材料清单ESP8266-NodeMCU板子 红外接收模块 红外发射模块 USB线、杜邦线 左边是红外发射模块,右边是红外接收模块。 红外发射模块 >>> -:接地脚,S:数据脚,中间:电源脚 红外接收模块 >>> -:接地脚,+:电源脚,S:数据脚 二、项目开始 1.红外库的安装(IRremoteESP8266)要用ESP8266-NodeMCU+红外模块,首先就得下载红外库,再将库导入 GitHub项目链接:IRremoteESP8266 进入arduino IDE,进行库文件安装:输入IRremoteESP8266,进行安装 解码红外,在IRremoteESP8266库文件中有示例,可以直接用(✧◡✧) 按要求将红外接收模块接入ESP8266-NodeMCU板子: 将红外接收模块的-、+脚分别接入板子的地(G)、3v,然后将S数据脚接板子D5脚(GPIO14)
PS:红外解码的时候,记得不要把手机靠近红外接收器,不然串口监控就会看见一堆数据了( Ĭ ^ Ĭ ) 好的,现在我们聊聊串口显示的接收到的按键信息: 宿舍空调是美的的,老机器一个了,功能不多,但也够用了。一般25、26度就OK的, 但一定得是制冷模式,不然跟没开一样,还得收电费,学校电费真心贵╮(╯﹏╰)╭ 这边解码得到了不同状态的值, 例如:25℃、制冷、大风 老规矩,创建设备,获取key 记好key,后面代码,凭此将设备接入app 然后就是,配置app界面了 上界面配置代码: {¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨tex¨¨t0¨¨空调控制器¨¨t1¨¨以指定状态运行¨¨size¨¨22¨¨bg¨Ê¨ico¨¨fad fa-air-conditioner¨¨cols¨Ñ¨rows¨Ë¨key¨¨tex-cnl¨´x´É´y´Î¨speech¨|÷¨lstyle¨Ï¨clr¨¨#076EEF¨}{ßC¨btn¨ßL¨fad fa-snowflakes¨¨mode¨ÉßE¨25℃、制冷、高凤¨ßG¨文本2¨ßKËßNÍßOÍßP¨btn-on¨´x´É´y´ÐßR|÷ßSËßTßU}{ßCßVßLßWßXÉßE¨25℃、制冷、自动风¨ßGßZßKËßNÍßOÍßP¨btn-on-auto¨´x´Í´y´ÐßR|÷ßSËßTßU}{ßCßVßLßWßXÉßE¨26℃、制冷、最大风¨ßGßZßKËßNÍßOÍßP¨btn-26¨´x´É´y´¤BßR|÷ßTßUßSË}{ßCßVßL¨fad fa-power-off¨ßXÉßE¨关机¨ßGßZßKËßNÍßOÍßP¨btn-off¨´x´Í´y´¤BßR|÷ßSËßTßU}{ßC¨deb¨ßXÉßKÉßNÑßOÌßP¨debug¨´x´É´y´Ë}÷¨actions¨|÷¨triggers¨|÷}图例: app这边界面配置重要的是键名,代码那边要进行组件绑定的。 根据个人情况,自行进行配置 4.代码环节终于到了,代码环节了,不说了,上代码٩(๑>◡6036, 7330, 476, 1716, 514, 1650, 474, 1716, 516, 1650, 474, 1716, 514, 1652, 520, 1670, 514, 1652, 524, 550, 542, 560, 456, 650, 514, 558, 476, 628, 514, 560, 478, 628, 514, 560, 476, 1718, 514, 1652, 474, 1716, 516, 1650, 476, 1716, 514, 1652, 474, 1716, 514, 1652, 474, 600, 540, 562, 456, 648, 514, 560, 476, 628, 512, 562, 478, 598, 540, 562, 456, 624, 538, 1654, 452, 622, 540, 1654, 452, 1738, 512, 1654, 452, 1738, 512, 1652, 454, 1738, 514, 562, 476, 1718, 514, 560, 456, 650, 514, 560, 476, 630, 512, 562, 476, 1718, 514, 560, 478, 1716, 514, 560, 478, 1718, 512, 1654, 454, 1738, 514, 1652, 454, 650, 510, 1654, 474, 630, 512, 1652, 504, 600, 514, 560, 508, 598, 514, 560, 506, 600, 512, 1652, 504, 1688, 514, 560, 508, 1686, 516, 560, 506, 1686, 516, 1652, 504, 1686, 518, 558, 506, 596, 542, 1624, 506, 596, 546, 1622, 528, 574, 552, 524, 558, 544, 580, 1586, 556, 548, 578, 1586, 562, 540, 578, 1586, 560, 546, 576, 500, 526, 1640, 602, 502, 552, 1614, 602, 500, 524, 1640, 602, 502, 498, 1668, 574, 1616, 502, 7332, 456}; // GOODWEATHER D5290A050000 //空调开:26、制冷、大风 uint16_t power_on_26[199] = {6062, 7302, 476, 1718, 538, 1628, 474, 1716, 540, 1626, 454, 1740, 514, 1650, 472, 1718, 516, 1650, 452, 620, 542, 560, 528, 546, 544, 560, 456, 620, 544, 560, 458, 618, 544, 558, 478, 1716, 516, 1650, 452, 1740, 514, 1650, 454, 1738, 516, 1650, 474, 1718, 514, 1652, 454, 618, 544, 558, 458, 620, 542, 560, 456, 620, 544, 560, 456, 620, 544, 560, 528, 1668, 516, 558, 476, 1718, 540, 1626, 476, 1716, 516, 1650, 454, 1738, 516, 1650, 474, 600, 544, 1650, 476, 598, 544, 560, 476, 602, 542, 560, 476, 604, 540, 560, 456, 1740, 514, 560, 476, 1718, 538, 536, 456, 1740, 538, 536, 456, 1738, 516, 1650, 476, 628, 514, 1652, 454, 648, 514, 1652, 454, 648, 514, 1652, 476, 626, 516, 562, 506, 1684, 546, 532, 532, 1660, 552, 524, 556, 1634, 582, 496, 560, 1634, 580, 1584, 562, 542, 580, 1584, 560, 544, 578, 1586, 530, 574, 576, 1588, 530, 576, 548, 526, 504, 602, 546, 1618, 504, 576, 568, 1620, 502, 578, 564, 1624, 504, 576, 562, 536, 502, 1666, 538, 562, 504, 1666, 536, 564, 504, 1666, 534, 566, 502, 1690, 510, 1658, 504, 7332, 502}; // GOODWEATHER D52A2A020000 //空调关: uint16_t power_off[199] = {6022, 7290, 476, 1714, 510, 1650, 472, 1714, 512, 1650, 518, 1668, 510, 1652, 472, 1714, 512, 1650, 474, 626, 510, 560, 454, 648, 512, 562, 474, 598, 542, 562, 476, 598, 540, 560, 476, 1714, 512, 1650, 472, 1714, 512, 1648, 474, 1712, 512, 1650, 474, 1712, 512, 1650, 474, 598, 538, 560, 508, 568, 538, 560, 476, 596, 542, 560, 476, 628, 510, 562, 476, 1714, 512, 1650, 474, 1714, 510, 1650, 474, 1714, 512, 1650, 474, 1714, 512, 1650, 474, 626, 510, 562, 506, 596, 512, 560, 476, 628, 512, 560, 500, 602, 512, 562, 476, 1714, 514, 1648, 502, 1686, 512, 560, 502, 1688, 514, 560, 508, 1682, 514, 1648, 506, 594, 514, 560, 504, 598, 514, 1650, 502, 596, 516, 1648, 502, 598, 516, 556, 508, 596, 514, 1650, 504, 1682, 518, 558, 506, 1682, 520, 556, 504, 1684, 522, 1644, 504, 1682, 550, 528, 504, 596, 550, 1614, 530, 570, 578, 1586, 558, 544, 578, 498, 560, 542, 576, 1586, 562, 542, 576, 1586, 560, 544, 576, 1586, 558, 546, 576, 502, 552, 1612, 600, 502, 520, 1644, 598, 532, 470, 1664, 572, 530, 500, 1664, 570, 1620, 500, 7328, 456}; // GOODWEATHER D52928000000 // 新建Blinker组件对象 BlinkerButton Button1("btn-on"); BlinkerButton Button2("btn-on-auto"); BlinkerButton Button3("btn-26"); BlinkerButton Button4("btn-off"); void setup() { //初始化串口 Serial.begin(115200); //注册回调函数/ Button1.attach(Button1_callback); Button2.attach(Button2_callback); Button3.attach(Button3_callback); Button4.attach(Button4_callback); //配网步骤:WIFI接入 Blinker.begin(auth,ssid,pswd); //红外初始化 irsend.begin(); } void loop() { Blinker.run(); } //回调函数1 void Button1_callback(const String &state) { BLINKER_LOG("get button state: ", state); //检测到普通按钮按下(btn-on) if (state == BLINKER_CMD_BUTTON_TAP) { //发送红外指令 irsend.sendRaw(power_on, 199, 38); // 以38Khz发送红外数据 Button1.print("宿舍空调开:25,制冷,大风"); } } //回调函数2 void Button2_callback(const String &state) { BLINKER_LOG("get button state: ", state); //检测到btn-on-auto按钮按下 if (state == BLINKER_CMD_BUTTON_TAP) { irsend.sendRaw(power_on_auto, 199, 38); // 以38Khz发送红外数据 Button2.print("宿舍空调开:25,制冷,自动风"); } } //回调函数3 void Button3_callback(const String &state) { BLINKER_LOG("get button state: ", state); //检测到按钮btn-26按下 if (state == BLINKER_CMD_BUTTON_TAP) { //发送红外指令 irsend.sendRaw(power_on_26, 199, 38); // 以38Khz发送红外数据 Button1.print("宿舍空调开:26,制冷,大风"); } } //回调函数4 void Button4_callback(const String &state) { BLINKER_LOG("get button state: ", state); //检测到btn-off按钮按下 if (state == BLINKER_CMD_BUTTON_TAP) { irsend.sendRaw(power_off, 199, 38); // 以38Khz发送红外数据 Button2.print("宿舍空调关"); } } 上面代码定义GPIO14(D5)做数据脚,由此将红外发射模块接入板子: S脚接D5,-:接地,中间为电源脚接3V
通过app按键,可以指定状态控制空调,并从调试窗返回空调状态 emmm,目前已经实现了远程红外控制空调,但是只能指定状态控制,不过对应宿舍空调,已经够用了。接下来,就是除理低功耗电源方案了,并想想看,可不可以把空调跟温湿度传感器一起接入小爱同学,打造智能家居呢? 害,加油干,共勉! 项目目录: 错开のESP8266-NodeMCU项目一 错开のESP8266-NodeMCU项目二 错开のESP8266-NodeMCU项目三 错开のESP8266-NodeMCU项目四 错开のESP8266-NodeMCU项目五 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |