基于AVR单片机防盗报警装置的设计与实现
2018-06-11任合,卢鑫
任 合,卢 鑫
(哈尔滨工业大学电子信息工程学院,黑龙江哈尔滨150001)
无论社会发展如何进步,偷盗行为不可避免。车站、机场短暂离开,贵重物品时刻随身携带极不方便。又例如目前大学校园大都是开放式管理,笔记本电脑丢失现象也时有发生。如果不慎遗失,除了本身的经济损失外,其内部的数据也存在被访问或删改的风险。许多同学在短暂离开教室去食堂用餐的过程中,提心吊胆害怕被盗,或为了防止被盗事件发生而不得不随身携带,给学习生活带来了很大不便。
目前市面上防盗产品品种多样,最基本的机械锁,在发生偷盗后只需损毁锁头本身即可达到目的;手机防盗大多采用指纹、图形、数字等解码方式,且偷盗或遗失行为已经发生;车辆、家庭门锁等防盗系统与本系统属于不同的应用范畴。本系统更适合应用于稍许离开一定距离而不必将一些贵重物品随身携带的场景,意在有偷盗行为不幸发生的过程中及时发现,避免偷盗事件发生。目前,采用嵌入式防盗系统设计的防盗产品具有体积小功耗低的特点,受到电子设计爱好者的追捧[1-5]。文献[1]中也是一种基于单片机系统的嵌入式防盗系统设计,但所选用单片机型号与本文不同,文章通过读取防盗器的蓝牙RSSI值,依据手机与防盗器的距离判断被盗事件的发生,文章通过解决测距精度提高防盗报警的可靠性;文献[2]采用了多种传感器,主要采用视频红外等技术,应用于防火防盗系统,与本文设计应用背景有所差异。本文借鉴了这些文章的部分设计思路,开发了一种具有防误报算法的防盗报警装置。
1 系统设计
Arduino是一款基于Atmel公司AVR系列单片机的开发板,配合Arduino IDE开发环境便于进行二次开发。其主要功能特点有:
1)可依据官方提供开放源代码的电路图设计,简化Arduino模组,完成独立运行的微处理控制;
2)使用低价格的微处理控制器,可采用USB接口供电,不需外接电源方便调试,也可以使用外部9VDC输入独立工作,运行功耗在10~20 mA;
3)支持ISP烧入,将Bootloader固件烧入芯片;
4)可简单地与传感器,各种电子元件连接,应用于不同目的。
因此,本课题首先选用Arduino平台完成本系统的开发,之后完成基于AVR Atmega16A单片机的防盗系统设计。系统总体结构图如图1所示。
图1 系统总体结构图
1.1 角位移检测
当物品发生被盗事件时,必然将发生移动,产生角位移。角位移检测部分比较简单,采用滚珠开关HDX-2801感知物品是否被人移动,HDX-2801可以与Arduino的模拟端直接相连,通过读取Arduino模拟口电压值后进行判断。若发生倾斜,则电压值必然与当初人离开时发生变化,通过采集滚珠开关的电压变化情况,可以判断是否有偷盗行为的发生。
1.2 防误报算法
在本系统设计中需重点考虑的是误报问题,因为在实际情况下由于他人不小心移动了物品,也会造成微小位移,但此时并非被盗情况发生。本系统设计防误报算法可以处理区分系统轻微抖动和被盗两种情况,减少误报率。一般由于不小心造成的抖动是无意(随机)的,属于高频抖动,而笔记本被盗时系统会发生较大位移,属于低频信息。通过对系统位移信息进行低通滤波可消除由于无意造成的抖动干扰。
数字滤波器大致可分为:有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器两种。FIR冲激响应在有限时间内衰减为零,其输出仅取决于当前和过去的输入信号值;FIR滤波器幅频特性精度较IIR低,但具有线性相位,即不同频率的信号经过FIR滤波器后,其延迟时间相同。而IIR冲激响应理论上会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值。IIR滤波器幅频特性精度很高,但不具有线性相位特性,因此一般用于对相位信息不敏感的场合。
IIR滤波器公式如式(1)所示。
其中:参数P是前向反馈阶数,bi是前向反馈系数,Q是后向反馈阶数,ai是后向反馈系数,x[n]是输入信号,y[n]是输出信号。
FIR滤波器公式如式(2)所示。
式中:N是滤波器阶数,bi是滤波器系数,x[n]是输入信号,y[n]是输出信号。
均值滤波属于一种特殊的FIR滤波器,对于N阶滤波器,所有滤波器系数都取相同的值1/N,则滤波器的作用就是取输入序列的均值。在本系统设计中,对信号处理的性能属于宽范围要求,因此选择更易实现的均值滤波算法[3-5]。
均值滤波中的一个重要参数是滤波滑动窗口的长度L,窗口长度L的设置应该根据实际场景决定。如果输入数据干扰频率比较大,L的值就应该较小。如果输入数据干扰频率较小,窗口长度L的值就应该较大,否则无法有效滤除干扰。均值滤波时域表达和频域表达式分别如式(3)和式(4)所示。
该滤波器的幅频特性曲线如图2所示。均值滤波具有低通特性,低频段衰减小,高频段衰减大。从幅频曲线可以看出均值滤波的阻带纹波较大,且在低频段的平坦度也不是太好,但由于本系统主要用于被盗物品的状态变化判断,结果不受影响。
取不同的窗口长度对抖动位移进行均值滤波,将各个窗口长度下的滤波结果对比如图3所示,可以看出窗口长度越小,滤波后的序列与原序列的趋势越接近,适合滤除高频干扰。窗口长度较大,滤波后序列就更加平稳,该算法能有效滤除低频干扰。
图2 不同长度均值滤波的幅频特性曲线
图3 不同窗口长度下滤波效果对比
根据以上分析,取窗口长度为5进行均值滤波。
1.3 报警及警情无线传输
当防误报程序结果满足报警条件,判断有偷盗行为发生时,通过软件将arduino的数字端口置高,为蜂鸣器提供工作条件,对偷盗者发出警示。
针对本系统设计应用背景的具体需求,可以选择蓝牙、WIFI等方式实现警情传送。蓝牙具有低成本、低功耗、低复杂度、系统稳定等优点,目前市场上的智能手机大多支持蓝牙2.0,在很大程度上具有推广应用的价值。
但是蓝牙2.0作用距离有限,使得应用场景受限。与2.0相比,蓝牙4.0具有功耗低,传输距离远等优势,理论传输距离为20~100m,可以覆盖绝大多数应用场景。其缺点是,只有部分智能手机支持蓝牙4.0,这种传输方式对不支持蓝牙4.0协议的手机无能为力[6]。
Wi-Fi具有覆盖范围广,传输速度快等特点。就覆盖范围而言,Wi-Fi在室外开阔空间里通信半径可达300 m,在室内有障碍物遮挡时为100 m。本方案实现了采用UART-WiFi透传模块ESP8266完成警情信息的传输。
为满足用户需求,本系统实现了蓝牙2.0、蓝牙4.0和WIFI3种报警通信模式。
1.4 系统设计
以WIFI通信为例,系统软件设计流程框图如图4所示。
图4 系统工作流程图
2 系统实现
本项目采用arduino开发板和以Atmega16A为核心模块的自制电路板两种方式实现了防盗系统的设计。考虑到检测角位移和防误报算法部分相同,且检测本身比较简单,只要对arduino的模拟端进行采样即可实现检测功能,而防误报算法前面已经给出计算,系统实现时只需对采集后的数据按照文中确定的模型进行处理即可。至于报警部分,当判断出确有警情出现时,当出现警情时,将连接于arduino的蜂鸣器数字端口置高,对偷盗者发出警示。由于篇幅所限,本论文只给出采用开发板蓝牙传送和以Atmega16A为核心模块的自制电路板WIFI传输警情的开发实例[7-8]。
2.1 基于开发板蓝牙传输的系统实现
将蓝牙模块连接至报警系统之前,首先通过USB转TTL模块将蓝牙模块与电脑相连,通过串口调试助手进行AT指令的设置。安装arduino IDE开发调试环境,调试程序功能,电路连接如图5所示[6-8],下载程序后可实现系统功能。
2.2 基于AVRStmega16a的系统实现
图5 电路连接
利用arduino的开发环境,调试完成实现系统功能后,用ISP下载到自制系统中,可以完成整个系统的研发[9-12]。使用ISP向系统板下载电路的部分界面如图6所示。选择芯片类型为Atmega16A[13-15]。所研发的系统实物如图7。
图6 使用ISP下载程序
图7 防盗报警系统(WiFi版)
2.3 试验验证
由试验结果可以看到,系统较好地实现了防盗报警的功能。
图8 手机接收结果
3 结论
本系统完成了利用Arduino开发板和自制PCB板的防盗系统设计,分别实现了蓝牙2.0、蓝牙4.0和WIFI 3种通信模式报警。设计了防误报滤波算法,对角位移信息进行均值滤波,有效减少了误报率。该系统体积微小,功耗低,价格便宜,易于安装。适合应用于贵重物品不便随身携带,需要短期外出的防盗报警。
参考文献: