HaLowLink ViewSense
Visual Sensor

A battery-powered, long-range Wi-Fi HaLow visual sensor that regularly captures still images and ships them over a sub-GHz link — designed for multi-year life on 4×AA. A hostless camera-as-a-sensor: one physical device can ultimately produce N software-defined sensing outputs.

Hostless
MM8108 on-chip CPU
No host MCU — app runs on the HaLow SoC
240 µA
Always-on sensing floor
HM0360 AoS monitor mode (datasheet typ.)
~10 mo*
Est. life · 4×AA
VGA→JPEG / 15 s; ~5 mo RAW worst case · *MM8108 figs TBC
~1 km+
Sub-GHz HaLow range
802.11ah, penetrates obstacles

Architecture Overview

A two-chip, hostless visual sensor: an ultra-low-power always-on image sensor watches the scene; a Wi-Fi HaLow SoC sleeps until an event, captures one frame, and ships it.

The design collapses a conventional camera node — image sensor + ISP/host MCU + Wi-Fi module — into two active ICs. The Himax HM0360-MWA (the monochrome variant) "Always-on Sensing" (AoS) image sensor runs continuously in its AoS monitor mode at a datasheet-typical 240 µA, performing on-chip motion and zone detection at a low internal monitoring resolution. The Morse Micro MM8108 Wi-Fi HaLow SoC runs the entire application hostless on its on-chip CPU — there is no separate host microcontroller. Between events the MM8108 stays associated to the access point in a low-DTIM beacon-tracking standby, woken only when the HM0360 asserts its interrupt. note All MM8108 currents in this document are placeholders to be confirmed against the Morse Micro datasheet/SDK — no MM8108 datasheet was available at authoring time; the HM0360 figures are from its datasheet (Preliminary v04).

This yields the platform's core thesis in silicon: a single physical device that is a software-defined sensor — the same captured frame is analysed in the cloud/edge AI pipeline to produce counts, readings, statuses and detections, with new "sensors" added by software, not hardware.

The defining constraint is that the MM8108 has no parallel-DVP or MIPI-CSI-2 camera receiver. The frame is therefore moved from sensor to SoC over a serial path (the HM0360's 1-/4-bit serial output captured on the SoC's SPI), with an external line-buffer FIFO as the de-risking fallback. The second defining constraint is energy. The sensor is monochrome 8-bit, so an uncompressed active VGA frame is 640 × 480 × 1 byte = 307,200 B ≈ 300 KB (a colour RGB sensor would be ~3× that, ~900 KB — but this is the mono part). Per the planned data flow, that RAW frame is read into the MM8108 and then JPEG-encoded on the SoC before transmit, so both the serial read of the raw frame and the compressed transmit contribute to the per-event cost; resolution, the read interface width, and event rate are the primary levers on battery life.

Design intent Maximise standby efficiency (sleep deeply, sense cheaply) and minimise bytes-on-air per event. Everything downstream of those two principles is an optimisation.

Annotated Block Diagram

Power rails (green), control/I²C (cyan, dashed), and the image data path (pink). The SoC is the only processor; the camera is the only always-on sensor. A QSPI NOR flash is mandatory in this standalone/hostless design — it holds the boot firmware, Wi-Fi credentials and the TLS client certificate/keys the device needs to reach the cloud.

4× AA L91 Li / 1.5V · ~16.2 Wh ~6.0 V stack Buck → 3.3 V system rail LDOs 2.8 / 1.8 V sensor AVDD/IOVDD Morse Micro MM8108 Wi-Fi HaLow SoC — HOSTLESS On-chip CPU runs the application I²C master · GPIO · SPI · SDIO DTIM standby + on-chip JPEG encode (all 8108 currents TBC — no datasheet) TX ~149 mA (MCS7@8MHz, TBC) Himax HM0360-MWA AoS sensor · 640×480 · 8-bit mono AoS monitor 240µA · VGA readout 7.8mA Internal osc + LDO · INT on event RAW VGA = 307,200 B ≈ 300 KB (mono) Sub-GHz front end 802.11ah match + antenna Regional band (902–928 / 863–868…) 32.768 kHz RTC DTIM beacon timing QSPI NOR flash FW + Wi-Fi creds TLS certs / keys UX & commissioning DPP/reset button · status LED · (opt.) PIR · tamper each consumes MM8108 GPIO — see §IO budget Fixed-focus lens (M12 / wafer-level) 3.3 V 2.8 / 1.8 V → camera I²C cfg · XSHUTDOWN/XSLEEP (GPIO) INT → GPIO (wake) pixel bus: PCLKO→clk · D[n] data · FVLD/HVLD framing RF I/O QSPI ×4 + CS + CLK (6 IO)
Two active ICs + a mandatory QSPI NOR flash (purple). Green = power, cyan dashed = control/wake/UX, pink = pixel data path, purple = QSPI boot/secrets bus. FIFO fallback (AL422B) inserts on the pink path if hostless serial capture is not viable. Every external bus and UX part consumes MM8108 GPIO — the IO budget (§5) confirms the pin count closes.

Key Architectural Decisions

Eight decisions define the BOM, the power profile, and the principal technical risks.

1 · Hostless on the MM8108

The SoC's internal CPU is the only processor. Removing a host MCU cuts cost, board area, standby power and firmware surface — at the cost of porting the capture/compress/TX app onto the SoC.

−1 IClower Iq

2 · Event-driven Always-on Sensing

The HM0360 senses continuously in AoS monitor mode at 240 µA (datasheet typ.) and asserts INT only on motion/zone events; the SoC sleeps in DTIM standby between events. This is the primary energy lever.

240 µA monitorwake-on-event

3 · Serial data-path bridge

No DVP/CSI-2 receiver on the SoC, so read the frame in 1-/4-bit serial over the SoC's SPI. De-risk with an external AL422B FIFO buffering the HM0360 parallel output.

to confirm

4 · Read interface, then compress

The full mono RAW frame (VGA = 300 KB) is always read off the sensor — so the serial-read time (1-bit vs 4-bit) matters as much as compression. The 8108 then JPEG-encodes before TX (~35 KB). Mitigate with 4-bit read, QVGA, ROI/motion crops, event-only TX.

4-bit ≈ 4× faster read

5 · Shared 1.8 V IO rail

Run I²C/INT/data at a common 1.8 V to avoid level shifters — if the SoC supports VDDIO = 1.8 V. Otherwise add a small translator.

to confirm

6 · Minimal-glue sensor

HM0360 internal oscillator + internal LDO mean no sensor crystal and only two external rails — simpler, cheaper, fewer failure points.

no MCLK xtal2 rails

7 · QSPI flash for boot + secrets

A standalone, cloud-connected SoC needs external NV storage: boot firmware, Wi-Fi credentials, and the TLS client cert + key. A small Quad-SPI NOR is mandatory; secure-boot/flash-encryption keys stay in the SoC.

+1 IC6 IO

8 · IO budget must close

Pixel path + QSPI + control + UX all draw on the SoC's GPIO. Enumerated at ~19–27 IO (§5). Prefer 4-bit serial (fewer pins), confirm free GPIO on the package, and drop the redundant PIR before the DPP button/LED.

