当前位置: 首页 > news >正文

外设模块学习(10)——红外避障模块(STM32)

引言

       本次学习的是一款与前面红外循迹模块原理很像的模块——红外避障模块,如下图所示。

       在避障小车等场景中常常可以看见。本次我们来简单学习一下其用法,并基于STM32实现一下对该模块的控制。


一、红外避障传感器介绍

       根据厂家提供的对该传感器介绍的文档可知,该传感器模块具备较强的环境光线适应能力,核心配置为一对红外线发射与接收管,核心特性如下:

(1)检测机制:发射管发射特定频率的红外线,当检测方向存在障碍物(反射面)时,红外线经反射后被接收管捕获,再通过比较器电路处理;

(2)核心优势:干扰小、装配便捷、使用简单;

(3)适用场景:广泛应用于机器人避障、避障小车、流水线计数、黑白线循迹等场景。

二、相关参数介绍

(1)障碍物检测反馈:当模块检测到前方障碍物信号时,电路板上的绿色指示灯会随之点亮,同时 OUT 端口会持续输出低电平信号,以此明确反馈障碍物存在状态。

(2)检测范围与调节方式:模块的有效检测距离为 2~30cm,检测角度为 35°;检测距离可通过电位器灵活调节,顺时针旋转电位器时,检测距离会增加,逆时针旋转电位器时,检测距离则会减少

(3)目标特性对探测的影响:该传感器采用主动红外线反射探测原理,目标的反射率和形状是影响探测距离的关键因素。其中,反射率方面,黑色目标的探测距离最小,白色目标的探测距离最大;形状方面,小面积物体的探测距离较小,大面积物体的探测距离较大

(4)连接与驱动兼容性:传感器模块的输出端口 OUT 具备灵活的连接方式,可直接与单片机的 IO 口连接,也能直接驱动 5V 继电器;标准连接逻辑为 VCC 与外部电源 VCC 对接、GND 与外部电源 GND 对接、OUT 与单片机 IO 口对接。

(5)核心元器件与稳定性:模块内置 LM393 比较器,该元器件能有效保障模块在工作过程中的稳定性,减少信号干扰导致的误判问题。

(6)供电与电源指示:模块支持 3-5V 直流电源供电,适配多种常见电源规格;当电源成功接通后,电路板上的红色电源指示灯会点亮,直观提示模块供电状态。

(7)电位器预设与使用提醒:每个模块在出厂发货前,均已通过电位器调节好阈值比较电压,确保默认状态下的稳定工作;非特殊需求或专业调试场景,请勿随意调节电位器,避免影响模块检测精度。

三、引脚定义及功能介绍

接口标识功能说明
VCC外接 3.3V-5V 电压,可直接与 5V 单片机或 3.3V 单片机连接
GND外接电源地(GND)
OUT模块数字量输出接口,输出信号为 0(低电平)或 1(高电平)

       这样看,使用STM32控制红外避障模块就比较简单了,只需要接收模块通过OUT引脚对外输出的电平,然后判断一下:高电平-无障碍,低电平-有障碍

四、参考代码

       经过上述原理介绍可知,其应用逻辑还是很简单的,下面给出参考代码,这是基于STM32F103系列单片机,寄存器方式编写的。

4.1 ir_obstacle.h

#ifndef __IR_OBSTACLE_H
#define __IR_OBSTACLE_H#include "stm32f10x.h"/*** 引脚接线* * VCC  --->  3.3/5V* GND  --->  GND* OUT  --->  PA0* 
*/// 宏定义
#define IS_OBSTACLE     (1)
#define NOT_OBSTACLE    (0)void IR_Obstacle_Init(void);
uint8_t IR_Obstacle_Detect(void);#endif 
/*** (C) COPYRIGHT 2025 END OF FILE ***/

4.2 ir_obstacle.c

