- 藍牙模塊使用HC-05,波特率9600,插入PC,使用串口助手收發消息
- 樹莓派使用自身藍牙與HC05配對。
HC-05的配置這裏不再贅述,可參考這裏
一、樹莓派的藍牙與HC-05配對
打開樹莓派的VNC桌面,單擊右上角的藍牙圖標,選擇Add Device
進而,進入藍牙搜索界面,稍等片刻,便可以查找到對應的HC-05模塊,點擊Pair進行配對
按照提示,輸入藍牙配對密碼
之後若出現下圖所示錯誤,可直接忽略。
打開樹莓派的命令行,輸入hcitool scan
,掃描藍牙(附帶MAC地址)
接着輸入,sudo rfcomm connect 1 98:D3:32:71:30:7A
(其中1
可以自定義爲其他數字【如果被佔用的話】,98:D3:32:71:30:7A
這個是HC-05對應的MAC地址),即可連接成功。
這種連接方式,不能關閉當前終端。
並且當拔掉藍牙的時候,還需要重新輸入指令連接。那麼有沒有自己綁定的辦法呢?
當然有的,在終端輸入
sudo rfcomm bind 1 98:D3:32:71:30:7A
,相當於在/dev
目錄下注冊了一個名字爲rfcomm1
的設備。當拔掉藍牙時,對應的設備號rfcomm1
依然存在。
下次插上藍牙可以直接在程序中使用rfcomm1
設備,無需再次註冊。
當然解綁也有對應的命令,這裏不再贅述,有興趣可以參考這裏
再打開一個終端,輸入sudo ls /dev -l
,會發現多了rfcomm1
,就是我們剛剛註冊的HC-05設備。
二、安裝 python-serial 庫
樹莓派藍牙傳輸數據可以用python的pyserial模塊
sudo apt-get install python-serial
三、編寫python程序
1、PC發送數據並在PC回顯
終於到了,最激動人心的環節了 — 測試。
- USB-TTL連接HC-05
- 打開PC端的串口助手,設置波特率爲9600.
樹莓派上,編寫4.py
,代碼如下所示。
# -*- coding: utf-8 -*
import serial
import time
def main():
while True:
# 獲得接收緩衝區字符
count = ser.inWaiting()
if count != 0:
# 讀取內容並顯示
recv = ser.read(count)
print recv
# 清空接收緩衝區
ser.flushInput()
# 必要的軟件延時
time.sleep(0.1)
if __name__ == '__main__':
try:
# 打開串口
ser = serial.Serial('/dev/rfcomm1', 9600)
if ser.isOpen == False:
ser.open() # 打開串口
ser.write(b"Raspberry pi is ready")
main()
except KeyboardInterrupt:
if ser != None:
ser.close()
-
樹莓派運行
4.py
文件,同時開啓PC端串口助手,並注意觀察接收框變化
-
上面PC端串口助手成功打印
Raspberry pi is ready
,說明樹莓派發送到PC端沒得問題。 -
接着測試樹莓派接收PC端的消息
- 樹莓派接收也沒得問題!!!
注意:當ctrl+C結束掉程序的時候,此時HC-05藍牙會斷開連接。無需驚慌,無需重新配對,因爲我們綁定藍牙爲
rfcomm1
設備,所以直接再次運行程序,變會自動連接。哪怕拔掉藍牙,再重新插上,依舊會自動連接配對!
至此,樹莓派4B藍牙與HC-05串口通信測試,便成功實現!