赤子の寝室環境(温度・湿度)を obniz 定期取得しはじめたメモ

赤子の寝室環境(温度・湿度)を obniz 定期取得しはじめたメモです。

状況

赤子が無事にやって来まして嬉しいわけですが、新たな注意ポイントも増えていきます。その中で、環境(温度・湿度)は、冬にかけて乾燥したり冷え込むことを考えると健康的にも気になるところです。

ということで obniz でサクッと計測。

高精度IC温度センサ LM35DZ: センサ一般 秋月電子通商

こちらの温度センサーで計測をしています。

obnizのソースコードはこんな感じ。obnizのLM35DZ ページを参考にしています。

html
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@2.4.0/obniz.js" crossorigin="anonymous"></script>
</head>
<body>

<div id="obniz-debug"></div>
<h3>Home temprature checker ver 0.01</h3>

<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
  
let temprature = 0;
let pre_temprature = 0;
let calibulation = -2;

obniz.onconnect = async function () {
  var tempsens = obniz.wired("LM35DZ", { gnd:0 , output:1, vcc:2});
  tempsens.onchange = function(data){
    temprature = Math.floor(data) + calibulation;
  };
  
  setInterval(async function(){
    
    if(Math.abs(pre_temprature - temprature) > 0){
      console.log(temprature + " C");
      obniz.display.clear();
      obniz.display.print("Home temprature");
      obniz.display.print("checker ver 0.01");
      obniz.display.print("----");
      obniz.display.print(temprature + " C");
    }
    
    pre_temprature = temprature;
  },1000);
}

</script>
</body>
</html>

台風時に計測していた

どこでも環境センサー WS-USB01-THPも持っています。

赤子が産まれるギリギリ直前ではあの大型の台風19号の計測はしていましたが、まさか、赤子のことを考えた途端に、より環境(温度・湿度)への重要性が高まるとは思ってもみませんでした。

湿度も取りたいので温湿度センサー SHT31

湿度も取りたいので温湿度センサー SHT31 を買いました。

image

付属のピンが付いているのでパキッと5本ぶんで追って準備。これ、ノリで折ってしまったけど、折る数がしくじると辛いやつだった。

image

マスキングテープで固定してハンダ付けをします。

image

なんとかできた。

image

この取り付け方は説明書がオススメしているやり方です。

ということで取り付けてみた

では動かしてみましょう。

image

温湿度センサー SHT31をこのように取り付けてみました。

obnizのSHT31のドキュメントを参考に組んでいきます。

ソースコードはこちらです。

html
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@2.4.0/obniz.js" crossorigin="anonymous"></script>
</head>
<body>

<div id="obniz-debug"></div>
<h3>Home temprature checker ver 0.01</h3>

<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
  
let temprature = 0;
let pre_temprature = 0;
  
let temprature2 = 0;
let humidity2 = 0;
let pre_temprature2 = 0;
let pre_humidity2 = 0;

obniz.onconnect = async function () {
  var tempsens = obniz.wired("LM35DZ", { gnd:0 , output:1, vcc:2});
  tempsens.onchange = function(data){
    temprature = Math.floor(data * 10) / 10;
  };
  
  var sensorSHT31 = obniz.wired("SHT31", {vcc:7, sda:8, scl:9, adr:10, gnd:11, addressmode:5});
  setInterval(async function(){
    temprature2 = await sensorSHT31.getTempWait();
    temprature2 = Math.floor(temprature2 * 10) / 10;
    humidity2 = await sensorSHT31.getHumdWait();
    humidity2 = Math.floor(humidity2 * 10) / 10;
  },5000);
  
  setInterval(async function(){
    
    if(Math.abs(pre_temprature2 - temprature2) > 0){
      pre_temprature2 = temprature2;
    }
    
    if(Math.abs(pre_humidity2 - humidity2) > 0){
      pre_humidity2 = humidity2;
      
    }
    
    if(Math.abs(pre_temprature - temprature) > 0){
      
      obniz.display.clear();
      obniz.display.print("Room Env");
      obniz.display.print("ver 0.02");
      
      pre_temprature = temprature;
    }
    
    console.log("temperature1(LM35DZ) : " + temprature + " C");
    console.log('temperature2(SHT31) : ' + temprature2 + " C");
    console.log('humidity2(SHT31) : ' + humidity2 + " %");
    
  },30000);
}
 

</script>
</body>
</html>

SHT31とLM35DZは同時に動かします。これで2つのセンサーの挙動が追えるので、ズレが生じたときも情報が多い状態で臨めます。

image

obnizを起動してみると30秒後にうまく取得ですること出来ました。

温度どうも合わないので調べてみる

image

さきほどのこちら、なにか気づきませんか?LM35DZと2度ほど大きく食い違っているんです。

image

アナログの温度計を見ても、さらに違う。

image

ヨドバシ.comでドリテック DRETEC O-257WT [小さいデジタル温湿度計] も購入して調べてみます。

image

さらにLM35DZよりも1~2度くらい温度が低いのですね。

SHT31をobnizと離してみたらズレが収まってきた

よく考えたら obniz もディスプレイ部分が熱を持っていて、もしかするとSHT31は放射熱を捉えてしまってるかもと対処してみました。

image

直挿しではなくブレッドボードから離してみましたが、あまり効果が分からず。

image

ケーブルを使ってもう少し離してみます。

image

これでどうだろう?

image

横から見るとこんな感じ。ケーブル自体が遮ってますし、距離も離れました!

image

1時間くらい静置してたら良い感じで下がってきました。やっぱこれかな????

image

その後、数時間かけてLM35DZと差が縮まりました。

さきほどのドリテックのデジタル温度計を見ても 22.3 度だったので、おおよそ1度の誤差まで縮まりました。

まとめるとこんな感じ。

  • アナログ温度計
    • 目視で21度ちょい越え
  • ドリテックのデジタル温度計
    • 22.3 度
  • obnizにとりつけたLM35DZ
    • 23.5 度
  • obnizにとりつけたSHT31
    • 23.6 度

といった状況。うーん、指標が1つだけしかないと迷いますが、このように指標が多くなっても「どれが本当の環境情報なんだ・・・」と迷いますねー。

センサーの特性・もともとの誤差の許容範囲・各センサーの置いている位置などなど影響を受けそうなので、このあたりは、継続的にデータを取って、一定のズレた値をマイナスしてキャリブレーションしてしまえばいいのか判断してみようと思います。