目次へ
その後: 大変参考になるブログを紹介します。 Using Vernier LabQuest sensors on the Raspberry Pi
Vernier sensors を Raspberry Pi に接続し Mathematica でデータ収集する例が Wolfram Comunity の Adding Vernier (analog) sensors to the Raspberry Pi に載っていた。成功したのでここに記します。詳しい説明は I Sense Pi に書いてあります。
Key
Vernier ホームページを時々訪問している。Vernierセンサーを使って実験したことがある。温度センサーを持っているので Raspberry に接続し Mathematica でデータを収集しデータ処理できることに興味を持った。接続は次のようになる。
Mathematica <--> [ Raspberry Pi ] <--> Go!Link ( USB interface ) <--> 温度センサー
Installing SDK
Vernier ホームページから Linux 用の SDK をダウンロードし解凍する。
「 I Sense Pi 」には次の注意が書いてある。configure.in に次を書き込む。
AC_CONFIG_MACRO_DIR([m4])
Makefile.am に書き込む。
ACLOCAL_AMFLAGS= -I m4
しかしながら書き込んでビルドするとエラーが発生した。書き込みを行わないでビルドしたところ警告メッセージが現れたが成功した。GoIO ライブラリ作成の説明書 readme_first_on_linux.txt に従って次を入力する。
~/vernier$ ls
GoIO GoIO-2.53.0.tar.gz vernier.c vernier.tm
~/vernier$ cd GoIO
$ sudo apt-get install aptitude
$ sudo aptitude install build-essential
$ sudo aptitude install automake1.9
$ sudo aptitude install dpkg-dev
$ sudo aptitude install libtool
$ sudo aptitude install libusb-1.0-0-dev
$ sudo sh ./build.sh
これで GoIO のライブラリが作成された。確認のため GoIO_DeviceCheck をビルドし、Vernier 温度センサーを USBポートに接続して実行する。
$ cd ./GoIO_DeviceCheck
$ sudo sh ./build.sh
$ ./GoIO_DeviceCheck
GoIO_DeviceCheck version 1.1
This app is linked to GoIO lib version 2.53 .
active kernel driver on device 1:6
Flushed 48 bytes when device (0x19685a8) opened.
Successfully opened Go! Link device 1:6 .
Sensor id = 10(Stainless Temp)
25 measurements received after about 1 second.
Average measurement = 12.025 (C) .
Vernier 温度センサーが認識されている。これで GoIO ライブラリーが正しく作られていることが確認できた。
Building a MathLink Library
次にプログラム vernier を作成するためライブラリを確認する。また、 I Sense Pi に書いてあるリンクから vernier.c と vernier.tmp をダウンロードする。
$ cd ..
$ sudo find / -name libGoIO.so -print
/usr/lib/libGoIO.so
$ ls /usr/include/GoIO
GMiniGCDDSMem.h GSkipCommExt.h GoIO_DLL_interface.h GSensorDDSMem.h GVernierUSB.h
$ ls
GoIO GoIO-2.53.0.tar.gz vernier.c vernier.tm
$ mcc
Wolfram Mathematica MathLink Template Compiler
Usage: Use --help argument for more information.
$ mcc -o vernier vernier.c vernier.tm -I/usr/include/GoIO -lGoIO
これで vernier が完成する。
A simple Mathematica interface
Wolfram Comunity の Adding Vernier (analog) sensors to the Raspberry Pi を参考に実行した。
$MachineName
⇒ "raspberrypi"
Directory[ ]
⇒ "/home/pi"
link = Install["/home/pi/vernier/vernier"]
⇒ LinkObject["'/home/pi/vernier/vernier'", 70, 4]
getDeviceInfo[ ]
⇒ "Go! Link,1:7,10,Stainless Temp,(C)"
(* --- example 1 ---*)
RemoveScheduledTask[ScheduledTasks[]];
info = StringSplit[getDeviceInfo[], ","];
RunScheduledTask[
x = Column[{
Row@info[[{4, 5}]],
getSimpleMeasurement[]
}], {10, 5}];
Dynamic[x]
(* --- example 2 --- *)
RemoveScheduledTask[ScheduledTasks[]];
info = StringSplit[getDeviceInfo[], ","];
tt = {};
RunScheduledTask[(deg = getSimpleMeasurement[];
AppendTo[tt, deg];), {10, 10}]; (* 10秒間隔で10回の測定 *)
Dynamic[If[tt != {},
grf = ListPlot[tt, Joined->True, PlotMarkers->Automatic,PlotStyle->PointSize[Large],
PlotRange -> {9.0, 30.0}, FrameLabel -> {"Time(sec)", "Temperature(C)"},
PlotLabel -> StringTake[DateString[], 15]]] ];
RemoveScheduledTask[ScheduledTasks[]];
まとめ
たしかに Vernier Sensor を Gaspberry Pi に接続して Mathematica からデータを読み取りグラフにプロットできることが分かった。温度センサー以外のものが沢山ホームページに載っている。他のものにもトライしてみようと思う。
追加:Vernier センサーを手に入れる方法
Vernier 米国本社のWeb ページに Vernier Japan Dealer は Naoco Inc. と載っています。