搜索
bottom↓
回复: 85
打印 上一主题 下一主题

2.4G串口透传模块,支持AT命令,时分全双工,全部资料开源

  [复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2014-7-22 18:00:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jk36125 于 2014-7-22 18:00 编辑

简介:
无线串口模块wirlessUART是由LGT8F08A和廉价nRF24L01模块制作的无线串口透传模块。能够支持AT命令来配置模块的参数。模块可以配置成“PTX”或者“PRX”的角色。“PTX”和“PRX”的叫法来自nRF24L01的文档,在串口数据传输上,这两种角色并没有差别,但一个PTX设备必须和一个PRX设备配对使用。

主要功能:

1. 最大稳定数据传输波特率115200
2. 可以使用AT命令配置串口的格式,包括波特率,数据长度等等
3. 可以使用AT命令配置无线通信频率,通信速率以及发射功率
4. 时分全双工设计,模块可同时收发数据
5. LED显示模块的配对状态
6. 可以安装锂电池实现自供电

双面感光板,完全Homemade,看起来还不错^_^:






做这个主要是想给树莓派使用,这样就可以无线操作Linux的串口终端。在Linux网络配置还没有完成,或者网络连接失败的时候,无法使用ssh登录linux,需要辛苦的将树莓派重新连接上电视上,再接入一个USB键盘来操作。有了无线串口,就可以悠哉的坐在沙发上,直接使用无线串口终端来配置和恢复Linux,不用跪在角落摆弄布满灰尘的视频传输线。

最初我对模块的要求是,只要能够传输命令行就OK。因为LGT8F08A的SPI接口和串口是复用的,所以只能使用软SPI的方式来连接nRF24L01无线模块。这成为了模块传输速度的主要瓶颈。但实际传输的速度比我最初想象的要快的多,经过几天的测试和调整,程序也变得稳定起来。所以,我测试了模块的连续数据传输能力。

我使用超级终端Zmodem文件发送的方式来测试数据传输。因为模块不包含USB接口,所以测试时将它们分别连接在两个USB转串口设备上,两个USB转串口设备同时连接在一个USB-HUB上。在计算机上使用超级终端打开这两个USB串口,进行文件传输操作。这样,我只需要使用1台计算机就能同时测试数据发送和接收。

测试连接图,两个黑色热缩管包裹着的是USB转串口模块:



经过测试,模块可以在115200波特率下,6到8米距离以内较为稳定的传输文件。传输的距离主要取决于nRF24L01模块的质量以及通信速率(可用AT命令来配置)。在2Mbps的无线速度下,最大直线传输距离在10米左右,如果有墙壁的阻挡,信号衰减的更快。因为选用了最便宜的nRF24L01模块,所以我对传输的距离没有怨言。如果使用带天线的nRF24L01模块,我想传输的距离会更远一些。



模块可以安装锂电池供电,因为有些设备串口部分没有将电源引出来,所以模块自供电使用起来对我比较方便。如果你不需要锂电池,可以去除原理图上标明为SELF-POWERED的部分,焊接EXTERN-POWERED部分。

如何进一步提升传输速度
传输速度的瓶颈在于软件SPI方式连接nRF24L01模块。这是因为LGT8F08A的SPI接口和UART接口是复用的。所以,换用有硬件SPI可用的AVR芯片上,相信可以进一步提升传输速度和稳定性。LGT和AVR的之间的移植也不是很困难。但AVR的价格比LGT要贵的多。

使用说明:



在上电时按住AT-MODE键不放可以进入AT命令模式,在这个模式下可以设置模块的各种参数。
红色LED为电池信号:低电量时会开始闪烁,充电时为常亮。
蓝色LED为PTX设备连接信号(PRX设备不使用):连接成功时为常量,搜索设备时为闪烁。
必须使用一个PTX设备和一个PRX设备配对使用。并且两个设备的无线频率和无线速率必须相同。

硬件原理图:

PDF格式:

软件源代码:


二进制文件:


AT命令说明:
显示所有配置:AT+WHAT?
显示设备角色:AT+ROLE?
显示串口格式:AT+UART?
显示无线频率:AT+RFCH?
显示无线速率:AT+RFDR?
显示无线功率:AT+RFPW?

设置设备角色:AT+ROLE=PRX 或者 AT+ROLE=PTX
设置串口格式:AT+UART=115200,N,8,1 或者 AT+UART=9600,O,8,1 或者 AT+UART=4800,E,9,2
设置无线频率:AT+RFCH=2(频率为2400+2Mhz)或者 AT+RFCH=10(频率为2400+10Mhz)
设置无线速率:AT+RFDR=1M 或者 AT+RFDR=2M
设置无线功率:AT+RFPW=0(最小)或者 AT+RFPW=3(最大)

DIY成本计算:
LGT8F08A-SSOP24      1.85元
nRF24L01模块            4.00元
阻容插座开关LED        2.00元(大约)
感光板PCB                 2.00元(大约)
合计:9.85元

增加锂电池:
KB4540(2YL1)                 1.20元
140mAh锂电池            8.00元
合计:9.2元

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

2
发表于 2014-7-22 18:06:47 | 只看该作者
占个沙发,好东西

出0入0汤圆

3
发表于 2014-7-22 18:20:34 | 只看该作者
楼主能说说是怎样实现全双工的吗?

一般24L01是用ACK机制来实现双工通讯。但这个就要求在TX端空闲的时候,也要有数据传输才行。

出0入0汤圆

4
发表于 2014-7-22 19:11:45 | 只看该作者
精彩,谢谢楼主的分析,楼主大侠能给我们讲一下程序的大概流程不,就是串口队列、如何实现缓存等流程。

出0入59汤圆

5
发表于 2014-7-22 21:14:04 | 只看该作者
好东西,收藏表示感谢!

出0入0汤圆

6
发表于 2014-7-22 21:16:33 | 只看该作者
确实不错,模块看上去简单好用。

出0入0汤圆

7
发表于 2014-7-22 22:06:02 | 只看该作者
无线串口,记录。谢谢LZ

出0入0汤圆

8
发表于 2014-7-22 22:10:13 | 只看该作者
mark                              

出0入0汤圆

9
发表于 2014-7-22 22:17:43 | 只看该作者
顶顶更健康

出0入8汤圆

10
发表于 2014-7-22 22:27:55 来自手机 | 只看该作者
时分全双工
难道是收发不停切换

出0入0汤圆

11
发表于 2014-7-23 08:26:09 | 只看该作者
mark.........

出0入0汤圆

12
 楼主| 发表于 2014-7-23 08:49:15 | 只看该作者
解释一下时分全双工的原理。

时分全双工,就是TX和RX线路的数据各占用一半的传输时间和传输带宽。

要做到这一点,首先要启用nRF24L01的“ack with payload”功能。PTX设备发送数据以后,PRX设备返回的ACK中,也可以附加上32字节的数据。

如果PTX设备没有数据要发送,就发送空数据包轮询PRX设备。

这样,在满负载传输的时候,就是:
PTX发送32字节数据 -> PRX发送ACK和32字节数据 -> PTX发送32字节数据 ~ etc
TX数据和RX数据相当于各占用了一半的传输带宽。

由于nRF24L01硬件上有32字节FIFO,并且LGT8F08A上开辟了64字节的缓存,所以从串口的角度来看,可以认为是全双工传输。

以上是理论,以下是实际。

实际测试的结果是,数据全双工满负荷传送的时候,还是会出现丢失数据的情况

这是因为使用了软件SPI传输数据的关系。如果有硬件SPI可用,我想nRF24L01或许可以做到230400全双工传输。

出0入0汤圆

13
发表于 2014-7-23 09:55:18 | 只看该作者
要做到这一点,首先要启用nRF24L01的“ack with payload”功能。PTX设备发送数据以后,PRX设备返回的ACK中,也可以附加上32字节的数据。

如果PTX设备没有数据要发送,就发送空数据包轮询PRX设备。

这样,在满负载传输的时候,就是:
PTX发送32字节数据 -> PRX发送ACK和32字节数据 -> PTX发送32字节数据 ~ etc
TX数据和RX数据相当于各占用了一半的传输带宽。


请问LZ 如果你的   PRX发送ACK和32字节数据 数据传输中数据丢了怎么办?nRF24L01的“ack with payload”功能是否把数据当成 AUTO ACK信号? 这样是否PRX 就没有了自动重发功能?

出0入0汤圆

14
发表于 2014-7-23 10:00:06 | 只看该作者
不错!加功放!!!!

出0入0汤圆

15
 楼主| 发表于 2014-7-23 10:13:37 | 只看该作者
waterghost 发表于 2014-7-23 09:55
要做到这一点,首先要启用nRF24L01的“ack with payload”功能。PTX设备发送数据以后,PRX设备返回的ACK中 ...

数据的重发和效验都是由nRF24L01自动完成的,只要设置重发次数和间隔时间,其它的不需要MCU干预。

出0入0汤圆

16
发表于 2014-7-23 12:27:43 | 只看该作者
好东西啊,我自己做的那个怎么也不能传输大的数据,一传输大数据就死机了。


这个是个标准长度的尾巴,你能看到这个尾巴说明你的浏览器是正常的。欢迎光临我的淘宝店。

出0入0汤圆

17
发表于 2014-7-23 19:26:13 | 只看该作者
jk36125 发表于 2014-7-23 10:13
数据的重发和效验都是由nRF24L01自动完成的,只要设置重发次数和间隔时间,其它的不需要MCU干预。 ...

文件传输对数据完整性要求很高,不干预是不行的。除非是做玩具遥控,周期性发送同样的上下左右油门数据,偶尔丢包无所谓……

PTX发送数据可以保证很高的可靠性,因为有CRC16和ACK
PRX携带在ACK帧Payload的数据则没法保证。
分析过程如下。正常无干扰:
1-PRX预先填充数据B1到Payload
2-PTX发送一包数据A1
3-PRX收到A1,硬件自动发出之前准备好的Payload数据B1,然后产生中断
4-PRX的MCU处理中断,填充下下一包数据B2到Payload
5-PTX发送下一包数据A2
……
有干扰时,分为两种情况:
1-PTX发送数据过程受干扰,导致PRX没有收到完整数据包,自然也没有自动ACK
——此时PTX会自动重发,能解决掉大部分问题
——如果PTX重发次数满了还是没有成功,这需要MCU介入,重发数据

2-PRX收到完整数据包,但是在自动发送ACK过程受到干扰,导致PTX没有收到完整ACK(PRX已经认为发送成功了,扔掉数据,马上准备下一包数据),所以PTX会自动重发……
——结果就是PRX可能收到多余的数据;PTX丢掉了数据

在实际应用环境(有多个同类2.4G设备,还有WLAN),干扰情况2的概率还是挺大的。
所以我们没有用满32字节Payload,而是参考TCP协议,留出一些作为双方状态指示,每次双方都交换状态,这样PRX会一直查询状态,直到确认PTX已经正确收到ACK,才会准备下一帧数据,确保不会丢数据;PTX也会不停查询PRX状态,直到确认PRX收到了数据,确保不会多发送数据。
坏处就是通信速率降低一半

出0入0汤圆

18
发表于 2014-7-23 19:55:25 | 只看该作者
来学习的

出0入0汤圆

19
发表于 2014-7-23 21:03:10 | 只看该作者
好强大,记号一个

出870入263汤圆

20
发表于 2014-7-23 21:56:23 | 只看该作者
无线通信是个热门应用,值得深入研究。

出0入0汤圆

21
发表于 2014-7-23 21:59:58 | 只看该作者
mmmmmmmmmmmark!

出0入0汤圆

22
发表于 2014-7-23 22:02:37 | 只看该作者
这个很有参考价值

出0入0汤圆

23
发表于 2014-7-23 22:03:14 | 只看该作者
好东西,值得研究

出0入0汤圆

24
发表于 2014-7-24 08:43:07 | 只看该作者
好东西,感谢楼主共享。
不用找10块钱的蓝牙串口了

出0入0汤圆

25
 楼主| 发表于 2014-7-24 09:26:51 | 只看该作者
mhw 发表于 2014-7-23 19:26
文件传输对数据完整性要求很高,不干预是不行的。除非是做玩具遥控,周期性发送同样的上下左右油门数据, ...

你说的数据丢失问题,我觉得放在文件传输协议上来解决,比放在传输驱动层上或许更合适一些。

举个实际的例子,我曾经使用超级终端的“Zmodem崩溃于恢复”,通过无线串口来传输文件(这好像也是串口传输文件仅有的几个可怜用处),然后慢慢的在传输的过程中拉远接收双方的距离。

距离增大到一定程度的时候,开始出现丢包现象。距离继续增大以后,出现了非常严重的丢包。

但是文件最后还是传输成功了。

因为Zmodem协议已经处理了发生丢包的情况。所以无线模块只需要发送和接收数据就好了。

出0入0汤圆

26
发表于 2014-7-24 09:36:25 | 只看该作者

出0入0汤圆

27
发表于 2014-7-24 10:32:09 | 只看该作者
强,谢谢楼主了

出0入0汤圆

28
发表于 2014-7-24 12:27:50 | 只看该作者
jk36125 发表于 2014-7-24 09:26
你说的数据丢失问题,我觉得放在文件传输协议上来解决,比放在传输驱动层上或许更合适一些。

举个实际的 ...

看来应用场合不一样……
用到我们那种透传模块的,都是一些低端的8位甚至4位单片机,不会有复杂的应用层协议,所以要求我们传输层提供可靠的信道,也就是串口发个包,要求必须可靠到达对端,反之亦然。

出0入0汤圆

29
 楼主| 发表于 2014-7-24 13:57:48 | 只看该作者
mhw 发表于 2014-7-24 12:27
看来应用场合不一样……
用到我们那种透传模块的,都是一些低端的8位甚至4位单片机,不会有复杂的应用层 ...

你该叫他们换好一点的单片机

我一直认为,数据都如果飞到空中了,飞进谁的鼻孔都不是没有可能,100%到达只能是一种美好的愿望,就像路飞的onepiece。

出0入0汤圆

30
发表于 2014-7-24 15:07:54 | 只看该作者
jk36125 发表于 2014-7-24 13:57
你该叫他们换好一点的单片机

我一直认为,数据都如果飞到空中了,飞进谁的鼻孔都不是没有可能, ...

传输层软件做好了,上位机几毛钱的OTP单片机都会比你的简单传输层+电脑强……因为消费品周边环境比较恶劣,有的信道被干扰了,应用层怎么重传都没用的……要靠透传模块自身的载波侦听+自动跳频来解决

出0入0汤圆

31
发表于 2014-7-25 17:47:51 | 只看该作者
楼主有中文注释的程序吗?想移植到stm8s103f3p6上(用硬件spi控制24l01没问题),代码看不懂啊,主函数里带usb的程序都用不到吧?突然感觉自己c语言没学好啊。

出0入0汤圆

32
发表于 2014-7-26 07:46:27 来自手机 | 只看该作者
顶起,很不错

出0入0汤圆

33
发表于 2014-7-26 07:54:47 | 只看该作者
好东西,必须顶!

出0入0汤圆

34
发表于 2014-7-26 11:32:45 | 只看该作者
记号,收藏

出0入0汤圆

35
发表于 2014-7-28 09:22:33 | 只看该作者
大赞!完全开源。

出0入0汤圆

36
发表于 2014-7-30 00:00:07 | 只看该作者
请问楼主那个晶振用的32768?

出0入0汤圆

37
发表于 2014-7-30 00:34:23 | 只看该作者
原理图上看是16M吧

出0入0汤圆

38
发表于 2014-7-30 00:54:39 | 只看该作者
占沙发,顶一个

出0入0汤圆

39
发表于 2014-7-30 17:53:31 | 只看该作者
真的很感谢楼主的分享!参考价值不错!

出0入0汤圆

40
发表于 2014-8-12 22:47:07 | 只看该作者
用LGT8F88A  内部RC能跑到32M。SPI接口和串口分开的

出0入0汤圆

41
发表于 2014-8-20 15:07:03 | 只看该作者
不错啊,不知用来做成无线下载程序的功能行不行。

出0入0汤圆

42
发表于 2014-8-22 13:36:01 | 只看该作者
记号,顶一个。

出0入0汤圆

43
发表于 2014-8-22 18:34:18 | 只看该作者
厉害~·有个性

出0入0汤圆

44
发表于 2014-8-22 18:34:37 | 只看该作者
好东西~厉害~·有个性

出0入0汤圆

45
发表于 2014-8-22 18:39:49 | 只看该作者
顶一个,学习了!!

出0入0汤圆

46
发表于 2014-8-30 23:03:40 | 只看该作者
谢楼主

出0入0汤圆

47
发表于 2014-9-10 13:25:05 | 只看该作者
這真是太方便了.   " 数据的重发和效验都是由nRF24L01自动完成的,只要设置重发次数和间隔时间,其它的不需要MCU干预。"

出0入0汤圆

48
发表于 2014-9-13 17:59:26 | 只看该作者
不错的设计

出0入0汤圆

49
发表于 2014-9-13 20:11:35 | 只看该作者
mark                  

出0入16汤圆

50
发表于 2014-9-13 20:25:15 | 只看该作者
joystring 发表于 2014-7-22 18:06
占个沙发,好东西

问遍了宝上卖家,都没有全双工的。
其实原来通过USB--TTL 全双工调试,PLC 下载程序有 很多是需要全双工的,要求应答的实时性特别好,
楼主的这个可以满足这种要求?

出0入0汤圆

51
发表于 2014-9-14 09:35:43 | 只看该作者
改天做个wifi透传

出0入0汤圆

52
发表于 2014-9-14 12:02:02 | 只看该作者
待我有时间改成STM8的

出0入0汤圆

53
发表于 2014-9-14 12:20:59 | 只看该作者
支持啊........不错............

出0入0汤圆

54
发表于 2014-9-14 12:36:12 | 只看该作者
长期潜水员,躺枪了,努力发帖升级

出0入0汤圆

55
发表于 2014-9-14 12:49:17 | 只看该作者
设计不错,谢谢

出0入0汤圆

56
发表于 2014-9-16 17:18:53 | 只看该作者
好强大,赞一个先

出0入0汤圆

57
发表于 2014-9-16 19:39:54 来自手机 | 只看该作者
好东西,谢了

出0入0汤圆

58
发表于 2014-9-16 20:34:38 | 只看该作者
楼主,你的AT指令跑在LGT8F08A这个单片机里面了吗

出20入118汤圆

59
发表于 2014-9-16 22:35:33 来自手机 | 只看该作者
Mark 看下

出0入0汤圆

60
发表于 2014-9-16 23:04:28 | 只看该作者
好东西,感谢楼主分享。。。

出0入0汤圆

61
发表于 2014-9-22 12:46:41 | 只看该作者
armstrong 发表于 2014-7-23 21:56
无线通信是个热门应用,值得深入研究。

亲,你这头像是哪部片的啊,看得我都醉了

出0入0汤圆

62
发表于 2014-9-23 16:04:25 | 只看该作者
看着不错,有时间研究。

出0入0汤圆

63
发表于 2014-9-24 03:10:50 | 只看该作者
不错,有时间也跟着试一下

出0入0汤圆

64
发表于 2014-9-26 11:07:28 | 只看该作者
顶         

出0入0汤圆

65
发表于 2014-9-26 12:01:42 | 只看该作者
感谢楼主分享!

出0入0汤圆

66
发表于 2014-10-2 22:10:08 | 只看该作者
厉害                     

出0入0汤圆

67
发表于 2014-10-4 21:27:36 | 只看该作者
那个塑料是用来防静电怕烧了无线模块的么?

出0入0汤圆

68
发表于 2014-10-11 17:58:36 | 只看该作者
借鉴一下,感谢楼主

出0入0汤圆

69
发表于 2014-10-11 18:25:35 | 只看该作者
收到了  感谢楼主

出0入0汤圆

70
发表于 2014-10-16 08:58:13 | 只看该作者
好资料收藏了,

出0入0汤圆

71
发表于 2014-10-16 09:08:27 | 只看该作者
mark                  

出0入4汤圆

72
发表于 2014-10-16 09:54:41 | 只看该作者
收藏!!

出0入0汤圆

73
发表于 2014-10-18 22:58:21 | 只看该作者
不错,做的挺认真的

出0入0汤圆

74
发表于 2014-10-20 14:18:18 | 只看该作者
谢谢分享................

出0入0汤圆

75
发表于 2014-10-20 16:18:52 | 只看该作者
楼主好人啊,感谢分享!

出50入0汤圆

76
发表于 2014-10-24 08:54:26 | 只看该作者
mark一个

出0入0汤圆

77
发表于 2014-10-24 13:44:36 | 只看该作者
谢谢分享,学习

出0入0汤圆

78
发表于 2014-10-27 10:42:38 | 只看该作者
谢谢楼主分享,牛人啊!

出0入0汤圆

79
发表于 2014-10-30 13:12:16 | 只看该作者
不错,仿制一个玩玩! 标记

出0入0汤圆

80
发表于 2014-11-14 21:09:03 | 只看该作者
真不错,自己做了好几天才到30K  感谢分享!

出0入0汤圆

81
发表于 2014-11-17 17:24:49 | 只看该作者
有没有人测试过不加天线,这个模块能传多远?

出0入0汤圆

82
发表于 2015-4-13 20:23:10 | 只看该作者
不错,下下来好好看看先

出0入10汤圆

83
发表于 2015-4-14 12:17:47 | 只看该作者
好,谢了。

出0入0汤圆

84
发表于 2015-6-10 20:44:27 | 只看该作者
太好了,有空仿制一个

出0入0汤圆

85
发表于 2015-10-3 13:31:47 | 只看该作者
用的什么开发环境?

出0入0汤圆

86
发表于 2015-10-28 22:33:47 | 只看该作者
这个这的很不错,支持一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 18:34

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

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