2014年7月13日日曜日

アクア用コンピュータシステム構想 その1

アクア関係用のコンピュータ支援は一杯あるんでしょうけど、
やっぱり手が届くような感じで欲しいってことで……

自作を検討してみます。

仕様の策定

本来だと仕様を策定しないといけないんでしょうけど、めんどくさいので、仕様を決めず、
逆をやっていきます。

逆ってなにかというと、良いとこどり。せっそうなく追加していく予定です。

機能的要求と非機能要求

機能的要求ってのは「実際の動作そのもの」の要求です。
例えば、「温度を測定したい」とか「最大値、最小値を記録できること」とか「グラフになること」
「スマフォでアクセスできて管理できること」などです。

非機能要求ってのは、実際の動作とは違う要求です。例えば、「拡張性がある」とか「消費電力が少ない」とか「メンテナンス性がいい」とか。

で、簡単に考えると、
「記録が残ってほしい」「スマフォ」「ブラウザアクセスできるといい」
ってことで。もちろん仕様はないので、機能的要求だろうが非機能的要求ってのも存在しないわけでして。

あえて言うなら、プラットフォームとし存在しててほしいってことで。

ハードウェア周り

本来だと、仕様を決めてそれに合うハードウェアを考えます。色々考えられます。まずは両極端で行きます。

  • PCベースのプラットフォーム
    • CPU付属のマザーボードが比較的格安で売っています。これを流用すると、非常に高機能なのが作れます。
    • 開発機能としては、通常のPCと同じ、あるいはオープンソースのLinuxなどが利用できます。
    • 欠点、注意点として、センサーなどを直接つけるためには USBなど経由でないといけない。消費電力が高い。HDDなどのPC用の機材の用意が必要となります。
  • マイコンチップ
    • AVRやPICなどのワンチップマイコンがあります。秋月電子などで1チップ百円程度からあります
    • 開発機能としても、C言語やベーシック、C++などが利用でき、アセンブラなど低級は必要ではありません。
    • 欠点として、回路を作りこまないといけない、スマフォ連携などネットワークの場合、かなり大がかりになります
この後のは、マイコン側からPCベース側へ
  • Arduino 環境
    • 上記マイコン+開発用環境を用意したプラットフォームになります。プラットフォーム化されているので、ネットワーク用のボードなどもあります。
    • 回路部分が整っており、マイコンほど回路作成の必要がない
    • 欠点として、色々なものを追加していくと比較的値段が跳ね上がります。またプログラム・データ容量が少なく大規模なものになる場合不足するかもしれません
  • mbedなどARMマイコン環境
    • Arduino環境と近いですが、ARMマイコンと、かなり高機能です。プラットフォーム化された中に、USBなどもあり、場合によっては市販の無線LANアダプタなども使用できます。
    • 回路設計も、Arduinoと同等レベルになります。
    • 欠点として……、絶妙な位置にいるので、面白い環境です
  • 組込みLinux BeagleBoneBlack や Raspberry Piなど
    • 価格的には5千円を切っています。その上で、通常のLinux(ARMコア用)などが動作しています。つまり、低価格PCのような環境となります。電源、USB無線アダプタなどを追加すれば、そのままWEBサーバやデータ共有もできます。また、Arduinoなどと同様に回路作成は比較的すくなくて済みます。
    • 開発環境も、そのままPHPやPerlやRuby、C言語などを含め LAMP環境やその他Unixサーバ環境が使えます。
    • ただし、メモリが512Mしかないこと、CPUクロックも500M程度と比較的弱いです

ここまで書くとわかると思いますが…
「PCベースプラットフォーム」か「組込みLinux BeagleBoneBlack」となります。

温度関係機能

温度を測定する方法に色々あります。センサータイプと視認タイプがありますが、出来ればセンサータイプでいきます。

温度センサーには、アナログで温度が出てくるものがあります。例えば 25度のとき 3.2V で1度変わると、0.01Vの電圧変化があるものです。マイコンで電圧が測れれば、何度かわかりますが、ちゃんとマイコンで電圧を測らないといけません。
マイコン、コンピュータは ON/OFF を比べるのは得意です。例えば0Vか5Vとか、0Vと3Vかとか。しかし中間値は扱いにくく、例えば 3.2V を OFF OFF OFF OFF 3.21Vを OFF OFF OFF ON  3.22V OFF OFF ON OFF のように複数のスイッチに合わせて数値化する必要があります。これをアナログデジタル変換といいます。
温度センサーに、デジタルタイプもあります。
温度センサー側で、温度を測り、デジタルにして情報をながします。 25度だったら OFF ON ON ON OFF のような ON/OFFの連続データを流し、コンピュータで判断します。

アナログ式だと、途中の電線でノイズが乗ると温度が変わります。よくスマフォとかをスピーカーの近くに置くと、「ガガッ」って音が出たのと同じです。ガガってのが、電圧の変化です。モーターも同じようなノイズを出しますので、アクアのポンプがノイズを出しかねません。となると、温度が変化することになります。対策すればいいんですけどね。

デジタル式だと、途中の電線は ON か OFF でしかないので、極端に大きなノイズでない限り、反映されません。また温度計側で、エラーチェック用の信号を追加しています。

例えば 25.4 度 だとすると 温度センサー側で 25.4 度で 全ての桁をたすと 2+5+4で 11 ですという意味を含めて 25411 という数字を送ります。当然、これが ON/OFF に変わりますが、もし送る過程でノイズが乗り 25611 という数字に変わっても、コンピュータ側で 2+5+6 = 13 なので、11とは違う、つまり、間違いってことになります。

