HC-SR04超声波传感器和Arduino IDE环境下的ESP32

HC-SR04超声波传感器简介

HC-SR04超声波传感器使用声纳来确定与物体的距离。该传感器的读数范围为2厘米至400厘米(0.8英寸至157英寸),精度为0.3厘米(0.1英寸),这对大多数业余爱好者的项目来说都很好。此外,该模块还配有超声波发射器和接收器模块。
下图显示了HC-SR04超声波传感器。
在这里插入图片描述
本教程涵盖以下内容:
A.超声波传感器HC-SR04引脚
B.将超声波传感器HC-SR04连接到ESP32
C.利用超声波传感器HC-SR04与ESP32进行物体距离测量
D.通过ESP32和HC-SR04在显示屏上显示目标距离

超声波传感器技术数据

电源 5v DC
工作电流15 mA
工作频率40khz
最大射程4米 最小距离2厘米
测量角度15º
分辨率0.3 cm
触发输入信号 10us TTL脉冲
回波输出信号 TTL脉冲与距离范围成比例
尺寸45mm x 20mm x 15mm

HC-SR04超声波传感器引脚

Vcc—传感器供电(5V)
Trig—输入引脚
Echo—输出引脚
GND—GND

HC-SR04超声波传感器工作原理

超声波传感器使用声纳来确定到物体的距离。
超声波发射器(Trig)发出高频声音(40kHZ)。声音在空气中传播。如果它找到一个对象,它就会弹回声波。超声波接收器(Echo)接收反射的声波。
在这里插入图片描述
考虑到声音在空气中的速度和传播时间(信号从传送到接收经过的时间),我们可以计算出到物体的距离。公式如下:

到物体的距离=((声速)*时间)/22

硬件部分

在这里插入图片描述

接线图

在这里插入图片描述

代码-获取距离到一个对象使用HC-SR04超声波传感器和ESP32

const int trigPin = 5;
const int echoPin = 18;

//define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701

long duration;
float distanceCm;
float distanceInch;

void setup() {  

Serial.begin(115200);  // 开始串行通信
pinMode(trigPin, OUTPUT);  // 将trigPin设置为输出
 pinMode(echoPin, INPUT);   // 将echoPin设置为输入
 }
 void loop() { 
  // 清除trigPin  
  digitalWrite(trigPin, LOW);  
  delayMicroseconds(2);  
  // 将trigPin设置为HIGH状态10微秒
  digitalWrite(trigPin, HIGH);  
  delayMicroseconds(10);  
  digitalWrite(trigPin, LOW);   
//读取echoPin,返回声波传播时间(微秒)  
duration = pulseIn(echoPin, HIGH);    
  //计算距离  
  distanceCm = duration * SOUND_SPEED/2;    
  // 换算成英寸  
  distanceInch = distanceCm * CM_TO_INCH;   
   // 在串行监视器中打印距离  
   Serial.print("Distance (cm): ");  
   Serial.println(distanceCm);  
   Serial.print("Distance (inch): ");  
   Serial.println(distanceInch);    
   delay(1000);}

效果图如下:
在这里插入图片描述

ESP32与HC-SR04和OLED显示屏

接线图如下
在这里插入图片描述
在编程之前,要对arduino IDE进行库文件添加。
步骤如下:
Sketch > Library > Manage Libraries, 搜索“SSD1306,”
在这里插入图片描述
再进行GFX库添加,也是直接在加载库中搜索“GFX”即可。
在这里插入图片描述

程序如下

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED显示宽度,单位为像素
#define SCREEN_HEIGHT 64 // OLED显示高度,单位为像素

// 连接到I2C (SDA, SCL引脚)的SSD1306显示器的声明
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

const int trigPin = 5;
const int echoPin = 18;

//定义声速,单位为cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701

long duration;
int distanceCm;
int distanceInch;

void setup() {
  Serial.begin(115200);  
  pinMode(trigPin, OUTPUT); // 将trigPin设置输出
  pinMode(echoPin, INPUT); // 将echoPin设置为输入

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));   
     for(;;);  
     }
delay(500); 
//显示设置
display.clearDisplay();  
display.setTextSize(2);  
display.setTextColor(WHITE);
}

void loop() {
  // 清除trigPin
  digitalWrite(trigPin, LOW);  
  delayMicroseconds(2);  
  // 将trigPin设置为HIGH状态10微秒
  digitalWrite(trigPin, HIGH); 
   delayMicroseconds(10);  
   #(trigPin, LOW);

// 读取echoPin,返回声波传播时间(微秒)
  duration = pulseIn(echoPin, HIGH);
  
  // 计算距离
  distanceCm = duration * SOUND_SPEED/2;
  
  // 换算成英寸
  distanceInch = distanceCm * CM_TO_INCH;
  
  // 在串行监视器中打印距离
  Serial.print("Distance (cm): ");
  Serial.println(distanceCm);
  Serial.print("Distance (inch): ");
  Serial.println(distanceInch);

  display.clearDisplay();
  display.setCursor(0, 25);
  //显示距离(厘米)
  display.print(distanceCm);
  display.print(" cm");
  
  // 显示距离(英寸),此处注释,若是使用,解除注释即可
  /* display.print(distanceInch);
  display.print(" in");*/
  display.display(); 

  delay(500);  
}

效果如下

在这里插入图片描述

(外网教程解读)

  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.csdn.net/course/detail/29666 micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机玩物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方圆工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值