我是靠谱客的博主 欣喜小海豚,最近开发中收集的这篇文章主要介绍RF433数据抓取,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. 什么是433?

遥控设备以433M频率、RF433协议规则向环境中发射信号,接收方必须使用同样的433无线接收器才能成功采集到信号

  1. 什么是RF 433 协议?

我们对比波形来进行说明:采用RF433的遥控发射波形,由一个413us(高)+ 12.0ms(低)的前导波+24bits的数据组成,其中24bits的数据又由16bits遥控固定地址(各遥控地址不同)+8bits键值组成,见下图:

从图中数据位可以算出:遥控固定地址为0x905 ,发射码为0x01

前导波组成:450us高电平(误差±200us)+  12.0 ms低电平(误差±2ms)

数据位,由逻辑‘0’或逻辑‘1’组成:

逻辑‘0’:450us高电平 +  1160 us低电平(误差±200us)

逻辑‘1’:450us高电平 +  1160 us低电平(误差±200us)

 

  1. 433数据捕获

3.1硬件准备

  1. 由于433采用的频率较高,所以首先需要一个us级别定时器用来作脉宽计算
  2. 一个IO能支持到433接收器电平跳变频率,通俗点说就是433接收器的高低电平能被硬件IO表达出来,这里一般用中断的方式触发
  3. 因为433接收器一旦与硬件IO对接就会频繁触发中断,按照处理优先级IRQ>SWI,所以首先MCU要能支持这种频繁触发的方式,且能及时清除中断,不能影响SWI的运行

3.2 软件准备

 1. 能精确获取us级硬件时钟

 2. IO电平波动时,能立即触发中断回调,且能同时捕获到上升、下降沿的触发

3.3 设计思想

有了前期软硬件部分的调试准备,已具备捕获433信号的能力,剩下就是软件部分处理逻辑了,我这边以BL2028N来进行说明:

  1. 注册一个任务用来获取us时间
  2. 初始化IO(与接收器对应的IO)为输入、边沿触发,用来反馈433接收器的电平信息,由于BL2028N只支持单边沿触发,所以想要捕获到完整一个周期,需要在中断中进行翻转,比如上升沿触发时,需在中断函数中将其设置为下降沿触发,捕获完下降沿后再将其设置为上升沿触发,不断进行采集,同时在中断函数中算出高低电平持续脉宽,进行换算得到最终的键值位

         

见上图可知,若初始为上升沿触发,再次上升沿触发时,即抓取到一个完整波形,所以可以在上升沿中断处理函数中完成波形的换算,关键部分代码:

        3.注意由于433模块杂波较多,且采集时会有杂波,所以还要对波形上进行过滤,无效波及正常波形中穿插杂波的情况进行处理,一段完整的采集波形如下:

        

可以看出正常波形的周期都很规律,而杂波没有任何规律。 

最后

以上就是欣喜小海豚为你收集整理的RF433数据抓取的全部内容,希望文章能够帮你解决RF433数据抓取所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部