ソニーSpresense用の新アドオンボード:GNSS受信機とHDRカメラ

category: make
tags: spresense

はじめに

ソニーセミコンダクタソリューションズから発売されているボードコンピュータSpresense(スプレセンス)用の新しい公式アドオンボードが発売されました。多周波GNSS(global navigation satellite system)受信機とHDR(high dynamic range)カメラです。これらを入手して、Arduio IDEにて動作させてみました。

Sony Spresense GNSS addon and HDR camera addon

GNSSアドオンボード

Spresenseは、特に低消費電力動作、マルチコア、GNSS受信機内蔵、オーディオ再生などの特色のある、手のひらサイズのマイコンです。アドオンボードとは、そのマイコン上部のピンヘッダなどに接続できる追加機能ボードのことです。

Sony Spresense GNSS addon and HDR camera addon

GNSSアドオンボードには、MRAM(磁気抵抗メモリ、書き換え劣化が少ない不揮発メモリ)がついていて、再立ち上げ時の衛星捕捉の高速化に用いられているようです。低消費電力と高速衛星捕捉を両立した贅沢な構成です。公式ホームページの説明に「このボードを強い磁気に近づけないでください」と書かれていますが、これは欠点であるよりもむしろ、機能の主張であるといえます。

Spresenseについて

また、GNSS受信LSIのCXD5610にはMRAMが内蔵されておりますので、磁石などの強い磁気を発するものを近づけるとMRAMに記憶されている データが消えてしまい、正しく動作しなくなることがあります。

Spresense内蔵GNSS受信機はL1周波数帯のみの受信であるのに対して、このGNSSアドオンボードはL1帯とL5帯の両方の電波を受信できます。SpresenseにはGNSSアンテナが内蔵されている一方、このアドオンボードは別途アンテナが必要で、そのためのU.FLコネクタが取り付けられています。

GNSSアンテナには、低雑音増幅器(LNA: low noise amplifier)が内蔵されていることが一般的です。そのLNAへの電源供給のために、受信機には3ボルトから5ボルトの直流電圧をアンテナ端子に供給することが求められています。Spresenseへの電源供給は5ボルトですが、内部には3.3ボルトも使われていて、さらに、低消費電力実現のために、入出力端子では1.8ボルトを標準としています。このアドオンボードのアンテナ端子に、LNA用電源は供給されるのでしょうか。

そこで、GNSSアドオンボードの回路図を確認したところ、3.3ボルトを電源管理ICであるXC8109AC10BR-Gにて供給していることがわかりました。アンテナ端子には、L1周波数帯とL5周波数帯を選択するSAW(表面弾性波: surface accousitc wave)フィルタも接続されています。

Sony Spresense GNSS addon schematic

このXC8109のデータシートによると、このICはマイコンからの電源供給制御(CE: chip enable)や静電気破壊防止(ESD: electrostatic discharge)だけでなく、過電流遮断、逆電流防止、高温時シャットダウンの機能をもち、さらにその状態をマイコンに通知するFLG(flag)出力もあります。これもまた、贅沢な構成です。

XC8109 data sheet

私は、Spreseneメインボードを外部アンテナを接続できるように改造しています。これにGNSSアドオンボードを接続し、同じ外部アンテナを用いて、内蔵GNSS受信機と、アドオンボードGNSS受信機を比較してみました。ここで使用したアンテナは、多周波数を扱えるBeitian BT-200です。

GNSS addon board on Spresense main board

最初、メインボードアンテナ端子とアドオンボードアンテナ端子を2分岐スプリッタに接続しました。アドオンボードのアンテナ端子をスプリッタの電流通過端子に接続したところ、メインボードGNSSが動作しませんでした。アドオンボード不使用時には、アンテナ端子に電源が供給されないので、メインボードGNSS機能が動作しなかったのです。これは、低消費電力化のための動作といえます。メインボードアンテナ端子は常にLNA電源を供給しているので、これをスプリッタの電流通過端子に接続すれば完璧でした。

GNSS addon board for Spresense

