PICO W に 1-Wire 温度センサー DS18B20 を接続し測定
結果を WebServer へ送信し、CSV に追記 一覧表・グラフにて表示させる。
参考サイト
- Raspberry Pi Pico: DS18B20 温度センサー (MicroPython)
- Raspberry Pi Pico(d_04)DS18B20 1wire 温度センサー(1) Route55Go
- Pi Pico W からラズパイにデータを送信して表示 – FRONT
DS18B20 は、他の用途が設定されてない GPIO22 へ接続
三端子レギュレーターは、3.3V 1A (たまたま有った在庫品を使用)
ds18x20.py と onewire.py を準備して、pico w へ入れておく。
main.py
import machine, utime, time, socket, network, onewire, ds18x20 HOST = 'WebServerIPアドレス' PORT = port番号 interval = 測定休止(秒) SSID:str = 'WiFi-AP ID' PASS:str = 'パスワード' ds_pin = machine.Pin(22) ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin)) roms = ds_sensor.scan() led = machine.Pin("LED", machine.Pin.OUT) def wifi_up(): wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(SSID, PASS) while wlan.isconnected() == False: print('Connecting') time.sleep(1) wlan_status = wlan.ifconfig() print('Connected!') led.on() status = wlan.ifconfig() print(f'IP Address: {wlan_status[0]}') def com_send(mess): while True: try: led.on() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((HOST, PORT)) sock.send(mess.encode('utf-8')) led.off() sock.close() break except: print ('retry: ' + mess) led.off() while True: wifi_up() ds_sensor.convert_temp() time.sleep_ms(750) for rom in roms: tempC = ds_sensor.read_temp(rom) if tempC is None: continue else: temperature = '{:.1f}'.format(tempC) print(temperature) temp_info = str(temperature) com_send(temp_info) print('temp send') utime.sleep(interval)
WebServer 側の受取設定は、次回