ESP32简单实现新版HC-SR04超声波模块(MicroPython+Thonny)

发布时间 2023-12-01 18:13:12作者: soliang

一、新版HC-SR04简介
新版HC-SR04,性能远超老版HC-SR04,US-015;在测距精度高于老版HC-SR04和US-015的情况下,测距范围更
远,可达6米,远超一般超声波测距模块。采用CS-100A超声波测距SOC芯片,高性能,工业级,宽电压、低价格,成本击穿底价,只有普通超声波测距模块一半的价格,而性能远超普通超声波测距模块。性能与US-025A相同,均采用CS100A芯片,接口完全兼容。

 

二、电路连接

ESP32HC-SR04
3V3 VCC
GPIO19 Trig
GPIO18 Echo
GND GND

三、MicroPython代码

 1 from machine import Pin
 2 import time
 3 # echo脚会由0变为1,MCU开始计时,当超声波模块接收到返回的声波时,echo由1变为0,MCU停止计时,
 4 #定义IO口模式,以及初始状态
 5 trig = Pin(19, Pin.OUT)
 6 echo = Pin(18,  Pin.IN)
 7 trig.value(0)
 8 echo.value(0)
 9 cars = 0
10 #构建函数
11 def measure():
12   #触发超声波模块测距
13   trig.value(1)
14   time.sleep_us(10)
15   trig.value(0)
16   #检测回响信号,为低时,测距完成
17   while(echo.value() == 0):
18     pass
19   #开始不断递增的微秒计数器 1 
20     t1 = time.ticks_us()
21   #检测回响信号,为高时,测距开始
22   while(echo.value() == 1):
23     pass
24   #开始不断递增的微秒计数器 2 
25     t2 = time.ticks_us()
26   #计算两次调用 ticks_ms(), ticks_us(), 或 ticks_cpu()之间的时间,这里是ticks_us()
27   # 这时间差就是测距总时间,在乘声音的传播速度340米/秒,除2就是距离。
28   t3 = time.ticks_diff(t2,t1)/10000
29   #返回一个值给调用方,不带表达式的return相当于返回 None。
30   #这里返回的是:开始测距的时间减测距完成的时间*声音的速度/2(来回)
31   return t3*340/2
32  
33 result = measure()
34  #try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理  
35 try:
36     if int(result) < 10:
37         cars += 1
38     if cars == 1:
39         print("已停车")
40     if cars == 0:
41         print("未停车")
42     print("测量距离为:%0.2f cm" %float(result))
43  
44 except KeyboardInterrupt:
45     pass