ここでは、GNSSアンテナを、メインボードアンテナ端子と、アドオンボードアンテナ端子に、それぞれつなぎかえて評価しました。ソフトウェアは、gnss_addon.inoです。メインボードを利用するときにはクラス名をSpGnssに、アドオンボードを利用するときにはクラス名をSpGnssAddonにします。このクラス設計により、メインボードとアドオンボードとで、同じソフトウェアを利用でき、便利です。

GNSS addon board for Spresense

メインボードのGNSS機能を利用したときのログは次のとおりです(長くてすみません)。

SpGnss : begin in
SpGnss : begin out
SpGnss : start in
  mode = HOT_START
SpGnss : start out
Gnss setup OK
1980/01/06 00:00:03.000615, numSat: 0, No-Fix, No Position
1980/01/06 00:00:04.000657, numSat: 6, No-Fix, No Position
1980/01/06 00:00:05.000658, numSat: 6, No-Fix, No Position
1980/01/06 00:00:06.000656, numSat: 7, No-Fix, No Position
1980/01/06 00:00:07.000648, numSat: 7, No-Fix, No Position
1980/01/06 00:00:08.000649, numSat: 6, No-Fix, No Position
1980/01/06 00:00:09.000646, numSat: 6, No-Fix, No Position
1980/01/06 00:00:10.000646, numSat: 6, No-Fix, No Position
1980/01/06 00:00:11.000645, numSat: 7, No-Fix, No Position
1980/01/06 00:00:12.000645, numSat: 7, No-Fix, No Position
1980/01/06 00:00:13.000644, numSat: 7, No-Fix, No Position
1980/01/06 00:00:14.000643, numSat: 7, No-Fix, No Position
1980/01/06 00:00:15.000643, numSat: 7, No-Fix, No Position
1980/01/06 00:00:16.000642, numSat: 8, No-Fix, No Position
1980/01/06 00:00:17.000642, numSat: 8, No-Fix, No Position
1980/01/06 00:00:18.000641, numSat: 7, No-Fix, No Position
1980/01/06 00:00:19.000642, numSat: 7, No-Fix, No Position
1980/01/06 00:00:20.000640, numSat: 7, No-Fix, No Position
1980/01/06 00:00:21.000639, numSat: 9, No-Fix, No Position
1980/01/06 00:00:22.000638, numSat:10, No-Fix, No Position
1980/01/06 00:00:23.000638, numSat: 9, No-Fix, No Position
1980/01/06 00:00:24.000637, numSat: 8, No-Fix, No Position
1980/01/06 00:00:25.000636, numSat:10, No-Fix, No Position
1980/01/06 00:00:26.000641, numSat:10, No-Fix, No Position
1980/01/06 00:00:27.000641, numSat: 8, No-Fix, No Position
1980/01/06 00:00:28.000638, numSat: 8, No-Fix, No Position
1980/01/06 00:00:29.000634, numSat: 8, No-Fix, No Position
1980/01/06 00:00:30.000633, numSat: 8, No-Fix, No Position
1980/01/06 00:00:31.000632, numSat: 8, No-Fix, No Position
1980/01/06 00:00:32.000632, numSat: 7, No-Fix, No Position
1980/01/06 00:00:33.000631, numSat: 9, No-Fix, No Position
1980/01/06 00:00:34.000633, numSat: 9, No-Fix, No Position
1980/01/06 00:00:35.000630, numSat: 7, No-Fix, No Position
1980/01/06 00:00:36.000629, numSat: 7, No-Fix, No Position
1980/01/06 00:00:37.000627, numSat: 7, No-Fix, No Position
1980/01/06 00:00:38.000628, numSat: 7, No-Fix, No Position
1980/01/06 00:00:39.000630, numSat: 7, No-Fix, No Position
1980/01/06 00:00:40.000627, numSat: 7, No-Fix, No Position
1980/01/06 00:00:41.000626, numSat: 7, No-Fix, No Position
1980/01/06 00:00:42.000627, numSat: 7, No-Fix, No Position
1980/01/06 00:00:43.000632, numSat: 8, No-Fix, No Position
1980/01/06 00:00:44.000624, numSat: 8, No-Fix, No Position
1980/01/06 00:00:45.000623, numSat: 8, No-Fix, No Position
2023/08/01 05:40:26.000652, numSat: 8, No-Fix, No Position
2023/08/01 05:40:26.795351, numSat: 8, Fix, Lat=34.440642, Lon=132.415095
2023/08/01 05:40:27.000707, numSat: 8, Fix, Lat=34.440642, Lon=132.415095

