基于手机和蓝牙的监控技术研究
2018-01-10魏锐斌吴超益毋茂盛
魏锐斌+吴超益+毋茂盛
摘 要:随着手机的普及和通信技术的发展,使用手机实现智能家居控制成为人们目前的研究热点。文中开发了一个手机App程序和对应的硬件电路板,实现了家居温湿度等数据的实时采集、显示以及电灯和门锁的智能化控制。
关键词:App;硬件电路板;蓝牙;智能家居
中图分类号:TP277 文献标识码:A 文章编号:2095-1302(2017)12-00-03
0 引 言
随着计算机技术和通信技术的发展,手机已成为人们生活中必不可少的工具,现在几乎人手一部甚至几部。蓝牙是一种短距离的无线通信技术,采用蓝牙方式传输数据,可以避免布线带来的麻烦,并节约成本,由于手机都带有蓝牙接口,因此手机的普及大大拓宽了蓝牙的应用领域[1,2]。例如,将手机应用到实时监控领域,手机通过蓝牙发送命令或接收传感器数据实现智能化控制。本文研究了通过手机控制家中电灯、门锁开关的技术。
1 系统总体设计与特点
1.1 系统总体设计
系统由Android端、后台数据统计以及硬件电路等组成,结构如图1所示。
1.2 系统特点
系统带有看门狗电路,可靠性高。当程序运行出问题时能自动重启,且上层App有断开重连的功能。系统还加入了环境监测模块,可实时显示家中环境的温湿度,为生活提供方便。App采用MVP设计模式,分为界面控制、逻辑控制和控制器,以简化程序设计。界面控制主要负责界面的更新;逻辑控制主要负责数据处理;控制器主要控制系统如何操作。采用这种设计模式可以方便在未来对系统功能进行增加、修改和完善,不用对以前的代码进行过多的改动。
2 系统硬件设计
系统硬件主要包括STC15F2K60S2单片机,蓝牙模块,温湿度传感器,光敏模块,红外控制模块,火焰报警模块等。
2.1 控制器模块
控制器选用STC15F2K60S2,该单片机具有两个串行口,可以方便下载程序并通过蓝牙串口通讯,简化电路的设计。STC15F2K60S2单片机自带E2PROM,可以编程,具有10的AD转换和8个转换通道,机器周期为1个时钟周期,执行速度快,且内置复位电路。该芯片具有使用方便,调用简单等特点。
2.2 传感器模块
传感器模块主要包括温湿度传感器DH11、光敏电阻5528、火焰传感器等。温湿度传感器DH11通过单总线接口和单片机相连,单总线通过一条线进行数据传送[3],与CPU连接接口简单。上层接收处理蓝牙发送的数据,完成对周围环境的监测和数据获取。DH11是集温湿度采集于一体的复合型传感器,极大地提高了数据转换的效率。5528光敏电阻在与同类型电阻的对比下拥有较好的参数,在考虑低成本、低功耗的情况下使用这款电阻具有一定的优势。
传感器模块电路如图2所示。
2.3 蓝牙模块
蓝牙模块采用HC-08低功耗模块,该模块具有尺寸小、成本低等特点,采用蓝牙4.0协议与自适应跳频(AFH)技术,以确保低功耗蓝牙在“嘈杂”射频环境中稳定地传输。与很多蓝牙技术、无线LAN、IEE802.15.4等无线技术一样使用无需认证许可的2.4 GHz工业科学医疗(ISM)频带,通过与STC15F2K60S2的串口相连接,实现蓝牙与单片机的通讯。由于STC15F2K60S2具有双串口,不会与串口通讯互相干扰,因此,能够保证在串口通讯的同时完成蓝牙通讯。电路图如图3所示。
2.4 继电器智能家居模块
该模块主要由继电器、电插锁、灯泡以及报警电路组成。STC15F2K60S2控制繼电器的开关实现对智能家居的控制,通过上层App发送命令给STC15F2K60S2单片机,STC15F2K60S2发出的控制信号经ULN2003驱动连接到继电器实现开关控制。ULN2003的输出连接2个继电器和1个报警蜂鸣器。
(1)火焰报警电路。当火焰传感器检测到有火焰出现时,会向单片机申请中断,在单片机执行中断服务程序时通过蜂鸣器报警,同时通过蓝牙向手机发送报警信号,手机发出报警信息。
(2)开锁电路。系统采用YGS-600-S5电插锁,用继电器控制12 V开锁电源实现开锁。
(3)电灯控制电路。用继电器控制220 V电源,当继电器吸合时,接通电源,实现开灯操作。电灯控制电路如图4所示。
3 系统软件设计
Android端主要通过蓝牙模块向硬件发送各路命令或采集数据到手机显示,通过设置选项允许手机端把数据发送到后台,通过后台生成统计表格。后台数据主要使用javaEE,将Android手机端的数据上传到后台,存入数据库,然后生成统计表;上层Android部分主要分为5个模块,分别是注册模块、登录模块,蓝牙扫描模块,蓝牙连接模块和蓝牙控制模块,基本流程如图5所示。
3.1 用户登录模块
用户登录模块主要通过登录获得远程数据库之前连接过的蓝牙设备,减少蓝牙扫描模块的时间,提高效率。登录后会获得远程连接的数据库中该用户曾连接过的蓝牙设备名称和UUID,在进入蓝牙模块后直接加载,减少蓝牙设备扫描的时间,方便用户直接连接已连接过的蓝牙设备。登录界面如图6所示。
3.2 用户注册模块
用户注册模块主要负责新用户,使用邮箱方式来完成注册,通过HTTP协议与后台连接,并写入后台数据库中。用户注册界面如图7所示。
3.3 蓝牙扫描模块
蓝牙扫描模块用于扫描周围的低功耗蓝牙,通过逻辑去除普通的蓝牙设备,减少非必要的蓝牙设备加入列表。同时使用最新的API,通过回调函数扫描设备,加快扫描速度。使用RecyclerView控件,大大减少了列表加载所需的内存并优化显示。核心代码如下:endprint
ScanCallback mcallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType,ScanResult result) {
super.onScanResult(callbackType, result);
for (int i = 0;
i if(result.getDevice().getAddress().equals (ScanBean.getScanBean().getBlelist().get(i). getDevice().getAddress())) {return; } } iscanModel.setResult(result); //扫描得到的蓝牙设备加入列表 refresh();/更新列表 }} 扫描模块运行界面如图8所示。 3.4 蓝牙连接模块 蓝牙连接模块主要通过Android Service后台进行连接,不会干扰前台的运行。使用谷歌提供的专为低功耗蓝牙连接与通讯设计的API,代替传统的Socker通信。通过回调函数连接低功耗蓝牙设备进行通讯,减少了建立Socker的时间。核心代码如下: BluetoothGattCallback Callback = new BluetoothGattCallback () { //蓝牙连接状态回调函数 @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { super.onConnectionStateChange(gatt, status, newState); if (newState == 2) { gatt.discoverServices();} } //蓝牙服务发现函数 @Override public void onServicesDiscovered(final BluetoothGatt gatt, int status) { super.onServicesDiscovered(gatt, status); if (BluetoothGatt.GATT_SUCCESS == status) { for (int i = 0; i < bluetoothGattServiceList.size(); i++) { if(bluetoothGattServiceList.get(i).getUuid().toString().equals(BLE_SERVICE_UUID)) { bluetoothGattCharacteristics = bluetoothGattServiceList.get(i).getCharacteristics(); for (int j=0; j< bluetoothGattCharacteristics.size(); j++) { if(bluetoothGattCharacteristics.get (j).getUuid ().toString().equals(BLE_CONNECT_UUID)) { bluetoothGattCharacteristic = bluetoothGattCharacteristics.get(j); Gatt.setCharacteristicNotification(bluetoothGattCharacteristic, true);} } } } } } //蓝牙数据接收回调函数 @Override public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { super.onCharacteristicChanged(gatt, characteristic); if (ble_callBack != null) { ble_callBack.GetData(characteristic.getStringValue(0)) } } } 3.5 藍牙控制模块 蓝牙控制模块主要负责蓝牙设备的通信,进行数据读、写操作,同时对下层发来的警告进行反馈。该模块由两个界面组成,分别为环境监测、智能家居控制界面。环境监测页面主要完收集温湿度以及光敏数据,设置温湿度上下限等操作。智能家居控制相对简单,主要负责灯泡的开关和锁的开启。主要通讯通过服务完成。控制界面如图9所示。 4 结 语 本项目开发了一个基于Android系统的App程序以及相关硬件控制单元模块,分别实现了家中温、湿度等数据的实时采集以及对家中灯泡和锁的智能化控制。当检测到有火焰时,将报警信息上传给手机进行声音和手机双重报警。同时,实现了通过手机开关灯的功能,为生活提供了很大的方便。回家时通过手机也可打开家门,而且门锁安装在室内,起到了防盗作用。系统经过试运行,效果良好,应用前景广阔。 参考文献 [1] 常敏,梅晓敏,崔永进,等.基于BLE与Android的牧场温湿度智能监控系统设计[J].通信电源技术,2015 (5):134-137. [2] 韩丹.BLE技术在智能家居中的应用[D]. 青岛: 青岛科技大学, 2015. [3] 毋茂盛. 单片机原理与开发[M]. 北京:高等教育出版社, 2015. [4] 张琦,穆远威,刘美娟.基于STC15F2K60S2单片机的智能管理教室系统[J].物联网技术,2017,7(6):85-86. [5]白志帅,穆士留,张峰,等.基于BLE技术的智能门禁系统[J].自动化与仪表,2017,32(4):67-71. [6]夏盼盼.BLE蓝牙技术在智能门锁的应用[J].科技广场,2016(7):84-87. [7]刘康,林春景,熊宇.智能母线温湿度监控系统设计[J].科技资讯,2016,14(31):20-22. [8] 汪月鹏.基于Android平台上BLE的智能家居控制系统设计与实现[J].物联网技术,2016,6(3):81-82.