create every day - 福野泰介の一日一創

冷蔵庫IoT、25円の温度センサーで温度異常を検出せよ! IchigoJam x sakura.io x MCP9701

2017/09/29 23:55:00
#IchigoJam #IoT #maker 

冷蔵庫が壊れて温度上昇!?うっかり開けっ放しで外出してしまって大変!
そんな時、温度センサーをつなげた冷蔵庫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づくりまでを実体験〜

ジョンバーガーのランチ付き!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image