#はじめに
Sphero miniをRaspberry pi ZERO W(3でも同じだと思います)で動作させる方法について簡単にまとめておきます。
Spheroを制御するライブラリは公式、公式以外でも探せばいろいろとでてきますが、製品ごとに制御が若干異なるようで、すべてが新し目の製品であるminiに対応しているようではなさそうです。
※ちゃんと調べてないので憶測レベル
今回は、以下のGitリポジトリのもので動作することが確認できました。
#準備
OSは、RASPBIAN STRETCHです。念のため、apt-get upgradeで最新化しておきました。
Node.jsのバージョンは8.10を使用しています。
デフォルトは割と古め(v4.8.xあたり)だと思うので、以下の記事等を参考に更新しておくのがいいかと思います。
あと、gitもインストールしておきます。
#準備 その2
次に、パッケージマネージャとしてyarnを使うので、インストールしておく必要があります。
その際ですが、そのままsudo apt-get install yarn
とかすると、cmdtestがインストールされちゃってお目当てのyarnがインストールされないので、yarnの公式サイトにあるinstall方法に従ってリポジトリを設定してからインストールします。
また、この後yarn install
で依存パッケージを取得・設定(コンパイル)することになるのですが、このままだとエラーになります。
そのエラーを回避する為に必要な以下のパッケージを先にインストールしておきます。
- libudev-dev
- libusb-1.0-0-dev
インストールは普通にapt-getでできます。
$ sudo apt-get install libudev-dev libusb-1.0-0-dev
#リポジトリの取得とインストール
ここまでくれば、Gitリポジトリを取得してyarn installすれば完了です。
git clone https://github.com/igbopie/spherov2.js
cd sphero2.js
yarn install
Gitリポジトリにはいくつかのサンプルがあるので、
cd sphero2.js
yarn patrol-sm
という感じで実行すると、Sphero miniが充電されていれば、そのままつながって動き始めます。
以上となります。
#補足
今回実際にあったのですが、Raspberry pi ZERO WのBluetoothがハード的に故障していたようで、Bluetoothデバイス(hci0)としてはアクティブ(up)になるのですが、BLEのビーコンを拾わないという現象に出会いました。Raspberry pi ZERO Wを複数もっていて、SDを入れ替えることで動作したため、そのことがわかったのですが、その解析で時間を奪われてしまいました。
正しく動作している場合は、hcitoolでBLEのビーコンをスキャンすれば、SM-C741のアドバタイズを拾うので、それで確認できますので、ご参考まで。
$ sudo hcitool lescan
LE Scan ...
・・・
XX:XX:XX:XX:XX:XX SM-C741
・・・