confirm pins

Bill of Materials & Rationale

Major components only. Quantities are per-unit; passives summarised. Rationale ties each part to a design decision above.

ComponentExample partEst. unit costRole / rationale
U1 · HaLow SoCMorse Micro MM8108 (3.3 V VBAT/VDDIO)≤ $6Processor + radio + app (hostless). Sub-GHz range, beacon-tracking DTIM standby, on-chip CPU removes the host MCU + on-chip JPEG encoder; its SPI master clocks in the camera frame. Capped at $6 incl. support passives/match at volume. Currents/DTIM levels TBC against MM8108 datasheet.
U2 · Image sensorHimax HM0360-MWA (640×480, 8-bit mono, AoS)≈ $3–5AoS monitor mode 240 µA (datasheet typ.); VGA 60FPS readout 7.8 mA, QVGA 3.2 mA. 1-/4-/8-bit serial or parallel output; I²C (1 MHz) is register-control only; internal osc+LDO cut external BOM.
U3 · Buck regulatorTI TPS62840 (or MIC2288)≈ $0.60~6 V stack → 3.3 V system rail. Iq < 2 µA and high light-load efficiency — decisive for the standby budget.
U4 · LDO 2.8 V (AVDD)Torex XC6220A282 / TI TPS7A13≈ $0.25Sensor analog rail; enable-pin power-gated during XSHUTDOWN.
U5 · LDO 1.8 V (IOVDD)Torex XC6220A182≈ $0.25Sensor IO rail; can also be the shared 1.8 V IO supply. DVDD 1.2 V is generated inside the HM0360.
X1 · RTC crystal32.768 kHz, ±20 ppm (Abracon ABS25)≈ $0.35Mandatory for MM8108 DTIM beacon tracking in snooze — without it the SoC must run a higher-current RC.
U8 · QSPI NOR flash16–32 Mbit Quad-SPI (Winbond W25Q32 / GD25Q)≈ $0.30Mandatory in standalone/hostless mode. Holds boot firmware (XIP or load-to-SRAM), Wi-Fi credentials, and the TLS client certificate + private key for the cloud link. Quad I/O for fast boot. Secure-boot/flash-encryption keys live in the SoC; this part may also host the encrypted secure-storage blob.
SW1 · DPP / reset buttonTact switch + ESD≈ $0.10Wi-Fi Easy Connect (DPP) commissioning + factory reset on a no-display device. 1 GPIO.
D1 · Status LEDBi-colour / RGB, low-current≈ $0.10Pairing / link / fault feedback in the field. 1 GPIO (PWM-able). Off in steady state to protect the budget.
ANT1 · Sub-GHz antenna + matchPCB trace / patch + π-match, region-specific≈ $0.50–1.50868 (EU) / 915 (US) / 920 (JP/AU) MHz. Match affects TX efficiency → battery life; gain controlled for EIRP compliance.
LENS1 · LensFixed-focus M12, f/2.0–2.8≈ $2–5Fixed focus — no actuator power; FoV (60–120°) sized to the monitored zone.
BT1 · Battery + holder4× AA Energizer Ultimate Lithium L91≈ $0.80 (holder)Lithium: flat discharge, −40…+60 °C, low self-discharge, light. ~16.2 Wh usable.
U6 · Level shifter conditionalTI TXS0104E (4-ch, auto-dir)≈ $0.30Only if MM8108 VDDIO ≠ 1.8 V — translates I²C/INT/XSHUTDOWN/XSLEEP. DNP if 1.8 V IO is confirmed.
U7 · Line FIFO fallbackAverLogic AL422B (3 Mbit)≈ $1.50Buffers the parallel frame if hostless serial capture isn't viable. +~5 nets / +5 SoC IO / 16-pin pkg. DNP if the serial PoC passes.
PIR1 · PIR sensor optionalLow-power PIR (e.g. AS6221-class digital)≈ $0.40Optional second motion modality. Largely redundant — the HM0360 AoS already wakes on motion at ~0.24 mA — so DNP by default. 1 GPIO if fitted.
U9 · IO expander conditionalTI TCA9555 (I²C, 16-bit)≈ $0.35Only if SoC GPIO is exhausted (see IO budget §5) — moves slow UX signals (button/LED/tamper) onto the existing I²C bus. DNP if pins close natively.
Passives / protectionDecoupling, ESD, reverse-polarity≈ $0.50–1.00Per-rail decoupling; battery reverse-polarity + ESD on external pins; IP-rated enclosure + seals for outdoor use.

Core landed BOM

U1–U5, U8 (QSPI), X1, ANT1, LENS1, BT1, SW1/D1 + passives ≈ $15–22 at production quantity (SoC capped at $6). QSPI flash + DPP button + LED add ~$0.50 — mandatory for a standalone, commissionable, cloud-connected device.

With conditionals

+ U6 level shifter, U7 FIFO, U9 IO-expander ≈ $16–24. All designed-in as DNP footprints, populated only if their PoC/IO gate fails.

Plan-C: JPEG-at-source

An ArduCAM Mega (SPI + on-module JPEG, ~$25–35) trivially solves the no-DVP problem and ships ~35 KB frames directly — but adds cost + a redundant camera-side MCU. A prototyping stepping-stone, not production.

From BOM to a finished product — fully-costed CM build-up

The landed BOM is only the parts. A shippable, durable, IP-rated outdoor sensor also carries mechanical/enclosure parts, board fab, SMT + box-build labour, test & RF calibration, packaging, yield loss, and the contract manufacturer's value-add / margin (MVA). Figures below reflect a China/Taiwan CM at a realistic first production run (~10k units), and are deliberately on the conservative (higher) side for a robust small product.

Cost linePer unitWhat it covers
Landed BOM (mid)≈ $17.50All components above, duty/freight to the CM, SoC capped at $6. The only line that falls fast with silicon volume.
PCB bare board≈ $2.004-layer, ENIG, controlled-impedance RF section, small panel. Tighter spec than a 2-layer consumer board because of the 900 MHz match.
SMT / PCBA≈ $3.00Double-sided placement, fine-pitch SoC + shield can, reflow, AOI/X-ray on the RF + BGA-class parts.
ME / enclosure parts≈ $4.00Injection-moulded UV-stable housing, gasket/O-ring, lens window + seal, mounting boss, screws/inserts — the cost of durable & IP-rated, not bare PCBA.
Box-build & assembly≈ $2.50Final mechanical assembly, battery contacts/holder fit, gasket seating, torque-controlled close-up, labelling.
Test, RF cal & IP check≈ $1.50Functional test, per-unit RF/antenna calibration + golden-sample check, leak/IP-seal verification, serial/MAC provisioning.
Packaging & accessories≈ $1.20Retail/bulk box, mount kit, quick-start card, ESD/moisture bag.
Yield / scrap (~3%)≈ $0.95Realistic first-run rework/scrap on an RF + sealed-mechanical product.
MVA / CM margin (~12%)≈ $3.90Contract manufacturer's value-add & gross margin on parts + labour. Negotiable down with volume & multi-year commit.
FOB unit cost≈ $33–42Ex-works the CM, before logistics to region, import duty, and channel/brand margin. Mid build ≈ $37.
One-time NRE / toolingEst.Amortized per unit
Injection mould (hardened, multi-cavity)≈ $18,0005k → $11.30
10k → $5.65
50k → $1.13
Test jig + RF fixture≈ $6,000
SMT stencil + assembly fixtures≈ $2,500
Certification (FCC / CE / RCM / TELEC)≈ $30,000
NRE total≈ $56,500

