基于Android的智能电池无线监控系统

2021-03-24 11:16刘佳
电脑知识与技术 2021年2期
关键词:蓝牙串口

刘佳

摘要:该文论述了Android手机监控智能电池电芯的电压、电流、温度、充/放电状态等特性的实现过程。Android手机通过蓝牙协议与智能电池JDY-32藍牙模块通信,取代传统有线串口,实现对智能电池的无线监控。通过实际的工作环境测试表明,该系统运行流畅、操作简单,数据传输准确及时。

关键词:电池监控;蓝牙;串口;Android

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2021)02-0050-02

1 研究背景及内容

对智能电池特性的实时监控,一般采用串口连接线将电池连接到数据终端,通过串口协议传输数据,监控电池状态[1]。这种监控方式实现简单、技术成熟、应用广泛。但有线连接限制了监控人员的活动范围,增加了设备的重量,不适合在移动场景下使用。

针对有线模式的各种不足,本文设计并实现了无线监控系统。本系统将智能电池终端传感器收集的电池电压、电流、温度、电池充/放电程度等状态信息通过蓝牙传送给手机客户端。监控人员通过简单的操作就可以在Android客户端上查看电池的实时状态信息。本文主要介绍Android客户端的设计与实现过程。

2 蓝牙模块简介及选用

蓝牙分为低功耗蓝牙和经典蓝牙。笼统地讲可将蓝牙3.0及以下版本归为传统蓝牙,蓝牙4.0及以上归为低功耗蓝牙,即BLE。与经典蓝牙相比,低功耗蓝牙传输距离更远,数据发送时延更低,发送速率更快[2]。低功耗蓝牙最大的特点就是能耗极低,一颗纽扣电池就能维持其稳定工作数月甚至更久[3],此外,低功耗蓝牙还具有成本低,兼容性强等优点[4]。因此本系统选择了JDY-32低功耗蓝牙作为智能电池蓝牙模块。

3 系统设计

本系统由硬件和软件两部分组成。硬件部分由智能电池组、传感器、单片机、JDY-32蓝牙模块和Android手机组成。软件部分由智能电池监控客户端组成。系统整体组成如图1所示。通过传感器、电流电压调理电路及单片机将硬件系统的各个参数进行采集和转换,通过无线蓝牙协议传送给Android端,Android端对数据进行处理和显示。

3.1 Android客户端功能设计

本文使用Android Studio作为开发工具,主要完成Android手机监控客户端的设计与实现。要实现Android手机与BLE蓝牙通信,依赖于AndroidSDK中的BluetoothAdapter,BluetoothDevice,BluetoothSocket等API。因BLE蓝牙技术只能在API18及以上版本才能使用,故本App要在Android4.3及以上版本的手机上才能正常运行[5]。App主要由四大功能模块组成:蓝牙扫码连接模块,电池监控模块,报警模块和预留扩展模块(BMS)。

蓝牙扫描连接模块负责扫描蓝牙设备,并与蓝牙设备建立连接。电池监控模块负责显示当前电池参数,实时的监控电池状态。报警模块能及时对电池组的电压,电流,温度,充/放电状态的异常情况做出报警,用红色醒目加粗字体显示,同时响起报警铃声,提醒使用者排查故障,及时做出相应的处理。

3.2 Android客户端UI设计

为了提高UI设计的灵活性,使App可以适应于不同的屏幕尺寸,本系统采用在Activity中嵌入 Fragment的方式进行布局。在Fragment中通过自定义ViewPager实现4个界面。通过RadioGroup设计底部四个菜单,监听RadioGroup的选中事件,对页面进行切换。自定义ContentAdapter继承于PagerAdapter用来向ViewPager中填充数据。通过上述设计可以统一界面的风格,提升交互的便捷性。

4 系统实现

对于Android手机与BLE的连接及数据传输过程,许多研究者做了大量的工作[6],目前技术已经非常成熟,不再赘述。本文主要对数据的封装与解析,蓝牙配对与连接,实时监控,报警功能的实现进行说明。

4.1 数据封装与解析

