インテルEdison + BLEで、konashi/SBBLEを動かしてみたのでその手順を紹介します。
事前準備:
Edisonの初期設定が終わっていない場合はここを参考に設定し、WiFi接続できるところまで確認しておく。
手順1:
ここを参考にbluetoothを有効化し、bluez5-devとnobleをインストールする。
konashiの実験をするだけならasyncとnoble以外のnode.jsモジュールは不要かも。
・Enabling BLE (Bluetooth Low Energy aka Smart) and Bluetooth on Edison
手順2:
nobleをインストールするとカレントディレクトリにnode_modules/nobleというディレクトリができるので、そこにここのプログラムを適当な名前を付けて保存する(例えばkn.js)。
・14/11/12: Node.js+nobleでkonashiをつつく
実行は node kn.js
うまくいけば、konashi/SBBLEのPIO0-PIO7につないだLEDが点灯するはず。(SBBLEで動作確認した。)
UUIDを変更すれば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のソースが参考になる。
ー以上ー
参考リンク
・Enabling BLE (Bluetooth Low Energy aka Smart) and Bluetooth on Edison
・14/11/12: Node.js+nobleでkonashiをつつく
・Getting started · sandeepmistry-noble
・Bluetoothが載ってるArduino派生ボード「BlendMicro」とNode.jsでBLEした