基于STM32的重力感应无线智能遥控小车设计

《物联网技术》杂志
2021-10-13 16:09
收藏

0 引 言

随着社会进步,电子消费产品的需求越来越高,遥控智 能车辆以及在智能化车辆基础上开发出来的产品已广泛应用到 自动化物流运输等领域。目前,遥控智能车辆大多采用无线 传输方式,而无线传输逐渐取代有线传输不仅是因为“无线”, 更因为在安装、增减节点方面都比有线方式方便、快捷,因此 得到了广泛的应用 [1]。 

本设计首先采集手持遥控端的倾角信息并进行处理、生 成指令,然后无线发送给智能小车,赋予智能小车更灵活的 运动状态和更宽广的运动范围。设计灵活,操作方便,控制 稳定,制作成本低,可应用于视线可观察但人体涉及不到的区 域,可制作成高端智能玩具,或应用于工业控制,与实际相结 合,有良好的现实意义和市场经济价值 [2]。 

1 系统硬件电路设计 

采用整体设计的方法进行设计,系统硬件主要由两大 部分构成 [3],即以 NUCLEO-L053 为控制核心的手持遥控 端和以 STM32F103C8Tx 为控制核心的智能小车。手持遥控 端 是 以 ADXL345、OLED12864 与 nRF24L01 为 基 础 的 检 测倾角装置,显示参数装置和无线发射装置。采用的 MCU 为STM32L053R8T6,由 ADXL345 不断检测手持设备的姿 态,在 OLED上显示倾角值,传给 MCU。MCU 把处理好 的数据转为小车动作指令,最后通过 nRF24L01 模块发射给 小车。小车以 nRF24L01 和 L298N 为基础,采用的 MCU 为 STM32F103C8Tx,通过 nRF24L01 模块接收遥控设备发送的 数据包,然后把数据包传给 MCU 进行处理,MCU 把处理好 的数据包转换为相应指令,由 STM32 两路定时器通道产生两 路 PWM 波控制电机驱动 L298N,从而实现对小车运动状态 的调整。并结合 NUCLEO-L053 板载独立按键对 ADXL345 校准和 OLED 再次初始化,从而增强产品的可靠性、稳定性、 功能性优势。


1.1 手持遥控端电路设计 

按照模块化设计思想 [4],手持遥控端主要由倾角传感器 模块 ADXL345、遥控端控制模块 NUCLEO-L053、无线收发 模块 nRF24L01、液晶显示模块 OLED12864、电源模块等构 成。倾角传感器模块 ADXL345 主要用于检测手持遥控端的倾 角状态,并将倾角信息传给遥控端控制模块 NUCLEO-L053 进行处理,生成指令通过无线收发模块 nRF24L01 发送给智 能小车。液晶显示模块 OLED12864 进行角度、加速度等信息 显示,电源模块给各功能模块供电,保证这些模块可正常工作。 本设计引入卡尔曼滤波算法 [5] 对手持遥控端的状态角度进行 优化,能够有效减少输出信号的毛刺波动,避免小车运行过 程中频繁出现卡顿现象,从而让小车的行驶更平滑。手持遥 控端设计框图如图 1 所示。



倾角传感器模块使用 ADI 公司生产的基于 iMEMS 技术 的 3 轴、数字输出倾角传感器 ADXL345[6]。该模块具有标准I2C 或 SPI 数字接口及高分辨率等特征,自带 32 级 FIFO 存储,是目前广泛使用的数字倾角传感器。倾角传感器产生经 过内部 AD 转换电路后输出的数字信号,计算导出加速度信息。 在具体工作时,倾角传感器会因微小振动产生噪声,此时需要 卡尔曼滤波与加速度计相互作用,调整参数将误差降到最小。 

卡尔曼滤波(Kalman Filtering)是一种利用线性系统状 态方程,通过系统输入输出观测数据,对系统状态进行最优 估计的算法。在本设计中,主要对角度信息进行最优估计,分 为如下 4 步: 


(1)根据 k-1 时刻的最优角度值及偏差预估 k 时刻的角 度值(估计值); 

(2)根据 k-1 时刻的最优角度值偏差与 k 时刻的估计值 偏差得到 k 时刻估计值的高斯白噪声; 

(3)根据 k 时刻测量值与估计值的协方差判定权重大小, 得到最优角度值 ; 

