西北民族大学电气工程学院 李京昊 铁一凡 孙浩瑜 胡嘉慧 吕鑫洋
本项目是对传统只有推拉功能的旅行箱存在的不方便以及安全问题进行改善,自跟随旅行箱可实现自动跟随、短距离报警、指纹开锁,实时测重等基本功能,极大程度方便了人们的使用,为人们解决了旅途中关于旅行箱的烦恼。随着嵌入式控制技术和电子信息技术的发展,自动控制的机器已经渗透到了生活中的各个方面。近年来已经出现了具有定位功能的智能旅行箱,这种旅行箱结合相对应的软件可以提供基于位置服务的防盗、丢失寻找等功能,但这种智能旅行箱功能较为单一。而自动跟随、智能防丢的旅行箱在市场上很少,且价格高昂、局限性多。基于传统的只有推拉功能的旅行箱,本文设计的自跟随旅行箱可以实现自动跟随、短距离报警、定位追寻、指纹开锁、实时测重、箱体可拆卸等基本功能。
在整个系统的控制上,使用处理速度更强、硬件资源更丰富的Cortex-M4内核的STM32系列芯片。Cortex-M4内核的芯片使用ARM架构,该架构设计的合理性使微控制器的功能非常强大同时还可以满足功耗低的要求,在供电上STM32微控制器只需要5V电源便可以进行驱动,使用非常方便。在程序编写上,STM32可以使用我们最熟悉的C语言,对于本项目来说Cortex-M4内核的STM32系列芯片是最好的选择。在本项目中使用到的功能有I/O口复用、IIC通讯、PWM波的输出、串口通讯、定时器中断、外部中断、定时器等,这些功能的正确使用必须基于对于STM32系列微控制器的熟练掌握。
本项目的主要目的是解决旅行箱使用者在旅途中碰到的各种问题。例如:旅行者推拉过程中由于旅行箱太重导致的问题、旅行者和旅行箱的距离过远存在的安全问题、旅行者不幸丢失行李箱后难寻回等问题,而自跟随智能旅行箱可以结合各种模块,完成在不同场景下解决旅行者出行过程中的各种问题。
本系统以自跟随智能旅行箱为研究对象,该自跟随智能旅行箱使用了以STM32 Cortex-M4为内核的主控芯片,其中包含电机驱动模块、短距离测距模块、GPS定位模块、指纹识别模块、语音播放模块、称重模块等模块构成了一个完整的自跟随智能旅行箱系统,具体硬件系统设计流程图如图1所示。
本系统为了实现自跟随系统以及测重系统采用箱体可拆卸的模式,即分别制作旅行箱底座和箱体。本系统将不同模块分别安装在底座和箱体上来共同完成自跟随智能旅行箱的不同的基础功能。该系统中最重要功能是实现自跟随系统,本项目通过使用短距离测距模块来实现该功能。在自跟随智能旅行箱安装测距模块,用芯片处理测距模块返回的信息,得到此时旅行者相对旅行箱的相对位置,根据距离角度在结合算法控制电机驱动,调节PWM波的占空比来控制轮子速度来实现自跟随的功能。基于安全方面,通过指纹模块、短距离测距模块和语音播放模块实现一级安全系统,只有正确的指纹才可以打开旅行箱,并且旅行者和旅行箱之间的距离一旦超出规定范围便会自动警报提醒旅行者。二级安全系统由GPS定位模块实现,如果发生旅行箱不幸丢失的情况,其便对旅行箱精准定位,利用短信获取旅行箱的当前位置,进行寻回。通过一级安全系统和二级安全系统彻底解决了旅行者在外担心自己财产问题,同时旅行者也可随时了解旅行箱的重量,判断是否超出飞机等运输设备的规定范围。
图1 硬件系统设计图
本项目设计中由于使用了多个模块,对于不同模块使用了不用的通讯协议,所以在电路设计上必须根据不同的I/O口所具有的硬件资源将不同的模块与合适的I/O口连接到一起,以达到硬件资源利用最大化。
由于不同模块的工作电压不同,电机的驱动需要的电压最高12V左右,所以使用12V的电池作为总的电源输入并直接用电源电压对电机驱动供电;对STM32F4微控制器的供电需要5V的电压,所以需要在电路中加入稳压模块并引出5V的引脚口,分别对不同模块进行供电。
本设计中使用的编程语言是大家都比较熟悉C语言,使用的编译器为Keil 5。Keil编译器完美的支持使用C语言对STM32系列芯片的驱动,该编译器功能非常强大,支持在线仿真功能,可以通过观察窗看到每一个寄存器的值,可以更加直观的看到程序设计时出现的错误并及时改正,对于程序的调试非常有帮助。程序编写时使用模块化编程,把不同模块的初始化及驱动过程封装在不同的.c文件中,在main.c文件中只实现调用的过程,不同文件中函数的调用通过对相应.h文件的引用来实现。模块化编程最大的好处就是程序的可阅读阅比较强,编程思路体现得更加清晰,对于程序的分模块调试以及程序修改也非常方便。其中使用的短距离测距模块可实现自动跟随,自跟随系统采用两个短距离测距模块获得使用者的当前具体位置。如果只采用单一的测距模块,芯片得到的数据可能存在误差,使用此类数据必然会使系统的精度和实时性降低,因此利用同类测距模块分别安装在底座的两侧,获取两侧分别到使用者的实时距离,根据三个已知长度L1、L2、L3,模拟出一个三角形,再根据三角函数公式得到此时旅行箱与旅行者之间的实时距离L和实时角度α的值,然后利用PID算法配合电机驱动模块实现自跟随系统。程序设计流程图如图2所示。
图2 程序设计流程图
本项目实现了在模拟情景中自动跟随旅行者的功能,但是目前只限于平地环境,在斜坡或者是楼梯情景中功能仍有待改善。在安全系统方面,功能已全部完成,旅行者可以录入、删除指纹库内指纹,并且可以通过手机短信得到旅行箱的实时位置,通过现有的地图查找软件获取具体位置路线,且当旅行箱和旅行者之间距离差距过大,旅行箱会持续报警提醒旅行者。
总结:本设计硬件结构设计较为合理,具有较强的环境适应力和稳定性。相对于常见的传统旅行箱,其具有移动速度快、使用更简单、节省旅行者体力、安全系数高等特点,对传统的只能推拉的行李箱存在的不便捷之处进行改良,实现了旅行箱自动跟随。使用Cortex-M4内核ARM架构的STM32F4微控制器,具有处理速度更快、功能更强大、功耗更低等特性。本项目设计的旅行箱应用方便,实用性非常强,对于安全系统可以通过APP来获取旅行箱的具体位置,以便应对各种情况,可有效地保护旅行者的重要物品。测重系统极大程度的解决了旅行者放入物品的重量超出飞机等运输设备规定的范围的情况,当超出范围后具有报警功能;同时,可实现指纹开锁、实时测量重量的基本功能,方便了使用者,解决了许多旅途中的烦恼。