BOM is < half the story

At ~$17.50 the parts are ~47% of FOB. The other ~53% is the ME, labour, test and MVA that turn a board into a robust, sealed, field-deployable sensor. Costing the BOM alone understates the unit by ~2×.

Durability has a price

The IP-rated enclosure, gasketing, RF calibration and leak test add ≈ $5–6/unit over a bare indoor build — deliberate, because the product's premise is unattended outdoor multi-year operation.

China vs Taiwan CM

China (Shenzhen/Dongguan): lowest VA, strongest ME/box-build ecosystem, best for cost. Taiwan: higher labour but tighter RF/IP-process control and IP-protection — favoured for the first qualified run, then dual-source. Tooling is portable between them.

Scaling levers Two-thirds of the unit cost is volume-elastic: SoC + sensor pricing, SMT/box-build rate, and NRE amortization all drop sharply past 50k units. A mature run targets FOB ≈ $22–28 (BOM ~$13, MVA renegotiated, NRE < $1.20/unit) — but the conservative ~$37 figure is the one to plan a first run around.

Interface / Netlist & the pixel data path

Three buses leave the SoC: I²C (control only — register reads/writes), the pixel data path (the hard part — how a frame is actually serialised into the SoC), and QSPI to the boot/secrets flash. Plus GPIO for wake, power-gating and UX. Each is enumerated against the IO budget below.

How the image is serialised — I²C is not the data path

The HM0360 exposes the I²C/SCCB bus purely for register access — set mode, ROI, exposure, framing, read status (per the Himax datasheet). It is far too slow (≤1 Mbps) to carry pixels. The bulk image leaves the sensor on its dedicated output bus, and there are three candidate ways to clock it into a SoC that has no DVP/MIPI-CSI receiver:

  • (A) Serial-over-SPI/SDIO, sensor-clocked. The HM0360 is the timing master: it drives PCLKO as the bit/byte clock and presents pixels on its data lines while FVLD/HVLD mark frame/line boundaries. The MM8108 must act as a clock-slave serial receiver with DMA — sampling the data bus on PCLKO edges straight into SRAM with no CPU per-byte. This is exactly the capability that gates the design (R-01): an SPI/SDIO peripheral that ingests an externally-clocked stream hostlessly. The HM0360 supports 1-/4-/8-bit serial output; the read time of the 300 KB mono VGA frame is set by this width and the PCLKO rate — ~307 ms at 1-bit/8 MHz, ~77 ms at 4-bit/8 MHz, ~26 ms at 4-bit/24 MHz — so 4-bit is strongly preferred. Note: the MM8108's SPI master interface (used to clock the frame in) has only been bring-up-tested to date — see R-01.
  • (B) FIFO-decoupled (fallback). The sensor writes its 8-bit parallel output into an AL422B line FIFO at its own pixel rate; the SoC then clocks the FIFO read port (RCK/RE) at its convenience over SPI/SDIO. This removes the clock-slave requirement entirely — the SoC is always the master — at the cost of one IC and ~5 nets. Guaranteed to work; the safe production path if (A) fails.
  • (C) JPEG-at-source camera (Plan-C). A module with on-sensor JPEG + SPI (e.g. ArduCAM) hands the SoC a small compressed buffer over plain SPI — trivial to ingest, but adds a redundant camera-side MCU and cost. Prototyping stepping-stone.

Note the MM8108's own hardware JPEG encoder (§7+) acts on the frame after it is in SRAM — so path (A)/(B) still pay the full raw read off the sensor; JPEG only shrinks the transmit. That is why the serial read, not the TX, dominates the VGA active time.

Signal groupHM0360 / part pinMM8108Function
Camera — control (I²C, slow)
ConfigSCL / SDAI²C master (2 IO)Register R/W only — mode, ROI, exposure, framing, status. Not the pixel path.
WakeINTGPIO IRQ (1 IO)AoS motion/zone event → wake SoC
Power-gateXSHUTDOWN / XSLEEPGPIO (2 IO)Hardware shutdown (~1 µA) / sleep-wake between events
Camera — pixel data path (the bulk read)
Pixel clockPCLKOSPI/SDIO clk-in (1 IO)Sensor-driven bit/byte clock — SoC samples on its edges (clock-slave)
Pixel dataD0 (1-bit) or D0–D3 (4-bit)SDIO data (1 or 4 IO)Serial pixel stream. 4-bit ≈ 4× faster read — preferred
FramingFVLD / HVLDGPIO (2 IO)Frame / line valid — drive the capture state machine / DMA gating
Boot / secrets — QSPI NOR flash (mandatory, standalone mode)
QSPIFlash IO0–IO3QSPI data (4 IO)Quad I/O — boot firmware + Wi-Fi creds + TLS cert/keys; XIP or load-to-SRAM
QSPIFlash CLK / CS#QSPI clk+cs (2 IO)Clock + chip-select. (Many MM8108 modules wire this to dedicated flash pins, not the GP IO pool — confirm.)
Tie-offs (no IO)
Clock selectCLK_SELGNDSelect HM0360 internal oscillator
UnusedMCLK, RTCGNDNo external master clock crystal needed
FIFO fallback netlist (path B) If clock-slave serial capture is not viable: HM0360 8-bit parallel D[7:0] + PCLK/VSYNC/HSYNCAL422B write port; AL422B read port → SoC SPI/SDIO under SoC RCK/RE control. The SoC is the master and reads at its own pace. Costs ~5 more SoC IO than the 4-bit serial path — which is precisely why the IO budget below matters.

MM8108 IO budget — enumerated pin by pin

The hostless design loads the SoC's GPIO with the camera control + pixel path, the QSPI flash, and the UX/commissioning parts simultaneously. They must be counted explicitly — running out of IO is a real risk that forces a pin-mux, a GPIO expander, or dropping a feature. Two columns: the preferred 4-bit serial capture path vs the FIFO fallback (which needs the most IO).

