前回はUIFlow2版MicroPython搭載のM5Stackに定番の気圧センサBMP280を接続。今回はこれまた定番の温湿度センサDHT11を接続してみます。過去回でESP32版MicroPythonでDHT11を制御していたのでお楽。M5Stackらしくお愛想にLCDに温湿度を表示するようにいたしました。
※「MicroPython的午睡」投稿順 Indexはこちら
※M5Stack Grayに書き込んだUIFlow2.0 (Alpha-27)対応のMicroPython処理系とWindowsパソコン上で動作しているThonny 4.0.1で動作確認しています。
UIFlow2におけるDHT系温湿度センサのサポート
DHTxx系の温湿度センサ、何種類かあってそのインタフェースも異なるのですが、UIFlow2版のMicroPythonのサポートは充実しています。
まずI2CインタフェースのDHT12についてはUIFlow2のdriver群の中でサポートされています。
一方、独特な1線式インタフェースのDHT11とDHT22(AM2302)については、ESP32版MicroPythonの標準的な実装では dht モジュールとしてサポートされており、UIFlow2版でもこのモジュールは含まれます。
今回接続するのはDHT11なので、dhtモジュール内のクラスを使って実験してみます。
過去回でのDHT11とESP32系の接続
既に何度か過去回でDHT11をESP32系マイコン上のMicroPythonで操作してみています。
-
- M5ATOMLite
MicroPython的午睡(49) ATOMLite、温湿度を測ってNode-RED報告
-
- ESP32-DevKitC
MicroPython的午睡(106) ESP32版、DHT11を接続してみる
今回は上記のESP32-DevKitCで作成したプログラムをチョイ変でM5Stackに載せてみてます。
M5Stack Grayへの接続
今回、接続したのは「Grove化」されたコネクタ付のDHT11モジュールです。DHT11は、5V電源でも3V電源でも動作OKのようなので、以下のように電源電圧3.3Vを使用し、M5Stackの側面のピンソケットに出ているGPIO2番端子にDATA線を直結してます。
今回実験のMicroPythonスクリプト
先ほど述べたように、ESP32-DevKitC用に作成したMicroPythonスクリプトをM5 Stack用にチョイ直し(USBシリアルにprint出力するだけでなく、M5StackのLCD上にも温度、湿度を出力するように)したものであります。DHT11とのインタフェースはソフトウエア制御なので、pin番号を変更すれば他の端子に接続することもOKじゃないかと思います(確かめてないケド。)
# dht11.py import dht import machine import M5 import time dht11pin = 2 class ESP32DHT11: def __init__(self, pnum): self.dht11 = dht.DHT11(machine.Pin(pnum)) self.TEMP = None self.HUMI = None def measure(self): self.dht11.measure() self.TEMP = self.dht11.temperature() self.HUMI = self.dht11.humidity() return (self.TEMP, self.HUMI) def main(): M5.begin() M5.Lcd.clear(0) print("M5STACK, test DHT11") dht11 = ESP32DHT11(dht11pin) loopCounter = 0 while True: loopCounter += 1 tpl = dht11.measure() print("LOOPCOUNTER: ", loopCounter) print("TEMPERATURE: ", tpl[0]) print("HUMIDITY : ", tpl[1]) M5.Lcd.setCursor(16, 16) M5.Lcd.print("TEMP: "+str(tpl[0])) M5.Lcd.setCursor(16, 32) M5.Lcd.print("HUMI: "+str(tpl[1])) time.sleep(6) if __name__ == "__main__": main()
実機動作確認
まずはUSBシリアルに出力された測定結果の一発目。最初19℃、相対湿度74%っす。
しばらく動かし続けて安定したところの様子が以下に。LCDにTEMP: 20、HUMI: 71なる数字が出ております(ちょっと小さい文字で見ずらいけど。)
同じESP32系の実装、無問題。