超音波センサーを使う

Arduino

 ここでは,超音波センサーを用いて距離を計測する方法について述べます。

 超音波センサーとして,HC-SR04を用います。

 HC-SR04は,超音波の反射時間を利用して非接触で距離を測定できるセンサーです。

 接続の仕方は,下の写真のようになります。

 配線は,たった4本で終わりです。意外と簡単ですね。

 HC-SR04には4本の足があります。これらの足は,電源関連(VccとGND)および出力関連(EchoとTrig)に分かれます。

 まず,電源関連の足は,VccをArduinoの5Vピンへ,GNDをArduinoのGNDに接続します。

 次に,出力関連の足は,Echoを2番ピンに,Trigを3番ピンに接続します。

 回路図は右図のようになります。

 さて早速,プログラムを入力しましょう。下のリストのように入力してください。

 さて,このプログラムを読んでいきましょう。

 1行目:TrigピンをArduinoの3番に接続します
 2行目:EchoピンをArduinoの2番に接続します
 4行目:超音波が片道移動するのに要した時間を変数durationに格納します。ここでは,初期値として0を代入しています
 5行目:durationと音速から算出される距離を変数distanceに格納します。ここでは,初期値として0を代入しています
 6行目:気温25℃における音速を変数speed_of_soundに代入します
 9行目:シリアル通信の速度を9600bpsに設定します。このコマンドによりシリアルモニターに数値などを出力することができるようになります
 10行目:ECHO,すなわち2番ピンを入力モードにします
 11行目:TRIG,すなわち3番ピンを出力モードにします
 15~19行目:超音波センサーの送信部から超音波を送信します。送信の仕方は仕様で決まっています
 20行目:超音波が往復にかかった時間をdurationに代入します。pulseIn関数はパルスがHIGHになっている時間を取得します。単位は μsec です
 22~28行目:durationが正,すなわち反射波をセンサーが検知したときの動作を記しています。
  23行目:durationを2で割ることにより片道の時間を算出しています
  24行目:距離を算出しています。時間×速度で求められますね。ただし,speed_of_soundに格納されている音速の単位はm/secですので,単位をそろえるために 100/1,000,000 を掛けています。距離は cm で求められます
  25~27行目:シリアルモニター(画面)上に距離を cm で表示します
 30行目:200msec = 0.2sec だけ待機してから次の動作に移ります。

 動作している様子を映した動画です!

 まず,はじめは超音波センサーの前に名にもさえぎるものがない状態にしています。このとき,距離はだいたい180cm程度になっています。

 次に,超音波センサーの前に手をかざしました。すると,距離が数cm 程度になり,障害物(この場合は手)までの距離がちゃんと計測されていることがわかります!(動画は拡大して見てください)

コメント

タイトルとURLをコピーしました