FunctionSignalsIO · 4-bit serialIO · FIFO fallbackMandatory?
Camera I²C controlSCL, SDA22 (shareable w/ flash? no — diff bus)Yes
Camera wakeINT11Yes
Camera power-gateXSHUTDOWN, XSLEEP22Yes
Pixel clockPCLKO11Yes
Pixel dataD0–D3 / D0–D748Yes
Pixel framingFVLD, HVLD22 (VSYNC/HSYNC)Yes
FIFO controlWE, RE, RCK, RRST, WRST05Fallback only
QSPI flashIO0–3, CLK, CS#6 (may be dedicated pins)6Yes (standalone)
DPP / reset buttonBTN11Yes (commissioning)
Status LEDLED11Strongly desired
PIR sensorPIR_OUT11Optional
Tamper / case switchTAMPER11Optional
Low-battery / ADCVBAT_SENSE11Desired
Subtotal — mandatory only1927
Total — with all UX/sensors2432
IO budget is a gating constraint (R-13) The pixel path + QSPI + camera control alone consume ~19 IO in the best case (4-bit serial) and ~27 IO in the FIFO fallback — before a single button, LED or PIR. The free GPIO count on the chosen MM8108 package/module must be confirmed against this table, because:
  • If QSPI uses dedicated flash pins (common on SoC modules), it frees ~6 GP IO — the budget closes comfortably.
  • If the module exposes few GP IO, the FIFO fallback (32 IO) likely won't fit — favouring the 4-bit serial path on IO grounds as well as cost, or forcing an I²C GPIO expander (TCA9555, +1 bus, for the slow UX signals) / pin-mux.
  • DPP push-button (Wi-Fi Easy Connect commissioning) and a status LED are effectively mandatory for a no-display field device; PIR and tamper are the first to cut if IO is tight (the HM0360 AoS already provides motion, so PIR is largely redundant — see decision 8).

Power & Battery-Life Budget

Average current = always-on floor (HM0360 AoS monitor + MM8108 DTIM standby) + per-event charge, averaged over the duty cycle. The data flow modelled is the real one: HM0360 captures a mono RAW frame → reads it into the MM8108 over the serial/SPI path → the MM8108 JPEG-encodes on-chip → transmits the compressed frame over HaLow. So both the raw read and the compressed TX are charged.

Energy budget. 4× AA Energizer L91 ≈ 3000 mAh/cell × 6 V (4-series) = 18 Wh nominal → ~16.2 Wh usable at ~90% buck efficiency ≈ 4,900 mAh referred to the 3.3 V rail. (A flat 3000 mAh-at-rail assumption — ignoring the boost from the 6 V stack — is more pessimistic and shortens every figure below by ~38%.)

What each term costs (explicit, datasheet where available):

  • HM0360 AoS monitor: 240 µA continuous (datasheet typ., AoS monitor mode — internally a QQVGA/2 FPS class monitor, not VGA). VGA 60 FPS readout is 7.8 mA but only during the read window.
  • MM8108 DTIM standby + JPEG-encode + TX: all TBC — no MM8108 datasheet was available, so these use placeholder values (DTIM ~100 µA, TX ~149 mA at MCS7/8 MHz, encode time small). Treat MM8108 numbers as estimates pending datasheet/SDK measurement.
  • Serial read of the 300 KB mono frame is set by the interface width, not I²C: 1-bit @ 8 MHz PCLKO ≈ 307 ms; 4-bit ≈ 77 ms; 4-bit @ 24 MHz ≈ 26 ms. (I²C at its 1 MHz max would take 2.5 s — which is exactly why I²C is register-control only, never the pixel path; see §5.)
  • HaLow TX of the JPEG (~35 KB @ MCS7, ~26 Mb/s usable) ≈ 11 ms; the uncompressed 300 KB RAW would be ~95 ms — the reason for encoding before transmit.

Itemised baseline — VGA capture → 8108 JPEG → 35 KB TX, 1 frame / 15 s

Per-state contribution as a cycle-averaged current (peak current × duration ÷ 15 s cycle). The idle floor runs the whole 15 s; the event states run once per cycle. 4-bit serial read assumed (the recommended interface). HM0360 currents are datasheet; MM8108 currents are TBC.

State / componentPeak currentDuration / cycleCycle-avgSource
Idle floor — held continuously between events
HM0360 AoS monitor mode0.240 mAcontinuous240 µAdatasheet
MM8108 DTIM standby (assoc held)~0.10 mAcontinuous~100 µATBC
Buck Iq (light load)~0.005 mAcontinuous5 µAest.
Per-event work — once every 15 s
Wake + HaLow re-assoc check~25 mA~5 ms~8 µATBC
I²C sensor config / trigger~15 mA~2 ms~2 µAest.
HM0360 VGA readout (sensor)7.8 mA~77 ms (4-bit@8MHz)~40 µAdatasheet
MM8108 capture-DMA + JPEG encode~30 mA~77 ms + encode~160 µATBC
HaLow TX (35 KB JPEG @ MCS7)~149 mA~11 ms~110 µATBC
ACK / socket teardown~25 mA~5 ms~8 µATBC
Total average current≈ 0.67 mA
Modelled life (4×AA, 4900 mAh rail)≈ 305 d · ~10 mo
Read this before quoting any life figure The dominant variable terms (DMA+encode, TX, DTIM) are all MM8108 numbers that are not yet datasheet-confirmed. The figure above (~0.67 mA → ~10 months at 1 frame/15 s, full VGA) is an estimate. The two things that move it most: (1) the real MM8108 DTIM-standby + encode current, and (2) whether the 4-bit serial read holds (a 1-bit read at 307 ms quadruples the read term). If the budget must be pessimistic, the RAW-over-air worst case (no JPEG, 300 KB TX every 15 s) lands at ~1.34 mA ≈ ~5 months — and that, not the JPEG figure, is the floor to design against until the MM8108 numbers are measured.

Operating-point summary — estimates, MM8108 currents TBC

Operating point (1 frame / 15 s)Read + TXAvg currentModelled life (4×AA, 4900 mAh rail)
VGA → 8108 JPEG (planned baseline)4-bit read 77 ms + 35 KB TX≈ 0.67 mA≈ 305 d · ~10 mo
QVGA → 8108 JPEG (lighter, less detail)4-bit read 19 ms + 12 KB TX≈ 0.41 mA≈ 505 d · ~17 mo
VGA RAW over air (no JPEG — pessimistic floor)4-bit read 77 ms + 300 KB TX≈ 1.34 mA≈ 152 d · ~5 mo
VGA → JPEG, 1-bit read (if 4-bit not available)1-bit read 307 ms + 35 KB TX≈ 0.83 mA≈ 246 d · ~8 mo
These are estimates, not specifications Life here is dominated by MM8108 figures not yet datasheet-confirmed (DTIM standby, JPEG-encode current, TX current). The planned VGA→JPEG baseline ≈ 10 months; the honest pessimistic floor is the RAW-over-air case ≈ 5 months. Two unknowns swing it most: (1) the real MM8108 standby/encode/TX currents, and (2) whether the 4-bit serial read is achievable on the SoC's SPI master (only bring-up-tested to date — R-01). Re-baseline this whole section once both are measured. Multi-year life is not claimed for VGA on 4×AA without further duty-cycling / AoS-duty reduction.

Relative sensitivity: MCS rate vs range — shape, not absolute (TX current TBC)

A relative study of how the link's modulation/coding scheme trades range against rate: a robust low MCS reaches farthest but transmits slower and at higher TX current, so each frame costs more energy; a high MCS is fastest/cheapest per frame but needs a strong, short link. Modelled at a 12 KB compressed frame / 15 s, 8 MHz / 1 stream. The MCS TX currents (191 mA → 149 mA) are placeholders pending the MM8108 datasheet — read the direction and ratio of the trade, not the absolute day counts.

