MENU

【RaspberryPi】赤外線障害物検知センサーモジュールを使ってみる

2020 2/20
【RaspberryPi】赤外線障害物検知センサーモジュールを使ってみる

以前紹介したこちらのkumanのモジュールキット(44個セット)

あわせて読みたい
ラズパイのセンサー/モジュールキットのおすすめ2選
ラズパイのセンサー/モジュールキットのおすすめ2選「そろそろラズパイを本格的に使いたい。」「センサー/モジュールを使って何かしたいなぁ。」「そもそも何をやったら良いか分からない。」そんな時はセンサー・モジュー...

かなり多いモジュールがあるのでボチボチ使っていきながら、
備忘録と紹介も兼ねて記事にしておく。

今回は赤外線障害物検知センサーモジュール(Infrared Obstacle Avoidance Module)を使ってみる。

目次

赤外線障害物検知センサーモジュール(Infrared Obstacle Avoidance Module)

赤外線障害物検知センサーモジュール(Infrared Obstacle Avoidance Module)
赤外線障害物検知センサーモジュール(Infrared Obstacle Avoidance Module)

赤外線障害物検知センサーモジュールの中でも割と定番の型番です。(購入はこちらから)

検知距離の調整(205ポテンションメーター)と赤外線周波数の調整(103ポテンションメーター)が可能です。
しかし、赤外線周波数の調整はいまいち使いみちが分からず触ることは一切なかった。)

赤外線障害物検知の原理

こういうモジュールとかって原理が大切。

ざっくり原理
モジュールの先には赤外線送信機と受信機が付いており、送信機の放った赤外線が何かに当たって反射した場合、受信機で検出されます。「何かに当たって反射」= 「障害物がある」という判定で障害物検知を行ってるわけですね。逆に、障害物がない場合は送信機の放った赤外線は帰ってこないため、受信機で検出されません。

障害物検知の原理

赤外線の反射は物体によって異なるので、赤外線を吸収しやすい物体や、乱反射するような物体では検知判定が鈍くなったり検知されなかったりすることもありえます。
ステルス戦闘機なんかは機体がレーダーを乱反射させるような形状になっており、レーダーの反射がうまく帰ってこない(検出されない)ため、ステルス性を持つことができるわけなんですね。だからステルス戦闘機は変な歪な形状をしています。

こうやって原理を知ると、世の中の仕組みも意外と簡単な原理で動いているんだなと感じますね。
最近流行りの自動運転ブレーキ搭載の自動車も、障害物検知にはこの原理が使われていたりします。(最近では画像認識・分析が使われていたりもしますが...。)

赤外線障害物検知センサーモジュールの使い方

原理をざっくり語ったところで「赤外線障害物検知センサーモジュール」をいよいよ使っていきます。
今回もみんな大好きRaspberryPiを使っての実装です。

モジュールのセンサー前に物体を置く、手をかざす等をすることで、障害物検知が行われます。
「ログの出力」で障害物検知を確認してください。

RaspberryPiとモジュールの接続方法

赤外線障害物検知センサーモジュールのPin

モジュールのPinは左から①②③④とします。

  • ①GND
  • ②+(VCC)
  • ③OUT
  • ④今回は使いません。

①はラズパイのGNDに、②は5V電源VCCに、③は11Pin(GPIO17)に接続したら準備は完了です。

pythonC言語での実装用ソースコードを載せておきます。

python編

import RPi.GPIO as GPIO
import time

ObstaclePin = 11

def setup():
    #GPIO設定
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(ObstaclePin, GPIO.IN, pull_up_down=GPIO.PUD_UP)


def loop():
    while True:
        time.sleep(0.5)
        if (0 == GPIO.input(ObstaclePin)):
            print("障害物を検知しました!!")

        else:
            pass


def destroy():
    GPIO.cleanup()                      # GPIOリソースのクリーン化

if __name__ == '__main__':      # プログラムスタート
    setup()
    try:
        loop()
    except KeyboardInterrupt:
        destroy()

実行環境はpython3です。

$ python3 ObstractDetect.py

C言語編

#include <wiringPi.h>
#include <stdio.h>
#include <unistd.h>

#define ObstaclePin 0

int main(void)
{
	if(wiringPiSetup() == -1)
	{
		printf("setup wiringPi failed !\n");
		return -1;
	}

	while(1)
	{
		usleep(5 * 100000);
		if(0 == digitalRead(ObstaclePin))
		{
			printf("障害物を検知しました!!\n");
		}
		else
		{
		}
	}
	return 0;
}

C言語なのでコンパイルをします。

$ gcc ObstractDetect.c -o ObstractDetect.out -lwiringPi -W

$./ObstractDetect.out

赤外線障害物検知センサーモジュールの設定

赤外線障害物検知センサーモジュール(Infrared Obstacle Avoidance Module)の検出距離は2cmから40cmとなっています。検出距離の調整は、モジュール右下の205ポテンションメーターにて調整を行うことが可能です。

ですが!
イマイチこの調整はうまく行かず...。検出距離を大きくしてみるとそもそも物体検知ができなかったり...
原因は不明ですが、1番安定して物体検知が行える距離は2cmから10cmの間でした。その位置で検出できるように205ポテンションメーターを調整しました。

そして、モジュール左下の103ポテンションメーターは赤外線の周波数の設定が行なえます。テキトーにいじってみましたが、イマイチどの周波数がいいとか悪いとかわかりませんでした。
なので、これはあまり気にしなくて、触らなくてもいいのかなと。

検出距離を変えるには赤外線の周波数も同時に調整しないといけないとかなんでしょうか。
ここらへんのギミックについては今回理解まで出来なかったのでぼちぼち触りながら、分かり次第記事更新しますかね。

以上赤外線障害物検知センサーモジュール(Infrared Obstacle Avoidance Module)の使い方、実装でした。
ぜひ、参考に

赤外線検知モジュールおすすめです。
ワンコインでモジュールが買える時代。
お昼ごはんを抜けばモジュール一つ購入できるなんて..。素晴らしい。

ばいちゃ。

この記事が気に入ったら
フォローしてね!

この記事を書いた人

6年間化学を専攻していたのになぜか一部上場のIT企業のエンジニアへ。
普段はWeb系のITエンジニアとしてサラリーマンをしているが、脱サラ田舎暮らしに憧れ,システム開発やブログ収益化を目指す。

コメント

コメント一覧 (2件)

コメントする

目次
目次