オカンハック

母親目線での「便利!」を備忘録的に書き溜めていこうと思います。

IT系夫婦がRaspberry Piをかじってみた。③センサー制御編

こんにちは。カーチャンです。

小さなコンピュータ「Raspberry Piラズベリーパイ、略してラズパイ)」を操作するシリーズ、
第3回は、センサーを使った制御を行います。

センサーによる制御は、エアコンの温度制御やトイレの人感センサ、自動ドアなど、様々なことに使用されています。
今回は距離センサーをラズパイにつないで制御します。

外部機器への信号の送り方、受け取り方を学びましょう。

=>関連記事
IT系夫婦がRaspberry Piをかじってみた。①導入編 - オカンハック
IT系エンジニア夫婦2人でRaspberry Piをかじってみました。②LED制御編 - オカンハック

使用するパーツ

距離センサーと、前回使用したジャンパーピン、ブレッドボードを使用します。

上記の距離センサーは、超音波式です。
超音波を発射し、反響までの時間で距離を測定します。

音速は約340m/s。
反響が返るまでの秒数を掛ければ、物体までの往復の距離が測れます。
音速は気圧や温度などでブレるから正確な距離ではないんだけど、許容範囲とします。

センサーを接続する

距離センサーには、4つのピンがあります。
Vccは5Vの電源用、
Gndはグランド(マイナス極)、
Trigは超音波信号を送信するピン、
Echoは超音波信号を受信するピンです。

これをGPIOの対応するピンと接続します。
Vccは5V電圧のピンに、GndはGndピンに
TrigとEchoはGPIOピンと接続します。

f:id:okan89-blog:20190519230847p:plain
Raspberry Pi A/B GPIO

https://www.raspberrypi.org/documentation/usage/gpio/README.md


センサーから距離を取得する

こちらの記事を参考にさせていただきました。
algorithm.joho.info

実行すると、1回の実行で10回分の距離計測を行うことができました。

硬いものだときちんと測定できますが、手で遮った時は測定距離にブレがありました。
柔らかいためなのか曲面により拡散するためなのか、原因は不明です。

距離によって別の回路を制御する

応用として、計測した距離から②LED制御の記事で作成したLED回路を制御し、「10cm以内に物体があればLEDを消灯し、それ以上だったらLEDを点灯する」という機能を実装します。

ブレッドボードにLEDと抵抗を追加して、もう一つ回路を作ります。
GPIOピンの設定をもう一つ、出力用に初期化(GPIO.setup([LEDのピン番号], GPIO.OUT))して、IF文で分岐させます。
ちなみに、なぜかこの時、入力用と出力用の初期化をごちゃ混ぜで書いたら、うまく認識してくれませんでした。
複数の端子の初期化をする場合は、先に入力なら入力でまとめておくか、配列で指定しなければならないようです。

実行すると、距離によって点灯・消灯を切り替えることができました。

まとめ

センサーを使うことで、電子回路でできることが一気に広がります。
機械の自動化には、センサーは必要不可欠な存在と言えるでしょう。

距離による自動制御といえば、クルーズ・コントロールや自動ブレーキサポートといった運転支援システムが思いつきます。
最近ではレーダー(電波)による距離検知だけでなく、車載カメラによる画像解析も組み合わせ、お互いの短所を補うようになっているそうです。
www.zmp.co.jp

今回の距離センサーは超音波式でしたが、ひと口に距離センサーと言っても様々な種類があり、それぞれ特性が異なることがわかりました。
電子回路を組むにあたって、目的や使用する環境にあわせて、どの方式を採用するか考慮しなければなりません。
根本の原理は、中学・高校の科学で習ったことも多いので、今更ながら学校の勉強って大事だな、と思いました。

関連商品

今回使った距離センサーはこちら。

センサーって色々あるんですね。
見ているだけでも、どんな風に使おうかワクワクします。