考虑到做这个,主要是看到淘宝网上有串口转蓝牙的模块,现在不也流行无线鼠标么,发现无限调试真的爽多了,而且一些运动设备的调试也需要无线模块将数据传到上位机,观察。

    废话不多说,来干货。

    无线串口的结构就是:

    使用AVR系列的mega8作为主控芯片,使用2.4G无线模块nrf24l01作为无线发射接收器。由于nrf24l01的限制,无限串口模块只能工作于半双工模式。

nrf24l01模块

未安装nrf24l01的无线串口(mega8 + nrf24l01)

安装nrf24l01的无线串口(mega8 + nrf24l01)

 

下面介绍功能:

无限串口模块可以使用AT指令,需将跳帽拔下进入指令模式,可接收指令改变设置,并有掉电保存的功能(mega8的EEPROM,多亏你了);将跳帽装上,则进入数据传输模式,可以正常传输数据。

1、测试模块工作正常

发送:AT+CHKNOR

返回:OK

 

2、测试模块和另一个模块可以通讯

发送:AT+CHKCOM

返回:OK

 

3、改无线串口通讯波特率

发送:AT+BAUD1

返回:OK1200

发送:AT+BAUD2

返回:OK2400

……

 

0---------2400

1---------4800

2---------9600

3---------14400

4---------19200(默认就是这个设置)

5---------28800

6---------38400

7---------57600

8---------76800

9---------115200

 

4、恢复出厂状态

发送:AT+PRIME

返回:SetPrime

 

5、改模块配对密码

发送:AT+PINxxx

返回:SetPinxxx

参数xxxx:所要设置的配对密码,3任意字符.注意通讯的两个无限串口模块密码要一致。

例:发送:AT+PINabc

返回: setpin abc

这时蓝牙配对密码改为abc

下面介绍软件:

    使用Atmel Stdio 6.0进行编程,发现高级软件编程有关键字的提示,方便多啦~,但不会分文件夹,.h与.c文件混在一起,乱啊。使用了buf数组暂存两边传入的数据,等模块空闲时传出数据。目前软件只能说处于能用阶段,测试传输状况良好,但不保证不会丢数据或有大延迟。

    其实,期间想过分时传输的方法,后来才发现,简单的传入之后马上传出就好,只在传出时将nrf24l01设为发送模式,剩下时间设为传入模式。这样的话,当两边同时传送数据时会有冲突现象,还好nrf24l01有自动重发功能,弥补了很多。

附件中为源程序: