樹莓派使用HC-SR04超聲波測距

超聲波模塊介紹

  超聲波測距原理很簡單:
  1、通過記錄發送超聲波的時間、記錄超聲波返回的時間,返回時間與發送時間相減得到超聲波的持續時間。
  2、通過公式:(超聲波持續時間 * 聲波速度) / 2就可以得出距離;

image.png

  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

image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章