2017年5月13日土曜日

ひずみデータの取得

Arduino からPCへのシリアル通信のPC側はエクセルを選択した.
次にArduino へのデータ入力は
アナログ電圧 or デジタル信号(I2C等)となるが,はじめに
歪みデータからやってみようと思う.
歪みデータをアナログ電圧として得るには,
歪みゲージ→ホイートストンブリッジ→アンプ→Arduino
の流れを作成しなければならない.
もし,すでにロードセルや変位計などのセンサーがあれば
 センサー→アンプ→Arduino
となる.

2017年5月8日月曜日

シリアル通信から

これからArduinoのシリアル通信をやる人への備忘録
(2017年5月時点: PCの条件は以下のとおりです)

今回のミッション:
目標:N88BASICで作成された,A/D変換ボード経由の4ch温度データの計測インターフェイスの作成.
経緯:本体のPC9801DAのフロッピードライブの破損(おそらくフロッピードライブ内のゴムベルトの劣化が原因).やろうと思えば修理はできるが,いつまでもやっているわけにはいかない(2DDのフロッピーを利用,,,)ので思い切ってWindows (or Mac)で計測ができるようにすることにした.

開発プラットフォーム 
・ハード:MacbookPro 13-inch, Mid 2012
・1st OS: MacOSX 10.9.5 (Mavericks)
・2nd OS: Parallel Desktop 上での Windows7 professional 64bit
・Arduino IDE バージョン:1.6 および1.8 (Mac, Win ともに)
・Arduino UNO
・Processing バージョン:1.5 および 3.0


作成者のプログラム経験
・Fortran は不自由なく使える.
・VBAは少し使える
・少し古いが,N88BasicとターボCでのシリアル通信はほぼ使える
・Arduinoは単体であればほぼ使える(通信は初心者)
・Processing は初心者

備忘録:
1)Easycommを使ったシリアル通信
シリアル通信は可能であるが,Windowsでのみ使用可能.インターネット上にWindows 7以降での使用報告
が少ないため,あきらめる.

2) Firmateを使ったシリアル通信(Arduino + Processing1.51)
インターネット上の報告ではシリアル通信はできるらしい.しかしながら,私の使っているPCの条件下ではいずれもSirialPortの読み込みでJava エラーが以下のように連発(Mac,Winともに).
WARNING:  RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2
Exception in thread "Animation Thread" java.lang.ArrayIndexOutOfBoundsException: 4
    at sketch_170508a.setup(sketch_170508a.java:38)
    at processing.core.PApplet.handleDraw(PApplet.java:1608)
    at processing.core.PApplet.run(PApplet.java:1530)
    at java.lang.Thread.run(Thread.java:695)
   
    対策はあるよう(配列の問題らしく,,)だが,FirmateがProcessing 1.5以降は対応していないという報告もあり,あきらめる.
   
3)エクセルとのシリアル通信 (Arduino + Excel)
現状:一旦,海外のサイトを調べ,PLX-DAQをExcelに埋め込み使用しているサイトがあった(4)).ためすと簡単にArduinoで取得したデータをExcelに送れた.ActivXを使用しないといけないため,Excel for Macでは動かないが,Excel 2013 for Windows では通信が確認できた.
課題:時系列データを表示しようとしたとき,Excel のグラフだと対応しきれない(VBAでマクロを組めばよいが,あまりそこに時間を割きたくない).例えば,横時を500秒に設定すると501秒のデータはグラフに表示されない.横軸の範囲設定が0-500秒から1-501秒になるように可変にする必要がある.グラフの設定機能でもできるが,データ数が増えた時のExcelの表示速度の遅さが気になるので躊躇している.

4) Processing3.0とのシリアル通信(Arduino + Processing)
現状:いくつかのサイトを参考にArduino + Processingを試みたが,うまくSirialPortがOpenされなかったのであきらめぎみだったが,,myPortを以下に変更したことで接続,通信がうまくいった.
 myPort = new Serial(this,"/dev/cu.usbmodem1421",9600);
ので,  Serial 関数の引数のシリアルポートの場所は "/dev/cu.usbmodem1421" としておくのが無難.

また,インターネット上にあるプログラムを試す際には文字化けに注意しないといけないことが判明.
例えば,If文中の ">" は Arduino や Processing のエディタで書いているときには問題ならないが,コピー・ペーストしたものブログなどに載せるとHTMLにを経由することで&+andとなってしまう(少なくともMac 上でのFirefoxでは).
Arduinoの"検証"のエラーで&の文字がはいった箇所がひっかかたらHTML経由による文字化けを疑うこと.

という訳で,一旦,Excelで計測のモニタリングインターフェースを作ることにした.時間を見つけて,Processingを勉強しつつ,切り替えていく予定.

2017年5月2日火曜日

備忘録がてらブログを開設してみました.

これまで,ノートに書き残してきましたが,やることが多岐にわたってきたのと,同じところでつまずく人への参考になればと,ブログで残すことにしました.
計測機の作成を基本として,その利用でベランダ農業や電力見える化などについて書いていきたいと思います.出かけることも多いので時々,旅行記ものせようと思います.