stm32智能小车红外避障

本文详细介绍了如何使用红外避障模块构建STM32智能小车的避障功能,包括模块工作原理、原理图分析、CubeMX配置以及编写检测和避障操作的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文代码使用 HAL 库。

前言


一、红外避障模块介绍

红外避障模块是一种常用于智能小车、机器人等设备中的传感器模块,用于检测周围环境中的障碍物。它通常 由红外发射器和红外接收器组成 ,并能够通过红外光线来探测周围物体的距离和位置。

正前方有障碍时绿灯 (L1)亮起,使用前通过调节红外模块的旋钮,控制红外检测的距离。顺时针扭动缩短测距的长度,逆时针增加测距的长度

在这里插入图片描述

二、避障原理

红外传感器具有一对红外发射管(白灯)和接收管(黑灯)。当发射管发射出一定频率的红外线,当检测方向遇到障碍物时,红外线会反射回来被接收管接收。它常用于安装在小车上,判断前方是否有障碍物。可以通过电位器设置阀值。正前方有障碍物时绿灯亮起,OUT 引脚为低电平,反之为高电平。

红外传感器利用物体的反射性质,在一定范围内,发射出去的后果外线,会因为传播距离越来越远二逐渐减弱,最后消失。如果有障碍物,红外线遇到障碍物会被反射到达传感器的接收头。我们本次实验采用的是 2 路红外传感器分别连接在 STM32 主控板的PA4, PA6 口。我们可以通过检测两端的电平判断障碍物的情况,并作出避障操作。

三、原理图分析

在 stm32 智能小车上有 2 个红外避障模块,在红外避障模块的上面有一个光敏模块,可以检测光照强度。

红外避障寻光模块原理图:

一般就 3 个引脚,VCC(电源引脚),GND(接地),OUT1(信号输出引脚)
OUT2 是光敏模块的输出引脚。
在这里插入图片描述

stm32 底层驱动板电路图:

左,右红外避障模块发射端口:

INT5 -------------> PA4
INT7 -------------> PA6
在这里插入图片描述

四,cubeMX 配置

  1. 引脚配置,将 PA4,PA6设置为输入引脚。
    在这里插入图片描述

  2. 其他基础的配置可以参考我之前的文章。

五,编写代码

对于小车运动函数的代码(前进后退,左转,右转)可以参考我之前的文章:
stm32智能小车前进,后退,左转,右转,停止

int right_ir=0;	//右红外  PA4
int left_ir=0;	//左红外  PA6


/* 红外检测
 * Car_sport 是小车运动函数
*/
void IR_Avoid(void)
{	
    left_ir = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_6);
    right_ir = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);
	
	/* 检测:低电平---有障碍物 */
    if((left_ir == 0) && (right_ir == 1))	//左边有障碍物,右边没有,右转
    {
       	printf("left yes,  right no\r\n");
		Car_sport(4,300);
    }
    else if((left_ir == 1) && (right_ir == 0))	//右边有障碍物,左边没有,左转
    {
       printf("left no,  right yes\r\n");
	   Car_sport(3,300);
    }
    else if((left_ir == 0) && (right_ir == 0))	//左右都有障碍物,后退
    {
       printf("left yes,  right yes\r\n");
	   Car_sport(0,300);
    }
}

总结

下篇文章为大家介绍 智能小车循迹。

1.时钟源 外部时钟 2.GPIO (实验:点亮LED灯,获取引脚的电平高低,将对应引脚置高置低)。 3.PWM-脉宽调制 主要是调节占空比(在小车中用来实现小车的加减速)。 4.TIMX定时器 5.红外遥控 主要运用了EXTI(外部中断/事件控制器),系统延时(系统滴答定时器SysTick)。 6.超声波避障 了解了超声波工作的原理,主要运用了TIM2定时器(用来定时测距),GPIO口。 7.红外探测 通过对障碍物和光的感应来返回电平的状态,从而达到避障和巡线效果。 8.测速码盘 (通过检测码盘上的凹槽数来获取脉冲数,通过计算公式得到小车当前速度) TIM3定时器(定时测速)。 9.PID算法 为了使小车的速度更快的达到目标值,获取更稳定的速度。 10.系统的使用 我们在小车内加入系统,对小车的数据获取,状态实现任务化,使小车内的运作更加有序。我们主要使用μC/OS-II系统内核来实现系统。在实现过程中,我们了解了系统的任务调度以及任务运行和处理器之间的关系(多任务同时运行)。 μC/OS-II内核中的任务控制块,任务状态,以及多任务和任务的优先级类似操作系统中的进程操作。 11.任务间的通信 主要用到信号量(主要就是PV操作 P操作:占用资源。V操作:释放资源);邮箱(邮箱可以使一个任务或者中断服务子程序向另一个任务发送指针型的变量,通常该指针指向包含了“消息”特定的数据结构)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值