0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在树莓派Pico上使用HC-SR04超声波测距模块呢?

jf_zGNBEhbi 来源:趣无尽 2023-11-14 15:08 次阅读

超声波传感器使用声音脉冲和简单的计算来确定其自身与前方物体之间的距离。它们通常用于机器人中,以确保机器人不会行走或滚入障碍物。树莓派 Pico 基于 RP2040 芯片的多功能微控制器板,当与超声波传感器(例如 HC-SR04)等传感器结合使用时,Pico 成为测量距离、检测物体和创建智能自动化应用的理想平台。下面我们将了解如何在树莓派 Pico 上使用超声波传感器。

材料清单

– 树莓派 Pico
– HC-SR04 超声波传感器
– 跳线若干
– 面包板或 Pico 扩展板

超声波传感器的引脚排列如下:

– VCC 引脚用于为传感器供电。它通常需要 5V 直流电源
– Trig 引脚用于向传感器发送触发信号。当高电平信号(通常为 5V)施加到该引脚时,传感器开始发射超声波。
– Echo 引脚用于接收来自传感器的回波信号。当传感器发出的超声波击中物体并反弹回来时,传感器会在该引脚上产生脉冲。
– VCC 引脚是传感器的接地连接,应连接到电路的接地 (0V)。

60e44aa6-82bb-11ee-939d-92fbcf53809c.png

HC-SR04 的测距过程

610c5dfc-82bb-11ee-939d-92fbcf53809c.png

1. 树莓派向 Trig 脚发送一个持续 10us 的脉冲信号。
2. HC-SR04 接收到树莓派发送的脉冲信号,开始发送超声波 (start sending ultrasoun),并把 Echo置为高电平。然后准备接收返回的超声波。
3. 当 HC-SR04 接收到返回的超声波 (receive returned ultrasound) 时,把 Echo 置为低电平。

611efa48-82bb-11ee-939d-92fbcf53809c.png

从上述过程可以看出,Echo 高电平持续的时间就是超声波从发射到返回所经过的时间间隔~

请对照下图接线。

612c8370-82bb-11ee-939d-92fbcf53809c.png

Pico 的 3V3 引脚连接到超声传感器的 VCC 引脚。
Pico 的 GND 引脚连接到超声传感器的 GND 引脚。
Pico 的 GPIO 引脚 3 连接到超声传感器的 Trig 引脚。
Pico 的 GPIO 引脚 2 连接到超声传感器的 Echo 引脚。

编程

电路连接好之后,将树莓派 Pico 连上 PC 并打开 Thonny。

1、从计算机库导入 Pin 类,然后导入 utime 库。前者用于控制 GPIO 引脚,后者是基于时间的函数库。

from machine import Pin
import utime

2、创建两个新对象,触发器和回声。这些对象配置要与超声传感器一起使用的 Pico 的 GPIO 引脚。例如,我们的触发引脚用于发送电流脉冲,因此它是输出引脚。回波引脚接收反射的脉冲,因此回波是输入。

trigger = Pin(3, Pin.OUT)
echo = Pin(2, Pin.IN)

3、创建一个函数 ultra(),其中将包含读取所需的代码。

def ultra():

4、将触发引脚拉低,以确保其未激活,然后暂停两微秒。

   trigger.low()
   utime.sleep_us(2)

5、在将触发器引脚拉低之前,将触发器引脚拉高五秒钟。这将从超声波传感器发送一个短脉冲,然后关闭该脉冲。

   trigger.high()
   utime.sleep_us(5)
   trigger.low()

6、创建一个 while 循环以检查回波引脚。如果没有收到回波脉冲,则更新变量 signaloff,使其包含以微秒为单位的时间戳。

   while echo.value() == 0:
       signaloff = utime.ticks_us()

7、创建另一个 while 循环,这次检查是否已收到回声。这会将当前时间戳(以微秒为单位)存储到 signalon 变量中。

   while echo.value() == 1:
       signalon = utime.ticks_us()

8、创建一个新的 timepass 变量,该变量将存储脉冲离开传感器,撞击物体并作为回波返回传感器所花费的总时间值。

   timepassed = signalon - signaloff

9、创建一个新变量,距离。此变量将存储方程式的答案。我们将行进时间(经过的时间)乘以声速(343.2m/s,即每微秒 0.0343cm),该方程的乘积除以 2,因为我们不需要总行进距离,而只需从反对传感器。

distance = (timepassed * 0.0343) / 2

10、打印一条消息到 Python Shell,显示距离。

print("The distance from object is ",distance,"cm")

11.现在,我们移出该函数,创建一个循环,该循环将每秒运行一次该函数。

while True:
   ultra()
   utime.sleep(1)

