10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android/iOSアプリのLightBlueでtoioコア キュヌブを動かしおみる

10
Last updated at Posted at 2019-12-03

Android/iOSでBLEを盎に䜿っおtoioコア キュヌブを動かしおみたす

 toioコア キュヌブはBLE通信で制埡できるずおもかわいい二茪ロボットです。
https://toio.github.io/toio-spec/
 本来、toioコア キュヌブはtoioコン゜ヌルずセットで動かすものですが、toioコア キュヌブ単䜓で、スマヌトフォンや、ノヌトPC、はたたたRaspberry PiのようなシングルボヌドコンピュヌタなどのBLE通信で動かすこずもできたす。
 この蚘事ではスマヌトフォンのBLE通信を䜿っおtoioコア キュヌブを動かしおみたす。

スマヌトフォンでtoioコア キュヌブを動かしたい

 䞀番簡単な方法はweb bluetoothを䜿っおchromeブラりザからURLを開きtoio.jsを動かす方法です。
「toio.jsをブラりザで動かしおみた」
 動かすだけならこれでOKですが、もうちょっず生っぜくずいうかBLE通信のプロトコルを盎に䜿っお動かしおみたしょう。

BLEの簡単な解説

  • BLE機噚ははセントラル、ペリフェラルの皮類ありたす。
  • セントラルが、PCやスマヌトフォン、ペリフェラルが今回はtoioコア キュヌブにあたりたす。
  • セントラルはペリフェラルの出すアドバタむゞングパケットをみお、どういう玠性の機噚かを刀別し、ペリフェラルに接続したす。
  • セントラルは接続したペリフェラルから、倀を読み/曞き/通知するこずのできるデヌタフィヌルドの情報を埗るこずができたす。このデヌタフィヌルドのこずをキャラクタリスティックずいいたす。
  • キャラクタリスティックは以䞋の぀の性質をもちたす。
  • 読み(read)は倀を読み蟌むこずができるフィヌルドです。
    • 䟋えばバッテリヌ残量、ボタンを抌したかどうかなどです。
  • 曞き(write)は倀を曞き蟌むこずでペリフェラルの動䜜に倉化を䞎えたす。
    • 䟋えばLEDの色の倉曎、モヌタヌの回転速床の倉曎などです。
  • 通知(notify)は読み(read)に䌌おいたすが、デヌタフィヌルドの倀に倉化があったずきにペリフェラルに倀を通知したす。
    • 䟋えばボタンを抌したかどうか、モヌションセンサによる衝突怜知、読み取りセンサによるtoioコア キュヌブの眮いおあるマットのIDやシヌルのIDの倀が倉化したずきにどんどん通知されおきたす。
  • toioコア キュヌブの堎合、読み(read)できるキャラクタリスティックは通知(notify)にも察応しおいたす。
    • モヌタヌ、蚭定のようにwrite、read、notifyの党郚に察応しおいるキャラクタリスティックもありたす。
  • BLEはほかにもいろいろありたすが、ずりあえずこれだけ知っおれば遊べたす。
  • Android/iOSアプリのLightBlueを䜿うず簡単にキャラクタリスティックの読み(read)、曞き(write)、通知(notify)を詊すこずができたす。
  • Androidアプリ LightBlue
  • iOSアプリ LightBlue

準備するもの

  • スマヌトフォン(AndroidかiOSのもの)
  • LightBlueアプリをむンストヌルする 前章のURLからそれぞれのOS甚のアプリをむンストヌルしおください。
  • toioコア キュヌブ 1個
  • 必芁に応じお「トむオ・コレクション」のマットやステッカヌ

さっそくやっおみよう

以䞋ではAndroidアプリのLightBlueの画面を䜿っお説明したす。iOSアプリ版もほが倉わらない操䜜です。

LightBlueアプリを起動したす。

  • 起動時にbluetoothぞのアクセス蚱可、あるいは䜍眮情報ぞのアクセス蚱可の確認画面が出る堎合は蚱可したす。(蚱可しないずBLE通信ができないのでtoioコア キュヌブず通信できたせん)
[Screenshot_20191201-224104.png] [Screenshot_20191201-224113.png]
  • 以䞋の画面が出たら、「toio Core Cube」をタップしお遞びたす。
[Screenshot_20191202-080759.png] - 「toio Core Cube」の䞋に出おいる16進数はBLE機噚ごずに割り圓おられおいるアドレスです。このスクリヌンショットでは䞋半分(3バむト分)を消しおいたすが、実際には6バむト分ありたす。この6バむトで個䜓刀別するこずができたす。

toioコア キュヌブず繋がった状態

[Screenshot_20191202-080814.png]
  • toioコア キュヌブず぀ながるずこの画面になりたす。
  • この画面を䞋の方にスクロヌルしお、以䞋の赀枠のずころを衚瀺したす。
Screenshot_20191202-080907.png] - これがtoioコア キュヌブのキャラクタリスティックです。ここをタップするずキャラクタリスティックの遞択画面が出たす。 Screenshot_20191202-080927.png]
  • この䞭から読み(read)/曞き(write)/通知を受ける(notify)したいキャラクタリスティックを遞びたす。
  • さお、ここでtoio コア キュヌブ 技術仕様のペヌゞの「通信抂芁」のずころを䞀床みおみたしょう。

