项目二:穿戴式手势控制的智能车研究与实现
在日常生活中,我们会遇到诸多关于车的问题,例如超市中的购物车、机场的行李车等,仔细看这些车都存在一些共同的问题:必须使用人力驱动。于是我便想到了一个项目,可以通过手的一些操作,很方便地控制电动机,让行李车、购物车遥控行走,这样既省时又省力,是解决这些问题的不错办法(蓝牙串行端口或串行端口简称为串口,蓝牙串行端口通信简称为蓝牙通信)。
一、 初步设计,思考问题
有了设想,我和我的项目组(以下简称“我们”)进行了项目的构想和实现设计,我们经大量的查阅资料,讨论和思考后得出结论:我们应以四轮驱动的移动平台为基础,以蓝牙4.0作为通信工具,使用串行端口的通信方法,用陀螺仪进行手势感知,并将这些功能用开源硬件单片机Arduino结合并实现。
移动平台由上下双层底盘、4个5V直流电动机驱动,通过驱动模块控制电机可以轻松地实现移动平台的转弯或者前进;蓝牙通信由一对蓝牙模块实现,将其中的一个蓝牙(1号)通过AT指令设为主模式,再通过AT指令将另一个蓝牙(2号)设定为从模式,这样2个蓝牙就可以自动配对并相互发送数据了;手势的姿态判断由6轴陀螺仪实现,6轴陀螺仪模块将感知的姿态信息通过I2C接口传输至控制端Arduino单片机,控制端Arduino单片机处理后通过蓝牙串口实时传输至执行端的Arduino单片机;项目通过2个Arduino单片机,将所有模块进行编程并集成为一体,让模块之间可以互相通信,实现全部设计的功能。
项目成品分为2个部分,一个是智能车端(简称执行端),另一个是6轴陀螺仪端(简称控制端),如图5—80所示。
图5—80 项目主体框架结构
二、 制作项目,解决问题
有了以上的理论支持,我们就开始制作项目了。首先我们完成了铝制底盘的安装,为了安全起见,我们特意购买了喷塑的底盘,这样可以避免电子设备短路。我们购买了L298P集成电路作为电动机和驱动板、HM—10蓝牙4.0通信模块、MPU—60506轴陀螺仪模块、Arduino MEGA2560作为执行端单片机、Arduino UNO R3作为控制端单片机。详细运行流程如图5—81所示。
图5—81 项目主要运作流程
图5—82 MPU—6050的原理图(其中使用了SDA、SCL接口)
(1)控制端得到姿态信息。通过6轴陀螺仪判断角度数据,使用I2C接口进行数据传输并处理,涉及陀螺仪的X轴数据和Y轴数据。6轴陀螺仪信息:型号MPU—60506轴陀螺仪(图5—82)或GY—5216轴陀螺仪。
(2)数据传入控制端单片机。将姿态信息经过处理后传入控制端单片机,再在单片机处进行处理,当角度小于值“±10000”时进行转弯信息的发送,发送字符“1”。以此类推。
(3)由单片机传入蓝牙串口进行通信。由蓝牙与单片机相连的TX(transport)、RX(receive)的软件串行端口进行通信,将处理好的字符经由软件串口传入蓝牙。在程序中使用软件串口,需要定义软件串口所需要的管脚并包含软件串行端口的函数库“softserial.h”。
(4)执行端蓝牙串口接收数据。在执行此步骤之前,必须将2个蓝牙模块设定模式,一端设定为主模式(MODE1),另一端设定为从模式(MODE2),设定之后进行自动配对,蓝牙主模式模块会寻找信号范围内可用的另一个蓝牙,从模式设备并进行自动配对。配对完成后,2个蓝牙之间可实现数据的发送与接收。
(5)经由蓝牙模块传入执行端单片机。接收到数据后,执行端蓝牙会通过执行端软件串口将数据传输到执行端单片机处,并在单片机处进行进一步处理。
(6)数据经过单片机处理后通过数字接口发送至马达驱动模块。执行端单片机会根据传来数据的种类进行判断,并根据种类分别决定马达驱动的控制。
(7)马达驱动模块处理运动指令驱动电动机运动。如:收到“1”,单片机会向马达驱动板发送“myMotorDriver.run(speed,speed);”,效果就是马达驱动会使电动机向前运动。
三、 项目的应用方面
本项目主要应用到为残障人士准备的轮椅、机场、火车站的负重行李车、低成本无污染的代步工具。
(1)为残障人士准备的轮椅。可以帮助患有残疾的病人更加独立地生活,更方便快捷地出行,只需要转动手腕和小臂就可以移动自己。
(2)负重行李车。在机场、火车站等地方,可以提供本项目的成品,用以搬运行李,可以更轻松、更快捷、更高效地搬运行李,同时可以运用到沉重大件物体的搬运,节省了人力。
(3)低成本无污染的代步工具。可以通过手势控制车的移动,使人可以站在或者坐在车的上面,具有低成本、结构简单、无污染的优点。可以作为短距离的便携式绿色代步工具。
相关图片如图5—83~图5—88所示。
图5—83 整体俯视图
图5—84 侧面视角
图5—85 正面视角
图5—86 Arduino
图5—87 HM—10蓝牙4.0模块
图5—88 L298P马达驱动板