❤️ ×
各类单机,绅士游戏不断更新:https://www.acghua.com/
网站地址

基于手势控制无线小车运动系统的设计

news 发布于 2025-09-02 阅读(473)

徐宁 索朝举 沈沛雨 刘静波

摘 要:设计了一种采用重力感应的手势控制小车的运动系统。该系统包括手持端和小车端两部分。手持端包括STM32控制器,ADXL345加速度传感器,ZigBee无线发射模块;小车包括STM32控制器,电机和舵机驱动单元,ZigBee无线接收模块;手持端的STM32控制器通过采集加速度传感器的数据,得到多个方向的手势变化,通过无线模块发送指令信息给小车,小车与手持端的ZigBee模块配置在同一个网络,接收来自手持端的指令信息,然后根据不同的指令信息驱动电机和舵机实现小车的前进、后退、转弯等方向的运动。这种采用重力感应并结合无线收发方式下的非接触式控制方式,具有反应灵敏、动作快速的特点,同时具有较为广泛的应用场景。

关键词:重力感应;手势控制;无线模块;脉冲调制

中图分类号:TN925;TP391.41 文献标识码:A 文章编号:2096-4706(2019)02-0019-04

Abstract:A motion control system based on gravity sensor is designed. The system includes a handheld end and a car end. The handheld terminal comprises a STM32 controller,a ADXL345 acceleration sensor,a ZigBee wireless transmitting module,the small car includes a STM32 controller,a motor and a steering gear driving unit,and a ZigBee wireless receiving module. The STM32 controller on the handheld side can acquire the data of the acceleration sensor and get the gesture change in many directions,and send the instruction information to the car through the wireless module. The car and the ZigBee module of the handheld end are configured on the same network. Receive the instruction information from the handheld end,then drive the motor and steering gear according to the different command information to realize the movement of the car in the direction of forward,backward,turn and so on. This non-contact control mode which adopts gravity induction and wireless transceiver,has the characteristics of sensitive response and fast action,and has a wide range of application scenarios at the same time.

Keywords:gravity induction;gesture control;wireless module;pulse modulation

0 引 言

随着科技的发展和社会需求的增加,非接触式的重力感应方式控制得到迅速发展,无论在消费类电子产品,还是工业、建筑方面都有大量的应用。它具有良好的可操作性、可迁移性,具备方便快捷、高性能低功耗的特点,因而在诸多领域得到广泛的应用。ZigBee无线传输的应用,也拓展了传统接触控制的局限,以实现对设备的智能控制。采用重力感应的手势控制技术[1]相比传统的控制方式,使用方便,控制灵活,方式多样,因而越来越多的应用在各个领域。

1 系统组成

本系统包括手势端和小车两部分。它们之间通过ZigBee模块进行数据通信,手持端发送指令控制小车运动。手持端采用STM32F103C8T6单片机最小系统为控制器,采用加速度传感器ADXL345检测手势变化。随着使用者手势的变化,ADXL345输出的重力加速度在X轴、Y轴、Z轴的数据分量也随之变化。STM32控制器读取到不同的手势状态下X轴、Y轴、Z轴的数据,结合设定的角度换算算法[2],通过ZigBee模块向小车发送不同的指令,从而完成小车的正前、正后、左前、左后、右前、右后和停止七个方向的运动。

手持端由三节锂电池供电,采用STM32F103C8T6的AD转换来测量电池电压,同时配置了一块128×64点阵OLED显示屏,用于显示三轴数据分量、发送给小车的指令信息、电池电压等。手持端的结构图,如图1(a)所示。

小车组成框图,如图1(b)所示。小车部分包含了两个后轮独立电机驱动单元、舵机转向控制单元、STM32控制器、ZigBee模块等。ZigBee模块接收手持端的指令信息,得到手持端发送的明确运动方向后,STM32控制器在I/O口输出PWM波来控制小车的前进、后退基本动作。小车的转向由STM32的I/O口输出周期为20ms脉宽可调信号(一般为0.5~2.5ms),控制小车实现左右转向。小车前进后退结合舵机的转向控制,一共完成前文所述七个方向的运动。

2 手势变化与角度换算

3 系统硬件设计

3.1 控制器设计

手持端和小车端均选用STM32F103C8T6单片机构成最小系统作为核心控制器。相比于51系列单片机,STM32的外设更多,对不同外设的编程是基于库函数的开发编程[3,4],使得外设初始化配置和功能应用更方便。具备3个通用定时器、3个串口、1个高级定时器(可以配置为PWM发生器)、多路AD转换、具备直接存储器访问(DMA)和中断控制。以其丰富的资源配置、足够数量的I/O端口,足以满足手持端和小车控制器的设计需求。

3.2 加速器传感器设计

ADXL345是一款小而薄、超低功耗的加速度传感器,可以测量运动或冲击导致的动态加速度,在本系统中,作为倾斜检测应用,当手势发生变化后,测量重力加速度在X轴、Y轴的数据分量。其测量范围为±16g(13位分辨率)。ADXL345与STM32控制器通过IIC方式连接[5],ADXL345与STM32控制器采用IIC数字方式访问,通过软件模拟IIC时序,读取ADXL345寄存器的数据,从而获得不同手势下的X轴、Y轴数据分量。ADXL345读出的有效数据是从地址为0x32开始的连续6个寄存器。依次为X轴、Y轴和Z轴数据。每个轴有两个字节组成的16位二进制补码输出,其高四位为符号位。

3.3 ZigBee模块

