そんな時、温度センサーをつなげた冷蔵庫IoTがあれば安心です。
温度センサーは誤差0.5度の高級なものもありますが、温度異常を調べるだけなら安くてOK。 相対温度の誤差1度のtempeXにも使われているMCP9700/MCP9701がお手軽です。
MCP9701-E/TO 温度センサーIC、8コで200円、1コあたり25円!
電源は3.1V-5.5VまでOKなので、IchigoJamの3.3Vを使いましょう。出力はアナログ電圧1度の変化が19.5mVの変化になるようです。
データシートからピン配置を調べると、平らな文字面を表にして左からVDD,VOUT,GND
IN2がアナログ入力なので、VDDをIN1へ、VOUTをIN2、GNDをIN4へ差し込みます(IN3はI2Cで使うので飛ばします)
次のプログラムで、温度の値がとれることを確認しましょう。(手で持って温めたりすると変化します)
10 OUT8,1:OUT11,0 20 ?ANA(2):WAIT10:CONT RUN 307 309 308 307
アナログ入力は、0V-3.3Vの変化を0-1023の値で教えてくれます。
19.5mVは、6.045の差。6変わったら1度変わったことになるので、6以上変化したらsakura.ioで通知してみましょう。(sakura.io x IchigoJam 接続方法)
Nに送信したい値をいれて、GSB@SENDN で送るプログラムを準備します。
100 @SENDN:POKE#800,#21,10,1,76,N,N>>8,0,0,0,0,0,0,N>>8^N^102:U=I2CR(79,#800,13,#820,3):RTN
*即時送信バージョン(4Gの正式版はこれだけでOK!)
100 @Q:POKE#800,#20,10,1,76,N,N>>8,0,0,0,0,0,0,N>>8^N^103:U=I2CR(79,#800,13,#820,3):RTN 110 @SENDQ:POKE#800,#24,0,#24:U=I2CR(79,#800,3,#820,3):RTN 120 @CHK:POKE#800,1,0,1:U=I2CR(79,#800,3,#820,4):C=PEEK(#822)&~U:RTN 130 @SENDN 140 GSB@CHK:IF C<>128 WAIT30:?".";:CONT 150 GSB@Q:GSB@SENDQ:?"SENT! ";N:RTN
*LoRaのα版/4Gのβ版は送信キューにいれる必要があります(回線状況チェック付きバージョン)
通信モジュールが1回点滅になるのを待ってから、sakura.ioのコンソール、WebSocketのページを見ながら、テストしてみましょう
N=15:GSB@SENDN OK
うまくいったら、温度異常を検出するプログラムを加えてできあがり!
1 'TEMP-D WATCHER 10 OUT8,1:OUT11,0 20 N=ANA(2) 30 @L 40 WAIT10:M=ANA(2):?"ANA(2) ";M 50 IF ABS(N-M)>6 N=M:GSB@SENDN 60 GOTO @L
ABSはabsoluteの略で、絶対値を求める関数です。差が6以上あったら、基準の値Nを書き換えて、送信!
どんどん温度が下がっていく様子が分かりますね!
* 注意、冷蔵庫内の冷媒に引火して火災になるリスク、湿度が高いため結露による故障リスクなどがあるので、短時間の実験までに留めておきましょう!
来週10/7、広島県尾道にて、
IchigoJamとsakura.ioを使った、プログラミングの基本からIoTづくりまでのセミナー開催決定!
「【IoT入門】~はんだづけ、プログラミング、sakura.ioを使ったIoTづくりまでを実体験〜」
ジョンバーガーのランチ付き!