基于wifi模块ESP8266开发红外遥控器

       目前市场上出现有很多智能家居红外转发器,有wifi版本的,zigbee版本,蓝牙版本的,各有应用的场景,也有各自的优缺点,本文从使用wifi模块ESP8266来介绍一下如何开发红外遥控转发器,本方案采用了wifi模块ESP8266和辉联智控公司的红外码库。

       项目细分了3个部分,硬件电路部分,APP部分,固件程序部分。

1.硬件电路部分

       使用纯软件形式的红外码库方案的外围电路非常简单,在wifi模块ESP8266的最小工作系统基础上,添加两个GPIO,其中一个作为红外载波的输出,红外载波的输出外围电路也比较简单,只需要一个红外发射管和一个三极管驱动电路即可。另一个GPIO就是用作红外接收电路,可以直接采用IRM38红外接收头来采集红外脉宽数据。如下图:

这里我们使用Wifi模块的GPIO12作为红外接收的输入,GPIO13用作红外载波输出。

我们直接用万能板子将2个GPIO引出外接三极管驱动和红外发射管,GPIO12外部链接IRM38的数据输出口OUT,这样我们的硬件电路就算基本完成了。

2.APP部分

       APP部分可分为界面UI,配网部分,红外码库云端数据连接三部分。UI部分我们这里不做说明,配网部分可以参考乐鑫给出的配码Demo源码,最关键的部分就是如何连接红外云端码库,可以向辉联智控获取红外云端码库API接口说明文档,该文档详细的介绍了红外数据云端API的接口,以及调用接口的示例代码。辉联红外云端都是采用http通讯协议,数据部分是通过返回json数据包的形式来提供数据的,在做APP设计的时候,可以根据文档接口按用户操作顺序来开发,也可以使用辉联提供的APP Demo源码来实现这一部分。辉联提供的APP Demo源码为原生态Java语音开发的。几乎不用修改,直接复制函数过去即可使用。

3.固件程序部分

       固件程序部分是本案的重点难点,不过辉联码库提供了完整的底层红外驱动源码,开发底层固件程序只需要将辉联提供的红外SDK移植到ESP8266即可,需要注意的是由于ESP8266不能像单片机那样灵活的使用定时器,在红外接收的时候必须要用到ESP8266的硬件定时器来获取红外脉宽。在程序开辟一个SRAM来保存接收到的红外脉宽数据,发射部分可以使用PWM来产生载波信号,用软件定时器来控制PWM的开启和关闭,这样就可以在GPIO12上输出红外载波从而驱动红外发射管来控制电器设备了。

4.关于调试

       调试所需要使用示波器来检测ESP8266的GPIO输出的载波信号是否正确,可以将示波器探针固定在ESP8266的GPIO12上,在固件程序固定一个数据值来调试程序的正确性,如能正确的输出信号,再可以加载APP发来的红外数据,APP可以连接辉联红外云获取遥控器按键数据,然后找一个品牌的空调或者电视,测试红外电气设备是否能控制成功。

附图红外发射和红外接收电路原理图,如下:

本文源自红外码库网,转发请注明出处,谢谢。

Menu
x