LoginSignup
19
19

More than 5 years have passed since last update.

Intel Edison を使って BB-8 のリモコンを作る

Last updated at Posted at 2016-02-28

BB-8 とは

STAR WARS シリーズ最新作の『スター・ウォーズ/フォースの覚醒』に登場するボール型ドロイドです。R2-D2 の弟分的な、愛くるしいキャラ。

bb-8.png

物語の重要なカギを握るボール型のドロイド。与えられた任務には一生懸命。

BB-8 のメイキング映像が公式の Facebook ページに上がっています。
https://www.facebook.com/StarWars.jp/videos/1125623990830969/

Sphero BB-8 とは

以前からボール型ロボットを手掛けている Sphero 社が『スター・ウォーズ/フォースの覚醒』に合わせて販売した BB-8 の小型ロボット。Sphero 社は、劇中の BB-8 の制作にも技術協力しています。

公式のアプリ(iOS / Android)が出ていて、Bluetooth 経由でアプリから操作します。動いている様子はこんな感じ。
https://www.youtube.com/watch?v=GqCUegO--gY

リモコンを作りたい

Sphero BB-8 はスマートフォンアプリから操作させることが前提なので、物理的なリモコンは標準で付いてきません。ただ、子どもに遊ばせることを考えたときに、スマホではなく物理的なリモコンで動かしたいところ。

幸い、Sphero のロボットには各種 SDK が用意されているので、自分でプログラミングして操作することができます。BB-8 の通信には BLE が使われているので、Bluetooth 4.0 が使える環境が必要なのですが、Intel Edison を使えば簡単にリモコンが作れそうです。

Intel Edison とは

Edison はインテル社が販売するシングルボードコンピュータです。Arduino や Raspberry Pi と違い、Wi-Fi や Bluetooth のモジュールがあらかじめ組み込まれているので、無線通信するようなモノづくりに便利です。

作ったもの

作り方の前に完成品を。こんな感じのものを作りました。手作り感ありますね。

IMG_2010.jpg

IMG_2008.jpg

IMG_2006.jpg

作り方

では作り方を簡単に紹介します。

準備物

  1. Sphero BB-8
  2. Intel Edison Kit for Arduino
  3. ブレッドボード
  4. ジョイスティック
  5. ジャンパーワイヤ
  6. 9V 乾電池
  7. 9V 乾電池用ジャンパーワイヤ
  8. ピンソケット
  9. ちょうどよい箱

Intel Edison のセットアップ

Wi-Fi 設定

まずは、ここなどを参考にして、Edison を Wi-Fi に繋げるところまでセットアップしてください。

同じ Wi-Fi ネットワークにあるマシンから、

$ ssh root@[設定した Edison 名].local

で、ログインできるようになれば OK です。

Bluetooth 設定

執筆時の Edison は、出荷状態(バージョン weekly-159.devkit-2.0)で Bluetooth が無効化されていました。無効化されているかどうかは、rfkill list というコマンドで確認できます。

無効化されていた場合は rfkill unblock bluetooth で有効化してください。

root@edison:~# rfkill unblock bluetooth
root@edison:~# rfkill list
0: phy0: wlan
        Soft blocked: no
        Hard blocked: no
1: brcmfmac-wifi: wlan
        Soft blocked: no
        Hard blocked: no
2: bcm43xx Bluetooth: bluetooth
        Soft blocked: no
        Hard blocked: no
4: hci0: bluetooth
        Soft blocked: no
        Hard blocked: no

回路を組む

ジョイスティックからの入力を Edison で処理するための、シンプルな回路を組みましょう。

  • 9V 乾電池のプラス側を Edison の VIN に、マイナス側を GND につなぐ
  • Edison の 5V を ジョイスティックの L/R+, U/D+ につなぐ
  • Edison の GND を ジョイスティックの GND につなぐ
  • ジョイスティックの L/R を Edison の ANALOG IN A0 につなぐ
  • ジョイスティックの U/D を Edison の ANALOG IN A1 につなぐ

L/R は Left/Right(横方向)の値、U/D には Up/Down(縦方向)の値が出力されます。

IMG_2012.jpg

プログラムを書く

制御プログラムは JavaScript (Node.js) で書きます。Edison の入出力端子 (GPIO) を制御するライブラリ mraa が初期状態で入っているのでこれを使います。

加えて、BB-8 を BLE 経由で操作するために、noblesphero の2つのライブラリを npm でインストールします。

root@edison:~# npm install noble sphero

そうしたら制御プログラムを書きましょう。

root@edison:~# vi bb8.js

bb8.js の中身はこちらを参照してください。

やっていることは、ジョイスティックの Left/Right, Up/Down の値 (0~1024) から、角度と速度を計算して、orb.roll(speed, direction); で100ミリ秒毎に動かしているだけです。

動かす

書いたプログラムを、

root@edison:~# nohup node bb8.js &

で実行してみましょう。実行直後に BB-8 のキャリブレーション(正面決め)が始まるので、青い点が自分の目の前になるように BB-8 を置きます。

キャリブレーションが終わると BB-8 は白色に光るようになるので、そうなったらジョイスティックで操作できるはずです。


今回はジョイスティックの入力で BB-8 をそのまま操作するだけの単純なものでしたが、色々なセンサー使ったり、もっと複雑なプログラムを書いたりすれば、より面白いことができると思います。

19
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
19