MCS @ 8 MHzPHY rateTX currentTX / 12 KB frameAvg currentModelled life (4×AA)Relative range
MCS03.25 Mbps≈ 191 mA≈ 38 ms≈ 0.94 mA≈ 217 d · 0.59 yrLongest — >1 km / deep-indoor / NLOS
MCS16.5 Mbps≈ 185 mA≈ 19 ms≈ 0.69 mA≈ 294 d · 0.81 yrVery long
MCS29.75 Mbps≈ 179 mA≈ 13 ms≈ 0.61 mA≈ 334 d · 0.91 yrVery long
MCS313.0 Mbps≈ 173 mA≈ 9 ms≈ 0.57 mA≈ 358 d · 0.98 yrLong
MCS419.5 Mbps≈ 167 mA≈ 6 ms≈ 0.53 mA≈ 384 d · 1.05 yrLong / medium
MCS526.0 Mbps≈ 161 mA≈ 5 ms≈ 0.51 mA≈ 399 d · 1.09 yrMedium
MCS629.25 Mbps≈ 155 mA≈ 4 ms≈ 0.51 mA≈ 405 d · 1.11 yrMedium
MCS7 (nominal)32.5 Mbps≈ 149 mA≈ 4 ms≈ 0.50 mA≈ 409 d · 1.12 yrMedium-short (good link)
MCS839.0 Mbps≈ 149 mA≈ 3 ms≈ 0.49 mA≈ 414 d · 1.14 yrShort (strong signal)
MCS943.3 Mbps≈ 149 mA≈ 3 ms≈ 0.49 mA≈ 417 d · 1.14 yrShortest — near AP / clear LOS
Reading the table The takeaway is the ~1.9× relative swing across the MCS span, driven purely by air-time × TX current — the absolute day counts inherit the unconfirmed MM8108 TX figures. Practical guidance holds regardless: let the link rate-adapt (run the highest MCS the margin sustains) and rely on smaller frames rather than a low MCS to hold range — a long-range deployment forced to MCS0/1 should pair it with QQVGA frames and a longer interval. Wider bandwidth (16 MHz) shortens air-time but is more range-limited; 1/2/4 MHz extends range at lower rate — the same trade in the other direction.

Camera share

240 µA AoS monitor (datasheet) — runs whether or not events fire — plus a brief 7.8 mA VGA-readout window per capture. HW standby is 11 µA and full HW-shutdown ~1 µA (datasheet) for long dormancy.

Radio share

DTIM standby (33–176 µA) + per-event TX/RX. Scales with frame size × event rate — the term you actually control.

Regulator share

Buck Iq + conversion loss at µA loads. A poor light-load efficiency can quietly halve life — spec PFM/burst-mode Iq carefully.

Sensitivity Analysis — battery life by resolution

Battery life is driven by three controllable variables: capture resolution (which sets both bytes-on-air and the serial read-out time off the sensor), capture interval, and event rate. Resolution is the axis the other sections summarise into a single "frame size", so we make it explicit here — pick a resolution tab to see its full interval/compression sweep. Relative study The day/year figures in these tabs were computed against an earlier optimistic floor (DTIM ~30 µA) and a JPEG-on-8108 path; they are relative illustrations of how resolution/interval/compression trade against each other. For the corrected absolute estimate (with the ~100 µA TBC DTIM and the planned data flow), use the §6 operating-point summary — VGA→JPEG ≈ 10 months, RAW-over-air ≈ 5 months, MM8108 currents TBC.

VGA reads ~300 KB off the 1-bit serial path (~300 ms — the dominant active cost) regardless of how it is then transmitted. On-chip JPEG cuts only the transmit bytes, not the read. Best VGA life is therefore ~0.7 yr: full detail costs energy.

ScenarioOn airIntervalAvg currentModelled life
VGA RAW (uncompressed)300 KB15 s≈ 1.66 mA≈ 0.34 yr · 123 d
VGA → on-chip JPEG recommended~35 KB15 s≈ 0.83 mA≈ 0.67 yr · 247 d
VGA → JPEG, off-hours~35 KB60 s≈ 0.46 mA≈ 1.22 yr · 444 d
VGA → JPEG, busy scene~35 KB5 s≈ 1.94 mA≈ 0.29 yr · 105 d

QVGA reads ~75 KB (~120 ms) — a quarter of VGA's pixels and read energy. This is the nominal operating point: QVGA→JPEG at a 15 s interval lands at the headline ~1.1 yr, with detail sufficient for counting, status and most detection tasks.

ScenarioOn airIntervalAvg currentModelled life
QVGA RAW (uncompressed)75 KB15 s≈ 0.70 mA≈ 0.80 yr · 293 d
QVGA → on-chip JPEG nominal baseline~12 KB15 s≈ 0.50 mA≈ 1.12 yr · 409 d
QVGA → JPEG, off-hours~12 KB60 s≈ 0.34 mA≈ 1.65 yr · 602 d
QVGA → JPEG, busy scene~12 KB5 s≈ 0.95 mA≈ 0.59 yr · 215 d

QQVGA reads ~19 KB (~40 ms) — cheapest to capture and transmit. Detail is coarse (presence/occupancy, large-object motion), but it pushes life toward the ~0.27 mA floor ceiling: useful for rare-event remote assets where coverage matters more than fine detail.

ScenarioOn airIntervalAvg currentModelled life
QQVGA RAW (uncompressed)19 KB15 s≈ 0.41 mA≈ 1.37 yr · 501 d
QQVGA → on-chip JPEG~4 KB15 s≈ 0.36 mA≈ 1.55 yr · 566 d
QQVGA → JPEG, off-hours~4 KB60 s≈ 0.30 mA≈ 1.86 yr · 679 d
QQVGA → JPEG, busy scene~4 KB5 s≈ 0.50 mA≈ 1.12 yr · 409 d
Reconciling the numbers across sections The single "≈ 1.1 yr nominal" headline elsewhere on this page is the QVGA → JPEG @ 15 s point above. The "≈ 0.67 yr" figure in Section 7+ is VGA → JPEG @ 15 s — same model, just full resolution. The earlier budget tables abbreviated resolution into a "35 KB frame", which is exactly a VGA-JPEG payload but was paired with a QVGA-class read time — the tabs above remove that ambiguity by charging each resolution its true read and transmit cost. Headline: ~1 year at QVGA, ~⅔ year at full VGA; compression and interval move you within a resolution, the resolution tab sets the band.
  • Resolution sets the band; it costs twice. A higher resolution costs more to read off the sensor (serial time) and more to transmit. That is why VGA tops out near ~0.7 yr while QQVGA reaches ~1.5 yr — and why on-chip JPEG (transmit-only saving) helps VGA less than the raw-size gap suggests.
  • JPEG is the within-resolution lever. At any resolution, on-chip JPEG roughly halves the transmit term — the single biggest win once read-out is paid for (Section 7+).
  • Interval trades coverage for life. Doubling the interval ≈ doubles life but halves temporal coverage; shrinking the frame does not. Off-hours slow-down is "free" life.
  • Event rate is the wildcard. A continuously-triggering scene collapses to the "busy" row of its tab. Scene-change gating (Section 7+) is the mitigation — it pulls a busy scene back toward the quiet budget.
  • The floor caps every tab. All resolutions asymptote to the ~0.27 mA AoS+DTIM floor (~2.1 yr ceiling). Beating multi-year needs reducing that floor (periodic AoS sampling), not finer tuning of frame size.

