Raspberry Pi Pico W で温度と湿度を図ってみた
Raspberry Pi Pico W で温度と湿度を図ってみた。
用意したもの
- Raspberry Pi 3 Model B+
- Raspberry Pi Pico W
- 温湿度センサー モジュール DHT11搭載 デジタル出力
- Amazon Lightsail (LAMP) 環境
アプローチ
- Raspberry Pi Pico WとDHT11を繋ぎ、検知したデータを取得できるようにした。
- ESP8266用 MicroPythonチュートリアル - 13. 温度と湿度
- PicoはMicroPythonでないと動かない。Python用のプログラムで当初見つけていたが、それでは動かなかった。
- Raspberry Pi Pico Wをhttpサーバーにした。
- ローカルPCからPicoに温度と湿度を図るようリクエストをあげる
- ローカルPCからLightsailにあるMySQLにデータを突っ込む
- LightsailのApacheにファイルを置いてMySQLからデータ取得、HTML生成
- Apatchのデフォルトの設定についていい感じのページがあったのだが、忘れてしまった。。。残念。
コード
getTempAndHumi()を作成し、データを取得し、jsonで返すようにしてみた。
def getTempAndHumi(): d = dht.DHT11(machine.Pin(15)) try: sleep(1) d.measure() print("test") except OSError as e: print(e.errno) print('Faild') data = { "temperature": str(d.temperature()), "humidity" : str(d.humidity()) } return data """ / 色々と書いて """ # Listen for connections while True: try: cl, addr = s.accept() print('client connected from', addr) cl_file = cl.makefile('rwb', 0) while True: line = cl_file.readline() if not line or line == b'\r\n': break cl.send('HTTP/1.0 200 OK\r\nContent-type: application/json\r\n\r\n') data = getTempAndHumi() json_data = json.dumps(data).encode('utf-8') cl.send(json_data) cl.close() except OSError as e: cl.close() print('connection closed')
何故かPico単体で動かないことがあった。どこで処理が落ちているか分からなかったので、無理やり、LEDが点滅するかどうかをブレイクポイントにしました。
もっといい方法があったはず。
led = machine.Pin("LED", machine.Pin.OUT) while True: led.on() utime.sleep(1) led.off() utime.sleep(1)