Raspberry Pi 3でBLEのペリフェラル(peripheral)を作る(nodejs編)。

Raspberry Pi 3には標準でBLEが搭載されているので、AndroidアプリからBluetooth LEでラズパイと情報のやり取りをしてみたく、調べた結果を備忘録として記載しています。

3以外のBleutoothを搭載していないラズパイの場合は、別途、USBのBluetoothドングルを用意することによって、利用可能できます。私は、以下のドングルをラズパイ2で使っています。

今回は、Android側をセントラル(Central)、ラズパイ側をペリフェラル(Peripheral)とします。(ペリフェラルとは、周辺機器側みたいです)

ラズパイでnodejsを利用してペリフェラルを実現するサンプルをよく見かけるので、今回は、nodejsで実現してみます。

必要なものは、

スポンサーリンク

nodejs(アプリの実行環境)

bleno(nodejsでBLEのペリフェラルを実現するライブラリ)

https://github.com/sandeepmistry/bleno

BlueZ(LinuxでBluetoothを利用するプロトコルスタック)

の3つになるかと思います。

以下の手順で行います。

1.nodejsのインストール

nodejsのインストールは、こちらを参考にできるかもです。

2.blenoが利用するBluetoothのプロトコルスタックのBlueZのインストール

$ sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev

3.npmを利用してblenoをインストール

 $ npm install bleno

4.blenoのサンプルプログラムをgitからダウンロード

$ git clone https://github.com/sandeepmistry/bleno.git

5.サンプルプログラムの中のbattery-serviceを実行

$ cd bleno/examples/battery-service/
$ npm install
$ node main.js
on -> stateChange: poweredOn
on -> advertisingStart: success
setServices: success

特にエラーが発生しなければ、無事実行されています。

次にAndroid側ですが、マーケットにセントラル側の確認アプリがありますので、今回は、それを利用します。

BLE Scanner: Read,Write,Notify

インストール後にアプリを起動し、周辺のBLEデバイス一覧に「Battery」が表示されますが、これがnodejsで実行したペリフェラルになります。

次に一覧から「Battery」デバイスの「CONNECT」を選択して接続をしてみます。接続されると、サービスが持っているサービス一覧が表示されます。

 

 

表示されたサービスから「BATTERY SERVICE」を選択し、サービスの持っている、「BATTERY LEVEL」キャラクティクス(characteristic)の値をリード(右側のRアイコン)すると、98%と取得できます。

以上です。

スポンサーリンク