距離センサーHC-SR04が埋もれていたのでラズパイで使用してみたら意外と正確だった

久々のラズパイネタです。

1.距離センサ発見

机の引き出しの中を整理していたところ、こんな部品が出てきました。

これは、超音波の反射時間を利用して非接触で対象物までの距離を測る測距センサですね。

このセンサは、外部からトリガパルスを入力すると超音波パルス(8波)が送信され、出力された反射時間信号をラズパイで計算することによって距離を測ることができます。

これを手に入れたのは、かなり昔(現役時代、5年くらい前)です。60爺は、エンジンがかかるまでモノをほおっておく悪い癖がありますが、このセンサも長い期間、使われずに放っておかれたのです。

せっかく見つけたので、それでは使ってやろうではないかいと思い、使い方を「ラズパイ HC-SR04」でググってみました。

ここで見つけた記事を基に距離測定の実験をやってみました。

2.配線実施

ラズパイにこのセンサ HC-SR04 を接続するには、いくつか注意点があります。

一番大事なのは、このセンサ HC-SR04 が ECHO端子から出力する電圧は5Vであることです。ラズパイの入出力端子である GPIO は 3.3V用ですので、これを無視して接続すると、ラズパイが壊れてしまいます。

このため、センサの ECHO端子の出力を 5V から 3.3V に分圧する必要があります。

そして、センサには次の4つのピンがあります。

  • VCC: DC5.0V電源
  • Trig:トリガー信号
  • Echo:エコー信号
  • GND: グランド

これらの配線図は参考記事に出ていまので、それに従い設定しようとしたんですが、60爺は 510Ωの抵抗を持っていないことがわかりました。

幸い、330Ωと 100Ωの抵抗を持っていたので、330Ω×1と 100Ω×2を直列につないで代替としました。

配線図とその実物を以下に示します。

3.距離計測

プログラム(python)は参考記事のものを丸々採用し、プログラム名を kyori.py としました。

以下のコマンドで実行します。

$ sudo python hcsr04.py

測定可能距離は 2cm から 400cm となっています。

400cm(4m)は場所が狭い関係で、ちょっと測れないため、0.6cm で測ってみると次の結果になりました。3回実施してみました。

pi@raspberrypi:~/python_f $ sudo python kyori.py
4.92858886719
pi@raspberrypi:~/python_f $ sudo python kyori.py
4.48679924011
pi@raspberrypi:~/python_f $ sudo python kyori.py
4.47058677673

それぞれ、何となく、それなりの数値が出ましたが、当然、計測値としては正しくありませんね。

次に、計測範囲内の測定を行いました。

5cm から 5cm きざみで、40cm まで距離を測ってみました。

距離(cm)計測値(cm)
4.83131408691
1010.5218887329
1515.9652233124
2020.4520225525
2525.4333019257
3030.4834842682
3534.9500179291
4040.3082370758

どうでしょうか?結果は、そこそこの精度が出たと言っていいでしょうか?

参考
超音波距離センサ(HC-SR04)を使う