查看: 564|回复: 1

扩展库使用说明——无线发送1527编码

[复制链接]

5

主题

5

帖子

109

积分

版主

Rank: 7Rank: 7Rank: 7

积分
109
发表于 2021-6-4 18:41:24 | 显示全部楼层 |阅读模式
本帖最后由 blue 于 2021-6-7 13:21 编辑

一、概述
      433M/315M的无线在现实生活中使用很广泛,尤其是一些小家电里的无线遥控,比如遥控车库门、遥控晾衣架、无线开关等。
       无线遥控器常用的编码方式有两种类型,即固定码与滚动码两种,滚动码是固定码的升级换代产品,目前凡有保密性要求的场合,都使用滚动编码方式。而固定码目前常用的有编码格式有2262、527、1527等,这些编码都有对应的编码芯片,本扩展库为通过单片机来实现1527的编码,驱动无线模块发送无线信号来控制对应的设备。

二、硬件连接方式

Dingtalk_20210606231144.jpg
测试用的无线模块为433.92频率的模块,具体参数如下
433.png
三、库的函数功能和说明
1.1527编码说明

Dingtalk_20210606232315.jpg
如上图,包含一个同步头,20位地址码,4位开关码
同步头高电平和低电平脉宽比为1:31;
数据1高电平和低电平脉宽比为3:1;
数据0高电平和低电平脉宽比为1:3;

  1. //1527编码
  2. //同步+地址(C0-C19)+开关(D0 D1 D2 D3)
  3. //同步   _|——|____________________|
  4. //时间   _|1T|________31T_________|
  5. //DATA(H)_|————————|__|
  6. //       _|———3T———|1T|
  7. //DATA(L)_|——|________|
  8. //       _|1T|———3T———|
  9. //16LCK=4T
  10. #define _ASR_RF1527_LCK 100  //根据实际情况修改
  11. #define _ASR_RF1527_SYNC_H (  4*_ASR_RF1527_LCK) //400us
  12. #define _ASR_RF1527_SYNC_L (124*_ASR_RF1527_LCK)
  13. #define _ASR_RF1527_DAT1_H ( 12*_ASR_RF1527_LCK)
  14. #define _ASR_RF1527_DAT1_L (  4*_ASR_RF1527_LCK)
  15. #define _ASR_RF1527_DAT0_H (  4*_ASR_RF1527_LCK)
  16. #define _ASR_RF1527_DAT0_L ( 12*_ASR_RF1527_LCK)
复制代码
以上为宏定义配置信息,主要根据接收模块的不同,需要修改_ASR_RF1527_LCK 的值,来配对数据发送速率。

扩展库为使用C++编写,rf1527类包含初始化和发送两部分。
  1. class rf1527
  2. {
  3.   public:
  4.     rf1527(uint8_t pin, timer_base_t timer, uint32_t address);
  5.     void send(uint8_t dat, uint8_t cnt);
  6.   private:
  7.     uint32_t _address;
  8.     uint8_t _timerx_irq;
  9. };
复制代码
初始化参数,第一个为发送的引脚;第二个为调用的定时器:ASR有TIMER0-3 4个定时器可以调用,注意不要和其他库同时调用同一个定时器,造成冲突;第三个为C0-C19的20位地址,一般为出厂统一设置,可以用EEPROM或者FLASH来存储。
  1. /**
  2.   * @brief  初始化
  3.   * @param  引脚,调用定时器,地址
  4.   * @retval
  5.   */
  6. rf1527::rf1527(uint8_t pin, timer_base_t timer, uint32_t address)
复制代码

发送参数,第一个为D0-D3的数据,包含(0~15)16种开关;第个参数为连续发送同一数据多少次,一般无线信号容易受到扰乱等因素,单次发送都会至少连续发送3次以上,实际测试,建议5次以上。
  1. /**
  2.   * @brief  数据发送
  3.   * @param  数据,重复发送次数(建议5次以上)
  4.   * @retval
  5.   */
  6. void rf1527::send(uint8_t dat, uint8_t cnt)
复制代码


四、图形块使用方法
1.初始化,放在初始化里设置对应的引脚,定时器,地址。
1.jpg
2.发送数据,填入需要发送的数据和单次连续发送次数,建议5次以上。
2.jpg

五、综合案例
用天问ASR+433M无线模块控制公牛无线开关面板,测试发现公牛无线开关的发送周期为1.2ms
Dingtalk_20210606234728.jpg





回复

使用道具 举报

0

主题

4

帖子

36

积分

注册会员

Rank: 2

积分
36
发表于 2021-11-14 14:49:35 | 显示全部楼层
这个库可以在stc8上使用吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2022-5-28 09:52 , Processed in 0.296184 second(s), 26 queries .

Powered by Discuz!

© 2001-2022 Comsenz Inc.

快速回复 返回顶部 返回列表