零基础STM32单片机编程入门(十三) 红外避障传感器模块实战含源码

一.概要

红外避障模块具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测遇到障碍物时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接回输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3v-5v。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

在这里插入图片描述

二.红外避障模块主要参数

1.模块引脚定义

在这里插入图片描述

2.模块特点

1、当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮电平,同时OUT端口持续输出低电平信号,该模块检测距离2~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。
2、传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。
3、传感器模块输出端口OUT可直接与单片机IO口连接即可,连接方式:VCC-VCC;GND-GND;OUT-IO,单片机检测到OUT脚为低电平,就说明模块检测到障碍物。
4、比较器采用LM393,工作稳定。
5、可采用3-5V直流电源对模块进行供电。当电源接通时,红色电源指示灯点亮。
6、具有3mm的螺丝孔,便于固定、安装。
7、电路板尺寸:3.2CM*1.4CM。
8、每个模块在发货已经将阈值比较电压通过电位器调节好,非特殊情况,请勿随意调节电位器。

3.模块原理图

在这里插入图片描述

三.STM32单片机红外避障模块检测实验

硬件准备:

STLINK接STM32F103C8T6小系统板,STLINK接电脑USB口。

板子与OLED用杜邦线连接:
板子G----液晶GND
板子3.3–液晶VCC
板子B10—液晶SCL
板子B11—液晶SDA

用杜邦线把模块与开发板相连:
板子3.3----模块VCC
板子A0-----模块OUT
板子G------模块GND

打开STM32CubeMX软件,新建工程
在这里插入图片描述
Part Number处输入STM32F103C8,再双击就创建新的工程
在这里插入图片描述
配置下载口引脚
在这里插入图片描述
配置外部晶振引脚
在这里插入图片描述
配置系统主频
在这里插入图片描述
配置PA0为上拉输入
在这里插入图片描述

配置工程文件名,保存路径,KEIL5工程输出方式
在这里插入图片描述
生成工程
在这里插入图片描述
用Keil5打开工程
在这里插入图片描述

添加OLED驱动文件
在这里插入图片描述

添加红外避障相关代码
在这里插入图片描述

主要代码

void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin : PA0 */
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();//8M外部晶振,72M系统主频

  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */
	OLED_Init();	//初始化OLED  
	OLED_Clear(); //清屏幕
	while(1) 
	{		
		OLED_Clear();
   		OLED_ShowCHinese(18,0,0);//光
		OLED_ShowCHinese(36,0,1);//子
		OLED_ShowCHinese(54,0,2);//物
		OLED_ShowCHinese(72,0,3);//联
		OLED_ShowCHinese(90,0,4);//网
		OLED_ShowCHinese(10,3,5);//障
		OLED_ShowCHinese(28,3,6);//碍
		OLED_ShowCHinese(46,3,7);//物
	  	OLED_ShowString(80,3,"TEST");//显示字符


		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0)//读取PA0引脚电平,如果低电平,说明有障碍物
		{
				OLED_ShowCHinese(46,6,8);//有
		}else
		{
		
				OLED_ShowCHinese(46,6,9);//无
		}
		HAL_Delay(1000);//等待1S
	}	  
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */

}

四.CubeMX工程源代码下载

链接:https://pan.baidu.com/s/1NWgMtOVtM9jWK6QUGCkPTw
提取码:7n2o
如果链接失效,可以联系博主给最新链接
程序下载下来之后解压就行

五.小结

红外避障模块是常用于智能小车、机器人等设备中的传感器模块,用于检测周围环境中的障碍物。对于小车检测前方是否存在障碍物,是很好的选择。

### 制作STM32红外避障小车答辩PPT的内容结构 #### 1. 封面页 - **标题**: STM32红外避障小车设计与实现 - **副标题**: 基于嵌入式系统的智能车辆开发 - **作者姓名** - **日期** #### 2. 目录 列出主要章节,帮助观众快速了解报告框架。 #### 3. 背景介绍 阐述项目背景及其重要性。解释为什么选择这个课题以及它在实际应用中的价值所在。 #### 4. 系统概述 提供整个系统的高层次描述,包括硬件平台的选择(如选用STM32单片机),软件环境配置等基本信息[^1]。 #### 5. 硬件组成分析 详细介绍各个模块的功能特性: - 主控单元 (MCU): 使用的是哪款型号的STM32芯片? - 传感器部分: 如何通过红外线检测障碍物的存在?具体采用了哪些类型的IR传感器? - 执行机构: 驱动电机的工作原理是什么样的? #### 6. 软件架构说明 展示程序流程图并讲解核心算法的设计思路;强调编程语言(C/C++)及IDE(Dev-CPP)的选择依据。 #### 7. 关键技术难点解析 针对遇到的技术挑战给出解决方案,比如信号处理、路径规划等方面可能存在的困难是如何克服的。 #### 8. 测试验证过程 分享测试过程中所使用的设备仪器和方法步骤,并附上实验数据图表来证明系统性能良好。 #### 9. 结论总结 概括研究成果的意义,对未来工作的展望可以提及改进方向或潜在的应用场景拓展可能性。 #### 10. 致谢环节 感谢指导老师和其他给予帮助的人士。 ```python # 示例代码片段用于演示如何读取红外传感器状态 def read_ir_sensor(pin): """Read the state of an IR sensor connected to a given GPIO pin.""" value = digital_read(pin) return "Obstacle detected" if value == LOW else "No obstacle" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值