1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Node-RED MCU Edition用のCameraノードを作ってみた

Posted at

はじめに

Moddable SDK 5.2.0でカメラデバイスがサポートされました。
その時の経緯はこちらにまとめています。

Node-RED MCUでカメラデバイスを使用できるようにするCameraノード(mcu_camera)を作った備忘メモです。

Moddable SDKのサンプルプログラム

Moddable SDKのサンプルプログラムの中に
examples/io/imagein/camera
というディレクトリがあり、その中の
camera-server-jpeg
を使用します。

Moddable SDKのサンプルプログラムをNode-RED MCU Editionのノードへ移植する

サンプルプログラムから移植した際の変更点は以下です。

  • Node-REDノードの設定画面で画像フォーマットとサイズ(横 x 縦)を指定できるようにする
  • 常にカメラデバイスが動作している(camera.read()を繰り返している)動作を、リクエスト(Node-REDノードの入力)があった時に動作するようにする
  • 上記の変更により、camera.cでハードコーディングされているcamera_config.fb_count = 3の問題(frame bufferに3つの画像が保存されるため、frame(画像データ)を取得すると以前の古いデータが取得される)を回避するため、3回撮影してからframe(画像データ)を取得する

ハマった問題

Node-REDノードから画像データを出力する時にエラー(host objectエラー)が発生しました。
生成AI(Claude)に助けてもらい、データを変換することで解決しました。
(画像データはバイナリデータなので、Array.from()ではなく、Buffer.from()を使用)

camera.js
frame.bytes ??= new Uint8Array(frame);
msg.payload = Buffer.from(frame.bytes);

mcu_ameraノード

npmとNode-REDノードライブラリに登録しましたので、ぜひご利用ください!

残っている課題

Moddable SDK側の対応待ちの課題が2つ残っています。(2025年1月16日時点)
ソースコードを修正すれば解決する問題ですが、JavaScriptコードから設定変更が可能になるまで待つ必要があります。

カメラデバイスのクロック周波数が高すぎる問題

撮像(画像)が水平方向に反転する問題

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?