首页 > 其他分享 >HC-SR04超声波传感器详解(STM32)

HC-SR04超声波传感器详解(STM32)

时间:2024-11-07 22:19:48浏览次数:3  
标签:SR04 HAL PIN 引脚 TRIG ECHO STM32 GPIO HC

HC-SR04是一款广泛使用的超声波传感器,它通过发射和接收超声波来测量距离。本文将详细介绍HC-SR04的工作原理、引脚描述、STM32的接线方式以及如何通过STM32控制HC-SR04来测量距离。

一、HC-SR04传感器介绍

HC-SR04超声波传感器的主要参数如下:

  • 工作电压:DC 5V
  • 工作电流:3.3mA
  • 工作温度:-40~85℃
  • 输出方式:GPIO
  • 探测距离:2cm~600cm
  • 探测精度:3mm

二、传感器原理

HC-SR04模块包括一个超声波发射器和一个接收器。发射器向一个方向发射超声波,当超声波碰到障碍物后会反射回来,接收器接收反射波。通过计算发射到接收的时间差,结合声速,可以计算出距离。

三、硬件连接

HC-SR04与STM32的连接如下:

  • VCC:连接到STM32的3.3V或5V电源。
  • GND:连接到STM32的地。
  • TRIG(触发):连接到STM32的一个GPIO引脚,用于发送触发信号。
  • ECHO(回声):连接到STM32的另一个GPIO引脚,用于接收回声信号。

四、软件编程

1. 初始化GPIO

首先,需要初始化STM32的GPIO引脚,用于控制TRIG和读取ECHO信号。

#include "stm32f1xx_hal.h"

#define TRIG_PIN GPIO_PIN_6
#define ECHO_PIN GPIO_PIN_7
#define TRIG_PORT GPIOA
#define ECHO_PORT GPIOA

void GPIO_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIO_InitStruct.Pin = TRIG_PIN | ECHO_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(TRIG_PORT, &GPIO_InitStruct);
}

2. 测量距离函数

实现测量距离的函数,通过控制TRIG引脚发送触发信号,并通过ECHO引脚读取回声信号。

#include "stm32f1xx_hal.h"
#include "tim.h"

uint32_t HCSR04_GetDistance(void) {
    uint32_t distance;
    uint32_t pulse_time = 0;

    // 发送触发信号
    HAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_SET);
    HAL_Delay(10); // 至少10us的高电平
    HAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_RESET);

    // 等待ECHO引脚变为高电平
    while(HAL_GPIO_ReadPin(ECHO_PORT, ECHO_PIN) == GPIO_PIN_RESET);

    // 记录高电平开始时间
    uint32_t start_time = HAL_GetTick();

    // 等待ECHO引脚变为低电平
    while(HAL_GPIO_ReadPin(ECHO_PORT, ECHO_PIN) == GPIO_PIN_SET);

    // 记录高电平结束时间
    uint32_t end_time = HAL_GetTick();

    // 计算高电平持续时间
    pulse_time = end_time - start_time;

    // 计算距离
    distance = (pulse_time * 34300) / 2; // 声速约为34300cm/s

    return distance;
}

3. 主函数

在主函数中,初始化硬件并循环测量距离。

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();
    TIM2_Init(); // 初始化定时器,用于测量时间

    while (1) {
        uint32_t distance = HCSR04_GetDistance();
        printf("Distance: %lu cm\n", distance);
        HAL_Delay(1000);
    }
}

五、注意事项

  1. 触发信号:确保TRIG引脚发送的触发信号至少持续10us。
  2. 回声信号:ECHO引脚读取的是回声信号的高电平持续时间,用于计算距离。
  3. 声速:声速在不同介质中的速度不同,本例中假设声速为34300cm/s。

通过上述步骤,我们可以在STM32上成功驱动HC-SR04超声波传感器,并实现距离的测量。这为开发需要距离测量功能的嵌入式系统提供了基础。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

标签:SR04,HAL,PIN,引脚,TRIG,ECHO,STM32,GPIO,HC
From: https://blog.csdn.net/weixin_66608063/article/details/143609085

