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 のアフェリエイト画像の使い方がわからなかったので、文字だけですいません)



8 件のコメント:

  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. 私が使ってるセンサーは
    http://akizukidenshi.com/catalog/g/gI-05276/
    これです。おそらく上の記事で書いておられるAmazonの464円と品番が似てるので、これの元の防水なしのバージョンだと思います。防水タイプが有るのは初めて知りましたが。
    このセンサーを樹脂で固めて防水にしてます。
    すごく正確で良いセンサーですが、ただ、このセンサーは使い方が難しくて、このセンサーからデータを読み込むプログラムをしっかり調べてからでないと使えません(おそらく取説には書いてない)
    AVRで言語がBASICならアドバイスする事もできますが、その他は全く無理です(笑)


    ありがとうございます
    リンク貼らせて頂きました

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

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

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

      削除