はじめに
超音波センサーを使うことで、Arduinoを利用して簡単に距離測定が可能になります。距離計を作成することで、障害物の検知やロボットの自動運転など、さまざまな応用が可能です。本記事では、超音波センサーHC-SR04を使用して、距離を測定する方法を詳しく解説します。
必要な部品
Arduinoを使った超音波距離計を作るためには、以下の部品を準備する必要があります。
- Arduino Uno(または互換機):プログラムを書き込んで制御を行うマイコンボード。
- 超音波センサー(HC-SR04):音波を使って距離を測定するセンサー。
- ジャンパーワイヤー:Arduinoとセンサーを接続するために使用。
- ブレッドボード:配線を簡単にするための基板。
- USBケーブル:ArduinoとPCを接続し、プログラムを書き込むために使用。
超音波センサーの仕組み
超音波センサーHC-SR04は、超音波を発射し、その音波が物体に当たって反射して戻るまでの時間を測定することで距離を計算します。主な仕様は以下のとおりです。
- 測定範囲:2cm~400cm
- 精度:約3mm
- 動作電圧:5V
- インターフェース:4ピン(VCC、GND、Trig、Echo)
距離を求める計算式は以下のとおりです。
音速は約343m/s(20℃の空気中)なので、時間(マイクロ秒)をセンチメートルに換算すると、以下のようになります。
Arduinoとの接続方法
超音波センサーHC-SR04をArduinoに接続する方法は以下のとおりです。
- VCC(電源) → Arduinoの「5V」ピンに接続
- GND(グラウンド) → Arduinoの「GND」ピンに接続
- Trig(トリガー信号) → Arduinoのデジタルピン(例:D9)に接続
- Echo(エコー信号) → Arduinoのデジタルピン(例:D10)に接続
接続のポイント
- 正しく配線する:間違ったピンに接続すると動作しないため、慎重に確認する。
- 長い距離を測定する場合は電源を安定化する:5V電源が不安定だと誤測定が発生する。
Arduinoのスケッチ(プログラム)
以下のコードをArduinoに書き込むことで、距離を測定できます。
const int trigPin = 9;
const int echoPin = 10;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = (duration * 0.0343) / 2;
Serial.print("距離: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
測定結果の活用方法

測定した距離データを活用することで、さまざまな応用が可能になります。
1. 障害物検知
一定距離以内に障害物を検出した場合に警告音を鳴らしたり、LEDを点灯させたりすることができます。
2. 自律移動ロボット
ロボットの前方に超音波センサーを設置し、障害物を避けながら移動するプログラムを作ることができます。
3. 液体や材料のレベル測定
タンク内の液面の高さや、物体の位置を測定するのに利用できます。
よくあるトラブルと解決策
1. 測定値が安定しない
原因と対策
- 反射する対象が平面でない場合、正しく測定できないことがある。
- 電源供給が不安定だと誤差が大きくなるため、安定した電源を確保する。
2. 常に0cmまたは最大値が表示される
原因と対策
- 超音波が適切に反射していない可能性があるため、測定対象を変更して試す。
- 配線ミスがないか確認する。
3. 測定範囲を超えている
原因と対策
- HC-SR04の測定範囲(2cm〜400cm)を超えている場合は、測定距離を調整する。
- 環境の影響(湿度や気温)によって音速が変化するため、補正が必要な場合がある。
まとめ
本記事では、Arduinoと超音波センサーを使った距離計の作り方を紹介しました。超音波センサーを使うことで、障害物の検知や距離測定を簡単に実装できます。
今回の基本的な回路やプログラムを応用して、ロボット制御や液面測定など、より高度なプロジェクトに挑戦してみてください。
コメント