こんにちは、「MAKO」と言います。
今回は、温度・湿度センサーDHT11をRaspberry Pi Picoに接続し、MicroPythonを用いて情報を取得する方法について書いてみたいと思います。
温度・湿度センサーDHT11については、以下の記事をご覧ください。
実際に部品をいろいろつなぐ前に回路図を書いてみました。
それがこちらです。
- DHT11のDATAピンは GPIO16に繋げました。
- プルアップ抵抗は手元にあった 5.1kΩのものを使用しました。
※DHT11のデータシートでは 4.7kΩとありましたので近い値のものを。。
実際にブレッドボードに部品を配置したイメージはこんな感じで。。。
これらの2つの図は, Fritzing という回路作成ツールを使って書いてみました。
8ユーロの寄付(PayPalで支払い可能)で入手可能です。
※古いものであれば有料化前のものを入手可能です。(入手方法はググればいろんな方が書かれていますので割愛で。。)
それで実際に部品を組み立てたものを撮影したものがこちら。
※手元のワイヤーが長いのはご愛嬌ということで(笑)
それではThonnyのIDE上で温度と湿度を1秒ごとに取得してコンソールに表示するコードを書いてみましょう。
import dht
from machine import Pin
import time
# DHT11センサーのデータピンを指定してオブジェクトを構築
dht_sensor = dht.DHT11(Pin(16))
while True:
try:
# 測定を行う
dht_sensor.measure()
# 温度と湿度を取得
temperature_celsius = dht_sensor.temperature()
humidity_percentage = dht_sensor.humidity()
# 結果を表示
print("温度: {:.1f}℃".format(temperature_celsius))
print("湿度: {:.1f}%".format(humidity_percentage))
# 1秒待機
time.sleep(1)
except Exception as e:
print("エラー:", e)
DHT11を使用するためのライブラリ「DHT11」はMicropythonで標準で使用できるようでうすね。
import dht で取り込むことが可能です。
- GPIO16をDHT11センサーのデータピンとして設定(dht_sensor = dht.DHT11(Pin(16)))
- 1秒間隔で測定を実施(dht_sensor.measure())
- 測定結果の温度を取得(temperature_celsius = dht_sensor.temperature())
- 測定結果の湿度を取得( humidity_percentage = dht_sensor.humidity())
測定結果はこんな感じですね。
温度は大体あっています。(現在の室温が23.4℃)
湿度はあまりあてにならなさそうですね(現在の室内の温湿度計の表示は46%)