ESP8266红外学习遥控器
一、介绍
这是一个用ESP8266实现的红外学习遥控器,代码可以直接Arduino刷上哈~
其它的稍后再说;
二、接线&使用方法
如果懒得改代码想先试试,可以直接把红外发射接在D2上;红外接收接在D5上;
使用方法就是对着红外接收管按一下遥控器按键,之后红外发射管会半秒一次的发射学习的数据;
如果是Arduino IDE,在管理库里下载IRremoteESP8266库即可;
三、代码及解析
为了让各位看懂,我每一句都写了注释来解释,直接上代码!
#include <IRremoteESP8266.h>//8266的IRremote库,如果是arduinoIDE可以在“管理库”里下载(IRremoteESP8266,不是IRremote哈)
#include <IRrecv.h>//接收库,IRremoteESP8266里的,不用下载
#include <IRutils.h>//这个很重要,一定要include一下(resultToTimingInfo就是这个库的)。也是IRremoteESP8266里的,不用下载
#include <IRsend.h>//发射库,还是IRremoteESP8266里的,不用下载//下面是一些设置,大概是一些容错率之类的参数,直接复制即可,在示例->第三方库示例->IRremoteESP8266->IRrecvDumpV2可以看到官方详细的解释,我们直接复制即可
const uint16_t kCaptureBufferSize = 1024;
#if DECODE_AC
const uint8_t kTimeout = 50;
#else // DECODE_AC
const uint8_t kTimeout = 15;
#endif // DECODE_AC
const uint16_t kMinUnknownSize = 12;
const uint8_t kTolerancePercentage = kTolerance;
#define LEGACY_TIMING_INFO falseconst uint16_t kRecvPin = 14;//接收管的引脚(这里是D5脚(就是GPIO14,可百度引脚定义,这里填GPIO号))IRrecv irrecv(kRecvPin, kCaptureBufferSize, kTimeout, true);//传进所有的参数,固定写上即可(没有kCaptureBufferSize, kTimeout可以不填,只填kRecvPin也ok)
decode_results results;//固定写上即可,红外接收数据的results变量const uint16_t kIrLed = 4;//发射的引脚(这里是D2脚(就是GPIO4,最好用这个引脚接发射管))
IRsend irsend(kIrLed);//传进发射引脚参数void setup(){Serial.begin(115200);//串口的波特率,不一样的话串口会乱码irsend.begin();//初始化irsend发射的这个库,必须要有irrecv.enableIRIn(); // 初始化irrecv接收的这个库,必须要有while (!Serial) //等待初始化完成,防止莫名其妙的bug delay(55);
}uint16_t rawData_Results[555]; //存放红外发射用的raw码数组,注意必须是uint16_t这个类型(这里研究了好久233),然后长度设置长一点,300左右差不多,我这比较夸张void loop() {if (irrecv.decode(&results)) { //判断是否接收到了红外的信号/*这里说一下resultToSourceCode这个是IRutils里的,没有用到results的参数,results的参数实在没搞懂,突然发现了这个,研究了一下,他输出的内容大概是这样的(String类型的)#uint16_t rawData[67] = {8782, 4518, 544, 584, 540, 584, 538, 586, 562, 562, 566, 582, 540, 582, 542, 584, 538,...一堆数组(太长了不写了)}#我们用到的就是这个uint16_t数组的长度[int]:和后面的数组(注意中间有空格,需要先去空格)*/String IRrec_value_raw = resultToSourceCode(&results);//把resultToSourceCode到String类型名字是IRrec_value_raw变量(变量名随意哈)//下面是截取[int]的intint IRrec_value_tap_start = IRrec_value_raw.indexOf("rawData[") + 8;//lastIndexOf从前往后寻找String中的对应字符位置,indexOf是String的,说白了就是寻找这些字符返回他们的位置,这里算好了位置了,可以自己Serial.print出resultToSourceCode研究研究哈int IRrec_value_tap_over = IRrec_value_raw.indexOf("]");//寻找String中"]"的位置int IRrec_value_tap = IRrec_value_raw.substring(IRrec_value_tap_start,IRrec_value_tap_over).toInt();//substring也是String的,说白了就是截取两个参数(字的位置)中间的字符到String里,因为正好是数字,所以直接.toInt了,这就是raw码数组的长度//下面是截取数组的字符串,不包含大括号int IRrec_value_raw_start = IRrec_value_raw.indexOf("{") +1 ;//寻找String中{的位置,加一正好是数字开始int IRrec_value_raw_over = IRrec_value_raw.indexOf("}") ;//寻找结尾的位置String IRrec_Raw_Value = IRrec_value_raw.substring(IRrec_value_raw_start,IRrec_value_raw_over);//拼合起来,这里还是有空格的哈irrecv.resume(); //接收下一个值,必须要加//下面开始把String的数据转到uint16_t这个类型里,可能变量名比较长反而看不懂,可以自己替换一下之后再理解int rawList_start = 0;//记录之后for的时候每组数字的时候的开始位置的变量int rawList_over = -1;///记录之后for的时候每组数字的时候的结束位置的变量int rawList_result;//记录每组数据的变量int tap = IRrec_value_tap - 1;//for从0开始,所以-1IRrec_Raw_Value.replace(" ", "");//删掉那个寻找出来String类型的raw数组里面的那些空格,把" "替换成""for(int i=0;i<=tap; i++){rawList_start = rawList_over + 1;//每次加上次的1,现在变量里已经没有空格了,只隔一个逗号就是下一组数据的开始位置,初始是0rawList_over = IRrec_Raw_Value.indexOf(",",rawList_start);//寻找逗号位置,从第二个参数开始(上一次的开始位置开始)rawList_result = IRrec_Raw_Value.substring(rawList_start,rawList_over).toInt();//截取每组数据,int形式暂存里rawData_Results[i] = rawList_result;//添加到这个uint16_t数组里}//下面是测试部分,可以自行修改哈//这里说白了就是按完了就不停的发送学习的数据,如果你的电器有反应就学习成功了//看懂这些代码之后自己改吧,比如接入个blinker什么的,各位自行发挥哈哈哈while(1){irsend.sendRaw(rawData_Results,IRrec_value_tap,38);//这是发送Raw数组,第一个参数就是uint16_t类型的数组,第二个是数组长度,第三个是频率,红外一般就是38kHZ,直接填上38就好delay(500);//每次发送,delay个半秒}
}
}
这个是用的学习Raw码的方式,并不是协议,这样更简单,而且兼容各种协议的红外遥控器;
嗯,就是这样,如果有什么问题可以留言哈;
有什么错误也可以直接指出;
谢谢各位!
by hanbingniao
ESP8266红外学习遥控器相关推荐
- ESP8266+红外模块制作万能网路遥控器
ESP8266+红外模块制作万能网路遥控器 通过红外模块模拟遥控发射指令 接入blinker平台,通过手机可以远程控制. 前提是先读取出你要操控设备遥控的发射码出来.参考<Arduino 红外接 ...
- 手里没有USB转TTL模块调试红外学习模块不要紧,利用最小系统板自己焊接一个
网友邮来一个红外学习模块,玩起来还不错,利用它可以把我家的电视.空调控制起来,今天给大家分享一下这个模块的调试过程,如果手里没有USB转TTL模块的,可以利用咱们的最小系统核心板,自己制作一个USB转 ...
- ESP8266学习一ESP8266系统学习
一.ESP8266简介 #ESP8266是乐鑫公司出的一款串口转Wifi芯片,市面上常见的是安信可公司开发的WiFi串口模块,功能简单来讲就是: 1.通过wifi协议接收到数据,从串口输出: 2.从串 ...
- 2021爱智先行者—红外学习模块(空调遥控器)
[本文正在参与"2021爱智先行者-征文大赛"活动]https://mp.weixin.qq.com/s/I2s99dZpbP0QpMiKFneYJA 前言 之前做了两个传感器20 ...
- 立创开源丨红外手电筒遥控器(大功率)
引言:当屋子很大时(比如教室)我们使用遥控器会发现不太灵,这个时候我们打开百度会发现--没有解决办法???那就只能靠自己了. 描述 选用了能买到的.较便宜的(一元).功率尽可能大的红外灯珠,卖家标称3 ...
- ⑦ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 DHT11 温湿度传感器】
目录 一.准备材料 二.硬件连接 三.软件编程 1.修改工程名 2.添加组件 3.编程 4.反馈结果 5.核心代码 四.总结 ⑦ ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 D ...
- ⑥ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 OLED屏幕】
⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 目录 ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 适用范围 user_c ...
- ② ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)】
目录 ② ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)] 一.驱动ws2812遇到的问题 二.可能的方案 三.具体实现 四.测试程 ...
- ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】
目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...
- ① ESP8266 开发学习笔记_By_GYC 【更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印】
① ESP8266 开发学习笔记_By_GYC [更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印] 在我们日常的开发过程中,经常使用到的一个功能就是串口打印功能.在ESP826 ...
最新文章
- 项目分析_xxoo-master
- 操作系统(九)进程控制
- python哲学内容 多行胜于单行_Python3基础 __doc__ 单行与多行函数文档
- 2017-12-04HTML布局_div布局
- SQL 左外连接,右外连接,全连接,内连
- 世界不是gameBoy
- 谁说.NET不适合搞大数据、机器学习和人工智能
- org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx
- ictclas4j java_java使用ictclas4j分词时出现NullPointerException错误 寻高手帮忙
- 基于html5的旅游交流系统,基于HTML5的旅游移动导览系统的研究与实现
- stm32 Keil编译后查看代码/内存占用空间,Flash/RAM占用大小,Code-Data,RO-Data,RW-Data,ZI-Data是什么含义
- 米的换算单位和公式_小学数学公式单位换算总结,请为你的孩子收藏好
- 前端---二级级联下拉列表的实现
- 697.数组的度(力扣leetcode) 博主可答疑该问题
- 请自行检查是否安装VC9运行库??
- Linux使用“./可执行文件名“运行可执行文件
- 如何使用Fastreport .将报表从 Crystal Reports 导入 FastReport .NET
- 电子元件-发光二极管
- mysql odbc 免安装_MySQL免安装版配置
- 学计算机的要起一个群名,如何起一个代表青春的群名字
热门文章
- 怎么让人物脚贴地 模型_3DMax人物模型关键帧,如图怎么把那红点的位置弄到脚后跟?...
- PBR流程介绍和模型规范
- redis之集群运维总结
- 天使轮,种子,A轮,B轮,C轮,Pre-IPO
- [HNOI2018]毒瘤
- java Ofd 转图片_一文教你搞懂如何将ofd格式的文件转为图片
- C语言编程猜谜语,简单的一字谜语合集
- 如何让技术大佬失去理智
- 深入理解Amazon Alexa Skill(三)
- 从百亿美元到零估值,硅谷的Theranos或许不止一个