robo8080のブログ

ロボット製作や電子工作など。

Raspberry Pi + BLEで、konashi/SBBLEを動かしてみた。

2014年12月04日 | Raspberry Pi

Raspberry Pi + BLEで、konashi/SBBLEを動かしてみたのでその手順を紹介します。

 

使用したもの:

・Raspberry Pi B

・USB Bluetoothドングル(I-O DATA Bluetooth4.0+EDR/LE準拠 USBアダプター USB-BT40LE)

SBBLE

手順1:

ここを参考にnode.js をインストールする。v0.10.24を使用した。

Raspberry Piにnodejsをインストール - fukajun - DeepValley -

最初にnodebrewをインストールすると、PATHを追加しろというメッセージが出るので”.bashrc”に追加しておく。

手順2

ここを参考にBlueZ 4.101 と nobleをインストールする。bluez-5.4ではNGだった。

Getting started · sandeepmistry-noble Wiki · GitHub 

手順3:

ここの、”2. 環境変数を引き継ぐ場合”を参考に、visudo コマンド使用してsudoに環境変数を引き継ぐように sudoers を設定する。

sudo「コマンドが見つかりません」PATHが初期化されているときの対処法 - シングスブログ

nobleをインストールするとカレントディレクトリにnode_modules/nobleというディレクトリ作られる。

そこにnobleのサンプル等が有るので動作確認に使える。

動かない時は、”sudo hciconfig hci0 up” を実行してみる。 

手順4:

node_modules/nobleに、ここのプログラムを適当な名前を付けて保存する(例えばkn.js)。

14/11/12: Node.js+nobleでkonashiをつつく

実行は sudo node kn.js 

うまくいけば、konashi/SBBLEのPIO0-PIO7につないだLEDが点灯するはず。(SBBLEで動作確認した。) 

UUIDを変更すればkoshianでも動いた。koshianのUUIDはここを見ればわかる。

koshianのUUIDはハイフン無しの16進小文字で指定する。

koshianはシリアル受信のNotifyがデフォルトでONになっているようでゴミを受信するようだ。(2014.11.30時点でのファーム)

 


PIO0のLチカとAIO0リードの例:

//------------------------------------------------------------------------------

var noble = require('./index');

noble.on('stateChange', function(state) {
  if (state === 'poweredOn') noble.startScanning();
  else noble.stopScanning();
});

noble.on('discover', function(peripheral) {
  noble.stopScanning();
  console.log('peripheral with UUID ' + peripheral.uuid + ' found');
  var advertisement = peripheral.advertisement;
  var localName = advertisement.localName;
  if (localName) {
    console.log('Local Name = ' + localName);
  }

  peripheral.connect(function(error){
    if(error) console.log('connect error: ' + error);
    console.log('connected to ' + peripheral.uuid);

      peripheral.discoverServices(['ff00'], function (error, services){ // 0xff00=KONASHI_SERVICE_UUID
        if(error) console.log('discoverServices error: ' + error);
        console.log('services.length: ' + services.length);

        var konashiService = services[0];
        konashiService.discoverCharacteristics(['3000','3002','3008'], function(error, characteristics){
          if(error) console.log('discoverCharacteristics error: ' + error);
          console.log('characteristics.length: ' + characteristics.length);

            characteristics[0].write(new Buffer([1]), true); // 0x3000=KONASHI_PIO_SETTING_UUID
              var toggle = false;
              setInterval(function(){
                characteristics[2].read(function(error, data) { //0x3008=KONASHI_ANALOG_READ_0_UUID
                  if (data) {
                    console.log( 'value:' + (data[1] + data[0]*256)/1000 );
                  }
                });
                if(toggle){
                  // LED ON
                  characteristics[1].write(new Buffer([1]), true); // 0x3002=KONASHI_PIO_OUTPUT_UUID
                } else {
                  // LED OFF
                  characteristics[1].write(new Buffer([0]), true); // 0x3002=KONASHI_PIO_OUTPUT_UUID
               }
               toggle = !toggle;
             }, 1000);
         });
      });
  });
});

//------------------------------------------------------------------------------

補足:

konashi/SBBLEを動かすときはキャラクタリスティックスにどういう値を読み書きすれば良いか知る必要がある。

その時はランニングエレクトロニクスさんが公開して下さっているSBBLEのソースが参考になる。

SBDBTシリーズサポートページ

 ー以上ー

 


 参考リンク

14/11/12: Node.js+nobleでkonashiをつつく

Getting started · sandeepmistry-noble

konashi

SBBLE

SBDBTシリーズサポートページ

Bluetoothが載ってるArduino派生ボード「BlendMicro」とNode.jsでBLEした

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。