王楠,王蕴岭,孙玉军
(沧州职业技术学院,河北沧州,061000)
目前,市场上的超声波测距装置大多无法实现水平调节的问题,同时采用人工接触式测距也会存在一定的误差,因此测量的距离可能会不精准甚至不准确,这样不仅会造成很大的麻烦,严重者甚至会产生一系列的安全隐患。为了避免水平测量过程中的偏移误差,确保超声波测距装置的正常使用,能够得到比较精准的测距结果,为此需研发一种单片机控制的自平衡超声波水平精准测距装置。因此,本文设计了一种基于STM32单片机嵌入式系统,可根据不同地理位置、多种地形进行调整和作业的实时水平精准测距装置。在不同行业,如建筑、交通、工业等具有广泛应用,同时可以避免与有毒有害物质接触,在装置启动之后即可实现测距,并能在液晶显示屏和语音实时进行播报,实现了非接触、实用性强、测距精准、使用方便、适用范围广等特点。
该测距仪由单片机STM32F401模块、超声波HC-SR04测距模块、语音识别模块、语音合成输出模块、显示输出模块、按键输入模块、姿态检测模块构成。系统整体框架图如图1所示。
图1 系统的整体框架图
本设计采用STM32F401开发板,该开发板包含了STM32F系列板卡惯有的机械按键、LED指示灯、mini USB调试接口、众多I/O口、可以外设通过排针座引出等功能。除此之外,也有与众不同之处,如兼容Arduino Shield接口,并且可以通过Arduino Shield扩展接口给板卡供电,板卡落载了STM32F401RET6核心微控制器,基于32位的高性能ARM Cortex-M4处理器,带FPU单元,最高支持84MHz主频。
超声波测距是一种检测迅速、计算简单、方便低廉的非接触式检测技术,不会受光线、颜色等因素影响,即使恶劣的环境 (如含粉尘) 也有一定的适应能力。本设计采用超声波测距传感器HC-SR04对距离进行测量。该模块由五个端口组成,分别为VCC、TRIG、ECHO和两个GND终端,其中VCC供电范围为2.4~5.5V,GND为接地引脚,TRIG为测距电平触发引脚,ECHO为测距电平输入引脚。该模块测量精度可达毫米级别,测量范围在5厘米到400厘米之间[1]。
液晶显示模块用于显示配置信息及输出结果,便于调试工作。该显示屏适用于多种市面常见开发板。本设计利用STM32F4的FSMC功能驱动TFT液晶屏,并通过其串口向使用TFT液晶屏的外部处理器提供控制通道。外部处理器通过访问串口STM32F4内部预先烧录的接口程序,实现对TFT液晶屏的控制[2]。该模块硬件简单,只需两根I/O口线就能对TFT液晶屏进行控制。经实验验证,该结构稳定可靠,显示效果清晰。
HLK-V20是针对大量纯离线控制场景和产品的高性能语音识别模块。可广泛且快速的使用于智能家居、各类智能家电、物联网等需要语音操控的产品。该模块采用32bit RSIC架构内核,并加入了专门针对信号处理和语音识别所需要的DSP指令集,支持浮点运算的FPU运算单元,以及FFT加速器,通过神经网络对音频信号进行训练学习,提高语音信号的识别能力。本设计中制定了该语音模块的唤醒词、命令词和应答播报词,使用测距仪时,首先唤醒测距仪“小凌小凌”,测距仪回答“我在”,并开始测距,结果在TFT显示屏显示的同时,语音模块实时进行播报。在实际体验中,语音效果良好。
单片机采用C语言进行编程,系统软件可分为主程序和各模块子程序。最重要的程序就是单片机控制超声波检测距离,进而显示屏输出并进行语音播报的主程序过程。其系统主程序流程框图如图2所示。
图2 单片机主程序流程框图
系统的软硬件设计共同组成了一个整体。在测距仪测距系统正式启动之后,系统首先会进行初始化位置调整,之后进行方位检测平衡阶段,下一步判断是否进行连续测量,按下按键开始启动测距,输入语音指令从而唤醒测距仪,测距依将结果进行显示并语音播报。
在进行系统调试阶段,可以利用传统的测距工具,例如刻度尺进行所测距离的核对,判断设计是否符合实际,从而进一步调试和完善。本系统设计的要求主要针对水平测距的范围及精度进行,系统调试应围绕这两个参数开展。通过分析实验数据,可以发现本测距仪在设计上较为合理,误差在可控范围内,因此,该基于单片机的测距系统设计方案可行。
本设计中的自平衡超声波测距仪以STM32F401为控制核心,根据三点确定一个平面及时进行调整。该测距仪通过测量超声波的发射信号和接收信号的时间差,结合超声波发射信号和接收信号时的传播速度从而得到测量距离。不仅可以在TFT液晶屏中显示距离信息,还可以由语音模块进行播报提醒。在实际体验中,效果良好,方案可行,实验精度和范围可以达到控制要求。加之,本测距仪结构简单、人机界面友好、互动性强、操作方便、成本低廉,因此,该测距仪可以实现非接触式的、自平衡校准,并可根据不同地理位置、多种地形进行调整和作业的实时水平精准测距,具有很高的推广和实用价值。