😉

SpresenseでWi-Fi Add-onボードを使用するサンプルアプリの動作確認で少しはまった話

2022/02/10に公開

これは何?

SpresenseでWi-fi Add-onボードを使うチュートリアルの動作確認で少しはまりました。解決のためにやったことを情報共有させていただきます。

結論

先に結論を書くと次になります。
Wi-fi Add-onボード[1]のハードウェアバージョン(V1.0A・V1.0A・V1.0C)に一致するようコンフィギュレーションを設定する必要がある、ということです。
multiwebcam サンプルアプリケーション[2]のコンフィギュレーションのデフォルトはV1.0Aになっています。
Wi-fi Add-onボードのハードウェアバージョンとサンプルアプリケーションのコンフィギュレーション設定が一致していないとサンプルアプリケーションがハングアップしますのでご注意ください。

対象チュートリアル

動作確認したチュートリアルはWebに書いてある5.2. multiwebcam サンプルアプリケーション[2:1]です。

カメラで撮影したJPEG画像をWi-fi経由で確認できるサンプルアプリケーションです。
Wi-fi Add-onボードはIDY社のiS110B[1:1]を使用します。

動作確認環境

ハードウェア

  • Spresenseメインボード
  • Spresenseカメラボード
  • IDY Wi-Fi Add-on Board iS110B 基板バージョン V1.0C

ソフトウェア

Spresense SDKバージョン

Spresense SDKで開発しました[3]
Spresense SDKのバージョンは記事を書いた時点の最新バージョン2.4.0です。

動作確認手順

動作確認手順はチュートリアルの5.2.4. ビルドおよび実行手順(1対1のMotion JPEG over HTTPモードの場合) 5.2.4.1. ビルド手順[4]のとおりに実施します。

はまったこと

ビルド完了し、書込み、シリアルターミナルでシェルに接続したところ次のメッセージが表示されました。

Welcome to minicom 2.8

OPTIONS: 
Compiled on Jan  4 2021, 00:04:46.
Port /dev/cu.usbserial-14140, 23:32:30

Press Meta-Z for help on special keys

up_assert: Assertion failed at file:wireless/gs2200m.c line: 893 task: lpwork
up_registerdump: R0: 00000001 2d038020 000000e0 2d039e2c 2d038020 2d03ca90 2d039e18 000186a0
up_registerdump: R8: 0d030b61 0000037d 2d03c010 00000000 00000000 2d03ca90 0d0084a5 0d008af8
up_registerdump: xPSR: 61000000 BASEPRI: 000000e0 CONTROL: 00000004
up_registerdump: EXC_RETURN: ffffffe9
up_dumpstate: sp:     2d03ca90
up_dumpstate: IRQ stack:
up_dumpstate:   base: 2d036fe0
up_dumpstate:   size: 00000800
up_dumpstate:   used: 000000d0
up_dumpstate: User stack:
up_dumpstate:   base: 2d03cbe0
up_dumpstate:   size: 000007d8
up_dumpstate:   used: 000002ec
up_stackdump: 2d03ca80: 2d03ca90 2d039e18 2d03cbe0 0d0085df 000000e0 00000004 00000000 00000000
up_stackdump: 2d03caa0: 2d03ca90 0d0084a5 0d008af8 2d03cae8 0d0188e9 2d0434d0 2d03cb1a 2d043cb0
up_stackdump: 2d03cac0: 000186a0 000186a0 2d043cb0 2d0434d0 00000000 0d0068b1 00000013 0d013877
up_stackdump: 2d03cae0: 000002a5 1c05dc00 000013a5 ec000000 000186a0 2d043c30 2d043c30 2d04350c
up_stackdump: 2d03cb00: 0d030d33 0d013957 2d03ccac 00000014 00000000 0d005c31 0d008b18 01000000
up_stackdump: 2d03cb20: ffffffff 2d03aa28 00000002 0d003d77 2d03aa28 0d007af9 2d043c30 2d0434d0
up_stackdump: 2d03cb40: 2d043c30 2d04350c 0d030d33 000186a0 00000080 ffffffff 00000000 0d014971
up_stackdump: 2d03cb60: 2d0434d0 2d039f78 0d014925 fffffffe 2d0434f4 2d039f78 00000000 000000e0
up_stackdump: 2d03cb80: 2d037fdc 00000080 ffffffff 0d00560f 0d004548 0000002b 00000000 00020000
up_stackdump: 2d03cba0: 00000000 00000000 2d039f78 00000000 00000000 00000000 00000000 00000000
up_stackdump: 2d03cbc0: 00000000 0d0047bf 00000002 0d004791 00000000 0d00456f 00000000 00000000
up_taskdump: Idle Task: PID=0 Stack Used=332 of 1024
up_taskdump: hpwork: PID=1 Stack Used=324 of 2008
up_taskdump: lpwork: PID=2 Stack Used=804 of 2008
up_taskdump: lpwork: PID=3 Stack Used=332 of 2008
up_taskdump: lpwork: PID=4 Stack Used=332 of 2008
up_taskdump: AppBringUp: PID=5 Stack Used=716 of 2000
up_taskdump: cxd56_pm_task: PID=6 Stack Used=400 of 976

調査

現象についてWebで調べていたところ次のGitHubのissue見つけました。

Not support hardware version v1.0B/v1.0C of WIFI board (iS110B) #137

上のissueから次のコミットを見て次のことがわかりました。

  • Wi-fi Add-onボードのハードウェアバージョンでソースコードの処理が分かれていること
  • Wi-fi Add-onボードのハードウェアバージョンはコンフィギュレーションで設定できること

