読者です 読者をやめる 読者になる 読者になる

Raspberry Pi + MMA (6) : Vernier sensors on Raspberry Pi

目次へ

その後: 大変参考になるブログを紹介します。 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]

f:id:MMAys:20140225151820p:plain

(* --- 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]]] ];

f:id:MMAys:20140225151902p:plain

RemoveScheduledTask[ScheduledTasks[]];

まとめ

たしかに Vernier Sensor を Gaspberry Pi に接続して Mathematica からデータを読み取りグラフにプロットできることが分かった。温度センサー以外のものが沢山ホームページに載っている。他のものにもトライしてみようと思う。

追加:Vernier センサーを手に入れる方法

Vernier 米国本社のWeb ページに Vernier Japan Dealer は Naoco Inc. と載っています。

目次へ