劉佳


摘要:該文論述了Android手機監(jiān)控智能電池電芯的電壓、電流、溫度、充/放電狀態(tài)等特性的實現過程。Android手機通過藍牙協(xié)議與智能電池JDY-32藍牙模塊通信,取代傳統(tǒng)有線串口,實現對智能電池的無線監(jiān)控。通過實際的工作環(huán)境測試表明,該系統(tǒng)運行流暢、操作簡單,數據傳輸準確及時。
關鍵詞:電池監(jiān)控;藍牙;串口;Android
中圖分類號:TP311? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)02-0050-02
1 研究背景及內容
對智能電池特性的實時監(jiān)控,一般采用串口連接線將電池連接到數據終端,通過串口協(xié)議傳輸數據,監(jiān)控電池狀態(tài)[1]。這種監(jiān)控方式實現簡單、技術成熟、應用廣泛。但有線連接限制了監(jiān)控人員的活動范圍,增加了設備的重量,不適合在移動場景下使用。
針對有線模式的各種不足,本文設計并實現了無線監(jiān)控系統(tǒng)。本系統(tǒng)將智能電池終端傳感器收集的電池電壓、電流、溫度、電池充/放電程度等狀態(tài)信息通過藍牙傳送給手機客戶端。監(jiān)控人員通過簡單的操作就可以在Android客戶端上查看電池的實時狀態(tài)信息。本文主要介紹Android客戶端的設計與實現過程。
2 藍牙模塊簡介及選用
藍牙分為低功耗藍牙和經典藍牙。籠統(tǒng)地講可將藍牙3.0及以下版本歸為傳統(tǒng)藍牙,藍牙4.0及以上歸為低功耗藍牙,即BLE。與經典藍牙相比,低功耗藍牙傳輸距離更遠,數據發(fā)送時延更低,發(fā)送速率更快[2]。低功耗藍牙最大的特點就是能耗極低,一顆紐扣電池就能維持其穩(wěn)定工作數月甚至更久[3],此外,低功耗藍牙還具有成本低,兼容性強等優(yōu)點[4]。因此本系統(tǒng)選擇了JDY-32低功耗藍牙作為智能電池藍牙模塊。
3 系統(tǒng)設計
本系統(tǒng)由硬件和軟件兩部分組成。硬件部分由智能電池組、傳感器、單片機、JDY-32藍牙模塊和Android手機組成。軟件部分由智能電池監(jiān)控客戶端組成。系統(tǒng)整體組成如圖1所示。通過傳感器、電流電壓調理電路及單片機將硬件系統(tǒng)的各個參數進行采集和轉換,通過無線藍牙協(xié)議傳送給Android端,Android端對數據進行處理和顯示。
3.1 Android客戶端功能設計
本文使用Android Studio作為開發(fā)工具,主要完成Android手機監(jiān)控客戶端的設計與實現。要實現Android手機與BLE藍牙通信,依賴于AndroidSDK中的BluetoothAdapter,BluetoothDevice,BluetoothSocket等API。因BLE藍牙技術只能在API18及以上版本才能使用,故本App要在Android4.3及以上版本的手機上才能正常運行[5]。App主要由四大功能模塊組成:藍牙掃碼連接模塊,電池監(jiān)控模塊,報警模塊和預留擴展模塊(BMS)。
藍牙掃描連接模塊負責掃描藍牙設備,并與藍牙設備建立連接。電池監(jiān)控模塊負責顯示當前電池參數,實時的監(jiān)控電池狀態(tài)。報警模塊能及時對電池組的電壓,電流,溫度,充/放電狀態(tài)的異常情況做出報警,用紅色醒目加粗字體顯示,同時響起報警鈴聲,提醒使用者排查故障,及時做出相應的處理。
3.2 Android客戶端UI設計
為了提高UI設計的靈活性,使App可以適應于不同的屏幕尺寸,本系統(tǒng)采用在Activity中嵌入 Fragment的方式進行布局。在Fragment中通過自定義ViewPager實現4個界面。通過RadioGroup設計底部四個菜單,監(jiān)聽RadioGroup的選中事件,對頁面進行切換。自定義ContentAdapter繼承于PagerAdapter用來向ViewPager中填充數據。通過上述設計可以統(tǒng)一界面的風格,提升交互的便捷性。
4 系統(tǒng)實現
對于Android手機與BLE的連接及數據傳輸過程,許多研究者做了大量的工作[6],目前技術已經非常成熟,不再贅述。本文主要對數據的封裝與解析,藍牙配對與連接,實時監(jiān)控,報警功能的實現進行說明。
4.1 數據封裝與解析
為了能讓智能電池單片機識別Android端發(fā)送的指令,要將16進制指令字符串轉換為byte數組后再發(fā)送。新建hexStr2Bytes(String src)函數返回值類型為byte[],首先使用trim()和toUpperCase()函數對字符串進行規(guī)范化處理,然后通過相關函數將字符串轉換為byte[]返回。同理,單片機通過藍牙模塊返回的數據為byte數組,在解析時首先將byte數組轉換為16進制字符串,再根據解析規(guī)則從16進制字符串中解析出相應的電壓、電流、溫度等數據。
4.2 藍牙設備配對與連接
新建BasePager頁面加載base_pager.xml作為所有頁面的父類,在BasePager中實現標題,并創(chuàng)建FrameLayout作為子頁面的容器。新建Buletooth-Pager類繼承自BasePager加載pager_buletooth.xml作為藍牙掃描與連接頁面。Android端與智能電池藍牙連接實現過程如下。
1)申請藍牙權限
在AndroidManifest.xml中申請BLUETOOTH_ADMIN和BLUETOOTH權限,否則無法打開和使用藍牙功能。
2)掃描當前存在的藍牙
使用BluetoothAdapter中的startDiscovery()進行掃描,發(fā)現新設備時發(fā)出BluetoothDevice.ACTION_FOUND廣播。創(chuàng)建ListView用來顯示掃描到的藍牙列表。在廣播接收器中接收到ACTION_FOUND廣播后,將掃描到的藍牙名稱、Mac地址等設備信息加入ListView中,持續(xù)檢測設備直到發(fā)現附件的所有藍牙設備。
3)連接藍牙
為ListView的每一個Item添加點擊事件,用以監(jiān)聽用戶的動作。用戶通過點擊Item選擇要連接的藍牙設備,本應用選擇智能電池藍牙模塊名稱為JDY-32,通過device.createRfcommSocketToServiceRecord(UUID)獲取BluetoothSocket對象,其中UUID代表通用唯一識別碼,對于藍牙設備而言,每個服務都有通用、獨立、唯一的UUID與之對應。本應用使用藍牙串口服務,對應UUID = ‘{00001101-0000-1000-8000-00805F9B34FB},最后通過BluetoothSocket中的connect()方法連接設備,首次連接時需要輸入默認的配對密碼,JDY-32藍牙模塊對應的配對密碼為“1234”,配對成功后藍牙設備將被保存在手機藍牙配對列表中,后續(xù)可直接連接無須輸入密碼。
4.3 實時監(jiān)測的實現
新建MonitorPager類繼承自BasePager加載pager- monitor.xml作為實時監(jiān)測頁面。為了在接收數據時不阻塞主線程,本系統(tǒng)通過Runnable機制新建子線程處理藍牙數據的接收事件,并將子線程設置為高優(yōu)先級,保證偵聽的連續(xù)性、實時性。子線程接收到新消息后,通過Handler機制通知主線程更新監(jiān)控界面。Android端每隔1秒發(fā)送一次請求指令,監(jiān)控界面每隔1秒刷新一次。
4.4 報警功能的實現
新建AlarmPager類繼承自BasePager加載pager- alarm.xml作為報警列表頁面。實現調用手機震動過程如下。在AndroidManifest.xml文件中申請"android.permission.VIBRATE"權限。通過activity.getSystemService(Context.VIBRATOR_SERVICE)獲取Vibrator對象,再通過long[] patter = {1000, 1000, 2000, 50};vibrator.vibrate(patter, 0);設置震動時間。vibrate函數的第二參數表示從哪里開始循環(huán),0表示這個數組在第一次循環(huán)完之后會從下標0開始循環(huán)到最后。
5 測試與總結
本測試使用魅族pro6s手機作為Android端,智能電池端已焊接好JDY-32藍牙模塊。測試了包括,藍牙掃描,藍牙連接,實時監(jiān)控,報警等所有功能。整個測試過程App運行流暢,藍牙連接正常,數據獲取、轉換、顯示正常,報警功能正常。實現效果如圖2所示。
本文很好地實現了智能電池無線監(jiān)測系統(tǒng),解決了傳統(tǒng)有線監(jiān)控方式的諸多不便,為智能電池的監(jiān)控提供了一種更加可靠、便捷的方案,具有一定的實用意義。BLE低功耗藍牙是大勢所趨,對于小型智能產品來說,是一種很好的通信方式。隨著Android系統(tǒng)的不斷迭代發(fā)展,對BLE藍牙的支持也會更加完善,基于BLE藍牙開發(fā)的App前景也將會更加廣闊。
參考文獻:
[1] 周賀松.一種基于物聯(lián)網技術的多功能采集系統(tǒng)[J].物聯(lián)網技術,2020,10(5):46-48,54.
[2] Shaikh Shahriar Hassan,Soumik Das Bibon,MdShohrab Hossain,et al. Security threats in Bluetooth technology[J]. Computers & Security,2018,74:308-322.
[3] 陳冬云.淺談藍牙4.0“助力”物聯(lián)網的發(fā)展[J].教師,2014(17):126.
[4] Robin Heydon.低功耗藍牙開發(fā)權威指南[M]. 陳燦峰,劉嘉,譯.北京:機械工業(yè)出版社,2014.
[5] 萬燕,李麗麗.基于Android與BLE的藍牙通信系統(tǒng)的實現[J].科技創(chuàng)新與應用,2018(16):15-17.
[6] 熊小軍,萬輝勇,陳泓屹.基于Android的低功耗藍牙通訊研究與實現[J].科技廣場,2015(7):122-127.
【通聯(lián)編輯:代影】