エアコンを赤外線で操作して快適に寝るための試みをしているのですが、それを赤外線送信が内蔵されているM5StickCとENV HATでやるとデバイスがコンパクトにできると考えました。しかしTwitterでENV HATは本体の発熱の影響を受けて正確な温度が計測できないというアドバイスをもらいましたのでどれぐらい影響があるのか確認することにします。
確認方法
確認はENV UNIT(*1)とENV HATをつないで両方で温度計測をするという方法にします。ENV UNITはケーブルを介して本体と繋ぐので本体の熱の影響はほとんどないはずだからです。合わせて本体の温度も参考に計測しておきます。予測通りなら本体の温度上昇と共にENV HATの方も温度は上がるが、ENV UNITの方は上がらないということになるはずです。
*1 ENV UNITは現在販売中止になってENV2 UNITが発売されていますが、ENV2 UNITでは温湿度センサーが変更されているのでENV HATと同じセンサーを使っているENV UNITを使用しました
コード
gistd12adac94e1acbe02b86deab2d6c5d1b
実験結果
3分毎にセンサーの値と本体表面の温度を計測しました。本体表面の温度は非接触型の温度計を使って液晶パネルあたりの温度を測っています。
予想通りの結果になりました。時間の経過と共に本体の表面温度が上昇し、ENV HATの計測温度も上がりました。一方でENV UNITの方はほとんど温度変化がありません。30分経過したところで差が約7℃まで開きました。
2020/07/06 追記:deep sleepを使うことで発熱を抑えられるということを教えてもらい一度温度を計測したら10分 deep sleepにはいるというようにしたら、1〜2℃ぐらいの温度上昇に止めることができました。用途によっては使えそうです。
結論
ENV HATの温度センサーは本体の発熱の影響を受けていることがわかりました。少しの影響なら気にしなくてもいいかと思っていましたが、これほど差があるようでは使いようがないという感じでしょうか。今回は計測していませんが湿度や気圧も計測できるのでそちらならよいのかもしれません。(目視で見ていた感じだと湿度は10-20%ぐらい差がありました。)