この記事でわかること
今回は、
赤外線距離モジュール「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がきちんと光るものかのチェックを忘れないでください!
どうしても解決しないときは、、
解決しない場合は、問い合わせページに
わからないこと・できないことを送ってください!
個別対応させていただきます。
おわりに
いかがだったでしょうか?
きちんと動きましたか?
もし、わからなかったことやできないこと等ありましたら、お気軽に問い合わせください!
また、次の記事でお会いしましょう!