### 6.3.7 超声波传感器

#### 6.3.7.1 简介

本教程将为您详细介绍超声波传感器的使用方法和应用技巧。超声波传感器是一种利用超声波测距的电子设备，广泛应用于避障、距离测量和物体检测。教程内容包括超声波传感器的工作原理、引脚功能、电路连接方法以及如何通过微控制器（如ESP32）读取和处理测距数据。您将学习如何编写代码来实现实时距离测量、障碍物检测以及数据滤波和校准。无论您是电子初学者还是有经验的开发者，本教程都将帮助您掌握超声波传感器的应用，为您的项目增添精确的距离感知功能。

#### 6.3.7.2 元件知识

**超声波传感器:** 可以检测前方是否存在障碍物，并且检测出传感器与障碍物的详细距离。传感器主要用到CS100A芯片，它同时兼营3.3V与5V工作电压。最大测试距离为3米（<span style="color: rgb(255, 76, 65);">实际受各种环境因素的影响，一般很难达到3米的</span>）；盲区小于4CM。

它的测距原理和蝙蝠飞行的原理一样，就是超声波模块发送出一种频率很高，人体无法听到的超声波信号。这些超声波的信号若是碰到障碍物，就会立刻反射回来，在接收到返回的信息之后，通过判断发射信号和接收信号的时间差，计算出传感器和障碍物的距离。


**超声波参数：**

- 工作电压: DC 3.3V~5V
- 静态电流: <2mA
- 工作电流: 50mA~100mA，正常为65mA
- 最大功率：0.5W
- 最大探测距离：3m
- 盲区：小于4cm
- 感应角度：不大于15度
- 触发输入信号：10us TTL脉冲

**工作原理：**

最常用的超声测距的方法是回声探测法。当有脉冲电压触发时（单片机给Trig引脚发送高电平），超声波发射器探头里的晶片就会振动，继而产生超声波。在超声波发射时刻的同时计数器开始计时，超声波在空气中传播，途中碰到障碍物面阻挡就立即反射回来（Echo引脚发送高电平信号给单片机），超声波接收器收到反射回的超声波就立即停止计时。

超声波是一种声波，其声速V与温度有关。一般情况下超声波在空气中的传播速度为340m/s，根据计时器记录的时间t，就可以计算出超声波探头发射点距障碍物面的距离s，即：s=340t/2 。

![Img](../media/ab9.png)

HC-SR04超声波测距模块可提供范围为2厘米至3米的非接触式距离感测功能，测距精度可达高到3mm。超声波传感器包括超声波发射器、超声波接收器与控制电路。其基本工作原理：

(1) 采用IO口Trig触发测距，给至少10us的高电平信号;

(2) 模块自动发送8个40khz的方波，自动检测是否有信号返回；

(3) 有信号返回，通过IO口Echo输出一个高电平，高电平持续的时间就是超声波从发射到返回的时间。

(4) 距离 =（高电平时间 x 声速（340M/S）） / 2

![Img](../media/ab9-1.png)

⚠️ **注意：**

此模块不应在通电时连接，如有必要，先连接模块的 GND。否则，会影响模块的工作。

被测物体的面积应至少为 0.5 平方米，并尽可能平坦。否则，它会影响结果。

#### 6.3.7.3 接线图

- **超声波传感器的Echo引脚连接到io13，Trig引脚连接到io14**

⚠️ **特别注意：智慧农场已经组装好了，这里不需要把超声波传感器拆下来又重新组装和接线，这里再次提供接线图，是为了方便您编写代码！**

![Img](../media/couj62.png)

#### 6.3.7.4 实验代码

代码文件在`Mixly_代码`文件夹中，代码文件为`6_3_7_Read_Distance.mix`，如下图所示：

![Img](../media/acouj-09.png)

单击 “**文件**” --> “**打开**”，然后选择保存代码的路径，选中代码文件打开即可，如下图所示：

![Img](../media/acouj-00.png)

![Img](../media/acouj-09-1.png)

**认识代码块**

① 这是初始化代码块，初始化代码块里面的内容只执行一次。

![Img](../media/initialize.png)

② 设置串口。

![Img](../media/Sarial1-1.png)

设置串口波特率，一般波特率设置为`9600`或`115200`。

![Img](../media/Sarial1-2.png)

串口输出数据，从串行端口输出数据，分换行与不换行两种方式。

![Img](../media/Sarial1-3.png)

③ 向指定管脚读取超声波传感器检测到的距离值。

![Img](../media/ab9-3.png)

④ 这是文本代码块，里面可以填入一个字母、单词或一行文本。

![Img](../media/ab7-2.png)

⑤ 将程序的执行暂停一段时间，也就是延时，单位是毫秒。 

![Img](../media/ab0.png)

**组合代码块**

![Img](../media/Mixly-code9.png)

#### 6.3.7.5 实验结果

按照接线图接好线，外接电源，选择好正确的开发板板型（ESP32 Dev Module）和 适当的串口端口（COMxx），然后单击按钮![Img](../media/upload2.png)上传代码。上传代码成功后，单击Mixly IDE左上角的![Sarial1](../media/Sarial1.png)打开串监视器串口并设置串口波特率为`9600`, 即可通过串口打印窗口查看超声波测距的距离值，调整超声波与障碍物的距离便能观察到距离变化。  

![Img](../media/csb-photo.jpg)

**串口现象图：**

![Img](../media/distance2.png)

#### 6.3.7.6 代码说明

（1）. 串口打印超声波传感器检测到的距离值。

![Img](../media/ab7-14.png)