Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BG770A_photo_transfer_v2.pdf

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Satoru Ohguchi Satoru Ohguchi
May 30, 2026
69

 BG770A_photo_transfer_v2.pdf

Avatar for Satoru Ohguchi

Satoru Ohguchi

May 30, 2026

Transcript

  1. 自己紹介 • 仕事 ◦ Azure Sales Specialist (Azure SSP) @

    Microsoft Japan • 資格 ◦ 情報処理安全確保支援士(SC) ◦ 情報処理技術者(ST/SA/PM/NW/DB/SM/AU/SU/SG/AP/FE/IP) • 趣味 ◦ コンピューター全般(触っていること自体好きです) ◦ コミュニティ運営(Swift Kotion愛好会/SORACOM UG) ◦ フィギュアスケート観戦など ◦ クラシック・吹奏楽を聴きにいくこと 第16558号 Twitter: @o_chicchi Facebook: https://www.facebook.com/ohguchi.satoru Blog: https://www.maripara.org/
  2. プロジェクト紹介:植物の囁きを聴く Wi-Fi なしのミニ温室で植物を見守る IoT システム 🌿 自律制御 CO2・温湿度・光・水分をセンシ ン グ

    CO2注入・散水・換気を自動制御 📡 セルラー通信 SORACOM LTE-M で Wi-Fi 不要 農業現場・屋外でも稼働 📸 AI 観察日誌 撮影画像+センサー値 → Microsoft Foundry が 植物の気持ちを生成 (Optional) 📷 写真をクラウドに送らないと AI が仕事できない → 今日はその「送る」部分の話 出展予定:SORACOM Discovery 2026
  3. システム構成 ATOMS3R-M12 ESP32-S3 OV3660 カメラ Wio BG770A nRF52840 LTE-M マスター

    SORACOM LTE-M plan-D soracom.io Harvest Files / Data JPEG + センサー値 クラウド蓄積 HTTP PUT Harvest Files Harvest Data SCD40 CO2・温湿度センサー 今日の話:ATOMS3R-M12 で撮影した JPEG を Wio BG770A 経由で SORACOM Harvest Files に送るまで Grove UART CAPTURE / JPEG GROVE I2C SORACOM Air
  4. Wio BG770A のスペック MCU Nordic nRF52840(Cortex-M4F, 64 MHz) 通信方式 LTE-M

    (Cat-M1) / NB-IoT セルラーモジュール Quectel BG770A-GL 内蔵 I/O Grove I2C / Grove UART / Grove GPIO ボタン USER ボタン(手動撮影トリガー) LED USER LED(通信中・撮影中に点灯) 開発環境 Arduino core for nRF52840 / PlatformIO SORACOM plan-D / APN: soracom.io / Harvest Data・Harvest Files
  5. 転送する画像サイズの検討 ① BG770A 側の RAM nRF52840 の利用可能な RAM に JPEG

    を丸ごと乗せて HTTP PUT する設計 SRAMが、256KB実装されていることも踏まえてこ の実装に → 安全に確保できる上限が 150 KiB ② LTE-M の伝送速度 LTE-M (Cat-M1) 理論値 588 kbps オーバーヘッドを考慮すると実効は数十〜百 kbps → 数十 KB なら数秒以内に収まる → 仕様として送信の上限サイズを、 150 KiB に設定 閾値を超えた場合の対処は後述(QUALITY 自動調整)
  6. 2 種類のカメラモジュール (M5Stack社製) ATOMS3R-CAM (C126) ATOMS3R-M12 (C126-M12) MCU ESP32-S3-PICO-1-N8R8 ESP32-S3-PICO-1-N8R8

    Flash / PSRAM 8 MB / 8 MB OPI 8 MB / 8 MB OPI カメラ GC0308(30 万画素) OV3660(300 万画素, 120° 広角, F2.4) 解像度上限 VGA 640 × 480 UXGA 1600 × 1200(運用上限) JPEG 方式 ソフトエンコード RGB565 → frame2jpg() HW エンコード PIXFORMAT_JPEG 直 既定解像度 VGA SVGA 800 × 600 同じファームウェアで 2 機種に対応(起動時にセンサ PID を読み出して自動判定)
  7. 全解像度の実測データ( QUALITY=80・室内照明) OV3660(ATOMS3R-M12)— HW JPEG 解像度 寸法 代表値 150KiB との比較

    QVGA 320 × 240 約 3,400 Byte 余裕あり HVGA 480 × 320 約 4,900 Byte 余裕あり VGA 640 × 480 約 9,400 Byte 余裕あり SVGA ★ 800 × 600 約 13,800 Byte 余裕あり XGA 1024 × 768 約 21,400 Byte 余裕あり SXGA 1280 × 1024 約 34,700 Byte 余裕あり UXGA 1600 × 1200 約 51,000 Byte 余裕あり ★ 既定解像度 GC0308(ATOMS3R-CAM)— ソフトエンコー ド 解像度 代表値 QVGA 約 5,700 Byte HVGA 約 10,000 Byte VGA ★ 約 19,000 Byte ★ 既定解像度 全解像度・全機種とも SAFE_JPEG_SIZE(150 KiB = 153,600 B)の上限内に収まることを実機で確認
  8. 同解像度での 2 機種比較 解像度 OV3660(HW JPEG) GC0308(ソフト) サイズ比 QVGA 320×240

    約 3,400 Byte 約 5,700 Byte × 1.7 HVGA 480×320 約 4,900 Byte 約 10,000 Byte × 2.0 VGA 640×480 約 9,400 Byte 約 19,000 Byte × 2.0 なぜ約 2 倍になるのか OV3660(HW JPEG) カメラチップが直接 JPEG 出力 → 高効率なハードウェアエンコード GC0308(ソフトエンコード) RGB565 で取得後、ESP32-S3 が frame2jpg() でソフトエンコード → 圧縮効率が下がりサイズが増える
  9. 工夫:QUALITY 自動調整で 150 KiB 以内に収める CAPTURE 受信 現在の QUALITY で撮影

    サイズ > 150 KiB? 閾値チェック QUALITY を -10 下限 30 まで繰り返す 送信 OK HTTP PUT へ E_TOO_LARGE を返す (QUALITY 30 でも超過) 実装例(仕様書より) QUALITY=80 で撮影 → 178 KB → NG → QUALITY=70 で再撮影 → 142 KB → OK → 送信
  10. 実際に動いた [SCHED] capture tick (hour=03) [CAPTURE] OK size=13785 crc(recv=0xA1B2 calc=0xA1B2)

    MATCH [HARVEST/FILE] PUT /wg-bg770a-01/2026/05/21/2026-05-21T03-00-00.jpg (13785 bytes) [HARVEST/FILE] status=201 [HARVEST/DATA] event=capture jpeg_size_bytes=13785 jpeg_crc16=41394 [HARVEST/DATA] status=201 3 時間ごと 自動撮影スケジュール 13,785 Byte SVGA JPEG 実測(OV3660) CRC 一致 UART 転送の整合性確認 status 201 Harvest Files PUT 成功
  11. まとめ 1 RAM サイズと伝送速度の両面から サイズを検討。安全に送れるサイズで実装。 2 HW JPEG(OV3660)vs ソフトエンコード(GC0308)で同解像度でも約 2

    倍のサイズ差があることを 知れました 3 全解像度で上限内に収まることを実機で確認 4 閾値超えがあり得そうな場合備え QUALITY 自動調整(-10 ずつ・下限 30)で対応