本文將 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)
評論
查看更多