どんなうごき
人センサーは人が出す赤外線を電圧に変換して検知するセンサーです。このサンプルでは人が近づくと高輝度LEDが点灯します。
つくりかた
用意するもの
- Raspberry Pi pico
- microUSBケーブル
- PC(WindowsかMac)
- ブレッドボード
- ブレッドボード用ケーブル
- 人感センサー
- 高輝度LED(放熱基板付3W白色パワーLED OSW4XNE3C1S)
- FETトランジスタ(Nch MOSFET BS170)
せつぞく
せつぞくは機能ごとに説明するためLED部分と人感センサー部分に分けています。実際に作る際には、2つをがっちゃんこしてください。
(LED部分)

(人感センサー部分)

プログラム
import network
import socket
import ntptime
import time
from machine import Pin, RTC
#from secrets import secrets
import utime
led = Pin("LED", machine.Pin.OUT) # ラズパイ動作確認用
ledState = 'LED State Unknown'
GP16_LED = Pin(16, Pin.OUT)
GP28_PIR = Pin(28, Pin.IN, Pin.PULL_DOWN) # GP28をRainとして入力端子()に設定
# スイッチの押下を割り込み
def log_button_press(pin):
GP16_LED.value(1) # LED ON
#タイマー割り込み
timer = machine.Timer()
timer.init(period=300000, mode=machine.Timer.ONE_SHOT, callback=OFF_led) # 300 秒後にきれる
def OFF_led(timer):
#print("LED点灯:", formatted_time)
#time.sleep(3)#300sec wait
GP16_LED = Pin(16, Pin.OUT) #LED OFF
GP16_LED.value(0)
timer = machine.Timer()
#timer.init(period=300000, mode=machine.Timer.PERIODIC, callback=OFF_led)
# 割り込み(ポートの電圧が下がったら実行)
GP28_PIR.irq(trigger=Pin.IRQ_FALLING, handler=log_button_press)
#LEDをはじめに切って、状態を決めておく。
GP16_LED.value(0)
def loop():
while True:
#割り込み処理を利用しているので、待ち時間の処理のため。
time.sleep(0.2) #0.2secの待ち
#プログラムスタート
if __name__ == '__main__': #プログラムスタート
try:
loop()
except KeyboardInterrupt: # Ctrl+C で中断処理
destroy()
できたもの
詳細説明
センサー部分

この人感センサーは、焦電型と呼ばれるもので、人が出す赤外線を熱に変換し、その熱を電気に変換してくれる焦電セラミックスというものを使っています。
自動ドアなんかにもこの赤外線センサーを使っています。なので、人が来なくても日差しでドアが開いてしまうなんてことも・・・。
ただ、このセンサー。1点欠点があります。正確には赤外線の変化を見ています。つまり、立ち止まってじっとしていると人を検知できません。これは、焦電セラミックスは温度変化に応じて発電します。じっとしていると焦電セラミックスの中で温度変化がなくなってしまうからです。じゃあ、温度変化が起こりにくいように焦電セラミックス熱容量を増やしてあげればよいですが、そうすると反応が遅くなるので、製品はうまいこと作られていると思います
セラミックスといえば村田製作所さまのHPにとても分かりやすく書いてあります。
村田製作所


基礎知識-焦電型赤外線センサとは?- | 基礎知識 | 村田製作所
焦電型赤外線センサの特徴や効果、動作原理などの基礎知識を解説しています。村田製作所の焦電型赤外線センサは、高感度で信頼性が高く、セキュリティやウェイクアップアプ...

プラスドライバーで回せるオレンジ色のものがあります。1つは感度、もう一つは検出距離を調整するためです。反時計回りにすると敏感になります。敏感にしすぎると誤検出にも繋がるので実際に作って環境に合わせて調整する必要があります。