搜索
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: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 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 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-30 16:15:42 | 显示全部楼层
回复【20楼】jonyes
-----------------------------------------------------------------------

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

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

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

接下来先要装机测试,根据性能要求再做进一步打算。
真希望现在就OK,别再需要跳频 ,哈哈~
如果实在躲不过去,只能硬着头皮啃啦~~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 01:46

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

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