見出し画像

Raspberry Pi Pico WでTWSNMPシリーズのセンサーを作る練習:人感センサーをつけた

今朝は6時近くまで寝てしまいました。
Raspberry Pi Pico WでTWSNMPシリーズのセンサーを作る練習の続きです。
昨日のアナログ入力は、測定した電圧の平均値だと1.65V付近で変化がない状態でした。本来は直流成分とか計算して音量を測定するようですが、手抜きして

aaoSum += abs(aao.read_u16() * conversion_factor - 1.65)

のような計算にしておきました。なんとなく、音量に反応して変化します。
次は、人感センサー

をつけてみました。

デジタル入力なので簡単だと思っていましたが、最初うまくいきません。
どうもGP16やGP1だと反応しないようでした。
GP22に接続すると、何故かうまくいきました。原因不明ですが、
とりあえず、完成したコードは

import machine
import utime
import socket
import network
import ntptime
import config

# get LED port
led = machine.Pin("LED", machine.Pin.OUT)
# Audio Sensor DO
ado = machine.Pin("GP0", machine.Pin.IN,machine.Pin.PULL_DOWN)
# Audio Sensor AO
aao = machine.ADC(28)
# AM312
am312 = machine.Pin("GP22", machine.Pin.IN,machine.Pin.PULL_DOWN) #connect  wifi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(config.ssid,config.password)

# wait wifi connect
while wlan.status() != 3:
    led.toggle()
    utime.sleep_ms(200)

# setup clock by ntp
ntptime.settime()
 #make  syslog socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

i = 0
adoSum = 0
pirSum = 0
aaoSum = 0.0
count = 0
while True:
    led.toggle()
    for j in range(1000):
        if ado.value() == 1:
            adoSum+=1
        aaoSum += abs(aao.read_u16() * conversion_factor - 1.65)
        if am312.value() == 1:
            pirSum+=1
        utime.sleep_ms(1)
    count+=1
    if i % (60 * config.interval) == 0:
        reading = sensor_temp.read_u16() * conversion_factor
        temp = 27 - (reading - 0.706)/0.001721
        now =utime.gmtime()
        ts = "%d-%02d-%02dT%02d:%02d:%02d+00:00" %(now[0],now[1],now[2],now[3],now[4],now[5])
        status = wlan.ifconfig()
        syslog = b"<%d>%s %s twRPPico: temp=%.2f,ado=%d,aao=%.2f,pir=%d" % (21*8+6,ts,status[0],temp,adoSum,aaoSum/(1000*count),pirSum)
        print(syslog)
        for dst in config.syslog_dst:
            s.sendto(syslog,(dst,514))
        adoSum =0
        aaoSum =0.0
        pirSum  = 0
        count = 0
    i+=1

です。
TWSNMP FCで受信したsyslogは

です。

とりあえず、購入したセンサーはつけてみました。
もう一つ別の種類のマイコンを買ったのですが、これは週末のお楽しみ。
Raspberry Pi Pico Wの開発関連のいろいろなサイトを見ている回路図や部ブレッドボードの図をキレイに書いているものが沢山あります。
調べてみると回路図を描くツールがあるようです。
描いてみたいところですが、今朝は、遅く起きたので時間切れです。

明日に続く 


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。