基于STM32的物联网智能猫眼系统设计
2020-02-02林自健汪琳霞石浩臣陈铎
林自健 汪琳霞 石浩臣 陈铎
(南华大学计算机学院 湖南省衡阳市 421001)
1 前言
猫眼,又称门镜,是装在住宅户门上的一种小型光学仪器,便于居民观察户外情况。装上猫眼,对于家庭的防盗和安全,能起到一定的作用,已成为居家安全的必需品。反猫眼是一种专门针对“猫眼”设计的窥视工具,它可以通过“猫眼”从门外窥视室内情况,除此之外,传统猫眼还有着视角较小,范围有限,图像易变形,容易被撬等缺点,因此传统猫眼在一定程度上无法维护家庭的安全。
伴随着互联网和物联网技术的蓬勃发展,物联网应用领域愈加极其的广泛,可以应用到工业,农业,以及智能家居等诸多领域。而智能家居就是物联网在家庭中的基础应用,随着宽带业务的普及,智能家居产品涉及到方方面面,大大提高了人们的工作效率,为人们的智能生活提供更多便利与可能性。物联网智能猫眼不仅适合出现在家庭入户门上,而且安装在单元门楼上,每当有陌生人进入都会有实时记录,便于保安发现危险情况[1]。
本文提出的基于STM32 的物联网智能猫眼系统设计,可以用来弥补传统猫眼的带来的缺点,从而更好的满足人们对于家庭安全的需要。物联网智能猫眼系统通常有着人体感应红外检测,防撬提醒,视频监控,视频通话,远程开锁等优点。本文提出的物联网智能猫眼系统以STM32 作为控制核心,ESP8266 作为通信模块,摄像头作为信息采集设备组成。
2 系统概述
本文提出的基于STM32 的物联网智能猫眼系统由STM32,摄像头,显示屏,电控锁,无线通信,智能终端等组成。其中摄像头负责采集图像数据并可选择在LCD 显示屏上显示图像,语音模块可以跟用户APP 进行交互,采集到的图像的格式为bmp,将该图像数据转换成十六进制数据流经无线通信模块传输,在服务器中解析该数据流并还原成bmp 图像并完成图像的识别,其系统结构图如图1所示。
系统工作的流程主要有:当红外模块检测到有人时,单片机会使能摄像头,图像实时显示到内置的显示屏中,并将采集到的图像以无线通信的方式发送到服务器中,服务器使用百度开源的人脸识别程序,对图像进行识别预测并把识别结果和图像保存到数据库中。用户可以通过手机APP 设置相应的系统白名单,当识别的结果不为白名单的用户时,系统会发出报警提示。当识别结果为白名单用户时,用户可选择是否通过发送指令来控制电控锁进而控制房门的开关,用户也可以使用APP 与来访者进行对话,从而提高家庭安全和居家生活的便捷性。其中服务器会把识别结果等信息存入到数据库,数据库的设计如表1。
3 具体实现
3.1 控制器
本文基于成本和性能上的考虑,最终选择STM32F103 作为系统的核心控制器。该控制器作为32 位的ARM 微控制器,其时钟主频可达72MHz,其高性能能很好满足我们对于图像快速处理的需求。除此之外,该系列单片机有着I/O 口丰富,支持DMA 直接存储器访问(的优点)。DMA 传输方式无需 CPU 直接控制传输,可以明显提高CPU 的处理效率,本文图像显示采用DMA 方式。
表1:数据表的设计
图1:系统结构图
图2
3.2 通信模块
图3:未设置白名单的识别效果图
图4:设置白名单的识别效果图
图5:数据库部分信息
本文通信模块采用的是ESP8266 模块,该模块是乐鑫一个完整且自成体WIFI 网络解决方案,其内置TCP/IP 协议栈,分别支持AP,STA,AP+STA 三种模式,在该系统中,我们将Wi-Fi 模块设置成AP 模式即可,设备上电时,在接收手机APP 发送的无线SSID 和密码后完成入网。当需要发送数据时,客户端可通过AT 指令连接到TCP 服务器并开启透传模式,进而将数据发送到服务器。
3.3 APP设计
本文APP 应用基于Android studio 平台开发和使用Material Design 风格进行设计。当设备正常启动后,手机APP 应用可以从服务器中获取最新的图像和识别结果并显示在当前界面中,并以消息通知的方法提醒用户有人靠近。当然可以在手机APP 上设置相应的白名单,当识别到门外是白名单上的用户时时,可以选择通过APP 向设备发送开锁的命令来控制门的打开,也可以进行其它的操作等。
3.4 图像解析
OV2640 是OmniVision 公司生产的CMOS UXGA(1632*1232)图像传感器,采用1/4 寸的OV2640 百万高清CMOS 传感器制作,具有高灵敏度、高灵活性、支持JPEG 输出等特点,支持JPEG/RGB565格式输出,可以满足不同场合需求。摄像头在完成初始化后,当红外检测到有人时,会间隔性的采集图像并上传到云端识别处理,并将结果返回到用户APP 上显示。
本文采用RGB565 的格式,一个像素点占两个字节,其中红色,绿色,蓝色分量分别占5,6,5 位。摄像头采集的数据以十六进制的形式发送到服务器,服务器需要从该数据流中解析图像文件头,图像大小,图像宽高信息,进而将十六进制的数据转成bmp 格式图像(bmp 是Windows 操作系统中的标准图像文件格式),并调用百度开源的SDK 人脸识别程序来完成图像的识别,并将识别结果保存到数据库中。
4 实现效果
当红外传感器识别到门外有人时,会使能摄像头,并将图像传输到服务器中进行预测,并将识别结果和图像发送到用户APP 中。图3左是没有将该用户设置为白名单,因此图右返回的识别结果为陌生人并进行弹出提示。
图4左将该用户设置为白名单,并设置该白名单的姓名标签,因此图右返回的识别结果为该用户姓名标签并进行弹出提示。
图5为服务器数据库的部分信息,只有红外识别到人时才会开启摄像头,且间隔几秒拍照一次,因此可将该数据作为门口逗留和进出次数的依据。
5 结束语
基于STM32 的物联网智能猫眼系统在一定程度上能改善传统猫眼与现有猫眼的缺点,对维护家庭安全起到了关键作用。当红外检测到有人时,使能摄像头并传输图像数据,该项措施可以有效降低系统功耗,延长设备寿命。图像识别采用百度开源的人脸识别程序,可以使图像的识别速度和准确性得到保障。经过反复测试,图像从采集、识别再到用户APP 上显示的时间在3 秒以内,因此系统的实时性较好。使用本系统的Android 应用支持二次开发,可扩展性和灵活性强,稳定可靠。