11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【電子工作】超音波センサーHC-SR04にRGB LEDが搭載されたRUS-04を試してみる!

距離の測定や障害物の検知などに使われるモジュールにHC-SR04という超音波センサーがあります。
電子工作では非常にメジャーな定番センサーになるかと思います。

HC-SR04は人間の可聴域より高い超音波を発して物体に当たって跳ね返ってくるまでの時間を計測し、その距離を計測する超音波センサーです。
数センチから数メートル(約2cm~4m)くらいの範囲で比較的正確に距離を計測することが出来ます。

距離の計測以外にも障害物の検知などでも使えることから、Arduinoなどのマイコンボードを使った製作物に組み込んで設定した範囲内に障害物があるとそれを回避しながら動かすといった用途で使えます。

HC-SR04はトリガー(超音波のパルスを発する)とエコー(跳ね返ってきたパルスを受け取る)の2つのスピーカー?により距離を検知しています。
ロボットに取り付けると顔のようになり、なかなか可愛いですよね!

比較的簡単に扱うことができるセンサーで、cm単位くらいでは結構正確に距離を測ることが出来るので電子工作用途では非常に便利に使える定番的なセンサーとなり使われている方多いと思います。

超音波センサーHC-SR04に関して詳しくはこちらの記事を参考にして下さい!

【Arduino入門編⑪】超音波センサーを使って距離の測定や障害物の検知をやってみる![HC-SR04]

そんな電子工作用途でよく使われる超音波センサーHC-SR04にRGB LEDが組み込まれたタイプのRUS-04という面白いモジュールがあったので試してみました!

Arduino用 HC-SR04超音波距離センサー
ELEGOO

超音波センサーHC-SR04にRGB LEDが組み込まれたRUS-04を試してみる!

こちらが一般的によく使われている超音波センサーHC-SR04です。
Arduinoなどのマイコンボードとの接続は、VCC/GND/Trig/Echoの4ピンを接続して使います。
まず簡単にHC-SR04の動作原理を見ておきます。

HC-SR04には2つのスピーカーが付いています。
一方から音を出し(人間の可聴域よりも高い周波数の超音波なので聞こえません)、物体に当たって跳ね返ってきた音をもう一方のスピーカーで検知し帰ってくるまでの時間を計測する事が出来るセンサーとなります。

空気中の音速は約340m/sという定数となるので、物体に当たって反射して戻ってくるまでの時間を計測できればその物体までの距離を計算する事が出来るという仕組みとなります。(往復なので2で割ったものが距離となります)

動作原理を簡単にまとめると、このような流れとなっています。

HC-SR04 動作原理
  1. Trig(トリガー)ピンを10μSの間HIGH状態にしてLOWに落とす
  2. TrigピンがLOWに落ちた瞬間にセンサーモジュールから40kHz 8サイクルの超音波が出力されます
  3. 物体に当たって戻ってくる音波を待ち、Echo(エコー)ピンで戻ってきた音波を受信しその時間を計測します
  4. [音速]×[戻ってくるまでの時間]÷2で物体との距離を計算する事が出来る

これがHC-SR04センサーの動作原理となります。

そしてRUS-04は、HC-SR04にRGB LEDが搭載された超音波センサーとなります。
距離の計測の他に搭載されているLEDの点灯パターンをプログラミングする事が出来るようになっています。

その機能とモジュールサイズは、HC-SR04と互換性があります。(ボードサイズは若干大きくなっています)
仕様に関してHC-SR04と少し異なる部分があるので見ていきます。

【RUS-04】RGB LEDを搭載した超音波センサー

RUS-04の接続端子はHC-SR04とは少し違い、VCC/GND/RGB/IOとなっています。(4ピンPH2.0端子)

HC-SR04ではTrigピンとEchoピンを使って距離の計測を行いますが、RUS-04では超音波の送受信を操作するのに必要なGPIOピンは[IOピン]の1つだけとなっています。

HC-SR04で使っていたTrigピンとEchoピンの役割をIOピン1本で行うので、Arduinoの場合少しスケッチが異なってきます。(簡単ですが!)

そして2つのスピーカーには、それぞれ3つのRGB LEDが内蔵されています。(左右で計6個)
この搭載されているRGB LEDの点灯を制御するのが[RGBピン]となっています。

