ESP32 は、新しいバージョンの HC-SR04 超音波モジュール (MicroPython+Thonny) を実装するだけです

1. 新バージョン HC-SR04 の概要

新バージョン HC-SR04 の性能は旧バージョン HC-SR04 および US-015 の性能をはるかに上回り、測距精度が旧バージョン HC-SR04 および US-015 よりも高い場合、測距範囲
はさらに遠くなります一般的な超音波測距モジュールをはるかに上回る最大6メートル。CS-100A超音波測距SOCチップを使用し、高性能、工業用グレード、幅広い電圧、低価格、コスト内訳基本価格は通常の超音波測距モジュールのわずか半分の価格で、性能は通常の超音波測距モジュールをはるかに上回ります。性能はUS-025Aと同じで、両方ともCS100Aチップを採用しており、インターフェースは完全な互換性があります。

新バージョン HC-SR04

2. 回路接続

ESP32 HC-SR04
3V3 VCC
GPIO19 トリガー
GPIO18 エコー
GND GND

フリッジング接続図

3.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 

おすすめ

転載: blog.csdn.net/Little_Carter/article/details/128743786