【Arduino】超音波距離センサ(HC-SR04)の使い方

この記事では、Arduinoと超音波距離センサ(HC-SR04)で対象物までの距離を測定する方法をソースコード付きで解説します。

超音波距離センサ(HC-SR04)

超音波距離センサ(HC-SR04)は、超音波を用いた距離センサーです。
このセンサーは、2~450cmまでの範囲内にある対象物までの距離を測定できます。
アマゾンで200円で入手できました。
出力した超音波が対象物に跳ね返って戻ってくるまでの時間と音速(超音波の速度)から距離を求めます。

【計算式】
(対象物までの距離)=(音速)×(出力してから戻ってくるまでの時間÷2)

今回は、これをArduinoで使ってみました。

回路構成

回路構成(左)と超音波距離センサHC-SR04(右)

赤:5V、黒:GND、黄:8番ピン、緑:9番ピン

部品名 個数
Arduino UNO 1個
超音波距離センサ(HC-SR04) 1個
ブレッドボード 1個
ジャンパーワイヤ 数本

HC-SR04の仕様

仕様 内容
電源電圧 5V
待機電流 2mA未満
信号出力 0-5V
センサ角度 15度以下
測定可能距離 2cm-450cm
分解能 0.3cm

HC-SR04の端子

超音波センサの4本の端子の構成は以下の通りです。
(本体にもラベルが刻まれています)

ラベル 内容
Vcc 電源入力(5V)
Trig 超音波信号を送信
Echo 超音波信号を受信
GND グランド

処理手順

説明
出力ピン(8)で超音波を出力します。(トリガ端子を10μs以上Highにすると40kHzのパルスを8回送信)
入力ピン(9)で超音波を受信します。(エコー端子がHIGHになってからLOWに変化するまでの時間=超音波が送信されてから受信するまでの時間[μs]を計測)
以下の式で時間から距離を求めます。
【計算式】
距離[cm] = (0.034) × (②で求めた時間[μs]÷2)

※音速=340[m/s] = 34000[cm/s] = 0.034[cm/μs]

ソースコード

サンプルプログラムのソースコードです。

int trig = 8; // 出力ピン
int echo = 9; // 入力ピン

void setup() {
  Serial.begin(9600);
  pinMode(trig,OUTPUT);
  pinMode(echo,INPUT);
  }

void loop() {
  // 超音波の出力終了
  digitalWrite(trig,LOW);
  delayMicroseconds(1);
  // 超音波を出力
  digitalWrite(trig,HIGH);
  delayMicroseconds(11);
  // 超音波を出力終了
  digitalWrite(trig,LOW);
  // 出力した超音波が返って来る時間を計測
  int t = pulseIn(echo,HIGH);
  // 計測した時間と音速から反射物までの距離を計算
  float distance = t*0.017;
  // 計算結果をシリアル通信で出力
  Serial.print(distance);
  Serial.println(" cm");
  delay(500);
}

【参考】pulseIn関数の使い方

実行結果

サンプルプログラムの実行結果です。

シリアルモニター

19.21 cm
19.14 cm
18.76 cm
18.73 cm

今回は音速を340[m/s]に固定して計算しています。
音速は気温などにも影響されるので、計測精度を上げるにはこれらの影響を考慮する必要があります。
気温を考慮した場合については下記事で解説しています。
【Arduino】超音波距離センサ(HC-SR04)の測定精度を向上(気温考慮)

関連記事

Arduino入門 基本的な使い方

シェア&フォローお願いします!