亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

如何在Raspberry Pi Pico中使用超声波传感器

发布时间:2021-02-15
分享到:

如何在Raspberry Pi Pico中使用超声波传感器

发布时间:2021-02-15
分享到:

超声波传感器使用声音脉冲和简单的计算来确定其自身与前方物体之间的距离。它们通常用于机器人中,以确保机器人不会行走或滚入障碍物。我们还在Raspberry Pi厕纸提醒中使用了一个,以告知何时纸卷用完了。在本教程中,我们将使用超声波距离传感器HC-SR04 +快速确定物体与我们的Raspberry Pi Pico的距离。

对于此项目,您将需要
•    运行MicroPython的Raspberry Pi Pico
•    Thonny安装在您的计算机上
•    一个HC-SR04P或HC-SR04 +超声波传感器
•    4 x公对公跳线
•    半面包板或全尺寸面包板

Raspberry Pi Pico上超声波传感器的硬件设置

1.此版本仅使用与Raspberry Pi Pico GPIO上使用的3V逻辑兼容的超声波传感器。HC-SR04P和HC-SR04 +与3V和5V逻辑兼容,因此非常适合Raspberry Pi Pico,Pi和Arduino项目。

2.将HC-SR04P超声波传感器插入面包板。

3.使用公对公跳线将Raspberry Pi Pico的3V3引脚连接到超声传感器的VCC引脚。

4.连接一个GND引脚上树莓裨微微到GND引脚使用跳线超声波传感器的。

5.将超声传感器的触发引脚连接到Raspberry Pi Pico的GPIO引脚3。

6.将超声波传感器的Echo引脚连接到Raspberry Pi Pico的GPIO引脚2。

Raspberry Pi Pico上超声波传感器的软件设置

建立电路后,连接您的Raspberry Pi Pico并打开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.2 m / s,即每微秒0.0343 cm),该方程的乘积除以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保存到Raspberry Pi Pico,然后单击绿色箭头以运行代码。在Python Shell中,您将看到每秒打印的距离。

 

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论