非公式Rock研究所

Radxaのシングルボード(主にRock4c+)について書いています

DHT11モジュールとの格闘(いろいろ試してみた編)

DHT11モジュール写真

まだまだ継続中の温湿度センサー、DHT11モジュールです。

【Article】「DHT11モジュールとの格闘」 - 非公式Rock研究所
https://informal-r-labo.net/posts/article013

【Article】DHT11モジュールとの格闘(続編) - 非公式Rock研究所
https://informal-r-labo.net/posts/article014

前回の記事の後もいろいろ試してみました。以下はDHT11モジュールとの格闘の続きです。

Python+mraa

Pythonコード(変更前) Python実行結果

上の画像は、前回の記事で実行したPythonのコードとその実行結果です。

GPIOから読み取った結果をその都度printを実行して画面出力しています。ただ、画面への出力は時間がかかる処理です。このprint処理がGPIOの読み込みを妨げているのではと思い、以下のようにGPIOから読み取った結果は変数に格納しておき、読み取りが終わった後に画面出力するように書き直しました。

Pythonコード(変更後) Python実行結果(変更後)

書き直したコードの実行結果です。

前回に比べ格段によくなりました。ただ、DHT11モジュールからは'0(LOW)'と'1(HIGH)'の組み合わせで40bitの情報が送られてくる(StartSignalという送信を通知する信号を除く。)ため、少なくとも'0'と'1'のペアが40個ないといけません。しかし、何度実行しても40bitの情報を得ることはできませんでした。

C言語+mraa

次にC言語でsleep処理を記載し、GPIOの読み取りはmraaを使ったコードを書いてみました。

c言語+mraaコード

(コメントアウトばかりなのはご容赦ください。試行錯誤のなごりです。。)

c言語+mraaコード実行結果

Python+mraaのコードより細かく読み込めているような気がします。しかし、このコードでも40bitの情報を得ることはできませんでした。

Arduino UNO3

あまりにもうまくいかないので、「そもそも、DHT11が壊れてるんじゃ…」と思い、Arduinoで動くかどうか試してみました。

Arduinoだとネットを検索するとすぐに接続方法がヒットしますし、そのためのLibraryも用意されています。

ArduinoとDHT11の接続写真 ArduinoによるDHT11の実行画面

結論:DHT11モジュールは壊れていませんでした。悲しくなるくらいサクサクと温度と湿度が表示されます。

壊れていなかったのはよかったですが、ただ、次の方法を模索していて、時間がかかっています。

なんなら「もう、Arduinoでいいんじゃね?」とすら思っていますが、もう少しねばります。