micro:bitと温湿度センサ
作成者:任 淳(ものゼミ3期生)
作成日:2024/06/29
更新日:2024/06/29
温湿度センサ
スイッチサイエンス GROVE - デジタル温度・湿度センサ

micro:bitとの接続
micro:bitをGrove Shieldに差して、下側のポートにケーブルを接続します。
今回は「P0/P14」を使いました。

ライブラリ
「拡張機能」→「dht11」を検索→「DHT11/DHT22」を追加します。
今回使用する温湿度センサはこの拡張機能が必要です(→参考リンク)。

コード
以下のコードで動きます。
詳しく理解していませんが、micro:bitからクエリを投げて、センサから値を読み取るという通信方式を取っているみたいです。
dht11_dht22.queryData()で色々なオプションを設定できます。DHT22が解像度は良いみたいですが、DHT11で取得される値が直感的で使いやすいです。
basic.pause(50)としてますが、クエリの応答が返ってくるのは2秒に1回が限界みたいです。
basic.forever(()=>{
dht11_dht22.queryData(
DHTtype.DHT11,
DigitalPin.P0,
true, // pin pull up
false, // serial output
false // wait 2 sec after query
)
basic.pause(50)
let humidity = dht11_dht22.readData(dataType.humidity)
let temp_C = dht11_dht22.readData(dataType.temperature)
if (dht11_dht22.readDataSuccessful()){
console.log("temp: " + temp_C)
console.log("humi: " + humidity)
} else {
console.log("failed")
}
})
MakeCodeのスクショです。

動作確認
micro:bitにコードを書き込むと、「Show data Device」のモニターにconsole.log()の出力が表示されます(下図)。
50ミリ秒ごとにクエリを投げつけているので、多数のfailedが生じていますが、成功した場合は温度と湿度の値が返ってきているのが確認できます。

まとめ
micro:bitで温湿度センサを使う方法をまとめました。最速で2秒ごとに値を取得するので、高速動作させたい用途には向かない気がします。スマートホームなど長時間監視などの用途には便利だと思います。