見出し画像

【ESP32プログラム】超音波距離センサ


前回作成したラジコンカーなどを自動走行させたりする場合に、障害物を検知するのに役に立つのが超音波距離センサです。安価で入手できるわりには、そこそこの精度で距離を検出できますし、簡単に使うことができます。

結線図

図1に結線図を示します。電源とGNDを接続したら、あとは超音波を発信するTRIGER信号(出力)と反射した超音波を検出するECHO信号(入力)をそれぞれGPIO32とGPIO34に接続します。

プログラム

ESP32のプログラムを以下に示します。
TRIGERで信号を発射して、ECHOで検出したduration(物体に反射して戻ってくるまでの時間)をpulseIn()関数で取得して、音速(344[m/s])をかけて、往復の時間なので2で割るだけです。
なお、本記事では短い距離を測るの場合を想定していますので単位はcmで出るようにしています。

#define TRIG_PIN 32  // トリガーピン(出力)
#define ECHO_PIN 34  // エコーピン(入力)

void setup() {
  Serial.begin(115200);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

void loop() {
  // 超音波センサーにトリガー信号を送る
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // エコーの信号を受け取り、距離を計算する
  long duration = pulseIn(ECHO_PIN, HIGH);
  // 距離計算 (音速: 343m/s)
  long distance = duration * 0.0344 / 2;

  // 結果をシリアルモニタに表示
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500);  // 0.5秒待機
}

購入部品

最新情報「電子工作お買い物一覧」の記事を参照ください。
リンク切対応や代替部品の紹介もしています。


いいなと思ったら応援しよう!