MicroPython RP2040使用HC-SR04

本文详细解释了HC-SR04超声波测距模块的工作原理,包括硬件连接、触发测距过程、距离计算方法以及消抖处理。同时提供了使用RP2040的Python代码示例,展示了如何在移动机器人等领域应用这种模块。
摘要由CSDN通过智能技术生成

HC-SR04是一种超声波测距模块,其工作原理基于超声波的发射和接收。该模块可提供2cm至400cm的非接触式距离感测功能,测距精度达到3mm。以下是其工作原理的详细描述:

  1. 硬件准备:首先,需要给超声波模块接入电源和地线,以确保其正常工作。
  2. 触发测距:通过给脉冲触发引脚(trig)输入一个长为10us以上时长的高电平方波,模块会自动发射8个40KHz的声波。与此同时,回波引脚echo端的电平会由0变为1。此时,应启动定时器开始计时。
  3. 接收回波:当超声波遇到障碍物并返回时,回波引脚端的电平会由1变为0。此时,应停止定时器计数。定时器所记录的时间即为超声波从发射到返回的总时长。
  4. 距离计算:根据声音在空气中的速度(约为344米/秒),可以计算出所测的距离。具体计算公式为:测试距离 = (计时时间 × 声速)/ 2。
  5. 消抖处理:由于超声波测量的时间很短,一次测量可能存在误差。为了获得更准确的结果,可以通过多次测量求平均值的方式进行消抖处理。

此外,HC-SR04超声波测距模块具有计算简单、易于实时控制、测量精度高等优点,因此在移动机器人研制等领域得到了广泛应用。、

引脚接线:

HC-SR04RP2040
VCC        VCC        
TrigGPIO1
EchoGPIO0
GndGnd

代码

from machine import Pin
import time
 
# 超声波测距模块
trig = Pin(1,Pin.OUT)  # Trig_RX_SCL_I/O
echo = Pin(0,Pin.IN,Pin.PULL_UP)  # Echo_Tx_SDA
 
def HCSR04(trig,echo,mode):
    trig.value(0)  # 先通过GPIO把MCU触发信号信号拉低2us
    time.sleep_us(2)
    
    trig.value(1)  # 再通过GPIO把MCU触发信号信号拉高10us,触发模块测距
    time.sleep_us(10)
    trig.value(0)  # 再通过GPIO把MCU触发信号信号拉低
    
    while echo.value() == 0:
        high = time.ticks_us()  # time.ticks_us返回不断递增的微秒计数器
        #print("high: ", high)
    while echo.value() == 1:
        low  = time.ticks_us()
    
    distance = 0
    if mode:
        # 计算方法1
        distance = (low - high) / 58 # us
    else:
        # 计算方法2 - 根据Echo管脚高电平的持续时间计算距离值
        distance = ((low - high) * 0.0340) / 2 # 声速 
    
    time.sleep(0.2) # 两次测量时间不能低于200ms
    
    if distance > 400:
        distance = 0  # 有效距离2 - 400cm
    return distance
 
def main():
    while True:
        distance = HCSR04(trig,echo,1)  # 听过HCSR04函数返回距离值
        print(str(distance)+'cm')
 
if __name__ == "__main__":
    main()

运行结果

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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)  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值