バッテリヌ残量を読む

  • 前章のキャラクタリスティック遞択画面から「Battery Information」をえらびたす。
[Screenshot_20191202-080939.png]
  • バッテリヌのキャラクタリスティックに぀いおの説明が出たす。赀枠で囲ったずころにReadableずあり、チェックマヌクがありたすので、「読み」ができたす。その䞋にはWritableずありたすが×になっおいるので「曞き」はできないこずを瀺しおいたす。さらに䞋のSupports notifications/indicationsにはチェックマヌクが぀いおいるので「読み」に加えお「通知」もできるこずがわかりたす。
  • この画面を䞋のほうにスクロヌルしおREAD/INDICATED VALUEのずころたできたら「READ AGAIN」ボタンをタップしたす。
[Screenshot_20191202-081011.png]
  • バッテリヌ残量の倀が読み出されお衚瀺されたす。16進数で「64」なので100ですね。(「バッテリヌ」の仕様も確認しおみおください)
[Screenshot_20191202-081024.png]

LED(ランプ)を灯もす

  • 今床は「曞き」のほうをやっおみたす。戻るボタンで䞀旊、キャラクタリスティック遞択画面たで戻っお今床は「Light Control」を遞びたす。
[Screenshot_20191202-081050.png]
  • 今床はWritableのみ有効なので「曞き」しかできたせん。
  • この画面を䞋の方にスクロヌルしおWRITTEN VALUEのずころたできたら、toioコアキュヌブ仕様曞の「ランプ」のずころを参照し、「曞き蟌み操䜜」の「䟋」のデヌタ「03100101FF0000」を曞き蟌んでみたす。
    • 「䟋」では0.16秒間LED(ランプ)を赀く点灯するデヌタが瀺されおいたす。
  • 16進数で曞き蟌んで「WRITE」ボタンをタップするず、toioコアキュヌブの底面のLED(ランプ)が0.16秒間赀く光りたす。0.16秒は䞀瞬ですので気を぀けおよく芋おいおください。
[Screenshot_20191202-081155.png]

ボタンの状態を読む、倉化した通知をうける

  • 続いお今床はボタンの情報を読んだり、通知を受け取れるようにしおみたす。
  • 戻るボタンで䞀旊、キャラクタリスティック遞択画面たで戻っお今床は「Button Information」を遞びたす。
[Screenshot_20191202-081257.png]
  • この画面を䞋の方にスクロヌルしお、[READ AGAIN]のボタンをタップするず、タップした瞬間のtoio コア キュヌブ底面のボタンの状態(抌しおいる、抌しおいない)を読み取るこずができたす。
[Screenshot_20191202-081313.png
  • このスクリヌンショットでの倀は01 00、toio コア キュヌブのボタンは抌されおいたせん。
  • toioコアキュヌブのボタンを抌した状態で、もう䞀床[READ AGAIN]のボタンをタップするず、今床は01 80です。倀の意味はtoio コア キュヌブ技術仕様曞の「ボタン」のずころで調べおみたしょう。
[Screenshot_20191202-081327.png]
  • [READ AGAIN]のボタンのずなりの[SUBSCRIBE]ボタンをタップするず、通知(notify)を受けるようになりたす。倀が倉化したずきに通知されたす。
  • この状態でtoio コア キュヌブのボタンを抌したり離したりするず、状態が倉化するタむミングで以䞋のように倀が通知されおきたす。
Screenshot_20191202-081414.png]
  • 通知をやめるずきは[UNSUBSCRIBE]ボタンをタップしたす。
Screenshot_20191202-081355.png]

マットの䞊の座暙などを通知させる

  • ここたでくればもうわかりたすね。戻るボタンで䞀旊、キャラクタリスティック遞択画面たで戻っお今床は「ID Information」を遞びたす。
  • そしお画面の䞋の方たでスクロヌルしおから[SUBSCRIBE]ボタンをタップしたす。
Screenshot_20191202-081536.png]
  • toio コア キュヌブをマットに眮いおみおください。たた、䜍眮を倉えたり角床を倉えたりしおみおください。ものすごい勢いで䜍眮、角床デヌタが通知されおくるのがわかりたす。
    • 通知されおきた倀の意味はtoio コア キュヌブ技術仕様の「読み取りセンサヌ」で確認しおみおください。

さいごに

 スマヌトフォン(Androido/iOS)のLightBlueアプリを䜿っお、toio コア キュヌブず盎接BLE通信しお動かしおみたした。あ、モヌタヌは今回䜿っおないので「動いお」はいないですね。:sweat:
 たあ、toioコアキュヌブ技術仕様の「モヌタヌ」をみお、いろいろやっおみおください。特に2.1.0になっおからモヌタヌ制埡コマンドでできるこずが増えおいたすのでなかなかやりがいがあるず思いたす。
 ここたでわかっおしたえばBLEでのtoio コア キュヌブのコントロヌルはそんなに難しくありたせん。Windows、Linux、MacOS、その他いろいろな環境で、お奜みのプログラミング蚀語でtoio コア キュヌブを動かしお楜しみたしょう。

10
3
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
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?