Raspberry Pi +MMA(8): Vernier 温度センサーで湯の冷却を測る

Wolfram Community の Reading Temperature Sensors in the Wolfram Language on the RPi に温度センサーを使って湯の冷却の温度測定載っている。

Raspberry Pi + MMA(6) : Vernier Sensors on Raspberry Pi で Vernier sensor を Raspberry Pi で使うことに成功しので、手持ちの Vernier 温度センサーを使って湯の温度を計ることを行った。

Reading Temperature の後半の記事では 1.温度を計る。2. 測定データをDropbox に転送する。 の2つのタスクで構成されている。

1. については解決済みです。

2. Raspberry Pi から Dropbox へのデータの転送は新しい試みです。

Dropbox-Uploader のインストールについて

次のWeb にインストール方法が書いてあります。

これに従ってインストールができた。注意点としてアクセスレベルを Full Dropbox にすることでした。

Raspberry Pi + Go!Link + 温度センサーの実験

機器構成: 1. Raspberry Pi  2. USB ハブ  3. Vernier Go!Link   4. Vernier 温度センサー

f:id:MMAys:20140303123152p:plain

測定の Mathematica notebook

$MachineName
⇒ raspberrypi
link = Install["/home/pi/vernier/vernier"]
⇒ LinkObject["'/home/pi/vernier/vernier'", 66, 4]
getDeviceInfo[]
⇒ Go! Link,1:8,10,Stainless Temp,(C)
(*  Dropbox-Upload    *)
upload[filesourcepath_, savedir_String] := 
  Run["/home/pi/Dropbox-Uploader/dropbox_uploader.sh upload " <> 
    filesourcepath <> " " <> 
    FileNameJoin[{savedir, FileNameTake[filesourcepath]}]];
(*   Measureing   *)
RemoveScheduledTask[ScheduledTasks[]];
file = "/home/pi/Desktop/temperaturedata.txt";
(*  2分ごとにデータをDropbox にアップロードする  *)
task1 = CreateScheduledTask[upload[file, "/za_RaspberryPi/temperaturexperiment"], 120];
(*  10秒ごとに温度測定をする  *)
task2 = CreateScheduledTask[
   PutAppend[{DateList[AbsoluteTime[]], getSimpleMeasurement[]}, file], 10];
(*   task の開始  *)
StartScheduledTask[{task1, task2}]
(*  task の終了  *)
StopScheduledTask[{task1, task2}];
(*  後始末 *)
RemoveScheduledTask[ScheduledTasks[]];

温度データをプロットする

測定データtemperaturedata.txt は2分おきに Dropbox に書き込まれる。このデータを pc Mac で読み取りプロットしたのが次のグラフです。

(* Mac での data plot*)
ofile = "/Users/satouy/Dropbox/za_RaspberryPi/temperaturexperiment/\
temperaturedata.txt";
data = ToExpression[Import[ofile, "Lines"]];
Short[data, 5]
⇒ {{{2014,3,2,15,0,46.2907},68.2174},
   {{2014,3,2,15,0,56.2953},67.9948},<<1202>>,
   {{2014,3,2,18,22,34.8195},14.6603}}
data2 = DeleteCases[data[[All, {1, 2}]], {x__, y_} /; y < 10]; 
DateListPlot[data2, Joined -> False, PlotRange -> {0, 90}]

f:id:MMAys:20140303124015p:plain

まとめ

  • Raspberry Pi から Dropbox にデータを転送できた。
  • Vernier 温度センサーを利用できた。
  • Dropbox フォルダーからデータを読み取ってグラフに描くことができた。
  • Dropbox のpublic folder に測定データを置けば公開することができる。授業で学生さんがアクセスしてデータ解析の演習問題として使えることが記事に書いてあった。確かにそう思います。

目次へ