見出し画像

Raspberry Pi Pico WでTWSNMPシリーズのセンサーを作る練習 まとめ

今朝は4時に起きました。本業のプログラムが気になったので、ずっと作っていました。途中、買い物と温泉でリフレッシュしましたが、まだ完成しません。いろいろ問題が見つかりました。
行き詰まりなので、気分転換のために、今週のセンサー開発のまとめ
をしておきます。

Raspberry Pi Pico Wセンサーの機能

たいしたことはできませんが、以下の情報を取得して指定した周期毎にsyslogでTWSNMP FCなどの送信します。

  • Pico上の温度センサーの値

  • 音量センサーのデジタル値、アナログ値

  • 人感センサーの値

回路図

ブレッドボードの配線図

Firitzingのデータ

これです。


購入した部品

作ったプログラム

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で受信した結果

です。

も購入したのですが、今日は試す時間がありません。

明日に続く

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