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.
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.
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.
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.
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.
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.
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.
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.
6 · Minimal-glue sensor
HM0360 internal oscillator + internal LDO mean no sensor crystal and only two external rails — simpler, cheaper, fewer failure points.
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.
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.
Bill of Materials & Rationale
Major components only. Quantities are per-unit; passives summarised. Rationale ties each part to a design decision above.
| Component | Example part | Est. unit cost | Role / rationale |
|---|---|---|---|
| U1 · HaLow SoC | Morse Micro MM8108 (3.3 V VBAT/VDDIO) | ≤ $6 | Processor + 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 sensor | Himax HM0360-MWA (640×480, 8-bit mono, AoS) | ≈ $3–5 | AoS 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 regulator | TI 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.25 | Sensor analog rail; enable-pin power-gated during XSHUTDOWN. |
| U5 · LDO 1.8 V (IOVDD) | Torex XC6220A182 | ≈ $0.25 | Sensor IO rail; can also be the shared 1.8 V IO supply. DVDD 1.2 V is generated inside the HM0360. |
| X1 · RTC crystal | 32.768 kHz, ±20 ppm (Abracon ABS25) | ≈ $0.35 | Mandatory for MM8108 DTIM beacon tracking in snooze — without it the SoC must run a higher-current RC. |
| U8 · QSPI NOR flash | 16–32 Mbit Quad-SPI (Winbond W25Q32 / GD25Q) | ≈ $0.30 | Mandatory 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 button | Tact switch + ESD | ≈ $0.10 | Wi-Fi Easy Connect (DPP) commissioning + factory reset on a no-display device. 1 GPIO. |
| D1 · Status LED | Bi-colour / RGB, low-current | ≈ $0.10 | Pairing / link / fault feedback in the field. 1 GPIO (PWM-able). Off in steady state to protect the budget. |
| ANT1 · Sub-GHz antenna + match | PCB trace / patch + π-match, region-specific | ≈ $0.50–1.50 | 868 (EU) / 915 (US) / 920 (JP/AU) MHz. Match affects TX efficiency → battery life; gain controlled for EIRP compliance. |
| LENS1 · Lens | Fixed-focus M12, f/2.0–2.8 | ≈ $2–5 | Fixed focus — no actuator power; FoV (60–120°) sized to the monitored zone. |
| BT1 · Battery + holder | 4× 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 conditional | TI TXS0104E (4-ch, auto-dir) | ≈ $0.30 | Only if MM8108 VDDIO ≠ 1.8 V — translates I²C/INT/XSHUTDOWN/XSLEEP. DNP if 1.8 V IO is confirmed. |
| U7 · Line FIFO fallback | AverLogic AL422B (3 Mbit) | ≈ $1.50 | Buffers 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 optional | Low-power PIR (e.g. AS6221-class digital) | ≈ $0.40 | Optional 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 conditional | TI TCA9555 (I²C, 16-bit) | ≈ $0.35 | Only 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 / protection | Decoupling, ESD, reverse-polarity | ≈ $0.50–1.00 | Per-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 line | Per unit | What it covers |
|---|---|---|
| Landed BOM (mid) | ≈ $17.50 | All components above, duty/freight to the CM, SoC capped at $6. The only line that falls fast with silicon volume. |
| PCB bare board | ≈ $2.00 | 4-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.00 | Double-sided placement, fine-pitch SoC + shield can, reflow, AOI/X-ray on the RF + BGA-class parts. |
| ME / enclosure parts | ≈ $4.00 | Injection-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.50 | Final mechanical assembly, battery contacts/holder fit, gasket seating, torque-controlled close-up, labelling. |
| Test, RF cal & IP check | ≈ $1.50 | Functional test, per-unit RF/antenna calibration + golden-sample check, leak/IP-seal verification, serial/MAC provisioning. |
| Packaging & accessories | ≈ $1.20 | Retail/bulk box, mount kit, quick-start card, ESD/moisture bag. |
| Yield / scrap (~3%) | ≈ $0.95 | Realistic first-run rework/scrap on an RF + sealed-mechanical product. |
| MVA / CM margin (~12%) | ≈ $3.90 | Contract manufacturer's value-add & gross margin on parts + labour. Negotiable down with volume & multi-year commit. |
| FOB unit cost | ≈ $33–42 | Ex-works the CM, before logistics to region, import duty, and channel/brand margin. Mid build ≈ $37. |
| One-time NRE / tooling | Est. | Amortized per unit |
|---|---|---|
| Injection mould (hardened, multi-cavity) | ≈ $18,000 | 5k → $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.
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
PCLKOas the bit/byte clock and presents pixels on its data lines whileFVLD/HVLDmark 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 group | HM0360 / part pin | ↔ | MM8108 | Function |
|---|---|---|---|---|
| Camera — control (I²C, slow) | ||||
| Config | SCL / SDA | ↔ | I²C master (2 IO) | Register R/W only — mode, ROI, exposure, framing, status. Not the pixel path. |
| Wake | INT | → | GPIO IRQ (1 IO) | AoS motion/zone event → wake SoC |
| Power-gate | XSHUTDOWN / XSLEEP | ← | GPIO (2 IO) | Hardware shutdown (~1 µA) / sleep-wake between events |
| Camera — pixel data path (the bulk read) | ||||
| Pixel clock | PCLKO | → | SPI/SDIO clk-in (1 IO) | Sensor-driven bit/byte clock — SoC samples on its edges (clock-slave) |
| Pixel data | D0 (1-bit) or D0–D3 (4-bit) | → | SDIO data (1 or 4 IO) | Serial pixel stream. 4-bit ≈ 4× faster read — preferred |
| Framing | FVLD / HVLD | → | GPIO (2 IO) | Frame / line valid — drive the capture state machine / DMA gating |
| Boot / secrets — QSPI NOR flash (mandatory, standalone mode) | ||||
| QSPI | Flash IO0–IO3 | ↔ | QSPI data (4 IO) | Quad I/O — boot firmware + Wi-Fi creds + TLS cert/keys; XIP or load-to-SRAM |
| QSPI | Flash 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 select | CLK_SEL | — | GND | Select HM0360 internal oscillator |
| Unused | MCLK, RTC | — | GND | No external master clock crystal needed |
D[7:0] + PCLK/VSYNC/HSYNC → AL422B 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).
| Function | Signals | IO · 4-bit serial | IO · FIFO fallback | Mandatory? |
|---|---|---|---|---|
| Camera I²C control | SCL, SDA | 2 | 2 (shareable w/ flash? no — diff bus) | Yes |
| Camera wake | INT | 1 | 1 | Yes |
| Camera power-gate | XSHUTDOWN, XSLEEP | 2 | 2 | Yes |
| Pixel clock | PCLKO | 1 | 1 | Yes |
| Pixel data | D0–D3 / D0–D7 | 4 | 8 | Yes |
| Pixel framing | FVLD, HVLD | 2 | 2 (VSYNC/HSYNC) | Yes |
| FIFO control | WE, RE, RCK, RRST, WRST | 0 | 5 | Fallback only |
| QSPI flash | IO0–3, CLK, CS# | 6 (may be dedicated pins) | 6 | Yes (standalone) |
| DPP / reset button | BTN | 1 | 1 | Yes (commissioning) |
| Status LED | LED | 1 | 1 | Strongly desired |
| PIR sensor | PIR_OUT | 1 | 1 | Optional |
| Tamper / case switch | TAMPER | 1 | 1 | Optional |
| Low-battery / ADC | VBAT_SENSE | 1 | 1 | Desired |
| Subtotal — mandatory only | — | 19 | 27 | — |
| Total — with all UX/sensors | — | 24 | 32 | — |
- 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 / component | Peak current | Duration / cycle | Cycle-avg | Source |
|---|---|---|---|---|
| Idle floor — held continuously between events | ||||
| HM0360 AoS monitor mode | 0.240 mA | continuous | 240 µA | datasheet |
| MM8108 DTIM standby (assoc held) | ~0.10 mA | continuous | ~100 µA | TBC |
| Buck Iq (light load) | ~0.005 mA | continuous | 5 µA | est. |
| Per-event work — once every 15 s | ||||
| Wake + HaLow re-assoc check | ~25 mA | ~5 ms | ~8 µA | TBC |
| I²C sensor config / trigger | ~15 mA | ~2 ms | ~2 µA | est. |
| HM0360 VGA readout (sensor) | 7.8 mA | ~77 ms (4-bit@8MHz) | ~40 µA | datasheet |
| MM8108 capture-DMA + JPEG encode | ~30 mA | ~77 ms + encode | ~160 µA | TBC |
| HaLow TX (35 KB JPEG @ MCS7) | ~149 mA | ~11 ms | ~110 µA | TBC |
| ACK / socket teardown | ~25 mA | ~5 ms | ~8 µA | TBC |
| Total average current | — | — | ≈ 0.67 mA | — |
| Modelled life (4×AA, 4900 mAh rail) | — | — | ≈ 305 d · ~10 mo | — |
Operating-point summary — estimates, MM8108 currents TBC
| Operating point (1 frame / 15 s) | Read + TX | Avg current | Modelled 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 |
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 MHz | PHY rate | TX current | TX / 12 KB frame | Avg current | Modelled life (4×AA) | Relative range |
|---|---|---|---|---|---|---|
MCS0 | 3.25 Mbps | ≈ 191 mA | ≈ 38 ms | ≈ 0.94 mA | ≈ 217 d · 0.59 yr | Longest — >1 km / deep-indoor / NLOS |
MCS1 | 6.5 Mbps | ≈ 185 mA | ≈ 19 ms | ≈ 0.69 mA | ≈ 294 d · 0.81 yr | Very long |
MCS2 | 9.75 Mbps | ≈ 179 mA | ≈ 13 ms | ≈ 0.61 mA | ≈ 334 d · 0.91 yr | Very long |
MCS3 | 13.0 Mbps | ≈ 173 mA | ≈ 9 ms | ≈ 0.57 mA | ≈ 358 d · 0.98 yr | Long |
MCS4 | 19.5 Mbps | ≈ 167 mA | ≈ 6 ms | ≈ 0.53 mA | ≈ 384 d · 1.05 yr | Long / medium |
MCS5 | 26.0 Mbps | ≈ 161 mA | ≈ 5 ms | ≈ 0.51 mA | ≈ 399 d · 1.09 yr | Medium |
MCS6 | 29.25 Mbps | ≈ 155 mA | ≈ 4 ms | ≈ 0.51 mA | ≈ 405 d · 1.11 yr | Medium |
MCS7 (nominal) | 32.5 Mbps | ≈ 149 mA | ≈ 4 ms | ≈ 0.50 mA | ≈ 409 d · 1.12 yr | Medium-short (good link) |
MCS8 | 39.0 Mbps | ≈ 149 mA | ≈ 3 ms | ≈ 0.49 mA | ≈ 414 d · 1.14 yr | Short (strong signal) |
MCS9 | 43.3 Mbps | ≈ 149 mA | ≈ 3 ms | ≈ 0.49 mA | ≈ 417 d · 1.14 yr | Shortest — near AP / clear LOS |
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.
| Scenario | On air | Interval | Avg current | Modelled life |
|---|---|---|---|---|
| VGA RAW (uncompressed) | 300 KB | 15 s | ≈ 1.66 mA | ≈ 0.34 yr · 123 d |
| VGA → on-chip JPEG recommended | ~35 KB | 15 s | ≈ 0.83 mA | ≈ 0.67 yr · 247 d |
| VGA → JPEG, off-hours | ~35 KB | 60 s | ≈ 0.46 mA | ≈ 1.22 yr · 444 d |
| VGA → JPEG, busy scene | ~35 KB | 5 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.
| Scenario | On air | Interval | Avg current | Modelled life |
|---|---|---|---|---|
| QVGA RAW (uncompressed) | 75 KB | 15 s | ≈ 0.70 mA | ≈ 0.80 yr · 293 d |
| QVGA → on-chip JPEG nominal baseline | ~12 KB | 15 s | ≈ 0.50 mA | ≈ 1.12 yr · 409 d |
| QVGA → JPEG, off-hours | ~12 KB | 60 s | ≈ 0.34 mA | ≈ 1.65 yr · 602 d |
| QVGA → JPEG, busy scene | ~12 KB | 5 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.
| Scenario | On air | Interval | Avg current | Modelled life |
|---|---|---|---|---|
| QQVGA RAW (uncompressed) | 19 KB | 15 s | ≈ 0.41 mA | ≈ 1.37 yr · 501 d |
| QQVGA → on-chip JPEG | ~4 KB | 15 s | ≈ 0.36 mA | ≈ 1.55 yr · 566 d |
| QQVGA → JPEG, off-hours | ~4 KB | 60 s | ≈ 0.30 mA | ≈ 1.86 yr · 679 d |
| QQVGA → JPEG, busy scene | ~4 KB | 5 s | ≈ 0.50 mA | ≈ 1.12 yr · 409 d |
- 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 air | TX time | Avg current | Modelled life (4×AA) |
|---|---|---|---|---|
| VGA RAW transmitted uncompressed | 300 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 transmitted | 75 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 |
② 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
INTthe 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 transmit | Avg current | Modelled life (4×AA) | Typical scene |
|---|---|---|---|
| 100% (send every frame) | ≈ 0.50 mA | ≈ 409 d · 1.12 yr | busy / always changing |
| 50% transmit (gated) | ≈ 0.39 mA | ≈ 524 d · 1.44 yr | moderate activity |
| 20% transmit (gated) | ≈ 0.32 mA | ≈ 638 d · 1.75 yr | mostly-quiet monitoring |
| 5% transmit (gated) | ≈ 0.28 mA | ≈ 709 d · 1.94 yr | rare-event / remote asset |
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.
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.
Interrupt / wake sources
| Source | Pin | Type | Wakes SoC? | Action |
|---|---|---|---|---|
| HM0360 AoS motion/zone | GPIO (IRQ) | Edge | Yes — high priority | IDLE → WAKE (classify, debounce) |
| HaLow beacon-miss ×N | internal | DTIM timer | Via DTIM timer | Rate-limited re-association |
| HM0360 FVLD (frame valid) | GPIO | Edge | No (CPU already active) | Start serial/SPI capture |
| HM0360 HVLD (line valid) | GPIO | Per-line | No (optional) | Row sync during capture |
| Watchdog timeout | internal | HW WDT | n/a | Reset → 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.
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.
② 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).
③ 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.
④ 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.
⑤ 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.
⑥ 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.
⑦ 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.
⑧ 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.
Regional 802.11ah band plans (Q④ detail)
| Region | Regulation | Band | Power limit | Notes |
|---|---|---|---|---|
| USA | FCC Part 15.247 / 15.407 | 902–928 MHz | ≤ 1 W EIRP | STA certification required |
| Europe | ETSI EN 300 220 / 303 204 | 863–868 MHz | ≤ 25 mW ERP | Duty-cycle restrictions apply |
| Japan | ARIB STD-T108 | 916.5–927.5 MHz | ≤ 250 mW | — |
| Australia primary | AS/NZS 4268 | 915–928 MHz | ≤ 1 W | ViewSense 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.
| ID | Risk | Severity | Prob. | Mitigation · owner |
|---|---|---|---|---|
R-01 | Hostless 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-02 | Insufficient 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-03 | IO-voltage mismatch (3.3 V vs 1.8 V) — direct connect risks contention/latch-up if VDDIO is fixed at 3.3 V | High | ~70% | Confirm VDDIO with Morse Micro; lay out TXS0104E translator as default-populated, DNP if 1.8 V IO confirmed. HW lead |
R-04 | VGA-RAW bandwidth wrecks battery life (~8.6× the TX energy of compressed QVGA) | High | High | QVGA/QQVGA default; ROI crops; on-SoC compression; event-only TX. Treat RAW VGA as an exceptional high-detail mode. FW lead |
R-05 | Event-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-06 | Buck light-load efficiency below model — silently halves life at µA loads | Medium | ~40% | Select PFM/burst low-Iq buck (TPS62840-class); bench-measure µA-load efficiency; LDO-only at the very lightest loads. HW lead |
R-07 | HaLow gateway availability / interoperability — 802.11ah infra still maturing | Medium | ~65% | Qualify against an MM6108-based gateway; document AP requirements; consider a bundled gateway SKU. Product |
R-08 | Multi-region certification time + cost (FCC/ETSI/ARIB: 3–6 mo, $15–40K/region) | Medium | Certain | Use a pre-certified MM8108 module if available; prioritise the primary market region first (AU 915–928 MHz). PM / Reg. |
R-09 | Hostless bare-metal firmware complexity (camera driver + Wi-Fi stack + power mgmt) underestimated | Medium | ~45% | Evaluate SDK RTOS support (FreeRTOS/Zephyr port); budget 3–4 months for the FW milestone. FW lead |
R-10 | Secured-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 unknown | High | ~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-11 | L91 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-12 | Thermal — TX bursts + sealed outdoor enclosure | Low | Low | Avg power <2 mW → <2 °C rise, no heatsink; validate junction temp + sensor dark current across range. HW lead |
R-13 | MM8108 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-14 | Secure provisioning — per-device TLS cert/key in QSPI flash exposed to readout/cloning | High | ~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.
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
| Phase | When | Goal |
|---|---|---|
| 0 · SoC vendor engagement | Wk 1–2 | Five 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 gating | Wk 3–6 | On 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–6 | HM0360 parallel → AL422B → SoC read. Guaranteed path (no SPI clock-mode constraint); becomes production if 1A fails. |
| 2 · Full hostless integration | Wk 7–12 | AoS 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–20 | Custom ~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 & DVT | Mo 5–9 | FCC/ETSI/regional cert (start AU 915–928 MHz); finalise enclosure + battery seal; production DVT; first pilots mo 10–12. |
- 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