0

BlendMicro npmが自動再接続・複数接続できるようになった

BLE接続のArduinoマイコンボードBlendMicroと簡単に通信できるnodeライブラリをアップデートした。

https://www.npmjs.com/package/blendmicro
v0.2.3になった。

普通BLEで通信しようとすると、PeripheralをScanしてServiceを探してTXとRXを探して……とかなり面倒な実装をしなければならないのだが、このライブラリを使うとマイコン側のble_set_name関数で指定した名前で探して接続まで全部やってくれるのでとても簡単に通信ができる。


自動再接続

BlendMicroと距離が離れて電波が通らなくなったり、太陽電池で動かしていて電源が落ちたりした時に、自動的に再scanしてちゃんと再接続できるようになった。
この機能はデフォルトで有効になっている。

というかもともと再接続は実装していたんだけどバグがあったのでちゃんと直した。3日ぐらい動かしっぱなしにしていて調子が良かったのでリリースした。

blendmicro.reconnect = false;
を指定すると無効にできる。

複数のBlendMicroへの同時接続


今までは1つのNodeプロセスから1つのBlendMicroにしか接続できなかったんだけど、うまくイベント管理したら複数同時接続できるようになった。

これはblendmicro npmを内部で使っているble-firmataでも使えるので、例えばこういう風に複数のBlendMicroに接続してそれぞれアナログ入出力させたりが簡単に書ける。

var BLEFirmata = require('ble-firmata');

var devices = [ "BlendMicro", "device2", "device3" ];

devices.map(function(device_name){
return new BLEFirmata().connect(device_name);
}).forEach(function(arduino){

arduino.on('connect', function(){
console.log("connect!!" + arduino.peripheralName);
console.log("board version: "+arduino.boardVersion);
});

arduino.once('connect', function(){
setInterval(function(){
var an = Math.random()*255;
arduino.analogWrite(13, an);
console.log(arduino.peripheralName + " -> " + arduino.analogRead(0));
}, 100);
});

});

もちろん複数台でも切断時再接続される。

BLENanoと通信できるようになった

BlendMicroと同じRedBearLabが作っているBLENanoという、もうひと回り小さいボードと通信できた。

俺はBLENanoを持っていないんだけど、hiraku君がBLENanoのサンプルコードの一つであるSimpleChatを書き込んだBLENanoを持っていてそれと通信させてもらったら通った。
SimpleChatの上の方に書いてあるService/TX/RXのUUIDがBlendMicroと同じなので、特に何も変更せずに動くことが確認できた。

なおBLENanoが手元にないのでble-firmataのBLENano版ファームウェアが書けないのだが、たぶんBLEFirmataSketch.inoを少し修正すれば動くと思うので誰か作って欲しい

add BLENano Firmata firmware · Issue #6 · shokai/node-ble-firmata
add BLENano sample code · Issue #7 · shokai/blendmicro-node

0

太陽電池でBlendMicro動いた

秋月の外のレジの下の棚にある350円のソーラーパネル2枚でBlendMicroが起動し、BLEが動いた。




Macからble-firmataでanalogReadとかもできた。
何しよう。

0

Node.jsで実世界UI

先週のReal.UIで発表してきたスライドです。ハードウェアとかNode.jsでやったほうが安定するしいいよという話をした。

会場のスマートニュース社は勉強会とかできる場所とオフィスとその真ん中にビールとか置いてあるカウンターがあってフロアがスコーンと抜けるように全部見えてて広々していた。ビール何種類もあってよかった。おいしかったです。



あと発表後にBlendMicroを買えるページがわからない、って言われて、その場で調べてみたらたしかにBlendMicroのサイトわかりづらい。

ここで買った。
Blend Micro [AH00007] – €25.40 : Arduino Store – community and electronics

通常のarduinoよりも低い3Vで駆動するので、太陽電池でも動かせたりする。面白い。

0

ArduinoMicroからBlendMicroに乗り換える

Arduino側のプログラムは、同じATmega32u4を使っているのでSerial.writeをble_writeに書き換えるとか程度で済む。

パソコン側のプログラムは、blendmicro npmというserialport npmとほぼ同じインタフェースを持ったライブラリを使えばよい

firmataを使ってる場合は、ble-firmata npmを使えばこの程度の変更で済む


動作電圧が3.3Vになる

0

blendmicro用 BLE terminal作った

今周囲にどんなBLEデバイスがあるか確認したり、ちょっと通信したりするのにシリアル通信みたいに使えるターミナルがあったら便利なので作った
BlendMicro/Arduino BLE Shield用なので他のデバイスでは使えない。汎用的にできる方法があったら教えて欲しい。


インストール

blendmicro npmに付いている

% npm install blendmicro -g

グローバルにインストールするとblendmicroというコマンドにパスが通る


使う


-listでデバイスリストを表示、-terminalで接続
% blendmicro --help
% blendmicro --list
% blendmicro --term [DEVICE_NAME]

echo.inoを書き込んだBlendMicroと喋っているところ

なお0x4c 0x00 0x02 0x15で始まるデバイスはiBeaconである