ESP8266-Arduino编程实例-HC-SR04超声波传感器驱动

HC-SR04超声波传感器驱动

1、HC-SR04简单介绍

HC-SR04 超声波传感器使用声纳来确定与蝙蝠或海豚等物体的距离。 超声波测距模块HC-SR04提供2cm-400cm测量,测距精度可达3mm。 该模块包括超声波发射器、接收器和控制电路。

HC-SR04 超声波传感器的工作流程如下:

  1. 至少10us高电平信号的IO触发
  2. 模块自动发送 8 个 40 kHz 并检测是否有脉冲信号返回。
  3. 如果有信号返回,通过高电平,高电平输出IO持续时间是从发出超声波脉冲到返回的时间。

测试距离 =(高电平时间 × 声速(340M/s)/ 2)

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • HC-SR04传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线图如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

1)导入头文件

1
2
#include <HCSR04.h>

本次使用的HC-SR04超声波传感器驱动如下:

2)定义HC-SR04传感器引脚

1
2
3
4
// 定义HCSR04引脚
byte triggerPin = D6; // Trigger引脚
byte echoPin = D7; // Echo引脚

3)在setup函数中设串口及启动传感器

1
2
3
4
5
6
void setup () {
Serial.begin(115200);
// 启动传感器
HCSR04.begin(triggerPin, echoPin);
}

4)在loop函数中读取传感器测量数据

1
2
3
4
5
6
7
8
9
10
11
12
void loop () {
// 读取测量数据
double\* distances = HCSR04.measureDistanceCm();

Serial.print("1: ");
Serial.print(distances[0]);
Serial.println(" cm");

Serial.println("---");
delay(50);
}

如果不需要使用第三方驱动库,则HC-SR04的简单驱动如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#define echoPin D7 // Echo引脚
#define trigPin D6 // Trigger引脚

long duration, distance;

void setup()
{
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop()
{
/\* 下面的 trigPin/echoPin 循环用于通过从最近的物体反弹声波来确定最近物体的距离。 \*/
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// 根据声速计算距离(以厘米为单位)。
distance = duration/58.2;
Serial.println(distance);

delay(50);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126070644