在上一教程中,我们将XBee模块与Arduino Uno进行了接口,并使它们使用XBee模块进行无线通信。现在,我们将 XBee模块与Raspberry Pi接口,后者将充当接收器,并使其与与笔记本电脑串行连接的另一个XBee模块(XBee Explorer板)进行无线通信。
硬件要求
- 1个安装了Raspbian的Raspberry Pi
- 2个XBee Pro S2C模块(可以使用任何其他模型)
- 1个XBee Explorer板(可选)
- 1 x Xbee分线板(可选)
- USB线
- 发光二极管
假定您的Raspberry Pi已经使用操作系统进行了刷新。如果不是这样,请在继续之前遵循Raspberry Pi入门教程。在这里,我们使用的是 Rasbian Jessie安装的Raspberry Pi 3。
在这里,使用HDMI电缆的外部监视器用作与Raspberry Pi连接的显示器。如果没有监视器,则可以使用SSH客户端(Putty)或VNC服务器使用笔记本电脑或计算机连接到Raspberry pi。在此处了解有关无头设置Raspberry Pi的更多信息。
使用XCTU配置XBee模块
正如我们在ZigBee简介的上一教程中了解到的那样,XBee模块可以充当协调器,路由器或终端设备,但需要将其配置为以所需的模式工作。因此,在将XBee模块与Raspberry Pi一起使用之前 ,我们必须使用XCTU软件配置这些模块。
要将XBee模块与笔记本电脑连接,使用USB到串行转换器或专门设计的浏览器板。只需将XBee模块连接到Explorer板,然后使用USB电缆将其与笔记本电脑插入即可。
如果您没有任何转换器或浏览器板,则 可以将Arduino板用作USB到串行设备 ,可以轻松地与XBee和笔记本电脑进行通信。只需在Arduino板上上传空白草图,现在它的行为就可以像USB到串行转换器一样。
配置XBee模块:
在本教程的此处, 资源管理器板用于配置XBee模块。
从此链接下载XCTU软件并安装。下载并安装XCTU软件后,打开它并确保正确连接了XBee模块。在设备管理器中检查Arduino板的COM端口。
1.现在,单击搜索按钮。这将向您显示与笔记本电脑连接的所有RF设备。在我们的例子中,它将仅显示一个XBee模块。
2.选择资源管理器板/ Arduino板的串行端口,然后单击下一步。
3.在下一个窗口中,如下所示设置USB端口参数,然后单击完成。
4.选择发现的设备,然后单击 添加所选设备 。此过程会将您的XBee模块添加到XCTU仪表板。
5.现在,您可以在此窗口中配置XBee模块。您可以使用AT命令或手动放置数据。如您所见,左侧面板上显示R,这表示XBee处于路由器模式。我们必须使其成为发送器部分的协调器。
首先,通过单击更新固件来更新固件。
6.选择XBee模块背面提供的设备产品系列。选择功能集和固件版本,如下所示,然后单击更新。
7.现在,您必须提供ID,MY和DL数据才能与其他XBee建立连接。两个模块的ID均相同。只有MY和DL数据交换,即 接收器XBee的MY成为发送器XBee(协调器)的DL,接收器XBee的DL成为发射器XBee的MY。 让CE担任 协调员 ,然后点击“ 写入” 按钮。如下所示。
数据传输层 |
在我 |
||
XBee 1协调员 |
|||
XBee 2终端设备 |
8.将以上数据写入发送器部件后,将其从资源管理器板中拔出并插入其中的第二个XBee模块。重复与上述相同的过程,只有DL,MY和CE有所更改。由于我们将第二个XBee作为终端设备,因此在CE下拉菜单中,选择终端设备,然后单击“写入”按钮。
9.现在,我们的XBee模块已准备好与Raspberry Pi交互。我们将使用Raspberry Pi将发送器XBee连接到笔记本电脑,将接收器XBee连接到笔记本电脑。然后使用笔记本电脑向接收器部件发出命令。笔记本电脑。
接收器部分的电路图
电路图中显示了将ZigBee模块与Raspberry PI接口的连接 。
连接方式:
- XBee的Tx(pin2)-> Pin Raspberry Pi的Tx
- XBee的Rx(pin3)->引脚Raspberry Pi的Rx
- XBee的Gnd(pin10)-> Raspberry Pi引脚的GND
- XBee的Vcc(Pin1)->引脚Raspberry Pi的3.3v
- LED连接到GPIO 23
设置Raspberry Pi进行串行通信
现在,我们将设置Raspberry Pi进行串行通信。默认情况下,Pi的硬件串行端口处于禁用状态。因此,我们必须在启动连接之前启用它。
1.在终端中,运行命令 raspi-config 。
2.转到选项5 接口选项, 然后按Enter。现在,选择“ P6串行” 选项并启用它,然后保存。
退出终端,您已准备好在Raspberry Pi和XBee之间建立连接。GPIO14和15将分别充当Tx和Rx,它们可在树莓派的/ dev / ttyS0端口获得。
现在,只要我们从发送方XBee收到“ a”,我们就将python脚本编写到LED上。
编程Raspberry Pi进行XBee通信
最后给出了用于将XBee与Raspberry Pi接口的完整python程序。
首先,我们必须使用导入功能导入时间,串行和RPi.GPIO库。
导入时间 导入串行 导入RPi.GPIO为GPIO …
现在,编写串行连接的属性,如下定义端口,波特率和奇偶校验。
ser = serial.Serial( port ='/ dev / ttyS0', baudrate = 9600, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS, timeout = 1 )
在 while 循环中编写所有发送和接收元素。
而1:
您可以使用 ser.write 函数将消息发送到发送方。取消注释以下行以发送计数。
#ser.write(str.encode('写计数器:%d \ n'%(counter))) # time.sleep (1)#counter + = 1
为了接收消息,我们必须使用 ser.readline() 函数。将传入消息存储在变量中并检查条件。如果收到的消息是“ a”,则打开LED指示灯3秒钟,然后关闭LED指示灯。
x = ser.readline()。strip() print(x) 如果x =='a': GPIO.output(23,GPIO.HIGH)time.sleep (3)..
本教程末尾提供了带有演示视频的完整Python代码。将代码粘贴到Pi的任何文本编辑器中并保存。使用sudo python script_name.py在终端中运行脚本,或者可以使用Python IDE和Shell执行脚本。
使用Raspberry Pi测试无线XBee通信
现在,我们都准备 测试XBee发送器和接收器。为了向发射器部分发出命令,我们将使用XCTU的控制台终端。单击设置选项附近的控制台图标。然后,单击“打开”按钮将XBee连接到笔记本电脑。
在控制台日志中输入“ a”。您会看到LED指示灯将亮起3秒钟,然后熄灭。
这样,您还可以按照上一教程中所述将发送器XBee连接到Arduino板上,并使Raspberry Pi和Arduino相互通信。