chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

nRF51822でBLEを勉強する:micro:bitを使えば格安

BLEって別に新しい技術でもないかもしれないが、、ESP32+MicroPythonでまだまともに動かしていない最後のライブラリで、また、DAWの関係から、BLE MIDIをなんとか使いたいと思ってる。が、、BLEはなかなかややこしい仕様で、プロトコル詳細がやっぱりよく分からない(特にbondingの処理)。TCP/IPの様に、レイヤーになっているし。BLEのキャプチャもすんなり動いてくれない。

という背景から、BLEの標準デバイスもある?nRF51822でプログラミングしながら理解したいと思っています*1。nRF51822の開発キットとか買うかと考えたけど、よく考えるとmicro:bitはnRF51822が乗っていて、DAP-LINK(J-LINK?)とやらの開発用プロコル?ももう一つのチップ上で動いているので、わざわざnRF51822のDevKit買わずともmicro:bitでプログラミングしたらいいじゃないかと。
BLE解説本もnRF51822でのPG例がいろいろ載ってるようなので、こういったのを読みながら、プロトコル追いかけながら実装したら理解できるかも。

というわけで、久しぶりにSeggar Enbedded Studioを動かしてみる。。利用可能期限が終わってる。入れなおす。
BBC micro:bit J-Link Upgrade | SEGGER - The Embedded Experts

BBC micro:bit J-Link OB Firmwareを入手して、micro:bitの仮想ディスクに貼り付けて焼く。

J-Link Commanderを走らせる。BBC-microbitと通信できてるようである。

SEGGER J-Link Commander V6.82c (Compiled Jul 31 2020 17:37:56)
DLL version V6.82c, compiled Jul 31 2020 17:36:49

Connecting to J-Link via USB...O.K.
Firmware: J-Link OB-BBC-microbit compiled Mar 24 2017 09:33:30
Hardware version: V1.00
S/N: 783228475
VTref=3.300V


Type "connect" to establish a target connection, '?' for help
J-Link>connect
Please specify device / core. <Default>: NRF51822_XXAA
Type '?' for selection dialog
Device>?

Lチカのサンプルプロジェクトが提供されていたので、走らせてみた。一発で動いた。素晴らしい。セットアップとかすっ飛ばしたので、何をどう設定したらターゲットがmicro:bitになるのかとか分からん事だらけだが。。とりあえず動いたので、、ボチボチBLEライブラリを叩きながら動かしたら少しずつ理解できるのではと期待
SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace
写真はサンプルライブラリをビルドして、DLして、ステップ実行しているところ。

統合開発環境をパッケージでインストールしたけど、GCCで環境を作ることも可能なようだ。
nRF51822 - Bluetooth low energy, ANT and 2.4 GHz SoC - nordicsemi.com
コンパイラとかライブラリとかを手で入れると何がどうなっているのかさらに理解できる。。

https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf51%2Fstruct%2Fnrf51822.html

Development with GCC and Eclipse - Nordic Blog - Nordic Blog - Nordic DevZone

poor man's nRF51822 development environment 1 of 2 - 人は歴史を作り出し、人は歴史を語り継ぐ
GitHub - NordicSemiconductor/pynrfjprog: Python wrapper around the nrfjprog dynamic link library (DLL)


■追記
nRF51822はBLEライブラリとの整合等をきっちり取る必要があり、よくわからない。どうせ最後はC+BLE-LIBまで降りないといけないのなら、ESP32のESP-IDFで勉強したらいいのでは?との思いに居たり、nRF51822を使った理解は中止。(オライリーのBLE解説本もnRF51822の記述はあまりないので、、nRF51822を使ったとしても深い所までは到達できないと思いまして)

*1:そのうち別の興味に移るかもですが