はじめに
Moddable Developers JapanのDiscordで、Raspberry Pi pico Wとpico display 2.0を使ってNode-RED Dashboardが動かないという質問を受けました。
Pico Display Pack 2.0はこちら。
事前準備と動作確認
Raspberry Pi pico / pico Wの開発環境(Pico SDK)の構築ができている前提とします。
Raspberry Pi pico Wは既に持っていたので、さっそくpico display 2.0を購入して、サンプルプログラムを動かしてみました。
$ git clone -b main https://github.com/pimoroni/pimoroni-pico.git --recursive
$ cd pimoroni-pico
$ mkdir build
$ cd build
$ cmake ..
$ cd examples/pico_display_2
$ make
問題なくビルドが完了すると、uf2ファイルが作成されます。
「BOOTSEL」ボタンを押しながらRaspberry Pi pico Wを起動(電源をON)し、uf2ファイルをRaspberry Pi pico Wにコピーします。
$ cp pico_display2_demo.uf2 /Volumes/RPI-RP2/
Moddable SDKで動作確認
Moddable SDKの開発環境の構築ができている前提とします。
piu/ballsとpiu/imagesのサンプルプログラムの動作は問題ありませんでした。
$ cd $MODDABLE/examples/piu/balls
$ mcconfig -d -m -p pico/pico_display_2
$ cd $MODDABLE/examples/piu/images
$ mcconfig -d -m -p pico/pico_display_2
Node-RED MCUで動作確認
node-red-mcu-pluginを使用して、Node-REDフローエディタで簡単なDashboardフローを作成しました。
サンプルフロー(flows.json)はこちら。
ビルドしてファイルを書き込んで起動したところ、デバッガ(xs-bug)がすぐに停止(stack)しました。
解決に向けた議論(Discussion)
Githubのnode-red-mcuのレポジトリで、Discussionを作成し、議論を開始しました。
Peterさんから返信があり、creation paramsの値の変更で動作したとの解決案が示されました。
{
"static": 65536,
"chunk": {
"initial": 1024,
"incremental": 1024
},
"heap": {
"initial": 64,
"incremental": 64
},
"keys": {
"available": 8
}
}
creation paramsの設定方法についてはこちら。
動作確認
creation paramsを設定してビルド、ファイルを書き込んで起動したところ、正常に動作することを確認しました。
node-red-mcuのmanifest_host.jsonに設定する場合はこちら。
"pico": {
"creation": {
"static": 65536,
"chunk": {
"initial": 1024,
"incremental": 1024
},
"heap": {
"initial": 64,
"incremental": 64
},
"keys": {
"available": 8
}
}
}
さいごに
Raspberry Pi picoが起動時にstackが停止(silent crash)する原因までは突き止められていませんが、
取り急ぎ簡単なDashboardフローを動かすには問題を回避できました。