On-Chip JPEG Encode & Scene-Change Gating

Two levers that materially change the energy story beyond the baseline model: the MM8108 can JPEG-encode a frame before transmit, and the HM0360 AoS can suppress uninteresting frames so the radio never wakes. They attack the two largest variable costs — bytes-on-air and transmit frequency.

① MM8108 native JPEG encode — capture VGA, ship ~35 KB

The MM8108 includes a hardware JPEG encoder. The data path becomes: HM0360 captures 300 KB VGA RAW → MM8108 JPEG-encodes on-chip → transmit ~35 KB. This is materially better than transmitting RAW, because transmit energy scales with bytes-on-air and a JPEG is ~8–9× smaller. Critically, it decouples image resolution from radio energy: you can keep full VGA detail and still pay a 35 KB transmit cost.

Data path (1 frame / 15 s)Bytes on airTX timeAvg currentModelled life (4×AA)
VGA RAW transmitted uncompressed300 KB~102 ms≈ 1.68 mA≈ 122 d · 0.33 yr
VGA capture → on-chip JPEG → TX recommended~35 KB~12 ms≈ 0.83 mA≈ 246 d · 0.67 yr
QVGA RAW transmitted75 KB~26 ms≈ 0.64 mA≈ 321 d · 0.88 yr
QVGA capture → JPEG → TX nominal~12 KB~4 ms≈ 0.50 mA≈ 409 d · 1.12 yr
What changes with JPEG Encoding on the 8108 collapses the transmit term: 300 KB RAW (~95 ms on air) → ~35 KB JPEG (~11 ms). On the estimate model that lifts the planned baseline from the RAW-over-air ~5 months toward ~10 months at full VGA. The shift it exposes: once transmit is cheap, the serial read of the 300 KB raw frame becomes the dominant active term — ~307 ms at 1-bit, ~77 ms at 4-bit — so the read-interface width (and the unproven SPI-master path, R-01) is the next lever, not compression.

② Suppressing uninteresting frames — two layers, and how they fit a 1-frame/15 s cadence

The question "how does motion detection help if we only capture every 15 s?" resolves once you separate two distinct mechanisms operating at different layers:

  • HM0360 AoS hardware monitor (continuous, ~0.24 mA): this is not tied to the 15 s capture cadence. It watches the scene continuously at low resolution in dedicated silicon and asserts INT the moment motion/zone activity occurs. Its job is to decide whether the 15 s "wake and capture" should happen at all — in a genuinely static scene (locked room at night), it simply never fires, and the expensive capture+encode+TX cycle is skipped entirely. The camera still parks at the AoS floor.
  • MM8108 "meaningful scene change" gate (per captured frame): when a frame is captured, the SoC compares it to a retained reference frame (a small downscaled/feature signature of the last transmitted scene). If the new frame is substantially the same — same empty aisle, same parked car — it is encoded but not transmitted, or only a "no-change heartbeat" is sent. Only a frame that differs meaningfully spends the radio.

So at the platform's nominal cadence, a tick proceeds: AoS gate (is anything moving?) → capture → scene-change gate (is this frame different from the reference?) → encode + transmit only if yes. Each layer removes a different class of waste — AoS removes capturing a dead scene; the scene-change gate removes transmitting a captured-but-unchanged scene.

Capture a few extra frames?

For the scene-change decision, no — one frame compared to the retained reference is enough, and extra captures cost the (now-dominant) serial-read energy. A short burst of 2–3 frames is only worth it for the AI's benefit — e.g. to disambiguate motion direction or catch a better-exposed frame — and should be reserved for confirmed events, not every tick.

Store historical frames as the reference?

Store one lightweight reference signature (downscaled thumbnail or feature hash of the last transmitted scene), not a history of full frames — SRAM is scarce (R-02) and the comparison only needs "different from the accepted baseline?". The reference updates whenever a frame is transmitted, so it tracks slow legitimate change (daylight drift) without re-alerting.

Where the AI fits

The device's gating is a cheap first filter; the platform's Bedrock AI is the authority on "interesting". Tune the on-device threshold loose (send slightly too much) so the AI never misses an event — bandwidth/energy, not recall, is what gating optimises.

Fraction of ticks that transmitAvg currentModelled life (4×AA)Typical scene
100% (send every frame)≈ 0.50 mA≈ 409 d · 1.12 yrbusy / always changing
50% transmit (gated)≈ 0.39 mA≈ 524 d · 1.44 yrmoderate activity
20% transmit (gated)≈ 0.32 mA≈ 638 d · 1.75 yrmostly-quiet monitoring
5% transmit (gated)≈ 0.28 mA≈ 709 d · 1.94 yrrare-event / remote asset
The floor is the ceiling Scene-change gating (QVGA→JPEG baseline) lifts life from ~1.2 yr toward ~2.0 yr as the transmit fraction drops — but it asymptotes at the ~0.27 mA AoS+DTIM floor and can never exceed it, because the camera's always-on monitor and the radio's DTIM standby run regardless of how few frames are sent. Beating ~2 yr needs reducing that floor (periodic AoS sampling, longer DTIM), not more gating. Gating's real win is robustness against event-rate storms (Section 7 / R-05): it collapses a "busy scene" back toward the quiet-scene budget, so worst-case life stops being dominated by how chaotic the view is.

Firmware / Operation State Machine

All application logic runs on the MM8108 CPU. The device spends almost all time in IDLE; an event drives a short, bounded capture-and-ship cycle.

IDLE SoC DTIM snooze HM0360 AoS monitor WAKE INT → SoC up classify event CONFIGURE I²C set mode/ROI pre-meter exposure CAPTURE read frame serial/SPI (or FIFO) TRANSMIT compress + HaLow TX MQTT to platform PARK XSLEEP / XSHUTDOWN SoC → snooze event INT frame ready sent return to idle watchdog · periodic keepalive / re-assoc
IDLE → WAKE → CONFIGURE → CAPTURE → TRANSMIT → PARK → IDLE. A watchdog handles keepalive/re-association and bounds any stuck state to protect the energy budget.

Energy guards in firmware: every active state is time-bounded — a failed capture or stalled TX must fall back to PARK rather than burn TX current indefinitely. Re-association is rate-limited. On repeated link failure the device backs off to a longer DTIM and retries, never busy-looping.

SRAM constraint (gates max resolution) The captured frame must fit in the MM8108's on-chip SRAM, shared with the Wi-Fi stack + firmware. QVGA mono RAW = 320×240 ≈ 75 KB; VGA = 640×480 ≈ 300 KB. If the hostless firmware + Wi-Fi stack leave only ~100–200 KB free, VGA may not fit and QVGA must be enforced in firmware (or add external SPI PSRAM). Confirm the available hostless SRAM from the Morse Micro SDK — it is risk R-02 below.

Interrupt / wake sources

