node-red経由でrpi2b+camera(v2)+Dashboardに撮影静止画像を表示する。

 今朝3時で完全駄目人間の様相を示しているが取り敢えず画像を表示出来るようになったので記するなり。眠いよ。。。

1.ハードウェア構成:

 rpi純正カメラ。所謂camera(v2)と呼ばれるフレキで本体に接続するカメラモジュール。

rpi2b+Seeed BaseHAT+pHAT+mcp9808温度センサ+GROVE relayは従来と同じ。

2.ソフトウェア:

 camerapi : rpi用cameraで撮影するノード

 base64 : Dashboardに表示させるにはcamerapiで撮影したデータをbase64形式に変換する必要がある。その為のノード

f:id:aki_iic:20210909031106p:plain

camerapi+base64

 ポイントはbase64ノードでcamerapiで取得した画像データを変換する事。Dashboardはhtmlで表示する為templeteノードにその為のtagを書いておく必要がある。

<div>
      <img src="data:image/png;base64,{{msg.payload}}">
</div>

 これを理解するのに数日掛かってしまった(涙)。

f:id:aki_iic:20210909031629p:plain

templeteタグで画像を表示

 camerapiはbuffered modeに設定する。撮影画像を保存する必要は無いのでこのモードの方が無用な処理が無い分速い筈。

f:id:aki_iic:20210909031853p:plain

camerapiをbuffered modeに設定

3.結果

f:id:aki_iic:20210909032608p:plain

rpi camera(v2)+camerapiで撮影してDashboardに表示

 やっと表示出来るようになりました。今回のポイントは

・camerapi 0.0.39をbuffered modeに設定

base64でcamerapiのデータを変換

・templete nodeで表示したい画像のhtml tagを記述する

<div>
      <img src="data:image/png;base64,{{msg.payload}}">
</div>

 でありました。node-redはhtml直書きする場面が少なくないので忘却の彼方のhtmlタグのリハビリが必要かもしれない。

 寝不足なのは自業自得。。。

令和三年長月十日追記:

 レイアウトを少し弄ってみた。まあ大して変わらないけれど↓

f:id:aki_iic:20210910023646p:plain

rpi camera(v2)+camerapiでnode-red Dashboardに表示(その2)

 混沌としてるが心の目でフィルタリングして頂けると幸いです。図中でんぐりがえってるrpi風なモノは待機(休眠)中のrpi3bと思われる。フォーマットはQVGAVGAだと大きすぎるので最小画像のQVGAとしている。camera(v2)の性能からすると非常に勿体無いのだがこれはあくまでお試しに過ぎないからnode-red系の画像処理ノード(調査中)ではより高解像度を選択した方が望ましいのだろう(あるいは最初から/前処理的に減縮した方が望ましいとか)。

令和三年長月十二日追記:

 camerapiにはエフェクト設定があって簡単な効果ぐらいは行える。以下はエンボス効果の例。

f:id:aki_iic:20210912093426p:plain

エンボス

 rpi純正カメラは令和三年長月現在秋月で3800円程度で入手出来る。財団が提供している機器は利益率を制限されているように見受けられる(特にrpizero)ので競合品との比較が適切かは何とも言い難いがarduino用の1画面fifo付きspiカメラモジュールやuart出力のカメラモジュールと比べると安い。余計な機能や部品が無いから価格差は当然とも言えるが支配的なのは販売数量(と財団の指針)が大きいのだろう。現実問題としてカメラ付きIoT(笑)アプリケーションは強いてarduinoベースでカメラ追加するよりはrpizero+camera(v2)の方が機能的にもコスト的にもシステム構築のしやすさの点からも適しているのだろう。なので折角何個か購入した前記カメラモジュールはお蔵になったのでありました。RPI最強(現時点)であります。