(4)根据 k 时刻的最优角度值及偏差预估 k+1 时刻的角 度值(估计值)。通过循环迭代就可以得到最优的状态角度估 计值。

NUCLEO-L053 为 ST 推出的一种基于 Cortex-M0+ 内核 的遥控端控制模块 [7],其 CPU 最高系统时钟可达 32 MHz, 可充分满足本设计所用的模块时钟频率 ;内含 64 KB Flash 和 8 KB RAM,可提供足够大的堆栈空间,满足复杂程序;具有 本设计所需的 I2C、SPI、USB 全速接口,提供 MCU 和模块 间高速的通信方式 ;板载独立按键和 LED,可供用户自定义 使用。

无线收发模 块 nRF24L01[8] 工作 在 2.4 G 的全球开放 免许可 ISM 频段,GFSK 调制,工作速率高达 2 Mb/s 且抗 干扰能力强,拥有多达 125 个可选频道,可以满足多点通信 和调频通信的需求。采用 SPI 方式进行手持遥控端无线收 发模块 nRF24L01 与控制模块 NUCLEO-L053 之间的连接。 ADXL345 与控制模块的连接如图 2 所示。


1.2 智能小车电路设计 

智能小车主要由无线收发模块 nRF24L01,小车控制模 块 STM32F103C8Tx,电机驱动模块 L298N,电源模块等组成。 无线收发模块接收手持遥控端发出的控制指令,传送给小车 控制模块进行处理,由 STM32F103C8Tx 的定时器 4 产生对 应的两路 PWM 波,调节 L298N 驱动两台直流电机完成对应 动作。智能小车的设计框图如图 3 所示。



STM32F103C8Tx 是目前应用非常广泛的一款 ARM 芯片, 采用 Cortex-M3 内核,拥有 16 KB ~1 MB Flash 存储,高达 72 MHz 的 CPU 运行速率,多种控制外设,USB 全速接口和 CAN 等。在本设计中用来处理 nRF24L01 接收的数据包、控 制 L298N 电机驱动模块等。 

电机驱动使用 L298N 驱动两台直流电机 [9]。此款芯片具 有工作电压高,输出电流大等特点,额定功率为 25 W。本设 计电机驱动使用 6 节 AA 电池,输入电压为 9.5 V,可直接驱 动两台电机。通过引脚 A,B 输入定时器 4 产生的两路 PWM 信号对电机进行调速控制。L298N 模块驱动电路如图 4 所示。



为保证小车的运行速度,无需进行调速,全速行驶,加 在 L298N 驱动上的电压为 6 ~12 V,而 STM32 需要的最大 电压为 3.3 V,为了节省资源,减少电源模块,需要降压。选 用 AMS1117 芯片降压 [10]。电源模块降压电路如图 5 所示。



2 系统软件设计 

本系统软件程序设计由两大部分组成,即手持遥控端软 件程序和智能小车软件程序。手持遥控端软件程序首先上电 进行初始化,主要是 ADXL345 模块初始化,然后系统正常工 作。ADXL345 模块不断检测倾斜角度的改变,控制模块对倾 角传感器姿态数据进行处理,将加速度数据转换成倾角角度, 并进行卡尔曼滤波,判断倾斜角度是否超出阈值,若超过则 发送小车运动指令。智能小车软件程序接收手持遥控端的指令进行处理之后驱动小车,接收端对接收到的指令进行判断, 控制小车作出前进、后退、转弯等动作。软件程序流程如图 6 所示。


完成软硬件设计之后就开始对本设计进行系统整体测试 工作。通过改变手持遥控端的倾角信息,可以在 OLED上正 常显示传感器姿态信息,无线收发装置可以正常收发指令, 控制智能小车的前进、后退、左转、右转等运动状态。手持 遥控端和智能小车的实物图如图 7 所示。



3 结 语

本文应用倾角信息采集模块与无线数据传输模块设计了 一种重力感应无线智能遥控小车,并重点介绍了手持遥控端 与智能小车的硬件电路与软件程序设计。手持遥控端采集倾 角信息,经卡尔曼滤波处理,控制模块发出指令,通过无线 方式控制智能小车完成相应动作。经测试,所设计的重力感 应无线智能遥控小车操作灵活,使用方便,且具有较高的稳 定性与广阔的应用前景。
































相关推荐