1. Breve introducción de la nueva versión HC-SR04
El rendimiento de la nueva versión HC-SR04 supera con creces al de la versión anterior HC-SR04 y US-015; cuando la precisión de rango es mayor que la de la versión anterior HC-SR04 y US-015, el rango de rango
es mayor el módulo de alcance ultrasónico general. Usando el chip SOC de alcance ultrasónico CS-100A, alto rendimiento, grado industrial, voltaje amplio, precio bajo, precio base de desglose de costos, solo la mitad del precio de los módulos de alcance ultrasónico ordinarios, y el rendimiento supera con creces los módulos de alcance ultrasónico ordinarios. El rendimiento es el mismo que el US-025A, ambos adoptan el chip CS100A y la interfaz es totalmente compatible.
2. Conexión del circuito
ESP32 | HC-SR04 |
---|---|
3v3 | CCV |
GPIO19 | Trigonometría |
GPIO18 | Eco |
TIERRA | TIERRA |
3. Código MicroPython
from machine import Pin
import time
# echo脚会由0变为1,MCU开始计时,当超声波模块接收到返回的声波时,echo由1变为0,MCU停止计时,
#定义IO口模式,以及初始状态
trig = Pin(19, Pin.OUT)
echo = Pin(18, Pin.IN)
trig.value(0)
echo.value(0)
cars = 0
#构建函数
def measure():
#触发超声波模块测距
trig.value(1)
time.sleep_us(10)
trig.value(0)
#检测回响信号,为低时,测距完成
while(echo.value() == 0):
pass
#开始不断递增的微秒计数器 1
t1 = time.ticks_us()
#检测回响信号,为高时,测距开始
while(echo.value() == 1):
pass
#开始不断递增的微秒计数器 2
t2 = time.ticks_us()
#计算两次调用 ticks_ms(), ticks_us(), 或 ticks_cpu()之间的时间,这里是ticks_us()
# 这时间差就是测距总时间,在乘声音的传播速度340米/秒,除2就是距离。
t3 = time.ticks_diff(t2,t1)/10000
#返回一个值给调用方,不带表达式的return相当于返回 None。
#这里返回的是:开始测距的时间减测距完成的时间*声音的速度/2(来回)
return t3*340/2
result = measure()
#try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理
try:
if int(result) < 10:
cars += 1
if cars == 1:
print("已停车")
if cars == 0:
print("未停车")
print("测量距离为:%0.2f cm" %float(result))
except KeyboardInterrupt:
pass