tft每日頭條

 > 圖文

 > python寫windows藍牙

python寫windows藍牙

圖文 更新时间:2024-07-28 04:18:04

大家好,今天講解藍牙模塊的使用,以及通過uPyBoard來操作藍牙模塊并實現手機和uPyboard互動。

正在學習和使用uPyBoard開發的小夥伴可能一直會有一種遺憾,就是uPyBoard雖然可以使用microPython開發,而且已經帶有非常豐富的設備庫,但是,卻沒有無線連接功能,尤其是對于時下最流行的手機控制一切的玩法,是不是就無能為力了呢?NO,我承認有些開發闆天生具備無線功能,但沒有一款闆子可以包含所有你想到的功能。由于成本原因,功能越豐富的開發闆價格越高,而且會有很多功能一直都沒有機會使用到,這不免會造成浪費。因此,我們需要學會按照自身需要擴充開發闆的功能就可以了。

那麼,如何擴展功能呢?答案就是上次我們提到的通訊端口(接口),其中三大基礎串行通訊端口:UART, SPI, I2C可以包含絕大多數的外擴功能模塊。如之前已經接觸過的,16路舵機驅動模塊(I2C),OLED顯示屏模塊(SPI/I2C)等。而今天要擴展的藍牙模塊就需要使用上次講過的UART串口來連接了。

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)1

當uPyBoard擴展了藍牙模塊後,就可以通過手機的藍牙向uPyBoard闆發送命令,uPyBoard接收到命令後執行相應的動作。當然,手機上必須要有相應的APP程序。

當前,最常見的藍牙模塊是HC-05和HC-06:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)2

HC-05的藍牙模塊支持主/從模式,價格貴一些,HC-06的模塊隻支持從模式,價格稍微便宜些。所謂主模式和從模式,其實就是主模式可以主動搜索其他可見的藍牙模塊,并從中選取要連接的藍牙設備,而從模式隻能等待主模式的藍牙設備連接。雖然好像主模式功能更好些,但是對于我們嵌入式的應用,在沒有顯示和輸入的情況下,主模式是無法發揮其作用的,因此從模式才是最适合我們使用的工作模式,畢竟手機是可以在主模式下找到我們的設備并連接的。另外還有一點,HC-05模塊本身默認為主模式,要想改變模式非常麻煩。綜上所述,我這裡推薦便宜又好用的HC-06藍牙模塊。大家要注意看上面兩個模塊的區别,或在購買前向店主問清楚。

HC-06模塊隻有從方式,因此,接口連接也極為簡單:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)3

隻有4個引腳,RX,TX,GND, 5V,前兩個,我想大家應該知道是UART串口的收發引腳。不知道的可以看之前的UART串口使用教程。後兩個引腳就是電源引腳了,模塊是5V供電。

我們依然使用上次的實驗,實際上用藍牙模塊将上次實驗中的HC340串口闆替換掉即可:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)4

藍牙模塊HC-06的配置:

藍牙通訊是一種非常複雜的無線通訊協議,比之UART串口協議要複雜的多,因此,要想讓多個藍牙設備之間相互通訊其通訊參數也很多,同樣的,必須要讓大家都遵循同樣一種規則發送和接收訊息,才能保證相互之間能夠順利的交流。

藍牙模塊的設置也是通過UART串口發特殊的命令來實現的,這套特殊的設置命令被稱為AT指令集,這是一套被廣泛應用于通訊設備的指令集,其特點是以字符"AT"為開頭,以換行符為結尾的命令字符串。就像我們上次自定義的指令一樣。這樣的指令直接由藍牙模塊本身識别并處理,并不會通過藍牙向外部傳遞。所以,我們在應用時自定義的指令要避免和AT指令集相混淆。

藍牙模塊本身由比較多的設置命令,但所幸的是作為從機的HC-06的設置指令非常簡單,以下是HC-06的AT指令:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)5

可以看到,HC-06的設置指令其實隻有4條。HC-06使用UART串口和控制器通訊,默認波特率為9600bps(參見上次串口的使用教程)。如果想修改為其他速率,可使用相應的AT命令設置。

直接通過UART串口發"AT"命令,将收到"OK"作為回應,表明藍牙模塊和控制器的通訊正常。我們經常使用這條命令判斷藍牙模塊的連接是否正确,且能否正常工作。

在無線連接方面,藍牙需要一個識别名稱,在主機端的搜索中,可以被發現并識别。默認是HC-06。

另一方面,無線連接時,也需要密碼。藍牙上稱為PIN碼,是4為數字,默認為1234

手機APP準備:

在手機端,我們需要一個APP程序來發送自己定義的指令。這個程序應該由我們編制,但顯然編制手機APP程序已然超出教程的範圍。手機的軟件開發,是更加複雜的系統規範,需要讀者花費極大的耐心去學習。不過也由入門級和簡單的實現方案,以後有時間給大家介紹吧。今天,我們先使用現成的藍牙測試軟件。這類軟件不隻一種,可以在安卓手機的應用商店中搜索,我這裡用的是一個叫"藍牙串口"的小程序,試了幾個,覺得這個還可以。圖标是這個樣子的:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)6

uPyBoard連接實驗:

首先我們要先在microPython闆這邊将藍牙模塊HC-06連上,并能通過UART端口和其通訊,通過發送AT指令收到其回應,這樣才能确定uPyBoard和藍牙模塊HC-06的連接是成功的。

安照前面的連接圖,将藍牙模塊連接到uPyBaord闆上。連線時一定要仔細,加電前反複确認。确認連接無誤後,将uPyBoard連接到電腦,此時藍牙模塊HC-06也會上電,其上的LED燈快速閃動。

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)7

打開控制台軟件HexTerminal,在下方的輸入窗口複制粘貼如下代碼:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)8

看過上次教程(UART的使用)的朋友,應該能夠看懂。初始化UART1後,通過UART1向HC-06發送了AT命令字串。并等待1秒後,去檢查UART1收到的内容,我們可以從HexTarminal上面的窗口中看到已經收到回應的字符串:OK。截圖如下:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)9

這說明,uPyboard和HC-06模塊的連接正确且能夠正常通訊了。HC-06模塊的作用就是将UART發來的所有非AT命令的内容通過藍牙發送給與其配對的設備,而将藍牙接收的内容通過UART發送給uPyBoard。

我們可以進一步測試其他AT指令,用來設置HC-06。不過,最常用的無非是檢測藍牙模塊是否可用,修改藍牙設備名稱以及修改PIN碼。下面我寫了兩個功能函數用來實現檢測藍牙模塊是否可用和修改藍牙名稱,供大家參考:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)10

isATBleOK()用來檢測藍牙模塊是否連接正常且可用,依據的方法就是前面的直接發送AT指令并收到回應。所以,在系統上電後,使用藍牙模塊前需要調用此函數确認藍牙模塊的正常。否則後面的所有操作都是白瞎。

setATBleName()用來修改藍牙設備名稱,一般情況下不用修改,默認是HC-06。我這裡測試修改為MyBLE了。實驗結果如下:

python寫windows藍牙(實戰microPython10-藍牙模塊的使用)11

第一個True是isATBleOK()返回的,表面HC-06可用。下面的OKsetname是setATBleName()返回的,說明設備名稱修改成功。

(未完待續)

祝各位玩得愉快!請繼續關注:創客DIY樂園(MakerDIY-Park),您的關注是我前進的動力。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved