### 超聲波模塊介紹 超聲波測距原理很簡單: 1、通過記錄發送超聲波的時間、記錄超聲波返回的時間,返回時間與發送時間相減得到超聲波的持續時間。 2、通過公式:(**超聲波持續時間** * **聲波速度**) / **2**就可以得出距離; ![image.png](https://img2023. ...
超聲波模塊介紹
超聲波測距原理很簡單:
1、通過記錄發送超聲波的時間、記錄超聲波返回的時間,返回時間與發送時間相減得到超聲波的持續時間。
2、通過公式:(超聲波持續時間 * 聲波速度) / 2就可以得出距離;
HC-SR04參數:
工作電壓: 5V
工作電流:15mA
最短測量距離:3cm
最長測量距離:4m
角度15度
Trig引腳輸入信號:10us TTL 脈衝
Echo引腳輸出信號:5v脈衝信號
超聲波模塊接線與工作過程
接線:
總共4引腳:2電源引腳(Vcc、GND)和2個控制引腳Trig、Echo;
Vcc為5v供電
Trig引腳用於接收樹莓派信號,可接所有GPIO口。
Echo引腳用於發送測距結果給樹莓派,可接所有GPIO口,返回5v信號。
測距工作過程:
1、樹莓派向Trig引腳發送持續10us的脈衝信號;
2、HC-SR04發送超聲波,將Echo置位高電平,準備接收超聲波返回;
3、HC-SR04收到超聲波返回把Echo置位低電平;
程式實現
通過上面HC-SR04超聲波測距模塊使用過程,原理的分析,使用Python很容易就寫出了超聲波測距的Demo程式,具體實現如下:
程式的關鍵點:
1、獲取超聲波發送時的時間
2、獲取超聲波返回時的時間
3、把超聲波發送與返回的時間差帶入公式:(超聲波持續時間 * 聲波速度) / 2 即可得到距離
Trig_Pin = 14
Echo_Pin = 4
GPIO.setmode(GPIO.BCM)
#設備GPIO工作方式IN/OUT
GPIO.setup(Trig_Pin,GPIO.OUT,initial = GPIO.LOW)
GPIO.setup(Echo_Pin,GPIO.IN)
def ultrasonic():
#發送高電平到Trig引腳
GPIO.output(Trig_Pin,GPIO.HIGH)
#持續10us 微秒
time.sleep(0.00001)
GPIO.output(Trig_Pin,GPIO.LOW)
#記錄發送超聲波時刻,發送前Echo_Pin為低電平,當變為高電平是說明超聲波已發送
while GPIO.input(Echo_Pin) == GPIO.LOW:
pass
t1 = time.time()
#記錄收到返回超聲波時刻,當Echo_變為低電平時說明超聲波已經返回
while GPIO.input(Echo_Pin) == GPIO.HIGH:
pass
t2 = time.time()
#超聲波往返時間:t2-t1
#聲波在空氣中傳播速度340m/s 記錄時間 t 來回 2
#高電平時刻時間減去低電平時刻時間,得到超聲波傳播時間,單位轉換為釐米乘以100
distance = (t2-t1) * 340 *100 /2
return distance