Open6

SpresenseとBLEボードを買った

okuokuokuoku

どんどんボードが増えていく。。

https://www.switch-science.com/catalog/3900/

https://www.switch-science.com/catalog/6334/

https://www.switch-science.com/catalog/5258/

とりあえずスペーサーを買い忘れたのをめっちゃ後悔している。。メインボード(黒)の下部に高密度コネクタがあって、メインボードとBLEボードはこのコネクタだけで乗っている状態。さすがにこの状態ではちょっと持ち歩けないかなぁ。。

消費電力は何も動作していない状態だと低すぎて測れなかった。センサボードまで全部載せた状態で6.2mA@5V。(メインボード単体で5mA、BLEボードの追加で6mA程度) 実際には更にGPSを動作させようと思っているので、+30mAくらいで50mAくらいの予算を見込んでいる。

BLEボード上のCoresight10コネクタはBLEチップ(nRF52)側のものでSpresenseにはアクセスできない。

okuokuokuoku

高さが高い

かなりコンパクトなボードだけどアドオンボードを積むと結構高さがある。

https://www.switch-science.com/catalog/6937/

https://www.switch-science.com/catalog/7225/

こういう基板を買ってきて、ユニバーサル基板に貼った方が良いかな。

https://www.switch-science.com/catalog/3902/

というか今気付いたけど、BLEベースボード上のnRF52をSpresense側からリセットする方法が無いんだな。。まぁJTAGで頑張れば良い話ではあるけど。。

okuokuokuoku

GPSアンテナとBluetoothアンテナが近すぎるんじゃないか疑惑

↑ の写真見てて思ったけど、GPS(1.6GHz)とBluetooth(2.4GHz)のアンテナを近くに置くのは不味い気がする。これスマホとかではどうしてるんだろうな。。

公式のハードウェアガイドによると メインボード上端6mm をクリアしろということになっている。この領域にはスペーサ用の穴もあるので、 金属製のスペーサとネジを使用した場合には、GNSSの受信性能に著しい悪影響を及ぼします。かならず樹脂製のものをご使用ください。 という注意事項もある。

nRF52モジュールのISP1507の方では、keep-out zoneとして黒い側に金属を配置しないようにアドバイスしている。実際、BLEベースボードの基板もそのようにデザインされている。

BLEベースボードでは更にnRF52の部分だけではなくGPSアンテナのところも公式ハードウェアガイドの推奨通りに抜いてはあるが(赤い網かけ部分)、効果のほどは謎。。外に出て測定するしかないかな。。

okuokuokuoku

ファームウェア

ユーザがアプリケーションを実行するCortexM4F以外に、IOPとGPSモジュールがそれぞれ追加のArmプロセッサを持っていてそれらのファームウェアがバイナリ形式で用意されている。

WARNING: New loader v2.4.0 is required, please download and install.
         Download URL   : https://developer.sony.com/file/download/download-spresense-firmware-v2-4-000
         Install command:
                          1. Extract loader archive into host PC.
                             ./tools/flash.sh -e <download zip file>
                          2. Flash loader into Board.
                             ./tools/flash.sh -l /home/oku/repos/spresense/firmware/spresense -c <port>

SpresenseはROMローダーも持っており、リカバリツールでこれらを再度ロードすることもできる。

okuokuokuoku

SDKのビルド

SDKはNuttXプロジェクトとして実装されているため、ビルド方法はNuttXのものそのままになる。手元ではCygwin上のcrosstool-NGでビルドした自前のツールチェーンを使用しているので、ホストOSをLinuxに設定する必要があった。

まず、Kconfigを含むコンフィギュレータをビルド & インストールする。

git clone https://bitbucket.org/nuttx/tools.git nuttx-tools
cd kconfig-frontends
./configure && make && make install

その後、適当に config → make menuconfig する。

./tools/config.py default
make menuconfig

コンポーネントの選択は。。これドキュメントを熟読するしか無いかな。。

ファームウェアの書き込み

Cygwinでも COM5 のような指定が使えるようだ。

SDKのビルド時に spresense-binaries-v2.4.0.zip をDLするように指示されるので、ダウンロードしてリポジトリの firmware ディレクトリに展開させる(zipの展開も flash.sh で行う)。

ファームウェアの展開
oku@stripe ~/repos/spresense/sdk
$ ./tools/flash.sh -e spresense-binaries-v2.4.0.zip
Update succeed.
ファームウェア書き込み
oku@stripe ~/repos/spresense/sdk
$ ./tools/flash.sh -l ../firmware/spresense -c COM5
>>> Install files ...
install -b 115200
Install ../firmware/spresense/AESM.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

28944 bytes loaded.
Package validation is OK.
Saving package to "AESM"
updater# install -b 115200
Install ../firmware/spresense/dnnrt-mp.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

109808 bytes loaded.
Package validation is OK.
Saving package to "dnnrt-mp"
updater# install -b 115200
Install ../firmware/spresense/gnssfw.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

454512 bytes loaded.
Package validation is OK.
Saving package to "gnssfw"
updater# install -b 115200
Install ../firmware/spresense/loader.espk
|0%-----------------------------50%------------------------------100%|
######################################################################

129968 bytes loaded.
Package validation is OK.
Saving package to "loader"
updater# install -b 115200
Install ../firmware/spresense/sysutil.spk
|0%-----------------------------50%------------------------------100%|
######################################################################

174080 bytes loaded.
Package validation is OK.
Saving package to "sysutil"
updater# sync
updater# Restarting the board ...
reboot
okuokuokuoku

アプリの起動

とりあえず起動はした。

oku@stripe ~/repos/spresense/sdk
$ ./tools/flash.sh -c COM5 nuttx.spk
>>> Install files ...
install -b 115200
Install nuttx.spk
|0%-----------------------------50%------------------------------100%|
######################################################################

155664 bytes loaded.
Package validation is OK.
Saving package to "nuttx"
updater# sync
updater# Restarting the board ...
reboot

流石にRAM1.5MiBもあるんだしflashせずに実行したいもんだな。。いやまぁELFローダとか持ってるのでそれ使えば良いんだろうけど。