搜索
bottom↓
回复: 41

2.4G跳频方法讨论

[复制链接]

出0入0汤圆

发表于 2011-4-27 10:22:26 | 显示全部楼层 |阅读模式
打算用2.4G模块做玩具遥控器,希望能做的同时10个人以上一起玩。
所用2.4g模块最多支持40个通道,现在的问题是 如何实现发射和接受相互配对。
我的思路是这样的:
1、开机时,不管发射还是接受,都默认为通道0。
2、然后,遥控器检查通道0是否被占用。如果占用,跳转至通道1,继续检查;若没占用,则通知接受端此通道可用。
   也就是说,由遥控器依次扫描各通道,当检测到可用通道时。通过通道0,告诉接收端要跳转的目的通道。如此实现调频。
3、为配合扫描顺利进行,已配对的接受端,检测到遥控器扫描时,回发‘此通道已占用’。

举例描述:
假设有AT、AR,BT、BR两对,AT(发射)、AR(接收)已完成配对,且占用通道0。此时,启动BT、BR,流程如下:
1、BT使用通道0,发送‘此通道有没有人用啊?’
2、AR‘听到’BT喊话,回答说,‘不好意思,我在用’
3、于是BT跳转至通道1,继续,‘此通道有没有人用啊?’
4、等了许久,没人回答。确定通道1,空闲。于是返回通道0,发送‘去1通道吧,那里安静’
5、BR听到,于是跳转至通道1,继续接收。当然AR也能听到,只是它笑而不答,名花有主,不予理睬。
6、至此,跳频还差最后确认。即BT也跳转至1通道,喊‘你来了吗?’,BR回答,‘傻啊,俺就在你身后’

整个调频过程,对发射端来说。要做三件事,检测通道是否空闲、由通道0发送目的通道、确认接收端已跳频。
接收端也要做三件事,等待目的通道、跳转后确认和回复通道忙。

以上跳频思路,还没有编程实验。想先听听各位的意见。

出0入0汤圆

 楼主| 发表于 2011-4-28 15:11:22 | 显示全部楼层
上午编程测试,用两对收发来实验,效果不错。
跳频的主要思路还是如一楼所说,即以发射端扫描为主,接收端只响应跳频。但具体操作做了很大程度的精简。
精简后,接收端(已对频或者是等待对频)不回发任何指令,只进行自动ACK响应。这样做的好处是,对已获取频道的模块几乎无影响。

具体步骤如下:
    一、模块配置
        1、允许自动ACK。就是接收到正确的频道、数据长度、校验码后,由2.4G模块自动回发一个确认信息。
        2、初始化发射端频道为0,接收端39。共0-39四十个频道。

    二、发射端跳频流程
        1、自频道0发射数据(所发射数据应不同于正常工作时的数据)。每2ms发射一次,若收到ACK,说明此频道已被占用;
           若200ms内仍未收到ACK,则认为此频道空闲。
        2、收到ACK后,发射端切换至下一频道。继续执行流程1。
        3、200ms内未收到ACK,标记当前通道为空闲。遥控器跳至频道39(接收端的初始化频道),将空闲通道号发送至接收端。
        4、当收到接收端的ACK后,遥控器切换至空闲通道。完成跳频。

    三、接收端跳频流程
        1、配置为接收模式(频道=39),等待接收数据。
        2、收到数据后,检测是否为跳频指令,若不是,继续接收。若是,提取目的频道,切换至目的频道。完成跳频。

出0入0汤圆

发表于 2011-4-28 15:17:04 | 显示全部楼层
如果BT在通道1发现没有人用,回通道0喊BR去通道1的时候,此时如果通道0上有其它AT与AR在通信,你能喊得答应就怪了。这样你的发射与接收都傻了。

我觉得应该让发射机在每个通道等候比如100MS,假如有10个通道,那么让而接收机在每个通道喊10MS,如果发射在100MS内没有听到回答则自动跳到下一个通知轮询。这样可以保证发射在每个通道都有时间可以等到接收的ACK。不依赖于其它通信。

最好采用滚动码的算法,用一个唯一ID作密钥,让发射接收自己算下一个通信通道是哪一个才是王道。不然如果发射接收一多,都自动跳到下一个有序的、一致的、可以预见的通道通信,可能也会堵塞,要让发射接收的通道是“随机”的才好。
当然配对的时候可以固定通道或者有顺序的更改难道,让发射机把唯一ID传出去让接收机保存,就算配对了,至于下一次在哪个通道上,由算法决定。可以参考MICROCHIP的滚动码算法。

以上愚见,请高手指正。

出0入0汤圆

 楼主| 发表于 2011-4-28 15:33:36 | 显示全部楼层

(原文件名:1.jpg)

(原文件名:2.jpg)

