〇Raspberry Pi PicoとDHT11センサーを接続した写真
開発手順
1. 部品の用意以下の部品を用意します。
・DHT11センサーモジュール
DHT11温湿度モジュール(Temperature and Humidity Sensor)
https://akizukidenshi.com/catalog/g/gM-07040/
2. Raspberry Pi PicoとDHT11センサーモジュールを配線します
DHT11のDigitalピンへ(付属ケーブルの緑) -> Raspberry Pi PicoのGP28ピン
DHT11のGNDへ(付属ケーブルの黒) -> Raspberry Pi PicoのGNDピン
DHT11のVへ(付属ケーブルの赤) -> Raspberry Pi Picoの3V3(OUT)ピン(36番ピン)
3. Raspberry Pi用「dht」モジュールの導入
Thonnyを利用する場合、dht11モジュールのインストールは以下の手順を実行します。
3-1.Raspberry Pi Pico用のdhtモジュールのダウンロード
ikornaselurさんが公開している以下のページからCode -> Download ZIPを選択して、モジュールのソースコードをダウンロードします。
ZIPファイルをダウンロード後、解凍しておきます。
https://github.com/ikornaselur/pico-libs
3-2.dht11.pyのアップロード
Thonnyの「表示」メニューから→「ファイル」を選択します。Rapberry Pi Pico側に/libフォルダがなければ、ペイン下側のフォルダで右クリックメニューから「New Directory...」を選択し、フォルダ名を入力して/libフォルダを作成します。
フォルダ作成ダイアログ
3.3.ローカルPCのフォルダ内のPythonモジュールをアップロード
Raspberry Pi Pico側の/libフォルダに移動後(左側ペインの下のlibフォルダをダブルクリックで移動)、ローカルPCのフォルダにあるdht11.pyで右クリックメニューから「upload to /lib」を選択してモジュールのライブラリをアップロードします(dht.pyはpico-libs-master/src/dht11にあります)。
4. プログラミングとプログラムのアップロード
以下のプログラムをmain.pyとしてRaspberry Pi Picoに保存して、実行します。実行後2秒おきに温度・湿度を取得できることを確認します。
main.py
import time
from machine import Pin
from dht import DHT11, InvalidChecksum
time.sleep(1)
dht11 = DHT11(Pin(28))
while True:
try:
print("temp: {}".format(dht11.temperature))
print("humidity: {}".format(dht11.humidity))
except InvalidChecksum:
print("invalid checksum")
time.sleep(2)
※プログラムを実行したときに、「InvalidPulseCount: Expected 84 but got 0 pulses」という例外が発生する場合は、Raspberry Pi Pico上に保存した/lib/dht11.pyを開いて、_send_init_signal関数のutime.sleep_ms(50)をutime.sleep_ms(250)に変更します。
def _send_init_signal(self):
self._pin.init(Pin.OUT, Pin.PULL_DOWN)
self._pin.init(Pin.OUT)
self._pin.value(1)
#utime.sleep_ms(50)
utime.sleep_ms(250)
self._pin.value(0)
utime.sleep_ms(18)
ありがとうございました。上記のエラーが出て、うまく動作しませんでした。
返信削除ms(250)としてOKとなりました。
書き込みありがとうございます!
削除