Site cover image

Site icon image電子工作 ~ 50歳の手習い

本職はソフトウェアエンジニア。最近組み込みの仕事がよくあるので勉強がてら楽しんでます。

Raspberry Pi Picoに接続した温度・湿度センサーDHT11から情報を取得し表示(MicroPython)

こんにちは、「MAKO」と言います。

今回は、温度・湿度センサーDHT11をRaspberry Pi Picoに接続し、MicroPythonを用いて情報を取得する方法について書いてみたいと思います。

温度・湿度センサーDHT11については、以下の記事をご覧ください。

📄Arrow icon of a page link温度・湿度センサーのDHT11について

実際に部品をいろいろつなぐ前に回路図を書いてみました。

それがこちらです。

  • DHT11のDATAピンは GPIO16に繋げました。
  • プルアップ抵抗は手元にあった 5.1kΩのものを使用しました。

  ※DHT11のデータシートでは 4.7kΩとありましたので近い値のものを。。

Image in a image block

実際にブレッドボードに部品を配置したイメージはこんな感じで。。。

Image in a image block

これらの2つの図は, Fritzing という回路作成ツールを使って書いてみました。

8ユーロの寄付(PayPalで支払い可能)で入手可能です。

※古いものであれば有料化前のものを入手可能です。(入手方法はググればいろんな方が書かれていますので割愛で。。)

それで実際に部品を組み立てたものを撮影したものがこちら。

※手元のワイヤーが長いのはご愛嬌ということで(笑)

Image in a image block

それでは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%)

Image in a image block