なので、デジタル式のセンサーが使えると、自分で作る場合には楽になります。
逆に大量生産するのであれば、アナログセンサーの方が安い、かつ、工業製品レベルでノイズ対策ができるので、安くできます。

今回は、デジタル式です。ちなみに、デジタル式=1個 300円、アナログ式=1個 100円程度の差です。

さらに、センサー=裸です。防水対策をしないといけません。
色々な方法があるのですが、なんと Amazon に 防水型のデジタル温度センサー(配線込)が 1個 464円で売っていました。1個300円のデジタル式を自分で防水加工するよりすごく楽です。

さらに、このデジタル式センサーだと、複数個を同時に使えます。普通だったら、アナログ式のセンサーを、コンピュータに複数個取り付ける口を用意して接続しないといけませんが、デジタル式のこれだと、1つの口で、複数個測れます。

凄く便利です。

最後に、視認タイプを…

これは、力技です。WEBカメラで、水温計を写し、赤色の部分の長さから温度を測定するタイプです。これ、実はいろんな応用方法が考えられます。水位計にも使えます。あるいは、比重測定にも使えます。
ただ、メンテナンスが大変になるとおもいます。

温度計にコケがついて温度が見えなくなると測定できない=>温度計掃除をしっかり
比重計にコケ、カルシウムが付くと、見えない、誤差ができる=>比重計のメンテナンスをっかり

ただ、これだとついで(?)に生体の動画も記録できます。

(沢山、写真を付けようかと思ったのですが、Amazon のアフェリエイト画像の使い方がわからなかったので、文字だけですいません)



7 件のコメント:

  1. はしさんこんばんわ(^-^)/

    難しい~_~;

    僕にはちんぷんかんぷんな話しです・・・

    凄いのが出来そうですね


    返信削除
    返信
    1. りゅうちゃんさん、コメントありがとうございます。

      最初はチンプンカンプン、でも、やってることは単純でやっていきます。

      Yes、DIY、No、加工でできるだけやりたいので、もしかすると
      りゅうちゃんさんもマネできる(コピペできる)用にするかもです。

      で、最初はやっぱり温度計からかなと。

      削除
  2. こんばんは( ´ ▽ ` )ノ
    はしさん…日本語に翻訳してもらっても良いですか?笑

    うーん、見事にちんぷんかんぷんでしたorz

    あぁ、仕事忙しくて水換えする時間が…
    また2日ほど放置になってしまいそうです(^_^;)

    返信削除
    返信
    1. やすさん、コメントありがとうございます。

      日本語にですか?ひらがな語とカタカナ語がございますが、どちらがいいですか(笑)

      あ、最初は難しいんです。でも簡単になります。たぶん。

      水換え2日放置って、どんだけ頻繁に交換してるんですか?
      うちの交換は、横にグラフあるので、見ていただければわかりますが、10日ほど前に8Lとかです(^^;掃除すると 30Lとか交換するときありますが。

      60規格水槽と30cmハイタイプ水槽の連結なんで 多くても 100L、たぶん80Lほどの全水量ですので、1割交換とかですかね?

      削除
  3. こんにちは

    はしさん、電気に詳しいんですね!!
    因みにアナログセンサーは非常に狂いが大きくて使い物になりませんね。

    Arduinoなんかは何の事だか、さっぱり分かりませんが、私はAVRでデジタル温度センサーを使って、データはSDカードに記録しております。データを見る時はその記録したSDカードのデータを読み取ってグラフにするPCアプリケーションを使ってます。
    回路からPCアプリケーションまで全て自作になりますので手間が掛かりますが、自分のニーズにピッタリ合った妥協を許さない最高の物が作れますよ!!

    はしさん、遅くなりましたが
    リンク貼らせてもらって良いですか?

    返信削除
    返信
    1. 狩人さん、こんにちわ。コメントありがとうございます。

      電気詳しいっていうと、詳しい人に失礼なのほど血肉にはなっていません。花嫁修業程度で嗜む程度です(あ、自分は男性です(^^;)道具は全く持ってなくて、オシロスコープとかそんなのもないです。

      アナログセンサーは、大変そうなのであんまりやりたくないです。
      誤差が大きいのですね。避けたのは良い判断だったかもしれないです。
      狩人さんは、どんなセンサーつかっているのでしょうか?確か防水とかも自分でされていませんでしたか?

      Arduino は ATmega8 などの AVR に 水晶発振器、USBシリアル変換を装備したマイコン基板です。さらにATmega8 には ローダーが初めから書き込みされているので、USB経由で容易にプログラム書き換えができます。また、色々なライブラリが揃っていて、比較的簡単にプログラムができます。それでいて2,000円台の価格から手に入るので、入門機としては良い感じです。

      SDカード記録いいですね。うちは、PCに持ってくのが面倒だと思ってるので、ネットワーク経由でと考えています。

      自作のいいところは、かゆいところに手が届くだとおもいます。

      あ、リンクありがとうございます。是非お願いします。
      また、こちらかも張らせていただきます。

      削除
  4. 狩人さん、コメントありがとうございます。

    センサー情報ありがとうございます。同じものでした。今見ると在庫なしでした。
    アナログタイプは色々めんどうなので(デジタルの場合もですけど)デジタルでやります。必要ポート数増加を抑制できますし。

    どうしても 1wireで、i2cやSPIに比べると周りのサポートがなくて、地道に使わないといけませんね。
    あんまり、調べたくないので、下回りでサポートされていること前提で考えていきます。(ちなみに Arduino で上記センサーを使う場合の例を新しく記事にしました)

    返信削除