見出し画像

Raspberry Pi Pico WでTWSNMPシリーズのセンサーを作る練習 その2

浦和レッズ、悔しい引き分け!
今朝は5時から開発開始です。
昨日に続いてRaspberry Pi Pico Wを使ってTWSNMPシリーズのセンサーを作る練習をしています。
昨日は

に従ってやってました。
どうも、ここで紹介されている開発環境

のエディタが好きになれないのでVSCodeで開発する方法を探しました。
ありました

これを動かしのに少し苦労しましたが、使えるようになって、すごく快適です。この動画で紹介されているVSCodeのヘルプでPIN配置が確認できるヘルプは、面白かったです。

使い慣れたエディタで開発すると、どんどん開発が進みます。
Raspberry Pi Pico Wに標準で搭載されている温度センサーで取得した値を
syslogでTWSNMP FCに送信するプログラムができました。

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

#connect wifi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(config.ssid,config.password)

#make syslog socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

# setup clock by ntp
ntptime.settime()
led = machine.Pin("LED", machine.Pin.OUT)
i = 0
while True:
    led.on()
    utime.sleep(1)
    led.off()
    utime.sleep(1)
    if i % 60 == 0:
        if wlan.status() == 3:
            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=%.1f" % (21*8+6,ts,status[0],temp)
            print(syslog)
            for dst in config.syslog_dst:
                s.sendto(syslog,(dst,514))
    i+=1

config.pyに

ssid="WifiのSSID"
password="Wifiのパスワード"
syslog_dst=["syslogの宛先IP1","syslogの宛先IP1"。。]

書いてPico Wにアップロードすれば動きます。

TWSNNMP FCで受信した結果は、

です。実際の室温よりりは高めですが、測定できています。
朝でも室内がむっとしていたので、エアコンの設定を標準に戻すと2℃ぐらい下がりました。快適です。

このハードウェアでの開発は、昔を思い出してかなり楽しいです。
GO言語とかJavaScriptとか高級な言語に慣れていると、戸惑うことが沢山でてきます。
例えば、syslogで送信するタイムスタンプの処理でもちょっと苦労しました。そのもそも、電源いれただけでは、時計が合っていません。2000/1/1になってしまいます。NTPサーバーに問い合わせて時刻を設定する必要があります。OSのある環境の開発言語だと日時のデータを文字列にいい感じにフォーマットする関数がありますが、ないので自分でフォーマットする必要があります。

ますます、新しいハードウェアでなにか作るやる気がでてきたので、
以前、断捨離で捨てたハンダゴテとか、センサーのチップとか、いろいろ注文しました。一ヶ月ぐらいは楽しめそうです。

明日に続く

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