Genuino101を使ってBLE経由でRapiroを制御してみる

投稿者:

こんにちは、岸田です。Genuino 101が発売となりました。これは、Bluetooth Low Energy(以下BLEと表記)を標準で扱うことができる、Arduinoの互換機です。
genuino101
開発方法は、商品ページに記載されていますのでそちらをご覧ください。

今回は、このGenuino 101をRapiroに組み込んで、BLE経由でRapiroを制御してみようと思います。Rapiroは、スイッチサイエンスで販売している2足歩行ロボットキットです。キットにはArduino互換機が含まれている他、組み上がったRapiroの頭部にはRaspberry PiやArduino Unoフォームファクターの基板を追加で搭載することもできます。

■用意するもの

■使い方

    1. スケッチをGenuino 101に書き込みます。
    2. Rapiroのスケッチは標準で書き込まれているものを使用します。
    3. Rapiroの頭部に引き出されているパラレルケーブルと、Genuino 101を以下のように配線します。
      Rapiroのケーブル Genuino101
      GND GND
      VCC VCC
      RX TX
    4. NORDIC社のBLEアプリをスマートフォンにインストールし、UARTの項目からリモコンを作成してください。対応しているのはnordic UART Serivceです。

BLE-uart1

リモコンのボタンと送信内容の関連付けは以下のとおりです。

Rapiroのコマンドに相当するもの 送信する文字
停止(#M0) S
前進(#M1) F
後退(#M2) B
左回転(#M3) L
右回転(#M4) R
両手を振る(#M5) 1
右手を振る(#M6) 2
両手を握る(#M7) 3
左手を振る(#M8) 4
右手を伸ばす(#M9) 5

例えば、前進するボタンを設置し、送信内容を F とします。

BLE-uart2BLE-uart3

ここまでの設定ができたら、次はいよいよ接続と制御です。

スマートフォンBluetooth機能をONにし、画面下部の CONNECT から Rapiro もしくは Genuino 101-(何らかの数字)を選んでください。ボタンを押して、Rapiroが動けば成功です。

Rapiro-genuino101

■技術的な話

ざっくりですが、BLEについて説明したいと思います。

BLEには「サービス」と「キャラクタリスティック」という概念があります。一つのBLE機器内部に複数のサービスを立てる事ができ、キャラクタリスティックは外部の機器とのやり取りを行う読み書き部分です。マイコンにつなげる周辺機器で言えばキャラクタリスティックはレジスタみたいな感じです。サービスはクラス、キャラクタリスティックはプロパティとオブジェクト指向風に例えるのもわかりやすいかもしれません。

「プロファイル」はいくつかのサービスやキャラクタリスティックを組み合わせたもので、通信に必要なサービスとその内容が定義されています。今回のようなシリアル通信は、どうやら標準規格ではないらしく、独自で定義するしかないみたいです。今回は、スマートフォンアプリから制御したいため、前述のNORDIC SEMICONDUCTOR社のアプリを選びました。理由は、シリアル通信のプロファイルをアプリから利用でき、そのプロファイルの規格を公開していたからです。

GenuinoでBLEを利用する際は、
・サービスとキャラクタリスティックの設定
・サービスの起動
といった順に関数を実行します。サービスやキャラクタリスティックはUUIDというIDで識別されます。設定の時は、このIDを利用します。NORDIC社のUART/Serialペリフェラルに関するドキュメントはこちらです。このページを元にUUIDを設定しました。

というわけで今回のスケッチはこちら(GitHub)です。

最近はブラウザからBLEを扱えるWeb Bluetoothというものもブラウザ側に搭載されてきています。近いうちに、ブラウザからRapiroを制御できるようになるかもしれません。この機会に、Bluetooth Low Energyの世界を体験してみてはいかがでしょうか。