前言
正所謂做一個大項目一般都需要軟硬件的知識結合,當然了這也不一定,有些項目只是需要做一個系統,APP開發等這些。不過對於我想一般人都會遇到這種問題——用什麼方法來解決用軟件來實現控制硬件,實施數據傳輸。一般有人都會選擇使用APP來控制硬件方面的研究。不過今天的話我就先拋棄APP,先來講一下根據我網上查找了好久找到的另一種方法 —— 一種基於微信小程序和單片機BLE透傳的簡要解決方法。
因爲根據微信小程序發展的形勢來說還是挺火的,再者目前關於微信小程序在控制硬件方面的研究還非常少, 所以說這個方面研究還是挺不錯的。那麼何爲BLE透傳?
BLE透傳
BLE透傳即低功耗藍牙透明傳輸, 單片機發送數據給低功耗藍牙時, 不需要其他協議, 低功耗藍牙就可以將數據發送給其他藍牙接收設備, 實現單片機與微信小程序之間的通信,使用方便。
BLE透傳模塊選擇
目前的話,我覺得可以推薦一下HC-05/06藍牙模塊。因爲採用HC-05/06藍牙模塊進行數據透傳, 具有成本低、體積小、功耗低和收發靈敏度高等優點。使用時,BLE透傳模塊RXD引腳與單片機TXD引腳連接, TXD引腳與單片機RXD引腳連接, 實現系統的通信功能。下面是HC-05模塊與單片機配對方式。
**具體使用方法也可以在淘寶搜索HC-05模塊,有些商家也提供了資料。
資料下載
提取碼:9g8a
軟件部分
下面就簡單地說一下微信小程序與單片機的通信原理:
微信小程序內置了18個BLEBLE藍牙API接口, 通調用BLE藍牙API接口成功連接藍牙設備後, 可以通過Bluetoothsocket實現微信小程序與BLE藍牙的數據接收和發送。
在設計過程中中, 會使用到以下的接口:
1.openBluetoothAdapt 用於開啓和初始化藍牙;
2.getBluetoothAdaptState 用於檢查藍牙是否開啓;
3.startBluetoothDevicesDiscover 用於開始設備搜索並當發現一個設備後會觸發 4.onBlueDeviceFound 事件;
5. creatBLEConnection 用於搜索到設備後連接設備;
6.getBLEDeviceService 用於連接成功後根據目標服務ID找到指定的服務ID, 每一個服務都包含一組特徵值用來描述服務特性, 如是否可讀, 是否可寫, 是否開啓notify等,。
7. 利用 getBLEDeviceCharacteristics 獲取該特徵值值。
8.最終 onBLECharacteristicValueChange 用於監聽數據變化[4]。
微信小程序BLE藍牙API調用方法框圖如圖:
注意
iOS 微信客戶端 6.5.6 版本開始支持,Android 6.5.7 版本開始支持
藍牙適配器模塊生效週期爲調用 wx.openBluetoothAdapter 至調用 wx.closeBluetoothAdapter 或小程序被銷燬爲止。
在小程序藍牙適配器模塊生效期間,開發者才能夠正常調用藍牙相關的小程序 API,並收到藍牙模塊相關的事件回調。
注意
由於系統限制,Android 上獲取到的 deviceId 爲設備 MAC 地址,iOS 上則爲設備 uuid。因此 deviceId 不能硬編碼到代碼中。
目前不支持在開發者工具上進行藍牙功能的調試,需要使用真機才能正常調用小程序藍牙接口。
低功耗藍牙(BLE)注意事項
iOS 上對特徵值的 read、write、notify操作,由於系統需要獲取特徵值實例,傳入的 serviceId 與 characteristicId 必須由 wx.getBLEDeviceServices 與 wx.getBLEDeviceCharacteristics 中獲取到後才能使用。建議雙平臺統一在建立連接後先執行 wx.getBLEDeviceServices 與 wx.getBLEDeviceCharacteristics 後再進行與藍牙設備的數據交互。
方案結果
目前,已經滿足於項目上的功能實現。具體美化還需要繼續操作寫代碼。因爲本人已經從事於算法學習,因此呢,我就沒有再次更新了。效果如下:
登錄界面如下:
藍牙掃描連接界面:
功能選擇界面如下:
結束導語
**因爲項目中我還負責了神經網絡的人臉識別,所以這裏我就簡單地描述了實現方案和結果。最後還推薦大家一個藍牙模塊調試軟件:Android的APP——BLE調試
藍牙模塊本人使用的是點擊這裏
emm,對於這個方案的話,你們要是還是不太懂BLE數據傳送這個的話,我可以推薦你們去看一下這個:
當然了,如果大家對微信小程序開發不太懂得話,可以點擊下面鏈接瞭解瞭解一下:
如果有什麼問題的話,可以在評論區發表意見,大家共同學習一下。