基于STM32的人体目标检测与追踪系统
2020-09-01宋金波段志伟
宋金波, 段志伟
(东北石油大学 电气信息工程学院, 黑龙江 大庆 163318)
0 引 言
人体目标识别与追踪是智能监控的重要内容之一。经过近几年的研究与开发, 已经形成了很多完整的识别与追踪系统[1-4]。在所有的追踪系统中, 传感器是必不可少的部分。目前, 传感器技术已成为当代科学技术发展的一个重要标志, 而且其形式发生了巨大的变化, 在性能上有了较大的优化和增强。因此, 在人体目标识别领域, 传感器类型也有了更多选择[5-6]。特别是利用特殊传感器感知的电信号进行人体目标自动识别与追踪更加方便快捷, 也使运行费用大幅度下降。现有的大多数监控系统都采用动态图像分析手段, 在此基础上结合图像识别和跟踪方法对图像序列中的目标进行识别跟踪[3,7-8]。但这种运行模式大多采用计算机仿真, 实际的图像跟踪也多用数字信号处理(DSP: Digital Signal Processing)、 现场可编辑门阵列(FPGA: Field Programmable Gate Array), 或两者结合实现, 而采用STM32结合特殊传感器的人体目标自动识别与追踪系统很少。笔者设计了一个高度智能化监控摄像系统, 选用STM32F103RCT6单片机结合特殊功能传感器组合实现人体目标自动识别与追踪。在传统的接近式传感器的基础上叠加SHARP-GP2Y0A21YK0F红外测距传感器, 设计了一个专用多传感器组网识别系统。多传感器组网的设计有效地解决了在人体目标自动识别与追踪系统中可能遇到的一系列问题[9-11]。该系统可广泛应用于室内不干扰红外线工作的行业, 例如在银行中监控柜台, 在生活中监控小区的安全, 在特定环境中监控人流量, 方式更加灵活方便。
1 系统总体方案设计
该系统下位机主要由检测端与执行端组成。检测端由传感器组网和WIFI(Wireless Fidelity)无线通讯模块构成, 传感器组网包括红外接近式传感器、 SHARP-GP2Y0A21YK0F红外测距传感器。检测机构中HARP-GP2Y0A21YK0F红外测距传感器为模拟式输出, STM32通过其内部ADC(Analog-to-Digital Converter)对传感器输出的模拟信号进行数模转换, 通过固定算法测量距离。执行端的二自由度云台由两个舵机组成, 由STM32产生的两路PWM(Pulse Width Modulation)信号驱动, 当传感器组网的信号反馈至STM32, 便控制二自由度云台(携带摄像头)转动至人体位置。系统原理框图如图1所示。
图1 系统整体原理框图Fig.1 System principle block diagram
系统上电后WIFI无线通信模块初始化, 创建局域网, 打开监控中心, 连接当前局域网, 视频信号即可在监控中心显示。舵机自动转动至初始位置。传感器网络开始识别人体, 当识别范围内有人出现时, 传感器组网判断人体位置, 并预测其行进路线, 检测结束后, 传感器组网将信号反馈给控制器, 控制器利用PWM信号驱动舵机转动, 使摄像头对准人体位置。整个过程全自动完成, 不需要人为进行任何操作。
2 系统硬件设计
2.1 红外测距传感器电路设计
该系统计采用SHARP-GP2Y0A21YK0F红外测距传感器, 由PSD(Position-Sensitive Detector)集成组合IRED(Infrared Red Emitting Diode)和信号处理电路构成。该传感器采用三角测量法, 环境温度和持续操作时间是不容易影响距离测量的。设计过程中, 由于STM32单片机有内部ADC转换器, 所以并不需要外部扩展专用的ADC转换模块, 只需将传感器与STM32单片机的具有模数转换功能的I/O(Input/Output)口直接连接即可, 节约了硬件资源和PCB(Printed Circuit Board)板的面积。SHARP-GP2Y0A21YK0F红外测距传感器接口电路如图2所示。
图2 红外测距传感器接口电路图Fig.2 Interface circuit diagram ofinfrared ranging sensor
2.2 红外光电接近式传感器电路设计
红外光电接近式传感器又叫光电开关, 它把发射端和接收端之间光的强弱变化转化为电流的变化以达到探测的目的。光电开关是由发射器、 接收器和检测电路3部分组成。发射器对准目标发射光束, 发射的光束一般来源于LED(Light Emitting Diode)和激光二极管, 光束不间断地发射, 或改变脉冲宽度。受脉冲调制的光束向空间发射, 经被检测目标反射后送到接收器。接收器由光电二极管或光电三极管组成。在接收器的前面, 装有光学元件如透镜和光圈等。在其后面是检测电路, 它能滤出有效信号并将该信号传给单片机。光电传感器原理电路如图3所示。
图3 红外光电传感器原理电路图Fig.3 Schematic circuit diagram of infrared photoelectric sensor
2.3 微处理器单元电路设计
设计使用的主控制芯片是STM32F103RCT6单片机, 其工作电源电压并不是传统的5 V, 而是2.0~3.6 V, 工作频率最高可达72 MHz, 并且芯片内嵌经出厂调校的8 MHz的RC振荡器、 带校准的40 kHz的RC振荡器和带校准功能的32 kHz的RTC振荡器。STM32F103xx是一个完整的系列, 其成员之间是完全地脚对脚兼容, 软件和功能上也兼容,目前应用非常广泛[11-15]。
由于设计的检测端主控板需要长期进行检测识别, 不断进行信号的传送, 所以需考虑整体的功耗问题。STM32F103RCT6单片机最小系统原理图如图4所示。
图4 STM32F103RCT6最小系统原理图Fig.4 Minimum system schematic circuit of STM32F103RCT6
2.4 无线数据传输电路设计
设计所使用无线数据传输模块是802.11标准的WIFI无线通信模块, 两个设备之间的通信可自由直接地进行, 实现点对点或一对多的无线通信。WIFI无线通信模块的部分电路原理图如图5所示。C1~C4都为WIFI模块电源输入端的去耦电容, 作用是提供较稳定的电源, 同时也可降低元件耦合到电源端的噪声, 间接减少其他元件受此元件噪声的影响。此处的去耦电容可采用普通的瓷片电容, 也可采用有极性的电解电容。其容值没有严格的要求, 一般10 MHz取0.1 μF, 100 MHz取0.01 μF。
图5 Wi-Fi无线通信模块电路原理图Fig.5 Circuit diagram of Wi-Fi wireless communication module
2.5 电源电路设计
电源电路的设计主要分为两部分。光电传感器和红外测距传感器的工作电压都为直流+5 V, 所以电源电路一部分是+5 V电源, 用于给传感器供电。另外一部分为STM32F103RCT6进行供电, 工作的电源范围为2.0~3.6 V, 故电源电路的另一部分使用+3.3 V电源。本设计采用5 V直流电源对传感器进行供电, 然后由AMS1117-3.3芯片进行电压转换后得到3.3 V直流电源, 最后接到STM32F103RCT6单片机上。其电源转换电路如图6所示。C17、C18、C19和C20分别为输出端和输入端滤波电容, 使输出的直流+3.3 V电压更平滑。
图6 AMS1117-3.3电路图Fig.6 AMS1117-3.3 circuit diagram
3 系统软件设计
3.1 系统总体软件设计
该系统的软件采用C语言编程, 采用Keil μVision5进行程序编译, 通过串口烧录程序软件ISP进行程序的烧录。在软件设计过程中, 首先设计各个部分的子程序, 然后再整合在一起调试。整个系统由ADC采集红外测距传感器数据、 WIFI模块控制、 舵机驱动、 光电传感器检测和上位机显示程序等组成。人体目标位置数据的采集主要通过由红外测距传感器和光电传感器构成的传感器网络实现; WIFI无线通信模块由STM32单片机通过串口实现下位机与上位机之间的视频信号传输; 电机驱动部分主要驱动由两个舵机构成的二自由度云台, 目的是搭载摄像头追踪人体位置。通过核心控制单元STM32F103RCT6单片机将各个模块有机整合, 按照程序设计有序、 准确地完成相应的功能。总体流程如图7所示。
图7 总体程序流程 图8 上位机软件设计流程 Fig.7 Flow chart of the system Fig.8 Flow chart of upper computer software design
3.2 上位机软件的开发与设计
上位机显示使用Java开发集成环境Eclipse-Android软件, 其设计流程如图8所示。
4 系统实现
4.1 硬件调试与实物组装
该系统硬件控制板是FR-4工艺PCB板, 板载器件统一采用0603P贴片封装。本设计的整体实物演示平台如图9所示, 人体识别模块由长方形铁架为载体, 搭载了3个红外接近式传感器, 两个红外测距传感器, 构成扇形人体识别区和矩形人体行进路线检测区。二自由度平台搭载摄像头置于人体识别模块后, 摄像头的数据线以USB接口的形式插在WIFI模块上。主控板由螺丝孔固定在二自由度云台的侧面。WIFI模块置于主控板上, 使用螺杆螺母连接。整个演示平台空间结构合理, 演示流畅。
图9 人体检测系统实物图Fig.9 Physical picture of human detection system
4.2 软件调试
本次软件调试主要对WIFI模块、 红外测距和舵机驱动程序进行调试。WIFI模块程序主要针对视频传输时的失真问题和传输过程突然掉线问题进行调试。
对红外测距程序的调试需确定红外测距传感器的电压分辨率, 即距离的变化ΔL与传感器输出电压变化ΔV之间的对应关系。本设计的红外测距传感器的测量距离下限值Lmin=10 cm, 上限值Lmax=80 cm, 对应的电压输出为Vmin=1.65 V,Vmax=2.15 V, 传感器的输出是线性的, 即ΔL=1 cm对应ΔV≈0.007 V。
对舵机驱动程序的调试需调用STM32库函数中的定时器参数设置。因为PWM信号占空比不同对应舵机转动的角度不同, 所以在调试过程中需测试舵机参数角180°中每个角度所对应的占空比, 这是一项耗时的测试过程, 需要仔细完成记录。
5 结 语
笔者以STM32F103RCT6单片机为主控制器, 利用嵌入式、 传感器、 WIFI和APP开发技术, 对人体目标进行识别与追踪, 并实时传输视频信号至监控中心。通过Keil μVision5和Eclipse-Android编程工具完成系统各部分的软件设计。利用电路绘图软件Altium Designer13完成整体的硬件电路设计与PCB板的制作, 最终制作的硬件实现了预计的功能要求, 达到了人体检测追踪的预期目标。