智能家居基础教程7-超声波传感器-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 880|回复: 0

智能家居基础教程7-超声波传感器

[复制链接]
发表于 2022-1-21 10:17 | 显示全部楼层 |阅读模式
[md]## 简介

超声波是频率高于20000Hz的声波,它指向性强,能量消耗缓慢,在介质中传播的距离较远,因而经常用于测量距离。

openjumper超声波模块是利用超声波特性检测距离的传感器。其带有两个超声波探头,分别用作发射和接收超声波。其测量范围在3cm-450cm。

01.jpg

## 测距原理

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s×t/2 。这就是所谓的时间差测距法。

02.jpg

## 测距逻辑

Wifiduino采用数字引脚给SR04的Trig引脚至少10μs的高电平信号,触发SR04模块测距功能;

03.jpg

触发后,模块会自动发送8个40KHz的超声波脉冲,并自动检测是否有信号返回。这步会由模块内部自动完成。

04.jpg

如有信号返回,Echo引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。此时,我们能使用pulseIn() 函数获取到测距的结果,并计算出距被测物的实际距离。
05.jpg
## 示例程序[/md]
  1. // 设定SR04连接的Arduino引脚
  2. const int TrigPin = D5;
  3. const int EchoPin = D4;
  4. float distance;
  5. void setup()
  6. {   // 初始化串口通信及连接SR04的引脚
  7. Serial.begin(9600);
  8. pinMode(TrigPin, OUTPUT);
  9.     // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
  10. pinMode(EchoPin, INPUT);
  11.     Serial.println(“Ultrasonic sensor:”);
  12. }
  13. void loop()
  14. {
  15.     // 产生一个10us的高脉冲去触发TrigPin
  16. digitalWrite(TrigPin, LOW);
  17. delayMicroseconds(2);
  18. digitalWrite(TrigPin, HIGH);
  19. delayMicroseconds(10);
  20. digitalWrite(TrigPin, LOW);
  21.     // 检测脉冲宽度,并计算出距离
  22. distance = pulseIn(EchoPin, HIGH)/ 58.00;
  23. Serial.print(distance);
  24. Serial.print(“cm”);
  25. Serial.println();
  26. delay(1000);
  27. }
复制代码
[md]
## 硬件连接

06.jpg

超声波模块通过4P连接线连接在扩展板中的4P接口中,该4P接口分别对应wifiduino的 + – D5 D4

在本示例中,我们将超声波模块的Trig连接到Wifiduino的D5号引脚,Echo连接到wIfiduino的D4号引脚。

观察现象:

下载完程序后,打开串口监视器,并将超声波传感器对向需要测量的物体,即可看到当前超声波传感器距物体的距离,如下所示:
07.jpg
[/md]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-28 07:58 , Processed in 0.072897 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表