/** @Descripttion: 红外避障模块驱动文件(.c)* @Author: JaRyon* @version: * @Date: 2025-10-27 19:20:21*/
#include "ir_obstacle.h"/*** @brief      红外避障模块初始化(.c)* @param      void 无* @return     void* @example    IR_Obstacle_Init();* @attention  */
void IR_Obstacle_Init(void)
{// 控制端口的初始化 PA0RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;// 浮空输入 mode-00 cnf-01GPIOA->CRL &= ~GPIO_CRL_MODE0;GPIOA->CRL &= ~GPIO_CRL_CNF0_1;GPIOA->CRL |= GPIO_CRL_CNF0_0;
}/*** @brief      输出红外避障模块检测结果 有障碍-0 无障碍-1* @param      void 无* @return     uint8_t* @example    uint8_t Res = IR_Obstacle_Detect();* @attention  */
uint8_t IR_Obstacle_Detect(void)
{return (GPIOA->IDR & GPIO_IDR_IDR0) ? NOT_OBSTACLE : IS_OBSTACLE;
}

4.3 main.c

/** @Descripttion: 红外避障模块测试代码* @Author: JaRyon* @version: * @Date: 2025-10-25 23:10:52*/
#include "stm32f10x.h"
#include "LED.h"
#include "ir_obstacle.h"int main(void)
{// 初始化LED_Init();			// LEDIR_Obstacle_Init();	// 红外避障while(1){		// 有障碍LED1点亮if (IR_Obstacle_Detect() == IS_OBSTACLE)LED_On(LED1);elseLED_Off(LED1);}
}

       主程序测试代码很简单,就是有障碍的时候点亮某一个LED。


五、小结

       本次,我们介绍了红外避障模块的工作原理及基于STM32的应用实现。该模块通过红外发射与接收管检测障碍物,具有2-30cm可调检测范围,输出高低电平信号分别表示有无障碍。

       文中详细说明了模块参数、引脚定义,并提供了STM32驱动代码示例,包括初始化配置和检测函数实现。测试代码通过LED灯直观显示检测结果,当检测到障碍物时点亮LED。


       以上便是本次文章的所有内容,欢迎各位朋友在评论区讨论,本人也是一名初学小白,愿大家共同努力,一起进步吧!

鉴于笔者能力有限,难免出现一些纰漏和不足,望大家在评论区批评指正,谢谢!

http://www.dtcms.com/a/554022.html

相关文章:

  • 60 d3.js 不能正确展示节点连线, 以及一个基础的demo
  • 优质网站建设是哪家北京论坛网站建设
  • 黑马商城day8-ES01
  • 创意网站建设公司阿里云宝塔面板一键安装wordpress
  • F043 vue+flask天气预测可视化系统大数据(浅色版)+机器学习+管理端+爬虫+超酷界面+顶级可视化水平
  • 电脑无法识别WiFi 7路由器的解决方式
  • 海南网站推广微商目前十大火爆产品
  • Nestjs框架: 微服务架构实践与技术选型指南
  • 网络请求完整指南 - 从原理到实践
  • PHP网站建设项目经验动态wordpress动态主题
  • 企业网站建设项目描述saas小程序开发
  • 各大门户网站怎么做推广如何做网站 优帮云
  • Python在云计算中的应用:AWS Lambda函数实战
  • Spring Cloud OpenFeign进行服务间调用时,传递自定义的请求头信息及报错解决
  • 基于单片机的 AI 智能快递柜设计与实现
  • 【医学影像 AI】视网膜图像多类别分割中的“段内误分类”
  • python3.13安装教程(附安装包),【2025】python3.13安装图文教程
  • 深圳专业建站多少钱线上渠道推广
  • ROS开发中`laser_scan_matcher`节点启动失败问题的分析与解决
  • 南昌装修网站建设菠菜网站的代理怎么做
  • c++调用客户端库与kafka交互
  • 用Liunx service方式管理SuperMap iServer
  • 邢台网站设计哪家专业wordpress主题添加后台设置选项
  • 京东网站建设的策划书如何做120急救网站
  • 佛山新网站建设服务安卓开发是做什么的
  • 普通园区摄像头如何将视频传输至云端平台
  • HDMI接口与串口:核心知识点解析及全方位区别对比
  • sql server 备份恢复全备和日志备份时间相近恢复失败
  • 回溯剪枝trick
  • 网页设计与制作用什么软件做北京公司排名seo