陳名芳
現在藍牙通信已經是非常成熟的無線通訊技術了,在手機、智能穿戴設備等產品中幾乎是標配了。正是因為如此,現在市面上已經有很多藍牙芯片了,這大大降低了藍牙技術的開發難度。
單片機要通過藍牙與手機實現無線通訊,方案成熟,要實現這一功能,需要涉及如下幾個方面:
▲單片機系統硬件電路的設計;
▲藍牙芯片硬件電路的設計;
▲單片機程序以及藍牙協議棧程序的編寫;
▲手機端APP應用軟件的編寫;
1.單片機/藍牙系統硬件電路的設計
這一部分要求所選用的單片機具有UART的片上資源,單片機要通過串口和藍牙芯片實現數據的交互,藍牙芯片將數據打包成符合藍牙標準的數據實現與手機的通信。單片機和藍牙的通信需要用到四根線:VCC,GND,TXD,RXD。
特別要注意的是單片機和藍牙要交叉連接。 如下圖所示為藍牙芯片QN9022的引腳分佈圖:
2.單片機程序及藍牙程序
單片機的程序需要實現串口通信,這一部分配置起來簡單。主要是藍牙部分,現在很多藍牙芯片都是數據透傳的,或者直接購買藍牙模塊,像這種模塊程序都是調好的,拿來直接用。
3.手機端APP的編程
對於Android系統而言,需要用到socket編程,其實就是讀取藍牙的數據流,然後根據uuid提取所需要的信息。對上位機軟件的編程,我不太專業,不敢多說。不過上位機這一部分也有成熟的解決方案,選用藍牙模塊時,廠家都會配套手機端的調試軟件,方便用戶調試。也可以下載藍牙串口調試助手進行調試。
玩轉嵌入式
第一,你說的單片機的藍牙是什麼概念咯。
現在基本上藍牙IC本身就是一塊單片機,比如TI的CC2540 就是一塊51內核的單片機。而且還帶定時器等外部資源,所以想開發智能燈泡什麼的就可以直接實現了。
第二,如果說你想用另外的MCU去使用藍牙與手機連接,那現在比較好用的就是藍牙串口。當然你可以直接使用藍牙協議棧編寫程序直接與手機通訊、
第三,手機端的APP支持,這個在你做測試的時候可以下載個藍牙助手之類的。可以實現藍牙透傳數據傳輸之類的就可以了。
個人建議直接網上買一隻藍牙串口模塊。然後使用串口與單片機通訊,買回來的模塊會配有詳細的AT指令說明書,告訴你怎麼操作這個模塊。
之後怎麼發揮看你自己了。
當然如果你想把東西做的足夠集成,產品化的話,建議還是研究下藍牙協議棧的使用方法。比如現在比較成熟的BLE協議棧。CC2540 CC2541系列。那樣就可以一顆IC搞定所有事情了
中國頂級科技評論人
本篇回答,前半部分簡單介紹一下,後半部分很詳細!歡迎大家關注:電氣電子視界
手機藍牙與單片機的通信實現方式如下。
- 使用藍牙轉串口模塊連接51單片機的 RX和TX引腳,這一步實現源端數據轉換;單片機在串口中斷服務函數里邊讀取藍牙模塊的指令。
- 手機內部進行app的程序設計,調用藍牙模塊並讀取數據,同時通過app往藍牙模塊發送數據給單片機。
安卓手機通過單片機與單片機通信
概述:手機端打開編寫的藍牙通信軟件,與單片機端藍牙串口模塊連接,而後,手機通過藍牙發送讀數據命令到單片機,單片機開始讀取傳感器信息。
將採集到的傳感器信息通過藍牙發送到手機端,手機端軟件接收到後顯示。
整體圖:
本項目設計四個部分
1.手機端軟件
2.單片機端編程
3.外設電路設計
4.手機與單片機通信
下面對四個部分進一步敘述
一:手機端軟件為安卓軟件,只需要編寫一個普通的藍牙串口調試使軟件即可。下邊是正常運行源碼中的部分代碼。
(1)藍牙連接代碼
(2)手機藍牙發送數據代碼
(3)手機藍牙接收數據代碼
二:單片機端
單片機採用Arduino開發版,因其簡單易學。
單片機斷的代碼比較簡單,是一些對應的傳感器採集數據代碼和串口通訊代碼。
三:外設焊接
外設有兩個傳感器,一個藍牙串口模塊。
藍牙串口模塊負責藍牙通信,傳感器負責採集信息。
四:手機與單片機通信
首先約定一個命令符,當單片機端接收到手機端發送的命令符時,即開始採集傳感器信息,將採集到的信息進行加工,然後傳給安卓手機,安卓手機接收數據後,隨機顯示出來。
2018.3.11
電氣電子視界