Spresensを使ってネットワークカメラを作る
構成
小型でパワフルなSpresenseメインボードとカメラモジュール、拡張ボードに液晶パネルインターフェースとWi-Fiモジュールを搭載するドーターボードを組み合わせて作ります。
主な構成部品
- Spresenseメインボード
- カメラモジュール
- 拡張ボード
- ドーターボード(拡張ボードにコネクタ接続)
カメラモジュール固定台
ESP-32(SpresenseのSerial2とUART接続)
液晶パネルインターフェースコネクタ(SpresenseのSPIに接続)
パンチルト用サーボモーター(都合によりESP-32側に接続)
実際の写真
接続図
回路図は使用したものの改版版です(SpresenseとESP-32がSPI接続されていますが、使用した版では接続されていません)
ソフトウェア
Spresense側、ESP-32側共にArduino IDEで作成しました。
Spresense
- 主な機能
・startStreaming() で取得したプレビュー画像を液晶に表示
・ブラウザからの撮影指示により takePicture() で静止画取得
・指示があれば、撮影した静止画をSDに保存する
・撮影した静止画をシリアル(20,000bps)でESP32に送出
静止画は二つのバッファを確保して先読みする
ESP-32
- 主な機能
・ Wi-Fiでアクセスポイントに web サーバーとして接続
・ブラウザへ web ページを提供(写真3)
・Spresenseとシリアル通信で連携して下記の操作機能を提供
- 静止画の大きさを指定(QVGA、VGA、QUADVGA)
- 静止画撮影、ブラウザ上に表示
- 撮影の際に保存(Record)した場合、サムネイル画像も表示
- サムネイルをクリックすると撮影時のサイズで表示される
- 表示画像の中心を原点として上下左右をクリックしてパンチルトする
- 自動パン機能で一定時間間隔でパンする
動作画面
現時点での性能と改善点
現状では、QVGAサイズで画像毎に撮影からブラウザ上に画像表示完了するまでに約400~800ms掛かっています、大きな画像であれば更に時間を要します、時間の内訳はQVGAの場合で、静止画の撮影時間(約200ms前後)、Wi-Fiでの送出時間(約300ms前後)の合計となりますが、画像が大きくなると更にシリアルでの送出に時間を要します。
(QVGAの場合、静止画撮影と同時並行で送出していて、送出が撮影時間内に完了するので全体の時間に影響はありませんが、大きな画像ではシリアル転送時間が撮影時間を大きく超えるため、処理時間全体が長くなります)
また、大きな画像ではSDへの書き込みにも時間を要します。
遠隔監視カメラの基本形はできましたが、撮影表示時間が長いので改善したいと思っています。
・撮影に要する時間が長い⇨Arduino IDEでなく、Spresense SDKでかなり短くなる(?)
・シリアル転送に時間が掛かる⇨シリアルでなく、SPIインターフェースを使用する
・Wi-Fiでの送信時間が長い⇨httpdライブラリーの使用で改善できる
まだまだ改善すべき点が多いですが、コンテスト応募締切が近いので一旦ここまでとします
*elchikaへは初投稿で不慣れなため、図なども見苦しい点が多いのはご容赦ください。
-
Goji2100
さんが
2022/09/18
に
編集
をしました。
(メッセージ: 初版)
-
Goji2100
さんが
2022/09/18
に
編集
をしました。
-
Goji2100
さんが
2022/09/19
に
編集
をしました。
(メッセージ: 動画追加)
-
Goji2100
さんが
2022/09/20
に
編集
をしました。
-
Goji2100
さんが
2022/09/20
に
編集
をしました。
ログインしてコメントを投稿する