SourcePinTypeWakes SoC?Action
HM0360 AoS motion/zoneGPIO (IRQ)EdgeYes — high priorityIDLE → WAKE (classify, debounce)
HaLow beacon-miss ×NinternalDTIM timerVia DTIM timerRate-limited re-association
HM0360 FVLD (frame valid)GPIOEdgeNo (CPU already active)Start serial/SPI capture
HM0360 HVLD (line valid)GPIOPer-lineNo (optional)Row sync during capture
Watchdog timeoutinternalHW WDTn/aReset → re-join (bounds any stuck state)

Platform Integration

The sensor publishes to the ViewSense platform exactly like the simulator does — one frame becomes N AI-derived sensors. Capture cadence follows the platform's adaptive model.

The device opens a HaLow socket and publishes each frame over MQTT to the topic site/{siteId}/camera/{deviceId}/frame — the same path real and simulated cameras use. The AI pipeline then analyses the frame into counts, readings, statuses and detections; the device itself ships only pixels, never runs AI.

Maintaining a secured MQTT connection to the cloud

The link to the platform must be mutually-authenticated and encrypted, and that has to survive the device sleeping for most of its life. The model:

  • Transport: MQTT over TLS 1.3 (MQTTS, port 8883) to the broker. The device holds a per-device X.509 client certificate + private key (provisioned at the CM, stored in the QSPI flash under the SoC's flash-encryption — §4 U8, risk R-14); the broker authenticates the cert, the device pins the broker CA. No shared/global credential.
  • Wi-Fi link: WPA3-SAE on the HaLow association, held across DTIM standby so the device stays joined without a full re-auth per wake.
  • Session survival across sleep — the real design choice. A full TLS 1.3 handshake from cold is expensive (multiple RTTs + asymmetric crypto) and, on a battery device that wakes every 15 s, doing it per frame would dominate the energy budget. Two viable patterns, both TBC against the MM8108 stack: (a) keep the TCP+TLS session and MQTT keep-alive alive through DTIM standby (the SoC stays associated; the broker keep-alive must exceed the capture interval) — lowest per-frame cost, but the broker holds N sockets open; or (b) TLS session resumption (PSK / session tickets, 0-RTT) so each reconnect skips the asymmetric handshake. Whichever is chosen, the handshake/keep-alive energy must be measured and added to the per-event budget in §6 — it is currently folded into the "wake + re-assoc" placeholder and is one of the larger TBC unknowns.
  • At-rest secrets: the cert/key never leave the encrypted flash region in plaintext; secure-boot prevents a tampered image from exfiltrating them (R-14).

Adaptive capture cadence

The platform's normal rate is 1 frame every 15 s per camera. The sensor mirrors the platform model: it speeds up when the HM0360 reports meaningful scene change (more frequent INT → shorter interval, the "busy" budget row) and slows down in off-hours (longer interval, the ~1.7 yr row). "Meaningful scene change" detection at the sensor — sending only when the scene actually changes — is the on-device complement to the platform's coalescing and keeps the average event rate, and therefore battery life, well inside the modelled band.

Privacy & the platform contract The platform supports a per-site privacy mode (AI analyses frames in-memory; raw pixels are never stored or re-served). A hardware sensor honours the same intent: where privacy mode is on, frames are transient — analysed, not archived — matching "visual sensing, not video surveillance."

Open Questions

Each must be closed before committing the schematic. Ordered by how much they move the design.

① Hostless serial capture

Can the MM8108, hostless, act as SPI master and clock in a 1-/4-bit serial pixel stream framed by FVLD/HVLD into RAM at the needed rate? This is the make-or-break item. Fallback: AL422B FIFO; Plan-C: JPEG-at-source camera.

blocking

② VGA-RAW bandwidth/latency

300 KB over HaLow at ~20 Mbps effective is ~120 ms TX plus protocol overhead/retries; acceptable for event stills, not for video. Confirms the resolution/compression strategy (QVGA default, on-SoC compress).

design

③ IO-voltage compatibility

Does the SoC support VDDIO = 1.8 V for a shared bus with the HM0360, or is a level translator required? Specs cited at 3.3 V — confirm 1.8 V IO or budget a translator + its leakage.

confirm

④ Regulatory bands

Sub-GHz 802.11ah band, duty-cycle and EIRP differ by region (US 902–928, EU 863–868, AU, JP…). Antenna/match and firmware band plan are region-specific; certification per market.

compliance

⑤ Link security / encryption

WPA3 on the HaLow link + TLS/MQTTS to the platform; per-device credentials. Confirm crypto offload + the energy cost of the handshake on a wake-from-deep-sleep cycle.

security

⑥ Thermal

Low average power → minimal self-heating, but TX bursts and outdoor solar load matter for the L91's rating and image-sensor dark current. Validate across the operating temperature range.

environ.

⑦ GPIO count & QSPI pins

Does the chosen MM8108 package/module expose enough free GPIO for the §5 budget (~19–27 IO), and is the QSPI flash on dedicated pins or the GP pool? Sets whether the 4-bit-serial path, the FIFO fallback, or a GPIO expander is viable.

blocking

⑧ Secure storage

Does the SoC provide flash-encryption + secure-boot + a keystore for the per-device TLS cert/key, or is a discrete secure element needed? Defines the CM provisioning step and R-14.

security

Regional 802.11ah band plans (Q④ detail)

RegionRegulationBandPower limitNotes
USAFCC Part 15.247 / 15.407902–928 MHz≤ 1 W EIRPSTA certification required
EuropeETSI EN 300 220 / 303 204863–868 MHz≤ 25 mW ERPDuty-cycle restrictions apply
JapanARIB STD-T108916.5–927.5 MHz≤ 250 mW
Australia primaryAS/NZS 4268915–928 MHz≤ 1 WViewSense is Sydney-based — use the 915–928 MHz plan first

The MM8108 supports all major regional plans; antenna gain is controlled to meet EIRP (a ~2 dBi PCB trace is safe everywhere; a high-gain external antenna needs an attenuator). Security (Q⑤): WPA3-SAE on the HaLow link is mandatory, plus TLS 1.3 / MQTTS to the platform and per-device keys; the AP must also be HaLow hardware (e.g. an MM6108-based gateway).

Risk Register

Likelihood × impact with the mitigation that retires each risk. The top two gate the schematic.

IDRiskSeverityProb.Mitigation · owner
R-01Hostless frame capture over the MM8108 SPI master is unproven. The SPI slave interface is actively used; the SPI master has only been bring-up-tested to date — sustaining a PCLKO-clocked 4-bit read into SRAM with DMA at the needed rate is not yet validated.Critical~55%Serial-capture PoC on the EVK as the FIRST milestone; engage Morse Micro AppEng on SPI-master DMA limits; reserve AL422B FIFO footprint on every revision; JPEG-at-source camera as Plan-C. HW lead
R-02Insufficient hostless SRAM for a VGA frame buffer (shared with Wi-Fi stack + firmware)High~50%Get the SRAM map from the SDK; if short, enforce QVGA (75 KB) or add external SPI PSRAM (~$0.50). FW lead
R-03IO-voltage mismatch (3.3 V vs 1.8 V) — direct connect risks contention/latch-up if VDDIO is fixed at 3.3 VHigh~70%Confirm VDDIO with Morse Micro; lay out TXS0104E translator as default-populated, DNP if 1.8 V IO confirmed. HW lead
R-04VGA-RAW bandwidth wrecks battery life (~8.6× the TX energy of compressed QVGA)HighHighQVGA/QQVGA default; ROI crops; on-SoC compression; event-only TX. Treat RAW VGA as an exceptional high-detail mode. FW lead
R-05Event-rate storms (busy scene) drain the battery below target (>1 event/5 s → <1 yr)Medium~40%On-sensor meaningful-change gating + post-trigger dead-band lockout + platform adaptive cadence + per-device min-interval cap; event-rate telemetry. PM / FW
R-06Buck light-load efficiency below model — silently halves life at µA loadsMedium~40%Select PFM/burst low-Iq buck (TPS62840-class); bench-measure µA-load efficiency; LDO-only at the very lightest loads. HW lead
R-07HaLow gateway availability / interoperability — 802.11ah infra still maturingMedium~65%Qualify against an MM6108-based gateway; document AP requirements; consider a bundled gateway SKU. Product
R-08Multi-region certification time + cost (FCC/ETSI/ARIB: 3–6 mo, $15–40K/region)MediumCertainUse a pre-certified MM8108 module if available; prioritise the primary market region first (AU 915–928 MHz). PM / Reg.
R-09Hostless bare-metal firmware complexity (camera driver + Wi-Fi stack + power mgmt) underestimatedMedium~45%Evaluate SDK RTOS support (FreeRTOS/Zephyr port); budget 3–4 months for the FW milestone. FW lead
R-10Secured-MQTT energy + session survival: a full TLS 1.3 handshake per 15 s wake would dominate the budget; the per-frame keep-alive/resumption cost is a large §6 unknownHigh~50%WPA3-SAE + MQTTS/TLS 1.3, per-device X.509 in encrypted flash; keep session alive across DTIM OR use TLS resumption (PSK/0-RTT); measure handshake + keep-alive energy from deep sleep and fold into §6 (see §9). FW lead
R-11L91 capacity/voltage sag at temperature extremes (−40…+60 °C)Low~20%L91 wide-temp rated (~15% derate at −20 °C); model with derated capacity; low-battery telemetry; buck must start at low stack voltage. HW lead
R-12Thermal — TX bursts + sealed outdoor enclosureLowLowAvg power <2 mW → <2 °C rise, no heatsink; validate junction temp + sensor dark current across range. HW lead
R-13MM8108 GPIO count insufficient — pixel path + QSPI + control + UX exceed free IO (esp. FIFO fallback at ~32 IO)High~45%Confirm free GPIO on the chosen package/module vs the §5 IO budget; prefer 4-bit serial (19 IO) over FIFO (27–32); QSPI on dedicated flash pins; I²C GPIO expander (TCA9555) for slow UX as fallback; drop redundant PIR first. HW lead
R-14Secure provisioning — per-device TLS cert/key in QSPI flash exposed to readout/cloningHigh~35%Use MM8108 flash-encryption + secure-boot; provision keys in a trusted CM step (HSM-backed); consider a discrete secure element if SoC keystore is insufficient; never ship a common key. FW / Security

Feasibility Verdict & Next Steps

The concept is sound and energy-viable; one capture-path unknown gates the go decision.

◆ CONDITIONAL GO

The architecture is sound and the energy envelope is workable, but the life figures are estimates pending MM8108 datasheet/SDK measurement. On the planned data flow (VGA mono capture → 8108 JPEG → 35 KB TX, 1 frame/15 s) the model gives ~10 months on 4×AA; the honest pessimistic floor (RAW over air, no JPEG) is ~5 months. Multi-year on 4×AA is not claimed without lower duty / reduced AoS-duty. Go is conditional on four SoC-level unknowns, all gating: (1) hostless frame capture over the SPI master, which is only bring-up-tested (R-01); (2) the real MM8108 standby/encode/TX currents that dominate §6; (3) the secured-MQTT keep-alive/handshake energy across sleep (R-10, §9); and (4) the GPIO/IO budget closing with QSPI + UX (R-13). The pixel path has a graded fallback (4-bit serial → AL422B FIFO → JPEG-at-source). If the SPI-master capture validates and the MM8108 numbers come in near estimate, the two-IC BOM is excellent.

No-go only if all three capture paths (serial-over-SPI, AL422B FIFO, JPEG-at-source) fail to deliver a frame within the energy budget — which is not expected.

Recommended next steps — phased plan

PhaseWhenGoal
0 · SoC vendor engagementWk 1–2Five questions to Morse Micro AppEng: (a) does SPI/SDIO support external-clock slave-receive DMA for hostless capture? (b) SRAM free to the app CPU in hostless mode? (c) is VDDIO configurable to 1.8 V? (d) free GPIO count on the target package + are QSPI flash pins dedicated or shared with the GP pool? (e) flash-encryption / secure-boot / keystore for per-device TLS certs? Answers set the Phase-1 architecture, the IO budget, and the provisioning flow.
1A · Serial-capture PoC gatingWk 3–6On MM8108 EVK + HM0360 board: 1-bit serial over SPI; PCLKO drives the clock, D0 shifts in, FVLD/HVLD frame it. Success = one QVGA frame captured bit-for-bit; measure throughput + SRAM use.
1B · FIFO fallback PoC (parallel)Wk 3–6HM0360 parallel → AL422B → SoC read. Guaranteed path (no SPI clock-mode constraint); becomes production if 1A fails.
2 · Full hostless integrationWk 7–12AoS INT wake → capture → HaLow TX → DTIM snooze. Measure end-to-end power (Otii/PPK2); validate avg current matches model; confirm WPA3 association survives 24 h of DTIM snooze.
3 · PCB prototype (EVT)Wk 13–20Custom ~50×40 mm board: MM8108 (or module), HM0360+lens, QSPI flash, buck+LDOs, X1, DPP button + LED, AL422B + level-shifter + IO-expander as DNP footprints, sub-GHz match, 4×AA. Verify the IO budget closes on real silicon. Env-chamber (−20…+60 °C) + battery soak.
4 · Certification & DVTMo 5–9FCC/ETSI/regional cert (start AU 915–928 MHz); finalise enclosure + battery seal; production DVT; first pilots mo 10–12.
Phase-1 go/no-go gate metrics
  • Correct QVGA frame captured over SPI/FIFO — ≥ 99.9% pixel accuracy
  • Full event cycle (wake → capture → TX → sleep) demonstrated < 200 ms
  • Measured average current < 1.0 mA at 1 event / 15 s (confirms ≥ ~1 yr; comfortably bounds the conservative model)
  • HaLow association held through 100× DTIM50 sleep cycles without disconnect
  • VDDIO and hostless-SRAM questions answered definitively by Morse Micro
Sources MM8108 Data Sheet v4; Himax HM0360 Preliminary v04; Energizer L91 datasheet; ArduCAM Mega (SPI+JPEG comparison). Power figures: an independent, conservative parameterized budget (Section 6/7) — assumptions stated inline; pending bench validation.
HaLowLink ViewSense — Visual Sensor Hardware Design Whitepaper · engineering working document, figures are modelled estimates pending bench validation.