RUS-04 接続端子機能
VCC電源端子(3.5~5.5V)
GNDGND
RGB端子左右(計6個)のLED点灯パターンの制御を行う端子
IO端子超音波の送受信(Trig/Echo)の操作を行う端子
RUS-04 主な製品仕様
動作電圧3.5~5.5V
検出距離範囲2cm~4m
入出力I/Oポート1
誘導角15°未満
ボードサイズ46mm×21mm×20mm 固定穴サイズφ1.8mm
インターフェースPH2.0(4pin)と2.54mmピンヘッダーをサポート

RUS-04のボードサイズはHC-SR04とほぼ同じなので、既に製作物にHC-SR04を組み込んでいる場合には簡単なスケッチの修正で載せ替えることが出来ます。

また、接続端子に4ピンPH2.0タイプのコネクタが使われている以外は完全にHC-SR04互換として使うことが出来ると思います。

MEMO
1mm以下となりますが微妙にボードサイズが大きくなっているようです!
HC-SR04と入れ替える場合、微妙なボードサイズの違いやコネクタの位置に少し注意が必要かもしれません!

距離の計測で使ってみる

超音波センサーとして距離の計測を行う場合、ほぼHC-SR04と使い方は同じです。
詳しくはこちらの記事を参考にして下さい!

【Arduino入門編⑪】超音波センサーを使って距離の測定や障害物の検知をやってみる![HC-SR04]

距離を計測する簡単なテストスケッチを組んでみました。
HC-SR04とスケッチはほぼ同じとなります。(この段階ではまだLEDは点灯しません)
Arduinoとはこのように接続しています。

RUS-04Arduino
VCC5V
GNDGND
RGBD2
IOD3
シリアルモニタに障害物との距離を表示させています。

HC-SR04とスケッチが異なる部分は、HC-SR04ではTrigピン(OUTPUTで使用)とEchoピン(INPUTで使用)の2本のGPIOピンでやり取りを行いますが、RUS-04では[IOピン]1本のみで行います

そのため、void loop内でこのIOピンのINPUTとOUTPUTを切り替えながら(pinMode関数で切り替えています)TrigとEchoの動作をさせています。

これ以外はHC-SR04と完全互換として使うことが出来ます。(HCSR04 ultrasonic sensorなどライブラリを使用する場合は変わってくるかもしれません!)

RGB LEDの点灯制御方法

搭載されているRGB LEDの点灯パターンの制御は、「RgbUltrasonic」という専用ライブラリを使って制御すると開発元Emakefunのサイトに書かれているのですが、探してもこのライブラリを見つけることが出来ず・・・

調べてみるとRUS-04のLEDにはWS2812BというLEDコントローラーチップが使われているようです。
LEDテープライトなどで使われているチップですね。
内蔵されている6個のRGB LEDを1本の制御ピン[RGBピン]で個別に点灯を制御する事が出来る仕様となっています。

ArduinoにはWS2812Bを制御するためのライブラリは多数用意されています。
その中で定番となる「Adafruit NeoPixel」ライブラリを使って今回RGB LEDの点灯制御をやってみました。
Adafruit NeoPixelライブラリに関しては、こちらを参考にして下さい!

参考 Adafruit_NeoPixelGitHub

先程の距離計測のスケッチにRGB LEDの点灯制御を追加したスケッチがこちらです。
障害物を検知すると(10cm未満)全てのLEDが赤く点灯し、検知されていない時は青色に点灯するスケッチとなります。

MEMO
[スケッチ]→[ライブラリをインクルード]→[ライブラリを管理]からNeoPixelで検索し、【Adafruit NeoPixel】ライブラリをインストールして下さいね!

下記動画では少しスケッチを変え、LEDの点灯をクルクル回るレインボーカラーにしてみました。

最後に!

HC-SR04超音波センサーは電子工作用途でよく使われは定番的なセンサーとなります。
このHC-SR04と互換性がありRGB LEDが内蔵されているのは、ロボットなど製作物に組み込めば面白く使えそうですね!

またHC-SR04を複数取り付け(前後左右など)障害物の検知をしたい場合、ボードにもよりますがArduinoではGPIOピンが少ないので足りなくなるなってしまうことも考えられます。
RUS-04はIOピン1本のみで距離の計測が出来るので、GPIOピンの節約にもなりますね。

Arduino用 HC-SR04超音波距離センサー
ELEGOO

コメントを残す