(原文件名:3.jpg)


上传图片太慢啦~....

出0入0汤圆

 楼主| 发表于 2011-4-28 15:35:30 | 显示全部楼层

(原文件名:4.jpg)

(原文件名:5.jpg)

(原文件名:6.jpg)

出0入0汤圆

 楼主| 发表于 2011-4-28 17:14:18 | 显示全部楼层
回复【2楼】fsclub 绿林好汉
-----------------------------------------------------------------------
感谢 fsclub 绿林好汉 回复。
我接触2.4G不到两个星期,很多东西不懂,是个地道的菜鸟

跳频思路是自己想的,没做太多测试,肯定会有不少问题,所以提出来让大家讨论下,希望能进一步改善。
MICROCHIP的滚动码算法,不懂,正打算Google一下  嘿嘿

(修改打字错误)

出0入0汤圆

发表于 2011-4-28 17:31:23 | 显示全部楼层
我也是外行。凭空想的。商品机例如航模遥控跳频很成熟,不知道怎么实现的,有叫AFHSS或者FHSS的。

出0入0汤圆

发表于 2011-4-28 17:51:47 | 显示全部楼层
参考BT的跳频。许多东西已经有人研究了,没有必要自己从头来。

出0入0汤圆

发表于 2011-4-28 18:51:31 | 显示全部楼层
有兴趣

围观~~

出0入0汤圆

 楼主| 发表于 2011-4-28 19:54:14 | 显示全部楼层
回复【8楼】sdram
-----------------------------------------------------------------------

'BT的跳频'是什么

出0入0汤圆

 楼主| 发表于 2011-4-28 20:18:00 | 显示全部楼层
回复【7楼】fsclub 绿林好汉
-----------------------------------------------------------------------

回复【8楼】sdram
-----------------------------------------------------------------------
参考了两位的提示,应该是我没有说清楚。
2.4G模块有40个频段,我只需要在开机的时候让发射接收选择一个频段,并一直工作于此频段。
至于选择频段以后,根据信号的强弱自动跳频,这个问题目前还不用考虑。

出0入0汤圆

发表于 2011-4-28 20:24:12 | 显示全部楼层

楼主的汇编功力不错啊

出0入0汤圆

发表于 2011-4-28 20:25:48 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-4-28 20:29:47 | 显示全部楼层
回复【11楼】DDAI
回复【7楼】fsclub 绿林好汉
-----------------------------------------------------------------------
回复【8楼】sdram  
-----------------------------------------------------------------------
参考了两位的提示,应该是我没有说清楚。
2.4g模块有40个频段,我只需要在开机的时候让发射接收选择一个频段,并一直工作于此频段。
至于选择频段以后,根据信号的强弱自动跳频,这个问题目前还不用考虑。
-----------------------------------------------------------------------

2.4G就是要不断的跳,因为别人在跳,不然你的不稳定。

如果你真的只是配对的时候跳频,那就照我说的,发射机守株待兔。

出0入0汤圆

 楼主| 发表于 2011-4-28 21:56:46 | 显示全部楼层
回复【9楼】STM32_Study
-----------------------------------------------------------------------

咋突然想起那么一句话 ‘有钱的捧个钱场,没钱的捧个人场’  哈哈...

出0入0汤圆

 楼主| 发表于 2011-4-28 21:57:39 | 显示全部楼层
回复【12楼】Jigsaw
-----------------------------------------------------------------------

第一次有人这么说

出0入0汤圆

 楼主| 发表于 2011-4-28 22:11:32 | 显示全部楼层
回复【14楼】fsclub 绿林好汉
-----------------------------------------------------------------------

我觉得应该让发射机在每个通道等候比如100MS,假如有10个通道,那么让而接收机在每个通道喊10MS,如果发射在100MS内没有听到回答则自动跳到下一个通知轮询。这样可以保证发射在每个通道都有时间可以等到接收的ACK。不依赖于其它通信。

最好采用滚动码的算法,用一个唯一ID作密钥,让发射接收自己算下一个通信通道是哪一个才是王道。不然如果发射接收一多,都自动跳到下一个有序的、一致的、可以预见的通道通信,可能也会堵塞,要让发射接收的通道是“随机”的才好。  
当然配对的时候可以固定通道或者有顺序的更改难道,让发射机把唯一ID传出去让接收机保存,就算配对了,至于下一次在哪个通道上,由算法决定。可以参考MICROCHIP的滚动码算法。  


2.4G就是要不断的跳,因为别人在跳,不然你的不稳定。

如果你真的只是配对的时候跳频,那就照我说的,发射机守株待兔。

------------------------------------------------------------------------------
唯一ID的想法挺好
发射机守住待兔,刚才好像想明白了,但越想越糊涂(哈哈,太笨啦) ... 等明天给你答复

