Raspberry Pi Pico W-距離センサと赤外線センサ

この記事でわかること

今回は、
赤外線距離モジュール「HC-SR04 」
赤外線焦電人感センサ「HC-SR501」のふたつを紹介します!

この記事を読めば、2つのセンサを使いこなすことができます!

今回は少し特殊なジャンパー線を使うので、買うのを忘れないようにしてください!

つかうもの

この記事で使っているものを紹介します。
*このリンクは、アフィリエイトリンクです。
こちらのリンクから購入されると、投稿主にインセンティブが発生します。
より良い記事のために、ぜひ購入する際は以下のリンクよりお願いします。。

実際に投稿主が購入したキットを紹介します。
こちらのキットは、マイコンと電子工作に必要な部品がセットになったものです。
こちら購入すればすぐに電子工作始められます!
また、公式HPでモジュール、プログラムの解説もされているので、非常におススメです。

購入はこちらをクリック!
*画像はリンク先より引用

個別に購入したい方は以下のリンクより購入ください!

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

購入はこちらをクリック!
*画像はリンク先より引用

モジュール解説

赤外線距離モジュール

今回使う赤外線モジュールはこちらです↓

↑が今回使う「HC-SR04」です
赤外線で距離が測れる仕組みをかんたんに解説します
右のイラストを見てください!
片方の筒から目に見えない、赤外線を出します。
波が伝わり、障害物に当たり跳ね返ってきます。
跳ね返ってくるまでの時間を使って距離を測定します。

それでは、実際に回路を組んで動かしてみましょう!

回路を組んで動かそう

まずは、↓の図を参考に回路を組んでください。

抵抗は自分の使うLEDに合わせてください!

続いてプログラムを「Raspberry pi pico w」に書き込んでください

プログラムを書き込む

↓のコードをThonnyに貼り付けて、「Raspberry pi pico」に書き込んでください
(保存する際ファイル名は、何でも良いです)

from machine import Pin
import utime

# ピンの設定
output_pin = Pin(17, Pin.OUT)  # トリガーピン
get_pin = Pin(16, Pin.IN)      # エコーピン
led_pin_1 = Pin(15, Pin.OUT)   # LED1
led_pin_2 = Pin(14, Pin.OUT)   # LED2
led_pin_3 = Pin(13, Pin.OUT)   # LED3
led_pin_4 = Pin(12, Pin.OUT)   # LED4
led_pin_5 = Pin(11, Pin.OUT)   # LED5

# 距離の初期値を設定
distance = 0

def read_distance():
    # LEDを全て消す
    led_pin_1.low()
    led_pin_2.low()
    led_pin_3.low()
    led_pin_4.low()
    led_pin_5.low()

    # 超音波センサーにパルスを送信
    output_pin.low()
    utime.sleep_us(2)
    output_pin.high()
    utime.sleep_us(10)  # ここを修正マイクロ秒単位での待機
    output_pin.low()

    # エコーピンの信号を読み取り
    while get_pin.value() == 0:
        start = utime.ticks_us()
    while get_pin.value() == 1:
        end = utime.ticks_us()

    # エコーの時間から距離を計算
    time = end - start
    global distance  # グローバル変数として宣言
    distance = (time * 0.0343) / 2

    # 距離に応じてLEDを点灯
    if distance <= 15:
        led_pin_5.high()
        if distance <= 12:
            led_pin_4.high()
            led_pin_5.high()
            if distance <= 9:
                led_pin_3.high()
                led_pin_4.high()
                led_pin_5.high()
                if distance <= 6:
                    led_pin_2.high()
                    led_pin_3.high()
                    led_pin_4.high()
                    led_pin_5.high()
                    if distance <= 3:
                        led_pin_1.high()
                        led_pin_2.high()
                        led_pin_3.high()
                        led_pin_4.high()
                        led_pin_5.high()
                    else:
                        pass
                else:
                    pass
            else:
                pass
        else:
            pass
    else:
        # ここに追加の処理を記述距離が一定以上の場合のアクションなど
        pass

# メインの無限ループ
while True:
    read_distance()
    print(distance)  # distanceの値を表示
    utime.sleep(0.1)


書き込みが終了したら、Thnnyの画面左上にある緑色のボタンを押して、プログラムを動かします。

そうすると、、、

光りましたね!
今回は3cm近くなるごとにだんだんLEDが光っていくというプログラムになっています。
壁を動かしてみると、、

距離に応じて光るLEDが変化しますね!

うまく光らない方は、動かないときの対処法を確認してください!

これで、赤外線距離モジュールを使いこなせるようになりましたね!
続いて、赤外線センサを使っていきます!

赤外線センサモジュール

写真

赤外線センサは人が放つ赤外線を受け取って、人を感知すると特定のピンから「raspberry pi pico w」に信号を送ります

それでは、実際に回路を組んでいきましょう!

回路を組み立てる

↓のイラストと画像を参考に回路を組んでみてください!

このように回路を組んでください。
LEDは使う抵抗に合わせてください。

プログラムを書き込む

↓のコードをThonnyに貼り付けて、「Raspberry pi pico」に書き込んでください
(保存する際のファイル名は何でも良いです)

#ライブラリのインストール
from machine import Pin
import utime
#ピンの設定
led = Pin(18, Pin.OUT)
sensor = Pin(16, Pin.IN, Pin.PULL_DOWN)
led.value(0)
utime.sleep(1)
while True:
    if sensor.value() == 0:#センサが反応しないときの処理
        print("Serching...")
        led.value(0)
        utime.sleep(1)
        
    else:#センサが反応したとき
        print("Detected!")
        led.value(1)
        utime.sleep(1)
        

書き込みが終了したら、Thnnyの画面左上にある緑色のボタンを押して、プログラムを動かします。

そうすると、、、

動きました!
今回は動きを感知したら、1秒光るというプログラムにしました

これで、赤外線センサを使えるようになりましたね!

これで今回の内容はおしまいです。

今回の内容で動かないとき

今回の内容で動かしてうまく動作しないときは、↓の項目を確認してみてください!

プログラムに間違いはないか

コードをコピペしたら、なにか手を加えない限りは特に、問題はないと思いますが、
自分で手打ちしたり改良した際には、そのコードに間違いがないかを確認してください。

回路に問題はないか

回路は、コピペはできないので、間違っている可能性が高いです。
・ラズパイにつなぐピンは合っているか
・ボードをの指す位置は合っているか
この2つを確認してください。

LEDはきちんと光るか

LEDが壊れている可能性もあります。
LEDがきちんと光るものかのチェックを忘れないでください!

どうしても解決しないときは、、

解決しない場合は、問い合わせページに
わからないこと・できないことを送ってください!
個別対応させていただきます。

おわりに

いかがだったでしょうか?
きちんと動きましたか?
もし、わからなかったことやできないこと等ありましたら、お気軽に問い合わせください!
また、次の記事でお会いしましょう!

Raspberry Pi Pico Wカテゴリの最新記事