LoginSignup
2
3

More than 5 years have passed since last update.

Raspbian Jessie with PIXELでnobleを使う

Posted at

はじめに

クレジットカードサイズのコンピュータボード「Raspberry Pi」は、2016年に発売された「Raspberry Pi 3 Model B」よりオンボードでBluetooth v4.1とBluetooth Low Energy(BLE)、Wi−Fiに対応しています。

このRaspberry Pi上で手軽にBLEを活用する方法の一つが、Sandeep MistryがNode.jsからBLEを扱えるようにするためにつくったBLEセントラル用ライブラリ「noble」(URL https://github.com/sandeepmistry/noble )です。nobleは、BLEセントラルとして必要な機能を一通り備えており、JavaScriptで記述できることから、手軽に利用できることが期待されます。

しかしながら、Raspbian Jessie with PIXEL(November 2016)の初期状態では、インストールされているNode.jsのバージョンはかなり古いものです。この状態でnobleをビルドしようとしても、途中で失敗してしまい、動作しません。

$ node -v
v0.10.29

この記事では、Raspbian Jessie with PIXEL(November 2016)でnobleをビルドできる環境を構築しつつ、Node.jsをベースとしたプログラミング環境「Node-RED」(URL http://nodered.org/ )からも利用できるようにする方法を紹介します1

nobleをビルドする

準備

Raspbianに最初からインストールされているNode.jsとNode-REDをアップデートするのにはいくつかの方法がありますが、ここでは最も簡単と思われる方法を紹介します。まず、念のためシステムに対してアップデートをかけます。

$ sudo apt-get update

次に、Node-REDに含まれているNode.jsおよびNode-REDをアップデートするスクリプトを実行します。

$ sudo update-nodejs-and-nodered

これにより、Node.jsのバージョンはNode-REDがサポートしているバージョンである4.xの最新版までアップデートされます。

$ node -v
v4.6.2

さらに、nobleに必要なBluetooth関係のライブラリをインストールします。

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

以上でnobleをビルドするための準備が整いました。

ビルドと動作確認

ビルドするには、npmでnobleをインストールします。

$ npm install noble

実際に動作するかを確認しましょう。適当なBLEデバイスをアドバタイジングしている状態にし、サンプルの中からadvertisement-discovery.jsを実行します。これはPokémon Go Plusの例です。

$ sudo node advertisement-discovery.js 
peripheral discovered (************ with address <**:**:**:**:**:**, public>, connectable true, RSSI -72:
    hello my local name is:
        Pokemon GO Plus
    can I interest you in any of the following advertised services:
        []

このように、動作していることが確認できました。

Node-REDからBLE機器に接続する

ble uartノード(URL http://flows.nodered.org/node/node-red-contrib-ble-uart )は、Raspberry Pi上のNode-REDから手軽にNordicのUARTプロファイルに対応したBLEペリフェラルデバイスを利用できるよう、筆者がつくりました。指定したローカル名のデバイスをスキャンし、接続できたらそのデバイスにNordicのUARTプロファイルで入出力を扱えるようにする、というごく基本的な機能だけを提供します。

インストール方法は、他のNode-RED用ノードと同様にnpmでインストールするだけです。なお、既にNode-REDを起動している場合には、node-red-stopを実行してNode-REDを一旦終了してください。

$ cd ~/.node-red/
$ npm install node-red-contrib-ble-uart
$ sudo node-red-start

ble uartノードの使用例です。twitter inノードで自分のアカウント宛に送信されたDMをチェックし、もし届いていればその内容をble uartノード経由で指定したBLEデバイスに送信します。

Node-RED_flow_2.png

次の図は、Adafruit IndustriesのBLEモジュール搭載したArduino互換機「Adafruit Feather 32u4 Bluefruit LE」に接続するための設定を入力した画面例です。ble uartノードは、起動するとUARTサービスを提供するBLEペリフェラルデバイスを対象にスキャンを開始し、指定されたローカル名のデバイスが見つかると接続します。

Node-RED_ble_uart_node.png

ble uartノードは、今のところ常に安定して動作することを保証するものではありません。ソースコードはGitHub上に公開していますので、より良い実装や機能の追加に関する提案などがあれば、プルリクエストの送信やissueの登録などでお知らせいただけると助かります。

URL https://github.com/kotobuki/node-red-contrib-ble-uart

参考にした記事


  1. 目的がNode-REDおよびnobleが使用できる環境をつくることであるため、最新版のNode.jsである6.xではなく、Node-REDが対応している4.xになります。 

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