樹莓派與Arduino藍芽通訊實踐

2021-08-17 12:40:03 字數 2111 閱讀 6206

最近在做乙個農業機械人的專案,上位機採用的是樹莓派3b,下位機採用的是arduino mega,一開始用的udp協議進行資料交換,後來發現udp傳輸資料不是很穩定,就決定使用串列埠通訊,由於樹莓派3b整合了藍芽模組,所以一切變得簡單起來。

首先,在樹莓派中進行環境搭建,依次執行下列命令:

sudo apt-get update

sudo apt-get install arduino python-serial

sudo apt-get install bluetooth bluez python-bluez

然後進行藍芽的配置,有兩種方案:

1.如果使用的是lxde,直接在螢幕右下角選擇藍芽,進行掃瞄和連線,一般hc-05和hc-06模組的初始藍芽密碼都是1234,完成連線,此時藍芽模組上的指示燈由快速閃爍變為慢速閃爍。如果希望下一次樹莓派對該裝置進行自動連線,需要在/dev/中建立相應的檔案。首先檢視該藍芽的識別碼,滑鼠指標放置在剛才連線藍芽處,即可以出現已經連線的藍芽的識別碼,然後開啟命令列,輸入:

$ sudo rfcomm bind 0 00:14:01:10:10:32
其中的00:14:01:10:10:32即為剛才的藍芽識別碼,執行以後會在樹莓派的/dev目錄中建立乙個/dev/rfcomm0 檔案,而此時arduino的藍芽指示燈為閃爍狀態,表示「未連線」,當樹莓派向藍芽裝置傳送訊息時才去做連線操作。

sudo rfcomm release 0 00:14:01:10:10:32
表示對該裝置已經繫結的藍芽裝置進行解綁。

注意:這裡如果不小心填錯了藍芽的識別碼而且無法刪除/dev/rfcomm0檔案,可以重新新建乙個rfcomm1檔案進行繫結,$ sudo rfcomm bind 1 00:14:01:10:10:32即可,在程式裡面連線/dev/rfcomm1即可。

2.如果使用的是命令列,在命令列裡面輸入下面的bluetoothctl命令即可進入藍芽的配置環境。

bluetoothctl
在藍芽的配置環境中,常用的命令有:

scan on
用於掃瞄可以配對的藍芽

pair 00:14:01:10:10:32
配對識別碼為00:14:01:10:10:32的藍芽裝置

paired-devices
檢視該裝置已經配對的裝置

remove 00:14:01:10:10:32
刪除已經配對的裝置

如果需要繫結可以按下ctrl+z退出藍芽的配置環境,然後按照上面的步驟在命令列中進行bind或release藍芽裝置。

注意:這裡連線藍芽裝置後,藍芽裝置應該變為慢速閃爍,這時候表示已經與裝置進行連線。但是此時是沒有資料的,只有在執行下列python和arduino程式的時候,才能實現開啟串列埠,進行串列埠資料的收發。

完成配對後進行程式的編寫,首先是arduino的程式:

void setup()

void loop() else

}}

然後是樹莓派的程式(這裡使用的是py2.7進行測試):

import serial

import sys

port = "/dev/rfcomm0"

serial = serial.serial(port,9600)

if len(sys.argv) > 1:

sendstr = sys.argv[1]

else:

sendstr = "a"

serial.write(sendstr)

serial.flushinput()

if serial.isopen() == false:

serial.open()

line = serial.readline()

print line

注意:如果上面繫結的時候用的「bind 1」,則這裡的port="/dev/rfcomm1"。

樹莓派與Arduino的串列埠通訊

樹莓派b 擁有4個usb口,而arduino正好有usb轉串列埠,這樣我們就能夠很容易的利用這一對介面來實現樹莓派與arduino之間的串列埠通訊。arduino端的程式 string recv int led 3 void setup void loop if recv.length 0 else...

Arduino與樹莓派用Lora通訊

arduino和樹莓派之間通過lora實現互動 硬體 樹莓派 arduino lora一對 串列埠 任意感測器乙個 這裡使用的是乙個非接觸式溫度感測器 軟體環境 arduino ide 樹莓派 python2.7 windows 安裝usb轉ttl的驅動。模組簡介 使用的是澤耀科技的產品,介面使用串...

樹莓派與arduino串列埠通訊實踐

arduino具有豐富的外部介面,與樹莓派的io口最大的不同在於arduino具有模擬輸入介面,可以測量io口上的模擬值。arduino與raspberry通過串列埠 serial 通訊的方案一般有兩種,一是通過樹莓派gpio串列埠通訊,第二種是通過usb串列埠通訊。顯然,arduino與raspb...