背景:最近在做项目的过程中看到了一份以前的学长留给我的ZigBee模块的资料,之前在和其它学院的同学一起准备某个比赛的时候听说过ZigBee是一种无线通讯模块,于是就淘宝了一下,找到了这个
然后在淘宝详情页仔细看了一下,发现它用到了我之前学过的UART协议,这个协议并不是指两个模块之间的无线通讯协议,而是在某一个通信模式,某一个信道下,模块A通过串口收到的数据会从模块B的串口发出,而这两个模块之间是怎么通信的我们没必要知道,只要你会用UART协议,就能在支持此协议的平台下开发出各种有趣的无线应用了。
需要设备:树莓派开发板、ZigBee CC2530模块至少两个、USB转串口线一个(CP2102或CH340均可)、PC机、杜邦线若干
首先,我们要清楚的是,我们在做的是两个模块点对点通信,原理我已经说过了,即模块A通过串口收到的数据会从模块B的串口发出,那么我们的做法就是,通过PC机的串口调试助手向模块A发送数据,然后数据会从模块B的串口发出,然后我们将模块B与树莓派连接起来,VCC对VCC,GND对 GND,模块的TXD连接树莓派的RXD,模块的RXD连接树莓派的TXD,然后我们在树莓派上用程序读取串口发出来的数据,那么我们就收到了PC机发过来的数据,过程就是这么简单。
在这之前要配置好无线模块的波特率,信道,以及通讯模式,如果你是在淘宝上买好的模块,相信商家应该会提供给你详细的资料以及配置方法等,如果你不知道如何配置的话,就请参考下面的链接和视频网址:模块配置视频教程
(提示:配置的时候最好别把TXD和RXD都连上,不然可能会发生错误,最好配置完使用的时候再接那两根线,本人亲测)
开始调试:把USB转串口模块一头连上电脑的USB口,一头接ZigBee无线模块,然后打开串口调试助手串口调试助手下载
树莓派程序代码:
import serial
import time
t = serial.Serial("/dev/ttyAMA0",9600)
while True:
str=t.read(32)
print str
time.sleep(1)
t.close()
打开串口调试助手:
选择好串口号和波特率,我这里串口号是com8,波特率是9600,这里波特率一定要和模块配置的波特率一致,不然就会引起通讯错误。在树莓派上运行刚才那个python文件,点击串口调试助手的发送按钮,如果成功,就会在树莓派上看到你通过串口调试助手发送的内容:如下图所示:
看,这里收到的数据是不是和你发送的是一样的呢,而且你在串口调试助手里面点一次发送这里就会多显示一行,至此就说明两个模块在点对点模式下能够正常通讯了。