Raspberry Pi で F# が動かせたので、今度は BrickPi の設定です。
BrickPi Image Setup: Setting up your SD Card For the BrickPi
http://www.dexterindustries.com/BrickPi/getting-started/pi-prep/
にある Modify your own image にしたがって、BrickPi パッケージをインストールしていきます。
git clone https://github.com/DexterInd/BrickPi.git
から始まって、ちまちまと設定をしないといけないので、Download and use our modified Raspbian image on your own SD Card のほうから、BrickPi インストール済みの OS をダウンロードしたほうが良さそうです。今回は、mono, fsharp のインストールが大変なので、ちまちまと modify していきました。sudo nano /etc/inittab のあたりとか、既に Raspberry Pi 配布の Debian では設定済みのところがあるので、あれ?と思うところもありあますが、そのまま進んで完了です。
■サンプルを動かして動作確認する
サンプルは Progam メニューの中に色々あります。グラフィカルにプログラミングができる Scratch も魅力的ではあるのですが、最終的には F# で動かしたいのでここは飛ばし、
C ← BrickPi
http://www.dexterindustries.com/BrickPi/program-it/c/
でビルドをします。
BrickPi のボードの MB と MC に EV3 のモーターをつなげて
cd BrickPi_C/Project_Examples/simplebot/ cp ../../Drivers/*.h . gcc -o sbot simplebot_simple.c -lrt -lm -L/usr/local/lib -lwiringPi sudo ./sbot
でモーターが動きます。Drivers ディレクトリからコピーしているのは、BrickPi.h と tick.h とい2つのファイルです。
最初、sbot のようにユーザーモードで動かして、なんか BrickPiSetup で -1 を返すし変だなーと思っていたのですが、どうやら root 権限じゃないと動かないようです。シリアルポート ttyAMA0 を読み書きするのでルート権限が必要なようです。
ソース自体は実に単純で https://github.com/DexterInd/BrickPi_C/blob/master/Project_Examples/simplebot/simplebot_simple.c を見ると、
- BrickPiSetup で初期化
- BrickPi.Address に通信アドレス設定
- BrickPi.MotorEnable[motor1] のモーターの設定
- BrickPiSetupSensors() でセンサーに設定
- BrickPi.MotorSpeed[motor1] にモーターのスピードを設定
- BrickPiUpdateValues() で設定をアップロード
のようなパターンでできます。C# のサンプルはないので、適宜 API を DllImport する必要がありそうですが、まあなんとかなるかな。
■WiFi と電源供給の関係
モーターの駆動は上の 9V 電池から、WiFi などの動作は下の mini USB から取ってきているようです。BrickPi の 9V 電源を指しただけでも Raspberry Pi は動作するのですが、WiFi を差し込むと電圧が足りないのか止まってしまうんですよね。手元にあるのが、Logitec の Skylink LAN-W300n/U2S というものなのですが、消費電力が多いのかもしれません。
ちなみに、新しく買ってきた elecom WDC-150U2MBK は Raspberry Pi が認識しないというパターンに陥っているので、慎重に選んだほうがよさそうです。いくつかのサイトを見ると、Logitec か bufferlo の製品を使っている場合が多そうです。たしか、基盤は一緒なので、ドングルの名前さえうまく設定してやれば Raspberry Pi で認識するようになったハズなのですが。
■参考
工作と小物のがらくた部屋: BrickPi を入手しました。
http://junkroom2cyberrobotics.blogspot.jp/2014/02/brickpi.html
このサイトを見ると Planex の BT-micro3H2X が高いですがよさそうです。WiFi と Bluetooth が一緒になっているのでよさそうです。