相关文章

  • STM32之DHT11温湿度传感器
    DHT11是一款常用的单总线数字温湿度传感器,它能够提供相对湿度和温度的测量值。本文将详细介绍如何使用STM32微控制器读取DHT11传感器的数据。DHT11传感器特点湿度测量范围:20%~90%RH温度测量范围:0~50℃单总线数字输出低功耗易于安装和使用硬件连接DHT11传感器通常有三个......
  • 基于STM32单片机的汽车胎压车速检测
    基于STM32单片机的汽车胎压车速检测毕业论文摘要随着汽车电子技术的快速发展,汽车监控系统已成为现代智能汽车的重要组成部分。本文设计了一种基于STM32单片机和蓝牙技术的汽车监控系统,该系统能够实时监控汽车驻车时的落锁状态、胎压、车窗状态,以及行车时的速度和时间等关键......
  • STM32学习之SPI的简介与使用
    SPI(SerialPeripheralInterface)是一种常用的同步串行通信协议,它被广泛应用于多种电子设备和组件之间的通信。以下是一些SPI常用于连接的设备类型:存储设备:NORFlash:用于存储固件或数据的非易失性存储器。NANDFlash:用于大容量数据存储的非易失性存储器。传感器:加速度......
  • 【STM32】项目实战——OV7725/OV2604摄像头颜色识别检测(开源)
     本篇文章分享关于如何使用STM32单片机对彩色摄像头(OV7725/OV2604)采集的图像数据进行分析处理,最后实现颜色的识别和检测。目录一、什么是颜色识别1、图像采集识别的一些基本概念1. 像素(Pixel)2. 分辨率(Resolution)3. 帧率(FrameRate)4. 颜色深度(ColorDepth)5. ......
  • 基于STM32的智能停车场管理系统设计
    引言本项目旨在基于STM32微控制器设计一个智能停车场管理系统。该系统集成了多种传感器和控制模块,以实现停车位实时检测、车辆识别、自动控制栏杆、车位信息显示和云端数据管理等功能。智能停车场管理系统可以有效提升停车场的运转效率,改善车主的停车体验,减少人工管理成本,并且......
  • 基于STM32的智能晾衣架系统设计
    引言本项目基于STM32微控制器设计了一个智能晾衣架系统,通过集成多个传感器模块和电机控制系统,实现自动化的晾晒和收衣功能。该系统能够根据天气状况自动调节晾衣架的伸展与收缩,以确保衣物在最佳条件下进行晾晒。项目涉及硬件设计、传感器数据处理和电机控制算法的实现,适用于家......
  • 使用c语言,用keil5进行stm32F103c8点灯实验
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言学习stm32首先要学会最基础的电灯实验。进行电灯实验需要进行一些前提工作,需要建立启动文件start和标准外设驱动文件library文件和uesr文件这三个工程文件。具体文件可在网站上进行搜素拷贝......
  • HCL AppScan Standard 10.7.0 (Windows) - Web 应用程序安全测试
    HCLAppScanStandard10.7.0(Windows)-Web应用程序安全测试HCLAppScanStandardv10forWindowsMultilingual请访问原文链接:https://sysin.org/blog/appscan-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org市场领先的应用程序安全解决方案(SAST、D......
  • 【实测】使用STM32H7板子FatFS文件系统每秒读写2MB文件,实时写入7450个文件不出错,写满1
    【测试平台】STM32-V7开发板 【测试例子】https://www.armbbs.cn/forum.php?mod=viewthread&tid=86980V7-025_FatFS文件系统例子(SD卡V1.2)【测试条件和校验】运行例子里面的命令6,命令6是个测速函数,每次写入2MB文件,同时读取出来校验,保证写入的没问题。/************......
  • HCL AppScan Standard 10.7.0 发布下载,新增功能介绍
    HCLAppScanStandard10.7.0(Windows)-Web应用程序安全测试HCLAppScanStandardv10forWindowsMultilingual请访问原文链接:https://sysin.org/blog/appscan-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org市场领先的应用程序安全解决方案(SAST、DAST、I......