出0入0汤圆

 楼主| 发表于 2011-4-29 09:24:45 | 显示全部楼层
回复【14楼】fsclub 绿林好汉
-----------------------------------------------------------------------
发射机守株待兔,这样可以保证在每个轮询(100ms)内,发射接收有效通信。
开机后第一件事是 寻找一个空闲的频道。而轮询方法的用处好像不在于此?

等正常工作后,如需跳频,轮询方法、唯一ID及滚动码应该是可以参考的。
目前,我的想法是:
1、只要不同的收发工作于不同的频道,彼此应该不会有干扰(每次收发前都有频率矫正)。
2、为保证不被干扰,每对收发都(在开机对频成功后)分配一个随机的ID。这样即便接收到错误指令,由于ID不同,也不会解析。
3、若与其他2.4g产品工作于同一频道,无法正确接收时,发射端会随机选择适当的间隔重发。时分复用,依旧可以保持通信的实时性。

补充下产品特点:
1、遥控指令最多5个字节
2、收发只要在200ms内成功通信一次即可
3、2.4G模块控制速率1M

出0入0汤圆

 楼主| 发表于 2011-4-29 10:58:13 | 显示全部楼层
测试视频
http://player.youku.com/player.php/sid/XMjYyNzAyNTEy/v.swf

四个2.4G模块,屏幕上半部分的两个是发射,下半部分两个是接受。
首先左侧上下配对、右侧上下配对
然后交叉配对

出0入0汤圆

发表于 2011-4-29 23:31:51 | 显示全部楼层
楼主的跳频方法在简单应用时是没问题的!
但,当多个遥控器同时操作时RF信号会发生碰撞,导致遥控失灵!

出0入0汤圆

发表于 2011-4-29 23:47:41 | 显示全部楼层
看看成品的FRSKY的跳频通信,几十个频道不停地换
http://www.rcmodelreviews.com/frskyreview.shtml


(原文件名:frsky01s.jpg)

出0入0汤圆

 楼主| 发表于 2011-4-30 16:15:42 | 显示全部楼层
回复【20楼】jonyes
-----------------------------------------------------------------------

回复【21楼】fsclub 绿林好汉
-----------------------------------------------------------------------

说实话,我有被吓到,哈哈~ 没想到2.4G需要考虑这么多问题!
按照当初的设想,收发正常工作后,在固定的频道通信,不跳频。所以,重点放在了初始化自动选择频道的问题上。
今天上午参考TCP/IP协议的三次握手,并仿照重写了收发端初始化选频程序。

目前来说,是我把问题考虑的过于简单。
感谢 jonyes fsclub 绿林好汉 的提醒和建议!

接下来先要装机测试,根据性能要求再做进一步打算。
真希望现在就OK,别再需要跳频 ,哈哈~
如果实在躲不过去,只能硬着头皮啃啦~~

出0入0汤圆

发表于 2011-4-30 16:25:05 | 显示全部楼层
回复【22楼】DDAI  
-----------------------------------------------------------------------

你的思路是非常正确!

你可以参照 TCP/IP 的协议根据你的产品自己设计一套通信协议!

还有你要考虑 遥控器发射端的工作电流!

出0入0汤圆

发表于 2011-4-30 16:28:05 | 显示全部楼层
回复【22楼】DDAI
回复【20楼】jonyes  
-----------------------------------------------------------------------
回复【21楼】fsclub 绿林好汉
-----------------------------------------------------------------------
说实话,我有被吓到,哈哈~ 没想到2.4g需要考虑这么多问题!
按照当初的设想,收发正常工作后,在固定的频道通信,不跳频。所以,重点放在了初始化自动选择频道的问题上。
今天上午参考tcp/ip协议的三次握手,并仿照重写了收发端初始化选频程序。
目前来说,是我把问题考虑的过于简单。
感谢 jonyes fsclub 绿林好汉 的提醒和建议!
接下来先要装机测试,根据性能要求再做进一步打算。
真希望现在就ok,别再需要跳频 ......
-----------------------------------------------------------------------

兄弟,你不要想着2.4G是你的专属频率。
你的机机可以不互相干扰,但2.4G是公共频率,有许多短距离无线设备在同时工作,你能想到有多忙吗?
蓝牙、WIFI、甚至键盘鼠标都要与你抢频率资源,还有大功率的无线数传图传装置等
一旦同频,那基本上不大可能正常通信的,所以要不断的跳,不断地变,有句话叫总有个频率适合你!

出0入0汤圆

发表于 2011-5-24 17:48:01 | 显示全部楼层
jh

出0入0汤圆

发表于 2011-6-8 00:22:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-8 07:20:06 | 显示全部楼层
回复【8楼】sdram
参考bt的跳频。许多东西已经有人研究了,没有必要自己从头来。
-----------------------------------------------------------------------

