Arduino YunでData Dropを使う

このチュートリアルでは,Arduino Device Driverを使ってArduino YunからData Dropへ直接データをアップロードする方法を説明する.Data Dropと連動させるためには,Arduino Yunをインターネットに接続しなければならない.ここで話す機能はすべてArduino Yunにのみ当てはまるものであり,Arduino Unoでは動作しないことに注意すること.
Yunのインターネット接続を設定する
Arduino Yunの最も簡単な設定方法は,Ethernetケーブルジャックをネットワークに接続することである.これはYun側には何の設定も必要としない上,最も信頼できるネットワーク接続でもある.Yunはインターネットにリクエストを送信しなければならないので,ファイアウォールが存在する場合は,ネットワーク管理者がアクセスを許可する必要がある.
Arduino YunがWi-Fiのワイヤレス接続を使うよう設定する場合は,ワイヤレスネットワークに接続するよう設定する必要がある.メーカーはオンラインのこのリンクで,それを行う方法を示している.
スケッチをボードにアップロードする
これでArduino Yunがインターネットに接続されたので,次はカスタムのWolfram言語スケッチをボードにアップロードする.このスケッチはArduino YunがWolfram言語と通信できるようにするものであり,Data Dropに値をアップロードする関数の形式で,Data Dropの機能を提供する.
まず,DeviceOpenを使ってデバイスとの接続を開く.その際,オプション"BoardType""Yun"を指定して,Yunのサポートを有効にする.
デフォルトでは,オプション"InitialUpload"Trueなので,これによりカスタムのWolfram言語スケッチがデバイスにアップロードされる.これで特殊関数DatabinAddがArduino上で有効になる.
Data Dropにアップロードする前に必要なのは,データのアップロード先となるDatabinが存在することである.データビンは既存のものでもよければ,CreateDatabinで新規に作成したものでもよい.
DeviceExecuteでデータを加える
DatabinAdd関数により,指定されたピンの現在の値がData Dropのビンに加えられる.ビンにアップロードするためには,オプション"Databin"の値として,ビンの"UUID""ShortID",あるいはビン自体が必要である.さらに,どのピンを読み込むかを指定する必要もある.DeviceExecuteのオプション"Databin"を使って指定することもできれば,DeviceConfigureでデフォルトのビンとして設定することもできる.
DeviceConfigureを使って"Databin"を指定するためには,再アップロードが必要になる.
これでこの関数を呼び出すときに"Databin"を指定する必要がなくなった.
DatabinAdd関数のスケジューリングも利用できる.これはWolfram言語カーネルから非同期で行われ,Wolfram言語セッションが終わっても継続される.これはオプション"Scheduling"で行う. 次の例では,3秒毎に最大10回,ピン4の値がData Dropにアップロードされる.
Data Dropにアップロードするとき,デフォルトではアップロードされるキーの名前は,どのタイプのピンから読み込まれるかによって"DigitalPinX"あるいは"AnalogPinX"という形式である.これはオプション"Key"で変更することができる.
Data Dropに自動的にアップロードする
"BootFunction"をArduino Yunにアップロードすると,データを自動的にData Dropに加えることができる.この"BootFunction"は,デバイスがオンになると直ちに実行される.これにより,Data DropにアップロードするタスクをArduino Yunに配備してから.そのデバイスを外して別のところに配備し,それ自身でアップロードを開始させることが可能になる.
次の例では,デバイスがオンになると同時にピン"A5"から1つの値をアップロードする.
"Scheduling"オプションを使うと,オンにした後に指定されたスケジュールで実行されるようにスケジュールすることも簡単である.次は,自動アップロードが60秒毎に永続的に実行されるようスケジュールしたものである.
Data Dropにカスタムデータの値を加える
DeviceConfigure"Functions"オプションを使うと,Arduino YunにアップロードされたC/C++コードの関数内から,Data Dropにデータをアップロードすることもできる.
スケッチには,Data Dropにカスタムの値をアップロードするために使うことのできるプロトタイプ化されたDatabinIntegerAddDatabinRealAddDatabinStringAddの3つの関数がある.これらはどれも binID によって指定されたDatabinに, keyNameKeyを含んだ val をアップロードする.これらの関数を使うことで,ピンの値とは異なる値をData Dropにアップロードするカスタム関数をコード化することができる.
void DatabinIntegerAdd(char * binID, char * keyName, long val)
void DatabinRealAdd(char * binID, char * keyName, double val)
  • DatabinRealAddは実数RealDatabinにアップロードする.
  • void DatabinStringAdd(char * binID, char * keyName, char * val)
  • DatabinStringAddは数列StringDatabinにアップロードする.
  • 例えば,ピンの値の平均値を計算して,その平均値をアップロードしたいとすると,以下のようなカスタム関数を書くことができる.
    アップロードした後,この関数は他のカスタム関数と同じように,DeviceExecuteを使って普通に呼び出すことができる.
    "Scheduling"オプションを使うと,オンデマンドでスケジュールすることもできる.次のアップロードは,評価後45秒で実行される.
    この関数は,デバイスがオンになるとすぐに自動実行するように"BootFunction"に簡単に適用させることもできる.ここで30秒毎に関数が実行されるように"Scheduling"オプションを設定する.