どんなうごき
人センサーは人が出す赤外線を電圧に変換して検知するセンサーです。このサンプルでは人が近づくと高輝度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()
できたもの
詳細説明
センサー部分

よく見ると2本の導線でできています。この導線の間に雨粒などが入ると、雨粒によって導線間の電気抵抗が下がります。こ