一方、アドオンボードを利用した時のログは次のとおりです。

SpGnss : begin in
SpGnss : begin out
SpGnss : start in
  mode = HOT_START
SpGnss : start out
Gnss setup OK
2000/01/02 00:00:03.000000, numSat:14, No-Fix, No Position
2000/01/04 05:35:02.000000, numSat:18, No-Fix, No Position
2000/01/04 05:35:03.000000, numSat:20, No-Fix, No Position
2000/01/04 05:35:04.000000, numSat:20, No-Fix, No Position
2000/01/04 05:35:05.000000, numSat:20, No-Fix, No Position
2000/01/04 05:35:06.000000, numSat:20, No-Fix, No Position
2000/01/04 05:35:07.000000, numSat:20, No-Fix, No Position
2000/01/04 05:35:08.000000, numSat:20, No-Fix, No Position
2000/01/04 05:35:09.000000, numSat:19, No-Fix, No Position
2000/01/04 05:35:10.000000, numSat:19, No-Fix, No Position
2000/01/04 05:35:11.000000, numSat:21, No-Fix, No Position
2000/01/04 05:35:12.000000, numSat:22, No-Fix, No Position
2000/01/04 05:35:13.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:14.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:15.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:16.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:17.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:18.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:19.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:20.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:21.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:22.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:23.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:24.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:25.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:26.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:27.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:28.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:29.000000, numSat:24, No-Fix, No Position
2023/08/01 05:35:30.230000, numSat:24, Fix, Lat=34.440652, Lon=132.415128
2023/08/01 05:35:31.000000, numSat:24, Fix, Lat=34.440629, Lon=132.415111

GNSSアドオンボードは、メインボードよりも、より短い時間で測位できました。

HDRカメラアドオン

このHDRカメラには、FPGAがついていて、JPEGへのエンコードも行えます。すごいです。

Spresense HDRカメラボード

Spresense HDR カメラボードにはFPGAが搭載されており、色空間変換回路とJPEGエンコーダを搭載しているため、Y/Cb/Crに加え、RGB、JPEG形式の画像を Spresenseに送ることができます。

HDRカメラアドオンボードを利用する前に、Spresenseメインボードと同様に、一部のICに遮光テープを貼らなければなりません。このテープは、筐体を保持していたダンボールの裏についていました。このテープを貼る前に、ダンボールを捨ててしまわないよう、注意が必要です。

Masking tape for HDR camera addon board

アドオンボードICに、この遮光テープ貼り付けます。

Masking tape for HDR camera addon board

その後、アドオンボードのフラットケーブル端子をSpresense本体に差し込みます。メインボードのカメラコネクタ側には、特にケーブル保持機構はついていません。使用したソフトウェアは、camera.inoです。このサンプルコードはSDカードにJPEGファイルを記録しますので、メインボードのほかに拡張ボードも必要です。

Connection of HDR camera addon board with Spresense main board

しかしながら、適切な被写体がない…とりあえず、私のPCディスプレイを映してみました。このHDRカメラを用い、屋外で色々と撮影してみようと思います。

An example of HDR camera addon board

おわりに

Sony Spresense用のGNSSアドオンボードと、HDRカメラボードを試してみました。GNSSアドオンボードはとても丁寧に作られている印象です。HDRカメラアドオンボードも高機能です。ともに、低消費電力と高機能の両立を目指しています。利用していて楽しいです。

このHDRカメラの特長を活かす被写体を探し、また、GNSSアドオンボードを楽しみたいと思います。