ZigBee模块采用致远电子出品的ZM5168P0,基于NXP JN5168芯片开发的低功耗、高性能型ZigBee模块,它提供一个完整的基于IEEE 802.15.4标准ISM(2.4~ 2.5GHz)频段的应用集成方案。可快速应用于工业控制、工业数据采集、农业控制、矿区人员定位、智能家居,智能遥控器等场合。该模块主要技术指标:发射功率为2.5dBm,接收灵敏度为-95dBm,其应用电路如图3所示。该模块由STM32控制,通过串口连接。

ZigBee模块分为终端节点和路由节点等类型,终端节点可以配置成不同的目标地址。采用ZigBee无线模块传输指令数据,可以为后面手持端控制多个终端的扩展提供很大的便利[6]。

3.4 电池电压测量

3.5 小车电机驱动

小车的电机驱动电路可选择两片A4950或单片TB66 12,TB6612是双路电机驱动芯片,单片机驱动TB6612一路电机需要3个I/O口,其中一个是PWM信号,另外两个控制电机正反转[7];A4950虽然是单路电机驱动芯片,单片机驱动一路电机只需要2个I/O口,这2个I/O口输出的PWM波存在压差,就控制小车的运行方向和速度。采用两片A4950,分别控制两个驱动电机。

图5是多条路径的其中一种路电机的驱动电路设计。A4950的2和3脚接小车STM32控制器的I/O口,用以产生PWM波来控制小车的运动。IN1、IN2通常设定为频率相同的PWM波,而通过调节IN1、IN2不同占空比的PWM波,来实现正反转和控制电机的运行速度。式(5)表示电机驱动时的最大限制电流,如图5所示,可知当前电机最大限制电流为2A。

4 软件设计

4.1 手持端主程序设计

手持端在读取到三轴数据后,根据前文所述的手势变化与角度换算的关系,转化为直接对X轴、Y轴数据的判断,并根据X轴、Y轴的数据做出七个方向指令的约定。如表1所示。

主流程图如图6所示。程序不断地读取三轴数据,并根据表1约定的规则做出不同的手势判断,从而发送不同的指令给小车,与此对应,小车收到不同的指令后,再做出七个不同的运动状态。

4.2 ZigBee发送与接收程序

手持端与小车通过ZigBee模块实现指令的传输。Zig-Bee模块与STM32控制器之间都是通过串口方式连接。为提高无线传输的可靠性,本系统对收发两端的串口通信格式进行统一规划,采用9600bps的波特率,每帧数据包含Byte0-Byte4五字节,依次是0x5A、0x5A、0x01、指令数据、校验码。其中0x5A是Byte0,Byte1的帧头,Byte2为0x 01,代表当前指令数据的数据量为一个指令数据。Byte3为不同手势下的指令数据,详情见表1所示,Byte4是前面Byte0-Byte3数据的累加和,仅保留低8位。

小车接收端接收到数据后,经过对帧头的判断以及对校验和的验证,最后取得有效指令数据来实现不同运动状态的控制。图7为小车接收一帧数据的流程图。

4.3 小车运动系统控制程序

图8是小车运动系统程序流程。小车在接收到运动方向的指令后,根据不同的指令做出向不同方向的运动状态。其中一帧数据中Byte3是指令数据,有明确的运动方向定义。因此,小车在接收数据并完成校验后,提取指令数据,接下来就是STM32控制器I/O口输出对应的PWM波,控制电机和舵机实现包括停止在内的七个方向的运动,小车运行的速度与舵机之间有一定的关系,左右驱动电机需要合理的控制方法保证小车运行速度的要求,本系统中,电机驱动部分带有编码器测速单元,因此对速度的控制是采用PID控制算法[7],就是将测量的速度与上一次测量速度进行比较,利用PID控制算法,控制单片机输出PWM脉冲到电机驱动模块PWM端,控制电机转速。

5 结 论

本设计采用ADXL345的重力感应实现手势控制小车运动。对手持端和小车的软硬件设计做了较为详细的介绍。通过电路设计、软件编写以及系统调试方式,最终实现了手势控制下的小车多方向运动系统的设计。手持端重力感应控制方式与小车之间的ZigBee无线模块数据传输达到了应用手势控制小车的目的。实际测试结果表明,该方式操作简便灵活,控制过程方便可靠,可以应用于其他工业控制中。

参考文献:

[1] 张轩,王富奎,赵如凡,等.基于无线遥控的两轮自平衡车设计 [J].自动化与仪器仪表,2016(3):78-80+82.

[2] 肖茜,陈庆.基于ADXL345的超低功耗倾角测量仪的设计 [J].电脑知识与技术,2014,10(16):3923-3925+3932.

[3] 刘军,张洋,严汉宇.例说STM32 [M].北京:北京航空航天大学出版社,2018.

[4] 刘火良,杨森.STM32库开发实战指南 [M].北京:机械工业出版社,2016.

[5] 云中华,刘洪春,李勇峰,等.STM32的方位角度与倾斜数据测量仪系统设计 [J].单片机与嵌入式系统应用,2015,15(10):44-46+58.

[6] 陈佩嘉,朱松青,许有熊,等.基于ZigBee的地铁门振动加速度无线采集系统设计 [J].南京工程学院学报(自然科学版),2017,15(3):8-12.

[7] 范政,何继靖,朱永业,等.基于STM32的无线智能小车控制系统设计 [J].轻工科技,2018,34(6):83-85+87.

作者简介:徐宁(1997-),女,汉族,黑龙江七台河人,本科,研究方向:电子技术应用。

标签:  小车