超聲波傳感器使用聲音脈沖和簡單的計算來確定其自身與前方物體之間的距離。它們通常用于機器人中,以確保機器人不會行走或滾入障礙物。樹莓派 Pico 基于 RP2040 芯片的多功能微控制器板,當與超聲波傳感器(例如 HC-SR04)等傳感器結合使用時,Pico 成為測量距離、檢測物體和創建智能自動化應用的理想平臺。下面我們將了解如何在樹莓派 Pico 上使用超聲波傳感器。
材料清單
– 樹莓派 Pico
– HC-SR04 超聲波傳感器
– 跳線若干
– 面包板或 Pico 擴展板
超聲波傳感器的引腳排列如下:
– VCC 引腳用于為傳感器供電。它通常需要 5V 直流電源。
– Trig 引腳用于向傳感器發送觸發信號。當高電平信號(通常為 5V)施加到該引腳時,傳感器開始發射超聲波。
– Echo 引腳用于接收來自傳感器的回波信號。當傳感器發出的超聲波擊中物體并反彈回來時,傳感器會在該引腳上產生脈沖。
– VCC 引腳是傳感器的接地連接,應連接到電路的接地 (0V)。
HC-SR04 的測距過程
1. 樹莓派向 Trig 腳發送一個持續 10us 的脈沖信號。
2. HC-SR04 接收到樹莓派發送的脈沖信號,開始發送超聲波 (start sending ultrasoun),并把 Echo置為高電平。然后準備接收返回的超聲波。
3. 當 HC-SR04 接收到返回的超聲波 (receive returned ultrasound) 時,把 Echo 置為低電平。
從上述過程可以看出,Echo 高電平持續的時間就是超聲波從發射到返回所經過的時間間隔~
請對照下圖接線。
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 中,您將看到每秒打印的距離。
審核編輯:劉清
-
直流電源
+關注
關注
8文章
1322瀏覽量
52621 -
回波信號
+關注
關注
1文章
14瀏覽量
8665 -
超聲波傳感器
+關注
關注
18文章
587瀏覽量
36018 -
樹莓派
+關注
關注
117文章
1710瀏覽量
105882
原文標題:在樹莓派 Pico 上使用 HC-SR04 超聲波測距模塊
文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論