什么BT算法?

出0入0汤圆

发表于 2011-6-8 08:11:45 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-6-8 09:34:07 | 显示全部楼层
汇编…厉害…

出0入0汤圆

发表于 2011-6-10 12:04:21 | 显示全部楼层
可以参考一下这篇文档    http://www.doc88.com/p-91394975161.html    我最近也在学习2.4g的跳频,有机会多交流

出0入0汤圆

发表于 2011-6-10 12:25:41 | 显示全部楼层
回复【10楼】DDAI  
-----------------------------------------------------------------------

BT=蓝牙?

出0入0汤圆

发表于 2011-6-10 12:30:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-12 02:42:17 | 显示全部楼层
看到有人讨论2.4G的问题,请各位高手帮我解决个问题:
    我有一套雷柏1800无线键盘鼠标套装,还多买了一个接收器(假设原装接收器为A,另买的接收器为B),通过对码,AB接收器都能单独正常接收使用,但我想实现一个功能:A、B接在两台不同的电脑上,用键盘同时为两台电脑输入相同的内容(就象用不同的收音机都能收到相同的广播一样)。不知能否实现?
注:我用对码软件在两电脑上同时给两个接收器对码,都是只有一个接收器能对码成功!是不是原理上不可能实现??

出0入0汤圆

发表于 2018-3-9 20:01:46 | 显示全部楼层
楼主,你的这个思路后来验证效果怎么样

出0入17汤圆

发表于 2018-3-9 23:37:27 | 显示全部楼层
iamten 发表于 2011-7-12 02:42
看到有人讨论2.4G的问题,请各位高手帮我解决个问题:
    我有一套雷柏1800无线键盘鼠标套装,还多买了一个接 ...

对码有两种的,一种对码信息在dongle上,另外一种是在发射端上。。。

出0入0汤圆

发表于 2018-5-17 14:52:49 | 显示全部楼层
听到有人吹牛说他们的433通信策略是跳频通信,没有实际见过

出0入0汤圆

发表于 2018-5-21 18:10:41 | 显示全部楼层
跟一个, 是可以研究一下蓝牙BLE的跳频算法。。

出0入0汤圆

发表于 2018-6-25 16:05:34 | 显示全部楼层
学习中!刚刚进入

出0入0汤圆

发表于 2018-6-27 09:13:18 | 显示全部楼层
跳频这东西我也研究过一阵子,没搜索到什么太有价值的信息,只好自己进行一番研究。
首先得明确为什么要跳频,一是防止别人监听,也就是用于保密,二是防止信道干扰,导致通信失败。
保密这块其实可以通过加密数据实现,不调频也没什么,但是ISM频段的设备太多,大家都在争夺信道,不跳频恐怕是没活路了,只有跳频才能增加你的通信成功率。
跳频的思路有两大分支:一是被干扰了再跳,属于被动跳;二是主动跳,打一枪换一个地方。其实从数学概率上来说,都差不多。考虑到代码实现,我最后还是选择了主动跳。
主动跳的方式会引出新的问题,就是跳频表,或者叫调频序列,也就是双方按照什么样的规律来跳频,这个是必须事先商量好的。实现起来也是五花八门,各种数学算法都上阵了。在看文献时要注意,很多的文章产生的跳频序列具有伪随机性,这确实是很好的,可是他们的出发点是为了防止通讯被跟踪,而我们并不需要这一特性,我们只是为了防止信道碰撞。所以,是不是采用伪随机序列算法要根据自己的情况区别对待。

出0入0汤圆

发表于 2021-11-1 15:57:03 | 显示全部楼层
楼主的跳频搞得怎么样了?已经过了10年
我年轻的时候搞过无线教学语音系统,即在调频段大概110Mhz左右使用一条15Khz带宽的通道传输语音信号(记的是motorola窄带语音方式),为了抗干扰,每个相邻信道间隔100Khz。 无线发射频率和接收频率是采用BU2614 锁相环和单片机控制产生的,开机前手动调整拨码开关使收发在同一信道,如果有干扰则收发同时变更无干扰的信道。
我当时也想过,是否收发2端同时按照一样的规则变更载波频率,不停地改变,但确保收发在同一频率上,不知道对与传输连续的语音信号有什么影响,人实际听起来不知道什么感觉。限于本人理论水平和当时条件,始终没有搞清楚,在这里请楼主或其它高人解答一下看看。

出0入63汤圆

发表于 2021-11-1 21:30:42 来自手机 | 显示全部楼层
难道跳频就是一个劲跳就完事了,并且妄图用跳谱进行通讯吗,难道现在还可能有跳频的窄带通讯吗
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2022-6-30 11:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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