下面是完整的代码:

from machine import Pin
import utime
trigger = Pin(3, Pin.OUT)
echo = Pin(2, Pin.IN)
def ultra():
   trigger.low()
   utime.sleep_us(2)
   trigger.high()
   utime.sleep_us(5)
   trigger.low()
   while echo.value() == 0:
       signaloff = utime.ticks_us()
   while echo.value() == 1:
       signalon = utime.ticks_us()
   timepassed = signalon - signaloff
   distance = (timepassed * 0.0343) / 2
   print("The distance from object is ",distance,"cm")
while True:
   ultra()
   utime.sleep(1)

将代码作为 code.py 保存到树莓派 Pico 上,然后单击 Run 按钮以运行代码。在 Python Shell 中,您将看到每秒打印的距离。

6157bb30-82bb-11ee-939d-92fbcf53809c.png







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 直流电源
    +关注

    关注

    8

    文章

    1178

    浏览量

    51749
  • 回波信号
    +关注

    关注

    1

    文章

    12

    浏览量

    8594
  • 超声波传感器

    关注

    18

    文章

    552

    浏览量

    35602
  • 树莓派
    +关注

    关注

    113

    文章

    1640

    浏览量

    104747

原文标题:在树莓派 Pico 上使用 HC-SR04 超声波测距模块

文章出处:【微信号:趣无尽,微信公众号:趣无尽】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于HC-SR04超声波测距模块

    参考:某宝HC-SR04 超声波测距模块商品详情页1.关于HC-SR04 超声波
    发表于 08-10 06:24

    如何利用HC-SR04超声波测距模块去实现精确的直线测距

    超声波测距原理是什么?利用STM32驱动HC-SR04需要做好哪几个关键点?如何利用HC-SR04超声波
    发表于 10-20 07:28

    如何对超声波测距HC-SR04进行测试

    超声波测距HC-SR04的原理是什么?如何对超声波测距HC-SR04进行测试
    发表于 11-16 09:31

    HC-SR04超声波测距模块的相关资料分享

    。————————————————一、HC-SR04超声波模块简介HC-SR04 超声波测距模块
    发表于 11-23 07:47

    基于stm32的HC-SR04超声波测距模块怎么使用?

    基于stm32的HC-SR04超声波测距模块怎么使用?
    发表于 11-25 09:15

    有哪几种方法去实现HC-SR04超声波测距

    HC-SR04超声波测距模块的原理是什么?有哪几种方法去实现HC-SR04超声波
    发表于 12-01 06:32

    如何利用现成的SysTick去实现HC-sr04超声波测距

    什么是HC-sr04超声波测距模块HC-sr04超声波
    发表于 12-02 08:10

    HC-SR04超声波测距模块原理

    文章目录前言一、HC-SR04超声波测距模块原理1.模块简介2.模块电气参数3.
    发表于 12-06 07:14

    如何通过HC-SR04超声波模块去实现测距功能

    HC-SR04超声波模块是什么?如何通过HC-SR04超声波模块去实现测距功能
    发表于 12-13 06:00

    如何去编写HC-SR04超声波测距模块的驱动程序

    HC-SR04超声波测距模块的基本工作原理是什么?如何去编写HC-SR04超声波
    发表于 12-15 07:45

    HC-SR04超声波测距模块简介

    1 简介HC-SR04超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测 距精度可达高到 3mm ;模块包括
    发表于 01-06 06:05

    HC-SR04超声波测距模块及程序

    HC-SR04超声波测距模块及程序HC-SR04超声波测距
    发表于 12-08 16:50 82次下载

    简单的超声波测距模块制作_HC-SR04超声波测距模块及制作图详解

    本文主要介绍的是HC-SR04超声波测距模块及制作图详解,首先介绍了超声波测距原理及特点,其次阐
    发表于 05-18 09:40 5.3w次阅读
    简单的<b class='flag-5'>超声波</b><b class='flag-5'>测距</b><b class='flag-5'>模块</b>制作_<b class='flag-5'>HC-SR04</b><b class='flag-5'>超声波</b><b class='flag-5'>测距</b><b class='flag-5'>模块</b>及制作图详解

    使用单片机和HC-SR04设计超声波测距系统的设计资料合集

    HC-SR04超声波测距模块配套资料合集免费下载包括了:STC89C52RC系列手册,PCB截图,基于单片机的超声波
    发表于 11-06 08:00 135次下载
    使用单片机和<b class='flag-5'>HC-SR04</b>设计<b class='flag-5'>超声波</b><b class='flag-5'>测距</b>系统的设计资料合集

    HC-SR04超声波测距超全资料

    HC-SR04超声波测距超全资料
    发表于 11-05 09:24 16次下载