はじめに
低消費電力でセルラー通信が可能なWio BG770Aを使って、IoTカメラを試してみました。
Wio BG770AはGroveコネクタで接続する構成のため、まずは接続できるカメラの選定が必要です。
今回は、
・UARTで接続できる
・JPEG画像を直接取得できる
という条件から、TTLシリアルJPEGカメラを選択しました。
システム構成
本構成は以下の通りです。
TTLシリアルJPEGカメラ → UART → Wio BG770A → LTE-M → SORACOM Harvest Files
カメラから取得したJPEGデータを、Wio BG770A経由でクラウドへ送信します。
使用機材
- Wio BG770A
- TTLシリアルJPEGカメラ
- SORACOM Air SIM
カメラをUARTで接続し、セルラー通信でクラウドへ送信します。
TTLシリアルJPEGカメラの概要
今回使用したTTLシリアルJPEGカメラは、UARTで制御できるカメラモジュールです。
コマンドで撮影し、JPEG形式の画像データを取得できます。
- UART(TTL)で接続可能
- JPEG形式で出力
- VGA / QVGA / QQVGA に対応
Wio BG770Aのような制約のあるデバイスでも扱いやすい構成です。
実装
ソースコードはGithubで公開しています(Claude Codeで実装)。
カメラの制御
TTLシリアルJPEGカメラは、UART経由でコマンドを送ることで制御します。
撮影コマンドを送信し、カメラ内部に画像を保持させた後、画像データを読み出す流れになります。
UARTでのデータ受信
撮影後、カメラからJPEGデータをUARTで取得します。
画像データは数KB〜数十KBになるため、
一度に受信するのではなく、分割して読み出す必要があります。
また、UARTの初期ボーレートは38400bpsと低速なため、115200bpsに変更して転送時間を短縮しました。
SORACOM Harvest Filesへの送信
取得したJPEGデータは、Wio BG770Aのセルラー通信(SORACOM Air)を利用して送信します。
今回はSORACOM Harvest Filesを利用し、画像データをクラウドに保存しました。
これにより、カメラで撮影した画像を遠隔から確認できることを確認しました。
動作確認
実際にカメラで撮影したJPEG画像を、SORACOM Harvest Filesに送信できることを確認しました。
・カメラで撮影 → UARTでデータ取得
・Wio BG770Aでデータ送信
・Harvest Files上に画像が保存される
一連の流れが正常に動作し、SORACOM Harvest Filesに画像を確認できることを確認できました。
試行錯誤
電源電圧の不足懸念
本カメラは仕様上5V電源ですが、3.3Vでも動作することを確認しました。事前に電圧不足には気付いていましたが、まずは動作確認を優先しました。結果として、画像取得およびクラウド送信まで問題なく実現できています。ただし、この動作は保証外であり、「たまたま成立している状態」の可能性もあります。長期的な安定性には注意が必要です。
UARTの速度を上げる
カメラの初期ボーレートは38400bpsと低速なため、そのままでは画像転送に時間がかかります。そこで115200bpsに変更し、転送時間の短縮と安定性の向上を図りました。
| 解像度 | サイズ目安 | 38400bps | 115200bps |
|---|---|---|---|
| QQVGA (160×120) | 約5KB | 約1.1秒 | 約0.36秒 |
| QVGA (320×240) | 約15KB | 約3.2秒 | 約1.1秒 |
| VGA (640×480) | 約40KB | 約8.5秒 | 約2.8秒 |
※JPEGの画像サイズは、撮影条件(画質・被写体など)によって変動するため、目安になります。
ボーレート切り替えのオーバーヘッド
UARTのボーレートは、途中で変更する処理が必要になります。
具体的には、
- 初期ボーレート(例:38400bps)でカメラと通信
- ボーレート変更コマンドを送信
- カメラ側の設定変更
- Wio側のUART設定も変更して再同期
という手順が発生し、この処理には、コマンド送信や再初期化の待ち時間が含まれるため、数十ms〜数百ms程度のオーバーヘッドが発生します。
画像転送(数秒)と比較すると、このオーバーヘッドは非常に小さく、
- VGA画像:数秒
- ボーレート変更:0.1秒前後
といった関係になります。そのため、全体の処理時間に対する影響は限定的です。今回の場合は、画像データの転送時間が全体で支配的となり、 ボーレート変更によるオーバーヘッドよりも、転送速度を上げる効果の方が大きいといえます。UARTのボーレート切り替えは一定のオーバーヘッドを伴いますが、 画像転送のような大容量データを扱う場合には十分許容できる範囲であり、全体としては有効な最適化手法であることも分かりました。
まとめ
Wio BG770Aとカメラを組み合わせて、IoTカメラをサクッと構築してみました。
正直なところ、カメラの解像度はもう少し高くても良いと感じましたが、
このあたりはWio BG770Aに期待している省電力性とのトレードオフだと考えています。
今回はまず「動かしてみる」ことを優先しましたが、シンプルな構成で画像取得からクラウド保存まで一通り実現できました。
次のステップとしては、乾電池などによる電源運用や、より長時間の安定動作についても試していきたいと思います。

