STM32是一款基于ARM Cortex-M内核的微控制器,由STMicroelectronics公司生产。在本项目中,我们利用STM32CubeMX配置工具和HAL库来开发一款具有超声波避障功能的智能小车。STM32CubeMX是STM32微控制器的配置和初始化工具,它提供了图形化界面,方便用户快速设置系统时钟、外设接口以及引脚复用等功能,大大简化了开发流程。 HAL(Hardware Abstraction Layer)库是STM32官方提供的一种面向对象的驱动库,它将底层硬件操作封装成了统一的接口,使得开发者可以专注于应用层的逻辑编写,而无需过多关注底层硬件细节。在这个项目中,HAL库被用于管理STM32的各种外设,如GPIO、TIM(定时器)、USART(串口通信)以及I2C(用于可能存在的传感器连接)等。 避障小车的核心功能包括以下几个部分: 1. **引脚分配表**:STM32的GPIO引脚需要正确配置以驱动电机、舵机和超声波传感器。引脚模式(输入/输出、推挽/开漏、速度等级等)和中断功能需要在STM32CubeMX中设置。例如,电机控制可能需要用到PWM输出,舵机控制通常通过GPIO的模拟脉宽调制实现。 2. **舵机控制**:舵机会根据接收到的脉冲宽度调整其转动角度,从而改变小车的方向。在STM32中,可以通过定时器配置PWM信号来控制舵机。HAL库提供API函数如HAL_TIM_PWM_Init()和HAL_TIM_PWM_PulseFinishedCallback(),用于初始化定时器和处理PWM脉冲。 3. **超声波数据接收**:超声波传感器(如HC-SR04)通过发送和接收超声波脉冲来测量距离。在STM32上,超声波的发射和接收通常通过GPIO控制。发送一个触发脉冲启动传感器,然后使用定时器检测回波时间。HAL_GPIO_WritePin()和HAL_GPIO_ReadPin()函数用于控制GPIO状态,而HAL_TIM_Encoder_Init()和HAL_TIM_Encoder_Start_IT()可以用于精确计时。 4. **避障算法**:根据超声波传感器返回的距离数据,小车需要有决策机制来判断是否需要避障。这可能涉及到简单的阈值判断,或者更复杂的路径规划算法。一旦检测到前方障碍物,可以通过控制舵机调整小车方向,或通过改变电机速度来避开。 5. **串口通信**:为了调试和监控小车状态,可能需要通过USART与PC或其他设备进行通信。HAL库的HAL_UART_Init()和HAL_UART_Transmit()等函数可以实现串口的初始化和数据发送。 6. **软件架构**:项目可能采用模块化设计,每个功能如电机控制、超声波测距、舵机控制等都有独立的函数或类。这样有利于代码的可读性和维护性。 通过以上介绍,我们可以看出,基于STM32CubeMX和HAL库的开发方式让开发智能小车的过程更加高效和便捷,同时保持了代码的可移植性和扩展性。对于初学者和经验丰富的开发者来说,都是一个很好的实践平台。
2024-07-07 15:07:51 38.67MB stm32
1
红外遥控的超声波避障小车
2024-05-16 16:25:59 77KB 遥控小车 红外遥控 超声波避障
1
基于STM32/HAL库的超声波避障小车,SG90舵机云台+HC-SR04超声波模块,具体讲解请移步至我的主页
2023-01-01 17:07:55 7.03MB HAL库 stm32
1
避障小车使用超声波进行距离测量,根据测量距离决定小车行驶方向。对于避障做了简化处理,只要有障碍物就右转。为了节省成本,只用了一个超声波模块,因此只能对正前方物体进行避障。小车采用三轮结构,速度差进行方向控制。 超声波模块使用的成品模块,单片机使用一个最小系统板,底板上有L293D电机驱动模块。实物图如下: 附件包含原理图&源代码
2022-11-15 10:25:52 86KB 避障小车 diy制作 电路方案
1
基于单片开机的超声波避障小车,能实现自动避障,显示行驶过的路程 源程序
2022-11-07 15:06:01 27KB 单片机 超声波 避障 测路程
1
stm32 库函数版超声波避障+SG90电机+HC05蓝牙控制
2022-09-25 22:04:49 7.12MB stm32
1
前言: 前几天收到了K64板子与小车套件,后来又准备了一些别的配件,刚搭好硬件,特来汇报一番 FRDM-64F板子做工的确不错,刚到手的时候没注意观察引脚,发现没有直接供电的接口,马上将板子上面的J27焊上,顺手将D13短接,这样可以方便从电池供电,后来仔细看了原理图,上面其实在J3上有这两个供电的脚。 为了方便连接HC-06蓝牙,将板子尾部的BT接口焊上插针,将HC-06改造成3.3v供电后直接连接即可使用,对应K64的UART4_RX_PC14_TX_PC15,非常方便,顺便说一句,这里也可以焊成插座,将HC-06直接插上面也可以,只是没有用排线连接灵活。 四轮小车设计原理介绍: 1.蓝牙控制 2.超声波避障 3.两自由度云台(舵机+步进电机) 4.高精度激光测距 实现功能如下: 蓝牙能够控制小车上下左右停 超声波限定一定距离自动规避障碍 两自由度云台调整激光探头的角度 激光测距高精度测量距离反馈给手机APP 模块清单如下 电源模块:3.7v×2电池组 2A 可调DC-DC电源模块(给电机单独供电) 1A 可调DC-DC电源模块(给K64与超声波模块供电) 其他功能模块: H9110电机驱动模块两个 超声波测距模块两个(一个放车头,一个放左侧) HC-06蓝牙串口模块 TXS0108E电平转换模块(8位高速全双工转换,用于K64与其他5v模块之间的连接) 整个项目设计进程: 以上功能完全实现 话不多说了 看视频,附件内容有蓝牙控制小车源码(有控制APP源码和apk) 超声波避障视频:【疯狂的四驱车】超声波避障 云台和测距视频:【疯狂的四驱车】激光测距四驱车(最终演示视频)
1
这是基于STM32f407单片机的超声波避障蓝牙遥控小车的Keil程序。这份文件包含了蜂鸣器报警beep.c,电机驱动PWM控制car.c,蓝牙遥控小车行驶方向car_turn.c,超声波避障hc_sr04.c,OLED显示距离、行驶方向和报警状态oled.c。
2022-05-30 15:54:16 495KB 单片机 stm32 c语言 arm
1
学习Arduino有段时间了,也看了很多东西,所以打算最近做了一辆3轮的智能车。 Arduino智能车制作配件 3轮小车底盘(能安装UNO、带其他配件) 1块 UNO控制板 1块 Arduino电机驱动 1块 UNO扩展板 1块 7.4V充电锂电池(充电器) 1块 电源端转DC端口线 1块 超声波云台(包含超声波、舵机及固定支架) 1块 LCD12864液晶显示器 1块 测速模块 2块 杜邦线(连接模块) 20根左右 焊接导线(连接电机及点击驱动) 6根左右 铜柱螺丝(必要时加高) 热缩管+扎带+黑胶布 工具:烙铁、锡丝、斜口钳或者剪刀、打火机(热缩管用)、螺丝刀 小车所用到的装备: 1、首先当然是小车底盘了,我用的是3轮小车底盘,带开关(很方便); 2、控制板(我用的是UNO兼容版),电机驱动,扩展板(方便用杜邦线,VCC及GND也很多);3块板子可以直接插在一起,节省了很多空间,如下图: 3、供电电源,我使用的是7.4V充电锂电池加DC转接头,当然还有充电器~~如下图: 4、超声波舵机云台,如图: 5、显示模块LCD12864,我的买回来后又加工了一次,原来是直排针(不太还接线),将它改成弯排针了,如下图: 6、最后就是测速模块,现在还没调试到它,但是已经将它安装在小车上;还有些配件:螺丝、铜柱、杜邦线等,还有些简单的工具:烙铁、螺丝刀什么的;我还有用扎带,热缩管,这样小车看起来会更美观! 超声波使用的是 A2 和A3脚,这个自行定义也可以的!我使用的扩展板上就有这个接口舵机使用的是D13 12864 使用的是杜邦线连接的,引脚使用下面也有! 所有的连接方式都有写到程序中,打开一看就知道了! Arduino避障小车 電路連接: D3、D4和D6、D7分别连接左右电机,控制电机 超聲波連接: VCC ---- +5V;Trig ---- A2;Echo ---- A3;GND ---- GND; 舵機控制:D13 LCD12864引脚连接: RS ---- D2;R/W ---- D8;E ---- D9;PCB ---- GND;VSS ---- GND;VDD ---- VCC;LED+ ---- VCC;LED- ---- GND;
2022-05-05 16:36:56 67KB 智能车 超声波避障 电路方案
1