吳燎
摘要:目的:實現(xiàn)在移動端通過微信小程序控制石墨烯加熱與停止,并且通過溫度傳感器返回溫度數(shù)據(jù)顯示在微信小程序中,為微信小程序控制硬件設備提供參考。方法:通過研究小程序開發(fā)文檔,調用微信小程序的藍牙接口,獲取服務id,發(fā)送指令與接收數(shù)據(jù),控制單片機。結果:通過微信小程序可以發(fā)送指令控制石墨烯的加熱溫度和加熱時間以及停止加熱,并且動態(tài)顯示單片機的溫度。結論:通過微信小程序成功地實現(xiàn)了通過藍牙連接設備,發(fā)送指令與接收數(shù)據(jù)。小程序可以通過調用手機的藍牙傳感器實現(xiàn)傳統(tǒng)app的藍牙功能。
關鍵詞:微信小程序;藍牙;單片機
一、前言
單片機是廣大在校大學生的必修課之一,也是大多數(shù)大學生的畢業(yè)設計作品的首選項,還有許多現(xiàn)代家電的嵌入式開發(fā)也離不開單片機。現(xiàn)有一石墨烯控溫作品,集成藍牙模塊,石墨烯加熱模塊,溫度傳感模塊,實現(xiàn)了加熱、停止和控制溫度功能。其溫度的加熱、停止和時間的控制需要用一臺擁有藍牙的設備來發(fā)送指令控制,傳統(tǒng)指令發(fā)送只能使用特定的軟件終端來控制,如果需要實現(xiàn)個性化的控制,則需要自己重新制作終端軟件。現(xiàn)在微信小程序越來越火,其小而美的特點使得其成為開發(fā)軟件的首選項。如何利用小程序開發(fā)一款屬于自己特有的APP,實現(xiàn)小程序與硬件設備交互,發(fā)送指令與接收數(shù)據(jù)成為了當下待解決的問題。對此,此研究利用微信小程序實現(xiàn)了發(fā)送指令、控制石墨烯的加熱時間和溫度,并且可以發(fā)送指令停止加熱。
二、相關技術簡介
1.單片機相關。此系統(tǒng)主要由藍牙模塊、石墨烯模塊、溫度傳感器模塊、最小系統(tǒng)構成。藍牙模塊實現(xiàn)單片機和上行軟件的連接和數(shù)據(jù)傳輸功能。溫度傳感器實現(xiàn)了檢測溫度提供數(shù)據(jù)功能。石墨烯模塊實現(xiàn)了加熱功能,最小系統(tǒng)實現(xiàn)了計算和邏輯功能。藍牙模塊使用之前首先要進行調試與配置,配置名稱、密碼和波特率。接著,燒錄程序到單片機之中,藍牙模塊將單片機串口發(fā)送的數(shù)據(jù)向連接的藍牙設備發(fā)送,藍牙設備通過串口向單片機發(fā)送指令。單片機的程序設定,發(fā)送指令為四位數(shù)字,前兩位數(shù)字代表加熱的溫度,用于控制石墨烯加熱芯片的溫度,后兩位數(shù)字代表加熱的時間。如“6005”代表加熱60°,加熱時間為5分鐘。返回的數(shù)字為當前傳感器檢測的溫度。如“23”為當前溫度是23°。
2.微信小程序。微信小程序是當下軟件開發(fā)的熱點,其具有輕量的特點,小程序的大小往往只有幾M,相比傳統(tǒng)APP需要下載幾十M的安裝包,其對流量的需求很低。其次,小程序具有免安裝的特點。傳統(tǒng)的APP需要下載安裝包,下載安裝,軟件常駐系統(tǒng)磁盤,占用了空間。微信小程序用完即走,無需安裝,不占用手機存儲空間。最后小程序還有巨大用于人群,小程序寄生于微信,其龐大的用戶數(shù)量使得小程序擁有良好的寄生環(huán)境。大量的潛在用戶只需掃碼或者搜索便可輕松使用。
三、微信小程序中功能的實現(xiàn)。
1.單片機連接藍牙設備。在使用小程序發(fā)送命令和接收數(shù)據(jù)之前首先要聯(lián)通單片機和藍牙設備[1]。在聯(lián)通之前首先判斷本機的藍牙是否打開[2](wx.getBluetoothAdapterState()),如果藍牙沒有打開則給出提示,打開則開始搜索設備(wx.startBluetoothDevicesDiscovery()),如果搜索成功則會返回所有藍牙設備的列表,包括藍牙的名字,設備id等信息。最后便是連接設備,獲取目標設備的id,通過wx.createBLEConnection()方法連接設備。
2.獲取藍牙服務和特征數(shù)據(jù)。小程序指令的發(fā)送和數(shù)據(jù)的接收是不同的服務,因此首先要獲取藍牙的服務(wx.getBLEDeviceServices())。服務列表中中包括接收數(shù)據(jù)的服務和發(fā)送指令的服務。每個服務中包含了特征數(shù)據(jù),使用wx.getBLEDeviceCharacteristics()分別獲取接收的數(shù)據(jù)特征值和發(fā)送的指令特征值。
3.接收數(shù)據(jù)。在接收數(shù)據(jù)之前首先要開啟監(jiān)聽機制。如果藍牙的數(shù)據(jù)改變或更新就接收數(shù)據(jù),開始監(jiān)聽機制調用方法wx.notifyBLECharac teristicValueChange(),開啟監(jiān)聽之后便可以接收變化的數(shù)據(jù),onBLEConnectionStateChange()方法在特征值變化時調用,利用此方法接收藍牙更新的數(shù)據(jù)。
4.發(fā)送指令。發(fā)送命令的前提是要先獲取發(fā)送1藍牙服務和特征值,在獲取了數(shù)據(jù)之后,利用wx.write BLECharacteristicValue()方法將特征值寫入藍牙設備,但是,此方法必須要設備支持write服務才能使用,不支持寫入數(shù)據(jù)的藍牙不能調用此方法。此外,該方法傳入的數(shù)值必須為二進制,而寫入的命令為字符串類型變量,因此要先轉化為二進制變量再傳入,可使用var dataView=new Uint8Array()聲明無符號整型數(shù)組,再將每一個字符串的unicode編碼存入數(shù)組實現(xiàn)二進制化,最終寫入命令實現(xiàn)溫度的控制效果。
四、結語
通過微信小程序調用藍牙設備的接口,實現(xiàn)了獲取所有藍牙服務,獲取藍牙數(shù)據(jù)的特征值,以及監(jiān)聽特征值變化,寫入特征值等功能??梢宰龅浇邮諉纹l(fā)送的溫度數(shù)據(jù),可以將字符串命令轉化為二進制數(shù)據(jù)發(fā)送至單片機,控制單片機的加熱溫度和加熱時間?;緦崿F(xiàn)了與藍牙設備的交互功能,此研究為單片機等嵌入式設備的上行控制軟件開發(fā)提供了一個實例,利用微信小程序與單片機的交互是完全可以實現(xiàn)的。希望此研究能給在校大學生做單片機畢業(yè)設計以及相關開發(fā)人員帶來一些思路,同時希望能微信的接口能繼續(xù)擴展,實現(xiàn)更加復雜的藍牙交互功能。
參考文獻
[1]葛偲涵,劉毅,陳健.BLE技術在智能公寓門鎖微信小程序中的開發(fā)與實現(xiàn)[J].工業(yè)控制計算機,2018,v.31(06):115 -116+119.
[2]微信小程序開發(fā)文檔