Genuino 101とAndroidをBLE接続する

インテル様のCPUが搭載しているGenuino 101を遊びで使っています

このマイコンはオンボードでBLEや6軸センサーが内蔵しています

昨年ぐらいにこのマイコンを使ってBLE通信を試みたのですが、知識不足だったこともあり通信ができませんでした・・・

しかし、もう一度挑戦してみた所無事にBLE通信ができたので書き留めておきます

スポンサーリンク




スポンサーリンク

Genuino 101側

はじめにGenuino 101のプログラムを色々といじります

基本はサンプルプログラムであるCurlBLE->LEDを参考にしています

いじった内容は受け取る文字で、Genuino 101はバイト型でデータを受け取るらしいです

Android側でバイト型に変換して送信しようとしてもうまく行かなかったので、Genuino 101のほうで無理やり合わせることにしました

下記のプログラムをGenuino 101へ書き込んでください

Android側

Android側のプログラムは結構な量なのでポイントだけ記述します(全てのプログラムはGitHubに上げます)

はじめにAndroidManifest.xmlの編集です

bleのスキャニングには位置情報も必要です

MainActivity.javaの編集

パーミッションの設定やマテリアルデザインのSnackBar等を入れています

SnackBarについてはここを参照してください

おおまか流れとして、

  1. レイアウトやボタンの等のIDのくくりつけ
  2. 端末でBLEが使えるか確認
  3. BluetoothがONになっているか確認
  4. 位置情報のパーミッションはOKになっているか
  5. 接続ボタン(connect_button)を押すとGenuino 101へ接続
  6. 操作のボタン(left_button, right_button)で0と1を送信している
  7. 切断ボタン(disconnect_button)を押すとGenuino 101を切断

という流れになっています

GATTがなんなのかがわかればなんとかなる?と思います

また、昨年の私もドツボにはまったのですが、Bluetoothのペアリングからの通信とBLEのペアリングからの通信は全く違うので注意が必要です

実際に動作しているところ

AndroidでBLEペアリングができるようになったので、Genuino 101以外のマイコンでも接続できると思うので夢が広がります ( ˘ω˘)

参考文献