PICO Dr.DAQ

ymlab2006-06-03

今、高エ研で研究しているM井君に、お願いして、秋葉原秋月電子で、Dr.DAQを買ってもらうことにした。

本当は、一日の温度変化を、PICNICでなんとかしようと思ったけれども、温度の値がデフォルトのhttp通信では、整数しかだせなかったからである。多分、PICでうまく制御したらADC機能も持っているのでできると思うけど、ややこしそうなのでパス。

で、Dr.DAQなのである。
以下秋月の宣伝

1台で温度、光、音、pH、電圧、抵抗の全てがパソコンに取り込めるデータロガーユニット
◆pHと温度センサは外付け、他のセンサは基板上に実装されています。
◆PCとは付属のパラレルケーブルで接続します。PCの画面上に2つのデータを同時にリアルタイムで表示出来ます。
◆英文取説,接続用ケーブル,Windowsソフト付属
◆付属ケーブル Dサブ25Pオス⇔Dサブ25Pメス

そして、今日届いた。

とりあえず、ソフトをセットアップしてから、電源を一回切って、パラレルにさしてみた。電源をつけたら速攻LEDランプが点灯して使えそうな気配がした。
で、ソフトを立ち上げると、いきなりデータを計測できた。
温度センサはどれかな・・。あ、

もしかして、このTemperatureとか言っている人?
こんなよくわからんダイオードみたいな形をしているのでもいいけど、やっぱりプローブタイプだったらよかったのに・・。
と思っていたら、附属のExternにさすプローブは、温度センサだったみたいで、普通に温度を計測できた。

よしよし。で、データを取るソフトは、独特の拡張子のplwとかで、すぐに右上図みたいなグラフがでてくるのはいいんだけど、これをASCIIで取得できないものか・・・。
と思ったら、あった。TXTでダンプできるみたいだ。タブ刻みで保存される。

ところが、このソフト、始めは絶対plw形式しかだめで、しかもサンプリングレートを決めた後、サンプリング数が決めうちなのである。
それは困るなぁ。リアルタイム通信を可能にするためにはどうすればよいのかをユーザーマニュアルで調べる。
ユーザーマニュアル44ページに載ってました。
以下引用

3.2.3 Programming support
3.2.3.1 C++
C++ programs can access all versions of the driver. If drdaqw.h is included in a C++
program, the PREF1 macro expands to extern "C": this disables "name-decoration", as
Microsoft calls it, and enables C++ routines to make calls to the driver routines using C
headers.
See the C examples for sections of C code to interface with the driver.


ドライバが提供されているっすよ。
しかも思ったよりも対応言語が多いではないか。
C++ C VB Excell LabView(何だこの言語は) HP-Vee(何だこの言語は)
しかし、このC++ってLinuxのg++にも対応していればものすごく開発しやすいんですが・・。

提供されていAPIの勉強は日曜参観が終わってからかな。

と、思っていたら全く同じことを考えていた人がいた。
しかもサンプルプログラムまで提供してくれている。

http://www.geocities.jp/lg3d_lgscope/nfj/index.html

実はこのロガーが出すログをパーズしてServlet経由で家の温度などが見れるアプリケーションを作ったことがある。

しかし、今回はリアルタイム性が要求されるので、いちいちログをパーズしていては間に合わない。
で、実はDr.DAQにはサーバ機能がある。プロトコルは公開されていないが、UDPで計測値を取得できるらしい。

そこで、プロキシを作ってプロトコルを解析してみた。
プロトコルは至って簡単で、
"params"で、現在動作しているセンサーの情報が取得できる。
"current"で、現在の測定値が取得できる。
コードを公開するので是非参考にしていただきたい。
DAQClient
DAQListener

さて、これでセンサーからリアルタイムで測定値を受信することができた。

あなたはえらい。