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の運営にも貢献できるのでよろしくお願います。