Python與硬體學習筆記:藍芽(二)
大家也可以按附錄中的AT命令詳解來設定藍芽模組,下面我們用藍芽模組跟樹莓派連線來製作一個藍芽無線通訊開關,手機充當遙控器,我們需要將藍芽模式設為從模式,波特率為9600,配對密碼為0000。
藍芽無線通訊開關製作
1、所需材料
1)藍芽模組; 2)樹莓派
3) LED燈; 4) 連線線數根
2、引腳連線
藍芽模組 | Raspberry Pi |
GND | GND |
5V | 5V |
TX | RX(Pin 10) |
RX | TX(Pin 8) |
LED | Raspberry Pi |
短腳 | GND |
長腳 | GPIO 21(Pin 40) |
3、樹莓派UART配置和使用
A、修改檔案/boot/cmdline.txt:sudo nano /boot/cmdline.txt
dwc_otg.lpm_enable=0【console=ttyAMA0,115200kgdboc=ttyAMA0,115200 】console=tty1root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
將【......】部分刪除,變為:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2rootfstype=ext4 elevator=deadline rootwait
B、修改檔案/etc/inittab: sudo nano /etc/inittab
註釋最後一行內容:
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
C、使用minicom,測試樹莓派UART是否正常工作
安裝minicom: sudo apt-get install minicom
啟動minicom: minicom -b 9600 -o -D/dev/ttyAMA0
使用minicom傳送內容:直接在控制檯輸入內容即可,如果minicom打開了回顯可在控制檯中觀察到輸出內容,如果回顯關閉則控制檯中沒任何反應,千萬不要以為minicom沒有正常工作。
minicom回顯控制: 打開回顯:先按Ctrl+A,再E
關閉回顯:先按Ctrl+A,再Q
D、使用pyserial
minicom僅滿足除錯用途,如果需要程式設計解決問題那麼python的serial擴充套件庫—pyserial,使用命令安裝:sudo apt-get install python-serial,安裝此庫後,我就可以呼叫此庫來編寫程式了。
4、軟體設計
首先找一步安卓手機,再到這裡連結: http://pan.baidu.com/s/1pJNwpdT 密碼: x5f3下載一個“藍芽開關.apk”。
再登陸到樹莓派,新建Python檔案: bluetooth.py 程式碼如下:
# -*- coding: utf-8 -* #編碼方式
import serial #包含相應的庫
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False) #取消警告
GPIO.setmode(GPIO.BCM) #設定引腳編碼方式
GPIO.setup(21,GPIO.OUT) #講GPIO 21口設定為輸出模式
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0.5) #開啟串列埠,括號內為引數
while True: #迴圈
if ser.isOpen() == False:
ser.open()
switch = ser.read() #讀取串列埠中的資料
print switch #列印從串列埠中讀取的資料
#ser.write('A') #相對藍芽來說向外輸出給使用者,本程式不需要用到,僅告知
if switch == 'y': #判斷讀取的資料是‘y’
GPIO.output(21,GPIO.HIGH) #如果是‘y’點亮led
if switch == 'n': #判斷讀取的資料是‘n’
GPIO.output(21,GPIO.LOW) #如果是‘n’熄滅led
time.sleep(0.1) #必要的延時
儲存檔案執行。
接下來我們將安卓手機藍芽開啟,然後搜尋裝置,將會搜尋到連線在樹莓派上的藍芽,點選它,輸入配對密碼後配對成功。然後開啟剛剛下載的“藍芽通訊.apk”安卓程式。開啟後如下圖1。點選“連線藍芽”按鈕,將會出現剛剛配對藍芽列表,然後選擇樹莓派藍芽,連線成功後,顯示介面如下圖2
圖一這時你就可以測試你的遠端無線開燈光燈按鈕了,觀察LED燈的變化吧。有興趣有條件的同學,可以拿兩個樹莓派和藍芽模組,一個做主,一個做從,讓們兩進行相互通訊。