分享zigbee转红外模块(8路红外发射1路红外学习模块)

2019-07-24 13:41发布

做了好久、参考了大量的资料才做出来的,改模块可以学习载波为20K-56KHZ的 红外遥控器,并且配有8路红外发射管,可全方位、无死角的控制家里的所有红外设备。

1、模块功能介绍

zigbee转红外模块有两部分组成:zigbee传输节点+红外采集发射模

1.1、Zigbee红外传输节点介绍

1、  入网后向协调器上报节点短地址和节点号; 2、  双串口读取数据,其一、支持高达160字节数据读取和无线传输,完全满足红外数据要求;其二,支持小数据数据读取和无线传输。

1.2、红外采集发射模块具有以下功能:

1、    采用独立(非集成)红外接受和发射二极管; 2、    串口输入和输出数据(57600N81); 3、    自动分析载波频率(20KHz56KHz); 4、    支持多种指令调试和控制; 5、    距离远达810米,全方位360度红外发射; 6、    支持学习市场上大部分红外遥控器和发射学习码制; 7、自动处理红外冗余数据,使数据量尽量减少; 8、支持数据校验和; 9、学习和发射支持灯光指示。  

2、 红外数据采集及结构说明

2.1、MCU返回正确红外数据结构说明:

         当采集到正确的红外数据时,采集模块返回一下数据结构的红外数据,其中红外数据结构如下:    typedef struct struct_sCommand { unsigned char head[2];       //数据头0Xaa,0x55           unsigned char command;       //红外命令,0x01为学习命令0x00发射命令         unsigned int datalength;     //数据长度,最大为150 unsigned char type;             //节点号 unsigned char ir_hl;            //载波周期    //数据长度         unsigned char data[DATALENGTH]; //红外数据         unsigned char checksum;        //校验和 } sCommand; 其中: 数据头固定为:0xAA,0x55 学习成功红外命令:0x01
发射命令              :0x00
出错指令              :0x03
数据长度包含:节点号1Byte+载波周期1Byte+红外数据(datalength-2Byte 校验和:1Byte,除了checksum前边所有的数据和。

2.2 、MCU返回错误结构说明

出错指令:0x03 typedef struct struct_sCommand { unsigned char head[2];           //数据头0Xaa,0x55       unsigned char command;           //红外命令     unsigned int datalength;        //数据长度 unsigned char up_error;        //上次出错 unsigned char down_error;       //本次出错     unsigned char checksum;        //校验和 } sCommand; 错误代码: RROR_TIMEOUT             0xF0                   操作超时 ERROR_CHECKSUM     0xF1                   校验失败 ERROR_FULL                   0xF2                   红外数据大于网络传输设定上限 ERROR_UNKNOWN                 0xFF                   未知错误   采集过程:红外采集模块在接收到上位机发送的采集指令会执行采集过程,采集过程出现蓝灯急速闪烁(平时常亮),此时进行采集红外数据。当在规定的时间内没有进行学习是返回操作超时;采集数据量超过zigbee网络传输上限时,发送数据超限错误; 发送红外过程:接收到红外数据后会计算校验和,如果计算结果和接受到的校验和不一致就会发送错误命令

3、支持指令及应用举例

3.1、 指令支持

第一种: zigbee网络传输专用指令 学习命令7E440000FFFFFFFF053E09200100FF1D7A7E                                                         0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17//字节编号, 7E 44 00 00 FF FF FF FF 05 3E 09 20 01 00 FF 1D 7A 7E//学习指令   当安卓软件连上linux网关后,按下学习按钮,网关转换完协议发送学习指令到zigbee协调器,协调器再发送给带有红外模块的ZIGBEE终端节点,通过8个红外发射即可实现全方位、无死角的控制。(实质也是串口发送,故直接用串口发送本段命令也正确)   第二种:字符格式 应为数据协议本身比较复杂,段时间内很难看懂,所以我做好了收发的简单字符指令,任何单片机或者PC串口助手通过串口与本红外模块相连、发送简单字符到红外模块即可实现全部功能。总共3条字符指令:
     sCC // 学习指令       tCC //把刚学西的红外发射出来          fCC //把刚学习的红外数据通过串口发送出来   第三种:直接发送红外码制   即直接将学到的红外码通过串口发送出去。  

3.2、 应用举例

1、网关发送学习命令(01):7E440000FFFFFFFF053E09200100FF1D7A7E:                                                                            节点号、学习指令、 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17//字节编号, 7E 44 00 00 FF FF FF FF 05 3E 09 20 01 00 FF 1D 7A 7E//学习红外指令   Mcu返回学习到的红外码:                       节点号 AA 55 01 00 8C 20 6F EE EE 29 86 0E 1C 06 BA 07 2F 05 DB 07 30 05 DC 0E 24 06 BA 0E 25 13 C6 0E 25 06 BA 07 2F 06 BA 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DC 07 2F 05 DB 07 2F 05 DB 07 30 05 DC 07 2F 0C D1 0E 25 06 BA 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DC 07 2F 0C D1 0E 25 05 DC 07 2F 0C D1 07 30 06 BA 0E 25 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DB 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 0C D2 00 34 46 E1 23 23 2A   说明: Mcu返回的data是学习到的按键键值,上位机可以存储到数据库中。在发送学习命令后用户需要及时对准红外接收管按下按键,否则mcu会返回超时错误命令。超时时间可以在代码中设置,默认是10秒。节点号用于区分设备类型。   2、通过PC串口助手发送: sCC 串口助手返回:            节点号 AA 55 01 00 8C 20 6F EE EE 29 86 0E 1C 06 BA 07 2F 05 DB 07 30 05 DC 0E 24 06 BA 0E 25 13 C6 0E 25 06 BA 07 2F 06 BA 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DC 07 2F 05 DB 07 2F 05 DB 07 30 05 DC 07 2F 0C D1 0E 25 06 BA 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DC 07 2F 0C D1 0E 25 05 DC 07 2F 0C D1 07 30 06 BA 0E 25 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DB 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 0C D2 00 34 46 E1 23 23 2A   通过PC串口助手发送: tCC 则红外模块把本次学习到的红外码发射出去   通过PC串口助手发送: fCC 则红外模块把本次到的红外数据通过串口显示出来 3直接把学习到的红外码制直接发送至红外模块,则该模块将发射相应的红外 AA 55 01 00 8C 20 6F EE EE 29 86 0E 1C 06 BA 07 2F 05 DB 07 30 05 DC 0E 24 06 BA 0E 25 13 C6 0E 25 06 BA 07 2F 06 BA 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DC 07 2F 05 DB 07 2F 05 DB 07 30 05 DC 07 2F 0C D1 0E 25 06 BA 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DC 07 2F 0C D1 0E 25 05 DC 07 2F 0C D1 07 30 06 BA 0E 25 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 05 DB 07 2F 05 DB 07 30 05 DC 07 2F 05 DC 07 2F 0C D2 00 34 46 E1 23 23 2A


 
应为公司的需求、主控芯片是用CC2530做的。在此贴上红外相关的函数库IR.C IR.H(内附详细注释),希望大家有时间可以移植到其他常用芯片
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。