初心者でも簡単に電子工作が楽しめるarduino(アルドゥイーノ)を使って実用的な作品作りをしています。
たまには遊び心のある作品もいいじゃない!と思い、近いうちに簡単な自動走行ロボットを作ってみたいと思います。
自動走行を実現するためには、距離センサーが必要です。
まずは、安価で一般的な赤外線モジュールと超音波モジュールを、arduinoを使って実際に距離測定しながら比較して、ロボットへの搭載位置や個数を決める時に活用します。
赤外線センサー GP2Y0E02A
シャープの赤外線式の測距モジュールとしては、GP2Y0A21YKがArduino作品でよく使われます。
今回はもっと小型のものを試してみたいと思い、3.3V電源で使用する測距モジュールモジュールGP2Y0E02Aを選択しました。
18.9 × 8.0 × 5.2mmとたいへんコンパクトなモジュールですが、赤外線LEDとCMOSイメージセンサーを備えています。
4~50cmの距離を高精度に素早く測定できますが、赤外線がしっかり反射する材質と面積と位置(角度)の相手物でないと測定できません。つまり、
- 測定が早くて正確
- 測定する相手物は、真正面
- 相手物にはセンサーと平行の赤外線反射面が必要
- 反射面の面積が、ある程度必要
なので、例えば決められたルートや迷路を自動走行するロボットなどには使えそうです。
ArduinoとGP2Y0E02Aの配線図


回路図はFritzingで作成しています。
赤外線式距離モジュールGP2Y0E02Aには、4本の端子があります。
- VDD(3.3V電源)
- GND
- Vout(出力)
- GPIO1
1番と2番はArduinoの3.3VとGNDに接続します。
3番のVoutは、電圧で距離情報を返してくるので、Arduinoのアナログピン(回路図ではA3ピン)に接続します。
4番のGPIO1は、電圧がVDD付近であれば計測、GND付近であればスタンバイ(計測しない)モードとなります。今回はお試しなので簡易的に1番のVDDに直接つなぎます。
GP2Y0E02Aを使うスケッチ(プログラム)
測定した距離を、センチメートルでシリアルモニターに表示するスケッチです。
測定時間が短いので、100回に一回、その平均値を表示します。それでも早すぎるので表示するまで0.1秒のディレイ(休憩時間)を入れています。
シリアルモニターには、このように表示されます。
平らな板ではなく、手帳のざらざらした革表紙を計測してみたため、少しバラツキが大きい結果が表示されました。
GP2Y0E02A まとめ
室内で、センサーと平行な関係になることが分かっている平らな壁との距離を、早く正確に測ることができます。4~50cmの測定範囲が用途にあえば、小型で使いやすいモジュールです。
実用では、衣類などに対するバラツキ幅を乱数として有効活用して、1/fゆらぎを発生するUSB扇風機を作ってみました。
超音波モジュール HC-SR04
Arduinoで距離を測る場合に、よく使われるモジュールです。
45×20×15mmと少し大柄ですが、超音波発信部と受信部の作りがロボットの目のようで愛嬌がある形です。
データシートでは15°の範囲で2~400cmの距離を測れることになっていますが、相手物がしっかり音を反射して返すかどうかで、計測精度や検知可否が変わってきます。
他にも試して気付いたことを、纏めてみます。
- 近くの測定は、そこそこ早くて正確。遠くの測定は少し時間がかかる
- 測定できる相手物は、近くは真正面から左右7.5°の範囲だが、遠くになると正面だけ
- 相手物にセンサーと平行の超音波反射面がある方が、測定精度が良い
- 検知物が90°のカドだと45°方向からは計測できない
超音波は思いのほか拡散して薄まるのか、遠くまでしっかり計測できるのは正面方向だけのようです。
とはいえ、1m以内の近距離のものは赤外線センサーよりも安定して計測できるので、こちらの方が使いやすそうです。
ArduinoとHC-SR04の配線図


超音波モジュールHC-SR04には、4本の端子があります。
- VCC(5V電源)
- Trig(トリガー)
- Echo(エコー)
- GND
1番と4番はArduinoの5VとGNDに接続します。
2番のTrigは、Arduinoから10mSのパルスを入れることで、超音波モジュールに8x40KHzの超音波を発するように指示します。今回はD7に接続します。
3番のEchoは、超音波が返ってくるまでの間ONになります。この時間をArduinoで読むことで、距離を計測できます。今回はD8に接続します。
HC-SR04を使うスケッチ(プログラム)
赤外線モジュール同様に、測定した距離をセンチメートルでシリアルモニターに表示します。
超音波モジュールは遠くまで測定するのに時間がかかるので、100回ではなく10回に一回、その平均値を表示します。
シリアルモニターの表示です。
HC-SR04 まとめ
シリアルモニターの表示でもわかるとおり、近距離の測定結果が赤外線モジュールよりも安定しています。
少し角度がついている面でも、実際よりは遠い距離だと認識しますが計測結果は得られます。
この超音波モジュールを数個使って自動走行ロボットを制作中です。まだ粗削りの動きなのでレベルアップに挑戦し続けており、製作記事は順次更新いたします。