将XBee模块与Raspberry Pi连接进行无线通信

通信网络

626人已加入

描述

  本文将 XBee 模块与用作接收器的 Raspberry Pi 连接,并使其与另一个与笔记本电脑串行连接的 XBee 模块(XBee 浏览器板)进行无线通信。

  硬件要求

  1 个安装了 Raspbian 的 Raspberry Pi

  2 x XBee Pro S2C 模块(可以使用任何其他型号)

  1 x XBee 浏览器板(可选)

  1 x Xbee 分线板(可选)

  USB 电缆

  发光二极管

  假设您的 Raspberry Pi 已经刷入了操作系统。

  在这里,使用 HDMI 电缆的外部显示器用作与 Raspberry Pi 连接的显示器。如果您没有显示器,您可以使用 SSH 客户端(Putty)或 VNC 服务器使用笔记本电脑或计算机连接到树莓派。

  使用 XCTU 配置 XBee 模块

  正如我们在之前的ZigBee 简介 教程中了解到的那样,XBee 模块可以充当协调器、路由器或终端设备,但需要将其配置为在所需模式下工作。因此,在将 XBee 模块与 Raspberry Pi 一起使用之前,我们必须使用 XCTU 软件配置这些模块。

  要将 XBee 模块与笔记本电脑连接,需要使用 USB 转串口转换器或专门设计的资源管理器板。只需将 XBee 模块连接到 Explorer 板,然后使用 USB 电缆将其插入笔记本电脑。

  如果您没有任何转换器或资源管理器板,则 可以将 Arduino 板用作 USB 转串口设备 ,可以轻松与 XBee 和笔记本电脑通信。只需在 Arduino 板上上传空白草图,现在它就可以像 USB 转串口转换器一样工作了。

  配置 XBee 模块:

  在本教程中, Explorer board 用于配置 XBee 模块。

  从此链接下载 XCTU 软件 并安装。下载并安装 XCTU 软件后,打开它并确保您的 XBee 模块连接正确。在设备管理器中检查 Arduino 板的 COM 端口。

  1. 现在,单击搜索按钮。这将向您显示与您的笔记本电脑连接的所有射频设备。在我们的例子中,它将只显示一个 XBee 模块。

接收器

  2. 选择Explorer board/Arduino board的串口,点击Next。

接收器

  3. 在下一个窗口中,设置 USB 端口参数,如下图所示,然后单击 Finish。

接收器

  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 设为 Coordinator ,然后点击 Write 按钮。如下所示。

接收器

  8. 将上述数据写入发射器部分后,从探索板中拔出并插入其中的第二个XBee模块。重复与上述相同的过程,仅更改 DL、MY 和 CE。因为我们将第二个 XBee 作为终端设备,所以在 CE 下拉菜单中,选择终端设备并点击写入按钮。

  9. 现在,我们的 XBee 模块已准备好与 Raspberry Pi 连接。我们将使用 Raspberry Pi 将发射器 XBee 连接到笔记本电脑和接收器 XBee。然后使用笔记本电脑向接收器部分发出命令。笔记本电脑。

  接收器部分电路图

  电路图中显示了ZigBee 模块与 Raspberry PI 接口的连接 。

接收器

  连接:

  XBee 的 Tx (pin2) -》 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接口选项并按回车键。现在,选择P6 Serial选项并启用它,然后保存。

接收器

  退出终端,您就可以在 Raspberry Pi 和 XBee 之间建立连接。GPIO14 和 15 将分别充当 Tx 和 Rx,它们在树莓派的 /dev/ttyS0 端口可用。

  现在,每当我们从发射器端 XBee 接收到“a”时,我们将编写一个 Python 脚本来打开 LED。

为 XBee 通信编程 Raspberry Pi

最后给出了用于连接 XBee 和 Raspberry Pi 的完整 python 程序。

首先,我们必须使用导入功能导入时间、串行和 RPi.GPIO 库。

 

import time 
import serial 
import RPi.GPIO as GPIO 
…

 

现在,编写串行连接的属性,定义端口,波特率和奇偶校验如下。

 

ser = serial.Serial(
    端口='/dev/ttyS0',
    波特率=9600,
    奇偶校验=serial.PARITY_NONE,
    停止位=serial.STOPBITS_ONE,
    字节大小=serial.EIGHTBITS,
    超时=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) 
    if 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 秒钟,然后熄灭。

接收器
#!/usr/bin/env python

import time

import serial

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)

GPIO.setup(23,GPIO.OUT)

ser = serial.Serial(

port ='/dev/ttyS0',

baudrate = 9600,

parity=serial.PARITY_NONE,

stopbits=serial.STOPBITS_ONE,

bytesize=serial.EIGHTBITS,

timeout=1

)

counter=0



while 1:

#ser.write(str.encode('写计数器:%d \n'%(counter)))

#time.sleep(1)

#counter += 1

x=ser.readline().strip()

print(x)

if x == 'a':

GPIO.output(23,GPIO.HIGH) time.sleep

(3)

else:

GPIO.output(23,GPIO.LOW)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分