LoginSignup
3
2

More than 5 years have passed since last update.

BLE Nano でLED制御 ~BLE Nano と Android 端末で通信する~

Posted at

BLE GATT通信

BLE Nano とスマートフォンの間は、GATT プロファイルを使って通信をします。

BLE Nano がペリフェラル側でGATTのサーバーになります。
スマートフォンがセントラル側でGATTのクライアントになります。

手順としては、こんな感じです。

  1. BLE Nano 側がアドバタイズを行なう
  2. スマートフォン側でアドバタイズをスキャンし接続する
  3. Characteristic を使ってデータを読み書きする

BLE GATT に関する情報はこのあたりが参考になるかと思います。
https://www.bluetooth.com/specifications/gatt
http://blue-crystal.squares.net/doc/ble/gatt.html

BLE Nano のサンプル・コードをコンパイル

BLE Nano のページ からリンクをたどって サンプル・コードのページに行きます。
そこに BLE GATTサンプル へのリンクがあります。
リンクをたどり、「import this program」ボタンを押すと、mbed の Workspace にコードを取り込むことができます。

Fig3.png

コンパイルして、バイナリを BLE Nano に書き込みます。
(コンパイル~書き込みの手順は前の記事と同じです)

Android アプリを準備

スマートフォン側にも BLE GATT 通信をするためのプログラムが必要となります。
ここでは、既製のアプリ(Nordic の nRF Master Control Panel) を使ってデータ通信の確認をします。

データ通信を確認

BLE Nano をライターに挿して USB でPCに接続します。
Teraterm などのソフトを使って、COM ポート経由でシリアル接続しておきます。

teraterm.PNG

こうしておくと、BLE Nano のコンソール出力を見ることができます。

次に、スマートフォン側で、nRF Master Control Panel を立ち上げ、デバイスをスキャンします。
名前が"ChangeMe!!"というデバイスが見つかるので接続します。
接続すると Unknown Service が定義されていることがわかります。
Unknown Service をタップすると、UUID が 0xA001 のRead Characteristics と 0xA002 の Write Characteristic が見つかります。

Fig2.png

Write Characteristic の横の ↑ をタップして、00 という値(1 BYTE)を送ると、BLE Nano 上の LED が点灯し、非0の値(1 BYTE)を送ると LED が消灯します。

P6260011a.JPG

(このLED、裏になるので見にくいんですよね :sweat: )

シリアル接続したターミナル上にも、LED の ON / OFF が次のように出力されます。

teraterm2.PNG

さらに、スマートフォンから 11223344 のようにバイト列を送信すると、送ったバイト列がにターミナルに表示されます。

teraterm3.PNG

また、送信したデータは、BLE Nano が Read Characteristic に書き込みます。
スマートフォン側で、Read Characteristic の横の ↓ をタップすると、BLE Nano から受信したデータを見ることができます。

Screenshot_20160627-230400.png

これで、BLE Nano と Android 間で基本的な通信ができることが確認できました。
次は、GATT通信と NeoPixel の LED 制御を組み合わせていきます。

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