ibeacon(nRF51822)のファームを書き換える。

一個600円ほどのnrf51822を使ったibeacon(RDL51822)をAliexpressで見つけた。プログラムの書き換えができるようなので購入してみた。

5ピースnrf51822 2ボルトの3.3ボルトのbluetooth 4.0ワイヤレスモジュール用ibeaconベースステーションインテリジェント制御システムビーコンble 4ミリアンペアw/ケース

後日、回路図も発見できたので、次はどうやってプログラムを作るか暫し悩んだが、今回は正攻法で攻めてみるべくarmお勧めのKeilの無償版を使ってみた。無償版はプログラムサイズ制限に加えブレークポイント1個のオマケ付きではあったがデバッグできて1個でもブレークポイントが使えるのは嬉しい限り。プログラムサイズ制限があってもそれなりの物は作れるので、私のようなarm初心者はKeil無償版がお勧めだ。

今回初めてnRF51822(ARM Cortex-M0)のプログラミングをしてみたが面白い周辺機能があったりしてなかなか興味深かった。ソフトデバイスやライブラリを利用するよりも自分でHWを理解し直接操作したほうが面白いし勉強にもなる。

開発用ボードは、以前に購入したmicro:bitが同じnRF51822だったのでそれを利用。micro:bitはdaplink対応なのでkeilと直接連携しデバッグまで出来る。スイッチとLEDも沢山付いてるので開発用ボードとして意外に便利に使えそうだ。

次に書き換えのための冶具が必要ということで、3Dプリンターにより基板上の端子とプログラマーを接続するためのケースを作成。現物合わせで作ったので時間はかかったがそれなりに使えそうな物にはなったと思う。ただ、基板を固定する仕組みがないのでなんかで挟んで固定しておく必要があるのは改善の余地あり。

これで、プログラマー(JLINK)と接続できるようになったので、いざ、書き込み!で、いきなりエラれてしまう。orz

最初、エラーの意味が全く理解できなくて悩んだが、ソフトデバイスが書き込まているとエラーになるという情報をもとにnrfgo studioから全消去してみると見事に成功。

めでたしめでたしと...さて、今回はボタン電池(CR2032)仕様ということで、やはり消費電力が気にかかる。実際に計測してみたいという欲求がふつふつとわき上がる...

普通のプリント基板の厚さが1.6mmなので2枚張り合わせるとCR2032の厚さと同じ3.2mmになることに気づきプリント基板で消費電力計測用の冶具を作ってしまった。ボタン電池の代わりに挿入可能な電極を持つ基板と、その基板上のボタン電池から電源を供給できるようにしただけのもの。これなくても、手で押さえたりしてもなんとかなるけど...ショートしたり電源オフになったりして大変...

【裏面の電極は同じ基板の丸い電極部分を利用。元基板を白線部分から切断し裏返して張り合わせるとCR2032アダプターが完成する】

【次のようにボタン電池の代わりに挿入して使う。ハメ込みタイプには使えないけど...】

んで、お待ちかねの消費電流を測定してみるとシステムオフ・モードに入ると0.2uA...ということはウェークアップさせない限り60年位は持つ計算になるのか?(笑)

今回試したibeaconモジュールは、BLEやESBも使えるし意外に便利に使えそうな感じだ。セールの時にもっと買いだめしておこうかな...