为了能让智能电池单片机识别Android端发送的指令,要将16进制指令字符串转换为byte数组后再发送。新建hexStr2Bytes(String src)函数返回值类型为byte[],首先使用trim()和toUpperCase()函数对字符串进行规范化处理,然后通过相关函数将字符串转换为byte[]返回。同理,单片机通过蓝牙模块返回的数据为byte数组,在解析时首先将byte数组转换为16进制字符串,再根据解析规则从16进制字符串中解析出相应的电压、电流、温度等数据。

4.2 蓝牙设备配对与连接

新建BasePager页面加载base_pager.xml作为所有页面的父类,在BasePager中实现标题,并创建FrameLayout作为子页面的容器。新建Buletooth-Pager类继承自BasePager加载pager_buletooth.xml作为蓝牙扫描与连接页面。Android端与智能电池蓝牙连接实现过程如下。

1)申请蓝牙权限

在AndroidManifest.xml中申请BLUETOOTH_ADMIN和BLUETOOTH权限,否则无法打开和使用蓝牙功能。

2)扫描当前存在的蓝牙

使用BluetoothAdapter中的startDiscovery()进行扫描,发现新设备时发出BluetoothDevice.ACTION_FOUND广播。创建ListView用来显示扫描到的蓝牙列表。在广播接收器中接收到ACTION_FOUND广播后,将扫描到的蓝牙名称、Mac地址等设备信息加入ListView中,持续检测设备直到发现附件的所有蓝牙设备。

3)连接蓝牙

为ListView的每一个Item添加点击事件,用以监听用户的动作。用户通过点击Item选择要连接的蓝牙设备,本应用选择智能电池蓝牙模块名称为JDY-32,通过device.createRfcommSocketToServiceRecord(UUID)获取BluetoothSocket对象,其中UUID代表通用唯一识别码,对于蓝牙设备而言,每个服务都有通用、独立、唯一的UUID与之对应。本应用使用蓝牙串口服务,对应UUID = ‘{00001101-0000-1000-8000-00805F9B34FB},最后通过BluetoothSocket中的connect()方法连接设备,首次连接时需要输入默认的配对密码,JDY-32蓝牙模块对应的配对密码为“1234”,配对成功后蓝牙设备将被保存在手机蓝牙配对列表中,后续可直接连接无须输入密码。

4.3 实时监测的实现

新建MonitorPager类继承自BasePager加载pager- monitor.xml作为实时监测页面。为了在接收数据时不阻塞主线程,本系统通过Runnable机制新建子线程处理蓝牙数据的接收事件,并将子线程设置为高优先级,保证侦听的连续性、实时性。子线程接收到新消息后,通过Handler机制通知主线程更新监控界面。Android端每隔1秒发送一次请求指令,监控界面每隔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函数的第二参数表示从哪里开始循环,0表示这个数组在第一次循环完之后会从下标0开始循环到最后。

5 测试与总结

本测试使用魅族pro6s手机作为Android端,智能电池端已焊接好JDY-32蓝牙模块。测试了包括,蓝牙扫描,蓝牙连接,实时监控,报警等所有功能。整个测试过程App运行流畅,蓝牙连接正常,数据获取、转换、显示正常,报警功能正常。实现效果如图2所示。

本文很好地实现了智能电池无线监测系统,解决了传统有线监控方式的诸多不便,为智能电池的监控提供了一种更加可靠、便捷的方案,具有一定的实用意义。BLE低功耗蓝牙是大势所趋,对于小型智能产品来说,是一種很好的通信方式。随着Android系统的不断迭代发展,对BLE蓝牙的支持也会更加完善,基于BLE蓝牙开发的App前景也将会更加广阔。

参考文献:

[1] 周贺松.一种基于物联网技术的多功能采集系统[J].物联网技术,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“助力”物联网的发展[J].教师,2014(17):126.

[4] Robin Heydon.低功耗蓝牙开发权威指南[M]. 陈灿峰,刘嘉,译.北京:机械工业出版社,2014.

[5] 万燕,李丽丽.基于Android与BLE的蓝牙通信系统的实现[J].科技创新与应用,2018(16):15-17.

[6] 熊小军,万辉勇,陈泓屹.基于Android的低功耗蓝牙通讯研究与实现[J].科技广场,2015(7):122-127.

【通联编辑:代影】

猜你喜欢
蓝牙串口
浅谈AB PLC串口跟RFID传感器的通讯应用
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
紧急:蓝牙指尖陀螺自燃!安全隐患频出
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于并行控制的FPGA多串口拓展实现