超音波距離センサは、計測対象物に超音波を発信して、その反射波を受信するまでの時間から、センサと対象物との距離を計算・検出するセンサです。 この記事では超音波距離センサHC-SR04とRaspberryPiを使って、超音波距離センサの距離検出の仕組みを紹介します。 記事の最後にRaspberryPiでHC-SR04を動かすサンプルコードも掲載します。
超音波距離センサの仕組み
超音波距離センサの仕組みは、超音波を計測対象に発射し、反射が返ってくるまでに要した時間と、音の進むスピードから距離を計算し求めるものです。距離測定の手順を示します。
①パルス発射・計測開始

②パルス伝搬中

②パルス伝搬中

③反射パルス到着・記録終了

④距離計算

実際に距離を測定してみる
以降はラズパイを使ってセンサ使って距離を測定します。
必要なもの
-
RaspberryPi2
-
ジャンパワイヤ(メス—メス)×4本
-
超音波距離センサHC-SR04×1個
HC-SR04の仕様
測距範囲 2~400cm(15度の範囲、分解能:0.3cm) 電源電圧 DC 5.0V 動作電流 15mA 動作周波数 40kHz トリガ信号 10μS(TTLレベルのパルス波) エコー出力信号 反射(往復)時間 サイズ 45×20×15mm ※通電時の接続はGND端子から行ってください。
配線
HC-SR04(gnd)—GPIO6番ピン(GND) HC-SR04(trig)—GPIO21番ピン HC-SR04(echo)—GPIO20番ピン HC-SR04(vcc)—GPIO4番ピン(5V)
コード
#!/usr/bin/python
class hcsr04:
def measure(sensor):
import time
import RPi.GPIO as GPIO
#GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
if sensor == 0:
GPIO.setup(21,GPIO.OUT)
GPIO.setup(20,GPIO.IN)
GPIO.output(21, GPIO.LOW)
time.sleep(0.3)
GPIO.output(21, True)
time.sleep(0.00001)
GPIO.output(21, False)
while GPIO.input(20) == 0:
startTime = time.time()
while GPIO.input(20) == 1:
stopTime = time.time()
timepassed = stpoTime - startTime
distance = timepassed * 17000
return distance
GPIO.cleanup()
else:
print "Incorrect usonic() function varible."
print measure(0)
if __name__ == "__main__":
pass
参考
超音波距離センサ(HC-SR04)を使う|Make. 超音波センサーってなに?仕組みとアプリケーション例から学ぼう!|富士エレクトロニクス株式会社 超音波距離センサー HC-SR04|秋月電子通商