ザリガニ生命維持装置2014/08/02 01:02

【システムテスト】
作成した親機、子機を使って以下3点に関して検証を行う。
(1)子機-親機間のデータ通信が正しく行えることを試す
(2)実際に子機を水槽に設置して温度を計測しつつ冷却機能を試す

(3)連続稼働させて安定して継続的に動作できるか試す

<実施条件>
親機はLANにつながる環境に設置する。子機は別フロアにある水槽の側面に設置する。
親子間は直線距離で5~8m離れている状態。
子機の設置状態。
熱伝導の両面テープで側面のガラス部分にペルチェ素子の冷却部分を張り付けする。排熱側も両面テープでヒートシンクを張り付ける。他の支えがなくてもしっかり張り付いた。ヒートシンクとFANはくっつける手だてがなかったので細い針金で縛る。ちなみに熱伝導の両面テープは1枚100円ということで高い。(下図)

(1)子機-親機間のデータ通信テスト
1分おきに子機へのリクエストを行ってデータを取得するが、データを検証すると親子間で通信ができていない時がある事がわかった。
原因は思わぬところにあり、親機の下に設置していた金属トレーだった。テスト開始後は基本的に放置するが、最悪の場合発熱しすぎて燃えるかも知れないと思ったので、100均で入手した金属トレーの上に置いていた。しかし金属トレーは2階の親機と1階の子機を遮る位置に置かれた状態となり、これが電波を遮断していた…と推測する。
金属トレーをなくしたところ、綺麗にデータが取れるようになった。

(2)冷却テスト
水温32℃からスタートする。室温も30℃の状態で暑いながらエアコンかけずにテストしてみる。
→理想的には20分で1度下がる様子が見られるはずだったが…1時間、2時間と経過しても、残念ながら水温は全く変わらなかった。悲観的な予想が正しかったと感じる。
一方、冷却機能はファンがうるさい音を立てながら回り続け、USB電源として使用しているアダプタがかなり熱い状態となる。継続動作が心配になる結果となった。

(3)連続稼働テスト
(2)で残念な結果が得られた&電源の発熱がひどくて心配になったので、1日は冷却機能を外して温度計測だけ行うこととした。2日目は冷却機能を付けて計測した。
2日間の時間と温度の推移グラフは以下の通り。間のスキマはバグ修正に充てたため停止していた期間。外気に左右されるが、2日間とも屋外で最高気温35℃を超える日だった。


グラフ左半分(温度計測のみ)は水温も35℃まで上がってしまっている。(…よく中のザリガニが大丈夫だと感心してしまう)
グラフ右半分(冷却機能ON)は 34℃までの上昇で抑えられている。
雑な分析だが、多少の温度上昇抑制効果はあるものと思われた。
また後述のバグ修正によって、安定して継続的に計測できる事は確認できた。

<改修メモ>
テストをする中で、親機において子機から受信したデータを正しく処理できないバグが見つかったため修正する。また、冷却機能が作動するとUSB電源として使用しているアダプタがかなり熱い状態となり心配なるので、気休めかもしれないが10分連続稼働したら1分停止する保全機能を付ける。
概要は、親機からのメッセージを受けて温度計測をした時に、計測温度が28度以上(冷却FAN=ONにする条件)に合致したら、FAN用の変数を1つづつカウントアップし、10に達したら0にする。この変数が1以上の時だけFANを回す事にした。
FANコントロール用変数の時間ごとの推移をグラフにすると上記となる。

【テスト総括】
ある程度の効果は得られたのでこのまま本運用するが、FANの音がうるさい&冷却効果については改善したいと思う結果となった。

arduinoからmodem電源をon/offして再起動させる2014/08/10 00:51

モデムのON/OFFをarduinoで制御する。

<背景・目的>
使用しているモデムは時々フリーズする。インジケータのLEDはチカチカしてるが、PCからモデムの制御画面にアクセスしようとしても反応が無い状態になる。こうなると何をしても無駄なので、その都度電源を抜き差しして対応していた。
作成中のザリガニ生命維持装置では、Arduino+Ethernetで、データログを1分毎にthingspeakへPOSTしているが、モデムがフリーズ状態になってデータPOST出来ず、データが抜け落ちている様子がよくわかるようになった。電源抜き差しと同じ事をarduinoでしたい。

<対応内容>
ターゲットのモデムはACアダプタから電源供給されている。
2.1mm標準DCプラグ+ジャック+リレー
の回路を作り、ACアダプタとモデム本体の間にはさんで中継するようにする。リレーをarduinoで制御して、モデムへの電源供給を遮断すれば、モデムは電源OFFとなる。。
制御と言ってもリレーでON/OFFするだけなので、電源を抜き差しするのと変わらない。
普段は通電している状態とし、thingspeakへのデータPOSTに連続失敗したら、モデムフリーズとみなして電源を一定時間OFFにし、再びON状態にする。

<仕様>
リレーはリード線でarduinoの8ピンに接続。
1分毎にthingspeakへPOSTする際、アクセス失敗したらエラーをカウントする。5回連続失敗したらモデムフリーズとみなして8ピンを5秒間ONにし、再びOFFにする。
その他は以前作成したザリガニ生命維持装置親機と同じ。
(親機スケッチ更新版)


<動作確認>
arduinoを電源ONにし、thingspeakへ1分おきにデータPOSTされる事を確認したら、LANの線を抜いて通信不能な状態にする。5分待って、モデムの電源がON/OFFされる事を確認する。
このやり方でテストを行い、予定通りmodem電源が切断され、再起動される事を確認した。
なお、モデム電源はDCではなくAC電源だったが、プラグ形状はDC用だったのでこのやり方で問題なかった。