デフォルトのコンフィギュレーション設定はWi-fi Add-onボードのハードウェアバージョンはV1.0Aに設定されていました。
私が購入したWi-fi Add-onボードのハードウェアバージョンはV1.0Cでコンフィギュレーション設定はV1.0Aと設定していためバージョン設定の不一致がおきていました。
結果、前述のエラーメッセージが表示されているのでは?と考えました。

解決方法

コンフィギュレーション変更

Wi-fi Add-onボードのハードウェアバージョンのコンフィギュレーション設定をV1.0AからV1.0Cに変更します。

次のコマンドでコンフィギュレーション画面を開きます。

$ tools/config.py -m

【/】キーを押下するとコンフィギュレーションを検索画面になります。


コンフィギュレーション検索

検索するキーワードはコンフィギュレーション名称に含まれているWIFI_BOARD_IS110Bとします。検索キーワードを入力しエンターキーを押下します。


コンフィギュレーション検索キーワードの入力

コンフィギュレーションが定義されている階層がわかりました。
Wi-fi Add-onボードのハードウェアバージョンは次の階層に定義されているようです。

  • Board Selection
  • Spresense Wi-fi Add-on board (iS110B)


コンフィギュレーション検索キーワードの検索結果

【Exit】にカーソルをあわせてエンターキーを押下し検索結果の画面から出ます。
Board Selectionを選択します。


Board Selectionを選択

【Spresense Wi-fi Add-on board (iS110B)】を選択します。

Spresense Wi-fi Add-on board (iS110B)〜を選択

デフォルトではWi-fi Add-onボードのハードウェアバージョンはV1.0Aが選択されています。

デフォルトV1.0A設定

Wi-fi Add-onボードのハードウェアバージョンV1.0Cに移動し【スペース】キーを入力します。


V1.0C選択・設定

ひとつ上の階層に移動するので再びWi-fi Add-onボードのハードウェアバージョン設定画面に移動します。

V1.0Cに設定できていることが確認できました。

V1.0C設定確認

【esc】キー押下し続け次の画面が表示されたら<Yes>を選択し、コンフィギュレーションを保存します。

コンフィギュレーション保存確認

ビルド

コンフィギュレーション変更を保存したらmake、書込み、シリアルコンソールでシェルに接続します。

動作確認

シリアルコンソールでシェルに接続すると次のメッセージが表示されました。
エラーは解消されました。

Welcome to minicom 2.8

OPTIONS: 
Compiled on Jan  4 2021, 00:04:46.
Port /dev/cu.usbserial-14140, 23:57:49

Press Meta-Z for help on special keys


NuttShell (NSH) NuttX-10.1.0

helpと入力するとBuiltin Apps:multiwebcamが追加されていることが確認できました。

nsh> help
help usage:  help [-v] [<cmd>]

  .          cp         exit       kill       mv         set        unset      
  [          cmp        false      ls         nslookup   sleep      usleep     
  ?          dirname    free       mkdir      poweroff   source     xd         
  arp        date       help       mkfatfs    ps         test       
  basename   dd         hexdump    mkfifo     pwd        time       
  break      df         ifconfig   mkrd       reboot     true       
  cat        echo       ifdown     mksmartfs  rm         uname      
  cd         exec       ifup       mount      rmdir      umount     

Builtin Apps:
  gs2200m           myfirstcameraapp  sh                
  multiwebcam       nsh

Webのチュートリアルの記載とおりにコマンドを実行し動作確認します。

nsh> gs2200m -a 1 spresense_net 0123456789 &
gs2200m [8:50]
nsh> sleep 5
nsh> ifconfig
wlan0   Link encap:Ethernet HWaddr 14:5a:fc:f8:17:21 at UP
        inet addr:192.168.11.1 DRaddr:192.168.11.1 Mask:255.255.255.0

サンプルアプリケーションmultiwebcamを実行し、スマホでWi-fiのspresense_netネットワークにパスワード0123456789で接続します。

nsh> multiwebcam
== Start Camera thread ==

前の手順でSpresenseのIPアドレスがわかったので、スマホのブラウザのURLに次を入力します。

http://192.168.11.1

スマホのブラウザにSpresenseカメラボードが撮影している画像が表示されました。

最後に

Wi-fi Add-onボード[1:2]のサンプルアプリケーションで少しはまったことを書きました。
もし困っていた方、これからSpresenseでWi-fi Add-onボードを使ったサンプルアプリケーションの動作確認をしようと考えていた方の参考になれば・・・と思います。
今回は5.2. multiwebcam サンプルアプリケーション[2:2]が対象でしたがWi-fi Add-onボードを使用したサンプルは他にもあります。

これらのサンプルアプリケーションも今回書いたコンフィギュレーションが必要になると思います。

最後まで読んでいただきありがとうございました。

素敵なSpresense開発ライフをお楽しみください!!!

脚注
  1. IDY社のiS110Bのリンクはこちらです ↩︎ ↩︎ ↩︎

  2. 5.2. multiwebcam サンプルアプリケーションのリンクはこちらですです。 ↩︎ ↩︎ ↩︎

  3. Spresenseの開発手法はSpresense SDK, Arduino IDEの2つがWebのマニュアルで紹介されています。 ↩︎

  4. 5.2.4. ビルドおよび実行手順(1対1のMotion JPEG over HTTPモードの場合) 5.2.4.1. ビルド手順のリンクはこちらです ↩︎

Discussion