Battery-powered WiFi module that extends a Raspberry Pi's serial bus (I2C, UART, SPI) over WiFi using MQTT. SX1276 LoRa 868 MHz transceiver supplements WiFi for long-range parallel operation. LiPo powered with USB-C charging (BQ24075), 3.3V LDO (MCP1700), ESP32-C6-MINI-1-N4 MCU.
Requirements
| Code | Status | Category | Title | Statement | Acceptance |
|---|---|---|---|---|---|
| REQ-001 | approved | Functional | Charge LiPo battery via USB-C | The module shall charge a single-cell LiPo battery via USB-C connector | Battery charges from USB-C 5V source; charge current observed |
| REQ-002 | approved | Interface | BQ24075 charge IC with power path management | The charge IC shall be BQ24075 (or compatible) with integrated power path management | Correct IC placed; SYS pin powers system from VBUS when connected |
| REQ-003 | approved | Performance | Charge current ~593 mA (ISET 1.5 kΩ) | The charge current shall be approximately 593 mA (ISET resistor = 1.5 kΩ, same value as ILIM) | Measured charge current ≤ 650 mA; may be reduced by BQ24075 TREG thermal throttling |
| REQ-004 | approved | Functional | Charge status indicators via CHG and PG outputs | Charge status indicators shall be provided via CHG (charging) and PG (power good) outputs | CHG LED on during charge; PG LED on when VBUS present |
| REQ-005 | approved | Mechanical | JST-PH 2.0mm 2-pin battery connector | The battery shall connect via a JST-PH 2.0 mm 2-pin connector. | JST-PH 2.0 mm connector fitted; battery pack with matching plug mates correctly. |
| REQ-006 | approved | Functional | 3.3V rail from BQ24075 SYS pin | The 3.3V power rail shall be derived from the BQ24075 SYS pin via an LDO regulator. | 3.3V rail measures within ±2% under all load conditions when powered from BQ24075 SYS output. |
| REQ-007 | approved | Interface | MCP1700-3302E/TO LDO regulator | The LDO regulator shall be the MCP1700-3302E/TO device. | MCP1700-3302E/TO is populated and provides a stable 3.3V output as per datasheet specifications. |
| REQ-008 | approved | Performance | LDO quiescent current ≤ 4 µA | The LDO regulator quiescent current shall not exceed 4 µA. | Measured quiescent current of MCP1700 is ≤ 4 µA under no-load condition. |
| REQ-009 | approved | Interface | 3.3V rail bulk decoupling capacitors | The 3.3V rail shall have bulk decoupling: 100 µF tantalum/electrolytic, 10 µF MLCC, 100 nF MLCC | All three capacitors present; placed close to ESP32 module |
| REQ-010 | approved | Interface | LDO input and output decoupling | The LDO input shall have 1 µF decoupling and the output shall have 1 µF decoupling (per MCP1700 datasheet) | Capacitors present per datasheet recommendation |
| REQ-011 | approved | Functional | Battery voltage monitoring via ADS7828 CH0 | The module shall monitor battery voltage via the ADS7828 ADC (CH0) through a resistor divider | Battery voltage readable via ADS7828 CH0 over I2C |
| REQ-012 | approved | Performance | Battery divider 2×1 MΩ (1:2 ratio) | The resistor divider shall use 2 × 1 MΩ resistors (1:2 ratio, max 2.1V to ADC input) | Divider output ≤ 2.1V when battery at 4.2V |
| REQ-013 | approved | Performance | Battery divider quiescent drain ≤ 5 µA | The divider quiescent drain shall not exceed 5 µA at full charge | Calculated: 4.2V / 2MΩ = 2.1 µA — accepted as within deep sleep budget |
| REQ-014 | approved | Performance | Battery divider software-disconnectable | The divider shall be software-disconnectable (GPIO-driven low-side) to eliminate drain during deep sleep | Divider drain accepted at 2.1 µA (within budget); no switch fitted R0 |
| REQ-015 | approved | Interface | MCU module ESP32-C6-MINI-1-N4 | The MCU module shall be ESP32-C6-MINI-1-N4 (4 MB flash, PCB antenna) | Correct module placed; boots and responds to programming |
| REQ-016 | approved | Performance | MCU supply voltage 3.0–3.6V | The MCU supply voltage shall be 3.0–3.6V (from 3.3V rail) | VCC measured within 3.0–3.6V range |
| REQ-017 | approved | Performance | Deep sleep total board current ≤ 20 µA | The module shall support deep sleep with total board current consumption ≤ 20 µA (ESP32 + LDO + GPIO expander + ADC power-down + divider off). | Total board current in deep sleep ≤ 20 µA |
| REQ-018 | approved | Functional | WiFi 802.11ax (WiFi 6) at 2.4 GHz | The module shall support WiFi 802.11ax (WiFi 6) at 2.4 GHz. | WiFi connection established at 2.4 GHz |
| REQ-019 | approved | Functional | BLE 5.0 support | The module shall support BLE 5.0 | BLE advertisement/connection established |
| REQ-020 | approved | Interface | I2C bus on external connector | The module shall expose I2C bus signals (SDA, SCL) on an external connector | I2C device detected and communicates through module |
| REQ-021 | approved | Interface | UART on external connector | The module shall expose UART signals (TX, RX) on an external connector | UART loopback or communication verified |
| REQ-022 | approved | Interface | SPI bus on external connector | The module shall expose SPI bus signals (MOSI, MISO, SCK, CS) on an external connector | SPI device communicates through module |
| REQ-023 | approved | Interface | Serial bus connector 3.3V and GND | The serial bus connector shall provide 3.3V and GND for external sensor power | 3.3V and GND present on connector |
| REQ-024 | approved | Mechanical | USB-C connector for charging | The module shall have a USB-C connector for charging | USB-C cable connects; VBUS voltage present at charge IC |
| REQ-025 | approved | Safety | USB-C VBUS ESD protection | The USB-C VBUS line shall have ESD protection | ESD protection diode present on VBUS |
| REQ-026 | approved | Mechanical | ESP32 antenna keep-out zone observed | The PCB shall observe the ESP32-C6-MINI-1 antenna keep-out zone (no copper under PCB antenna area) | No copper pour or traces in antenna keep-out zone |
| REQ-027 | approved | Mechanical | 100 nF decoupling caps near ESP32 VCC pads | 100 nF decoupling caps shall be placed as close as possible to ESP32 VCC pads | Visual inspection: cap placement ≤ 3 mm from VCC pad |
| REQ-028 | approved | Mechanical | Bulk 100 µF cap near ESP32 module | Bulk 100 µF cap shall be placed near ESP32 module, not near LDO output | Visual inspection confirms placement |
| REQ-029 | approved | Mechanical | Battery monitor divider routed away from RF | Battery monitor divider shall be routed away from RF section | Visual inspection; no interference observed |
| REQ-030 | approved | Mechanical | Test points on 3.3V, GND, UART TX/RX, BOOT, RESET | Test points shall be provided on: 3.3V rail, GND, UART TX, UART RX, BOOT, RESET | All 6 test points present and accessible |
| REQ-031 | approved | Functional | WiFi MQTT communication with Raspberry Pi | The module shall communicate with the Raspberry Pi master over WiFi (protocol TBD — MQTT candidate) | Wireless message sent and received by RPi |
| REQ-032 | approved | Functional | Configurable sleep interval persisted in NVS | The module shall support configurable sleep interval (persisted in NVS flash) | Sleep interval changed via MQTT command; persists across power cycles |
| REQ-033 | approved | Functional | Sleep OFF and Sleep ON operating modes | The module shall support two operating modes: Sleep OFF (WiFi always on) and Sleep ON (deep sleep with wake interval) | Both modes functional and selectable via MQTT command |
| REQ-034 | approved | Performance | Static IP, wake-to-TX ≤ 500 ms | The module shall use static IP with WiFi credentials stored in RTC memory to minimize wake-to-TX time | Wake-to-MQTT-publish time ≤ 500 ms with static IP |
| REQ-035 | approved | Performance | ≥ 7 days runtime at 10 s wake interval | The module shall achieve ≥ 7 days runtime on 800 mAh LiPo at 10 s wake interval | Measured or validated average current ≤ 4.8 mA |
| REQ-036 | approved | Performance | ≥ 45 days runtime at 30 s wake interval | The module shall achieve ≥ 45 days runtime on 800 mAh LiPo at 30 s wake interval | Measured or validated average current ≤ 0.75 mA |
| REQ-037 | approved | Interface | PI4IOE5V6416 I2C GPIO expander | The module shall include a PI4IOE5V6416 I2C GPIO expander on the on-board LP_I2C bus | IC responds to I2C address; GPIOs readable/writable |
| REQ-038 | approved | Functional | GPIO expander external module control signals | The GPIO expander shall provide the following external module control signals on the connector: SHDNn, RESETn, INTERRUPTn, SRQn, ALERTn, EVENTn | All 6 signals present on connector; toggleable via I2C |
| REQ-039 | approved | Functional | GPIO expander INT to IO22 for wake-from-sleep | The GPIO expander INT output shall be connected to ESP32-C6 GPIO IO22 via net GPIO_INTn to enable wake-from-deep-sleep on any expander input change | ESP32 wakes from deep sleep when expander input state changes |
| REQ-040 | approved | Interface | GPIO expander 3.3V with 100 nF decoupling | The GPIO expander shall operate on the 3.3V rail with 100 nF decoupling | VCC measured 3.3V ± 3%; decoupling cap present |
| REQ-041 | approved | Interface | ADS7828 12-bit 8-channel I2C ADC | The module shall include an ADS7828 12-bit 8-channel I2C ADC on the on-board LP_I2C bus | IC responds to I2C address; ADC channels readable |
| REQ-042 | approved | Functional | ADC CH0 battery voltage monitoring | ADC channel 0 shall monitor battery voltage via a 2×1 MΩ resistor divider (1:2, max 2.1V at 4.2V battery) | Battery voltage readable; divider output within 2% of expected |
| REQ-043 | approved | Functional | Remaining ADC channels available | Remaining ADC channels (1–7) shall be available for system monitoring or exposed on the external connector | Spare channels accessible and functional |
| REQ-045 | approved | Interface | ADS7828 3.3V decoupling and VREF from REF3425 | The ADS7828 shall operate on the 3.3V rail with 100 nF decoupling; VREF connected to REF3425 2.5V output (REQ-058) | VCC measured 3.3V ± 3%; VREF measured 2.5V ± 0.05%; decoupling cap present |
| REQ-046 | approved | Functional | Operate from USB alone | The module shall operate from USB power alone, with no battery connected. | Module powers on and operates normally with USB-C connected and no battery present. |
| REQ-047 | approved | Functional | Prioritise USB over battery when USB connected | When USB is connected, the power path management shall prioritise USB over battery, supplying the system from VBUS and simultaneously charging the battery. | With USB and battery both connected, system load is sourced from USB; battery charge current flows simultaneously. |
| REQ-048 | approved | Functional | Simultaneous charging and system operation | The design shall support simultaneous battery charging and full system operation without interruption. | System operates without reset or brown-out while battery is charging from USB. |
| REQ-049 | approved | Interface | BOOT pin USB bootloader access | The BOOT pin (IO9) shall allow entry into USB bootloader mode by pulling low during reset; access via the IO9-side pad of the I2C0 SCL pull-up resistor | ESP32 enters bootloader when IO9 pulled low at power-on; normal boot when released |
| REQ-050 | approved | Functional | SX1276 LoRa 868 MHz transceiver | The module shall include an SX1276 LoRa transceiver operating at 868 MHz (EU ISM band) as a supplement to the WiFi interface | SX1276 responds to SPI commands; LoRa packet transmitted and received at 868 MHz |
| REQ-051 | approved | Interface | SX1276 on SPI2 with IO4 NSS | The SX1276 shall share the SPI2 bus (IO18–21) with a dedicated NSS line on IO4 (net CS0) | SPI2 communicates with SX1276 when IO4 asserted low; external SPI device unaffected |
| REQ-052 | approved | Interface | SX1276 DIO0 interrupt on IO5 | The SX1276 DIO0 interrupt output shall be connected to IO5 (net LORA_INTn) to enable interrupt-driven TX/RX completion handling | IRQ received on IO5 on TxDone and RxDone events |
| REQ-053 | approved | Interface | SX1276 RESET via GPIO expander | The SX1276 RESET pin shall be driven by a PI4IOE5V6416 GPIO expander output; firmware shall initialise the expander before asserting LoRa RESET | SX1276 RESET assertable via I2C to GPIO expander; firmware sequencing constraint documented |
| REQ-054 | approved | Interface | SX1276 SMA connector 50 Ω matched trace | The SX1276 RF output shall be connected to an SMA connector via a 50 Ω matched trace | SMA connector present; trace impedance 50 Ω ±10% by design |
| REQ-055 | approved | Mechanical | SX1276 RF positioned away from ESP32 antenna | The SX1276 RF section and SMA connector shall be positioned to minimise RF interference with the ESP32-C6-MINI-1 2.4 GHz PCB antenna | LoRa RF components placed away from ESP32 antenna keep-out zone; no WiFi link failure during concurrent LoRa TX |
| REQ-056 | approved | Performance | SX1276 sleep mode during ESP32 deep sleep | The SX1276 shall enter sleep mode during ESP32 deep sleep; its sleep current shall remain within the REQ-017 total board budget | Total board deep sleep current ≤ 20 µA including SX1276 (SX1276 sleep typ. 0.2 µA) |
| REQ-057 | approved | Functional | LoRa and WiFi concurrent operation | LoRa and WiFi shall be capable of concurrent operation; neither interface shall be a fallback replacement for the other | WiFi connection maintained while LoRa transmits/receives; no mutual interference causing link failure |
| REQ-058 | approved | Interface | REF3425 2.5V precision voltage reference | The module shall include a REF3425 2.5V precision voltage reference on the Power sheet to supply VREF to the ADS7828 ADC | REF3425 output measured 2.5V ± 0.05%; ADS7828 VREF connected to REF3425 output |
| REQ-059 | approved | Functional | Bidirectional battery current measurement via INA333 | The module shall measure bidirectional battery current via a 100 mΩ shunt resistor and INA333 instrumentation amplifier (gain ≈ 20.6) into ADS7828 CH1; resolution ≤ 1 mA; range ±600 mA | Battery current readable via ADS7828 CH1; 0 A reads mid-scale (≈ code 2048); ±600 mA within ADC range |
| REQ-060 | approved | Performance | INA333 power-gated during deep sleep | The INA333 shall be power-gated via AO3407 PMOS switch controlled by PI4IOE P11 (SHUNTn, active-low) to eliminate quiescent current during deep sleep | INA333 draws 0 µA when P11 = HIGH; powers up when P11 = LOW; deep sleep budget unaffected |
| REQ-061 | draft | Functional | BOM review before production release | Before transitioning R0 to production, the BOM shall be reviewed and updated to cost-effective alternatives where available | BOM review completed; cost-effective parts substituted or prototype parts confirmed; review record in DECISIONS.md |
Test Cases
| Code | Status | Category | Title / Signal | Target | Pass Criterion | Linked REQ |
|---|---|---|---|---|---|---|
| TC-A-00 | open | functional | ADC_GPIO | 2.1 ± 2% | Divider output measures 2.10V ± 2% with VBAT=4.2V | REQ-011 |
| TC-A-01 | open | functional | ADC_GPIO | 1.5 ± 2% | Divider output measures 1.50V ± 2% with VBAT=3.0V | REQ-011 |
| TC-A-02 | open | functional | ADC_GPIO | 0 | No measurable current through divider when GPIO driven low in deep sleep | REQ-013 |
| TC-A-03 | open | functional | VBAT | 10 | Total board current ≤ 20 µA in deep sleep with divider off at VBAT=3.7V | REQ-056 |
| TC-A-04 | open | functional | VREF | 2.5 ± 0.05% | REF3425 output measures 2.500V ± 0.05% at VREF net (ADS7828 VREF pin) | REQ-058 |
| TC-B-00 | open | functional | BOM cost and production readiness review | — | BOM review completed; cost-effective alternatives evaluated; prototype-only parts substituted or confirmed; review record captured in DECISIONS.md | REQ-061 |
| TC-C-00 | open | functional | USB-C connector fit | — | USB-C cable inserts and locks correctly; VBUS present | REQ-024 |
| TC-C-01 | open | functional | JST-PH battery connector fit and polarity | — | JST-PH 2-pin battery cable inserts correctly; polarity correct; battery charges | REQ-005 |
| TC-C-02 | open | functional | 3V3 | 3.3 ± 3% | Connector pinout matches schematic; 3.3V measures 3.30V ± 3% on connector | REQ-023 |
| TC-C-03 | open | Safety | USB-C VBUS ESD protection | — | ESD protection diode present and functional on VBUS line; no damage after USB connection | REQ-025 |
| TC-D-00 | open | functional | ESP32 boot and UART output | — | ESP32 programmed successfully; serial output visible on UART0 after boot | REQ-016 |
| TC-D-01 | open | functional | I2C scan — external connector | — | I2C device detected at expected address via external connector | REQ-020 |
| TC-D-02 | open | functional | UART loopback — external connector | — | Known data sent and received correctly through external UART connector at 115200 baud | REQ-021 |
| TC-D-03 | open | functional | SPI loopback — external connector | — | SPI device read/write verified through external SPI connector | REQ-022 |
| TC-L-00 | open | functional | SX1276 SPI comms and register read | — | SX1276 responds to SPI read of register 0x42 (VERSION) with 0x12; chip selectable via IO4 NSS | REQ-050 |
| TC-L-01 | open | functional | SX1276 DIO0 interrupt routing | — | DIO0 rising edge triggers interrupt on ESP32 IO5 within 1 ms of TX-done or RX-done event | REQ-052 |
| TC-L-02 | open | functional | LoRa and WiFi concurrent operation | — | Device maintains WiFi association while transmitting LoRa packet; no packet loss or disconnection observed | REQ-057 |
| TC-M-00 | open | Mechanical | Visual inspection | — | No manufacturing defects, solder quality acceptable, all components correctly placed | REQ-009 |
| TC-M-01 | open | Mechanical | Antenna keep-out zone | — | No copper pour or traces under ESP32-C6-MINI-1 antenna area per datasheet keep-out zone | REQ-026 |
| TC-M-02 | open | Mechanical | VCC | 3 | 100 nF decoupling cap within 3 mm of ESP32 VCC pads | REQ-027 |
| TC-M-03 | open | Mechanical | Test point access verification | — | All 6 test points present and accessible: 3.3V, GND, UART TX, UART RX, BOOT, RESET | REQ-030 |
| TC-P-00 | open | functional | VBUS | 5 ± 5% | VBUS measures 5.0V ± 0.25V at charge IC input when USB-C 5V source connected | REQ-024 |
| TC-P-01 | open | functional | VBAT | 593 ± 10% | Charge current ≤ 650 mA during CC phase with USB-C 5V and LiPo connected | REQ-003 |
| TC-P-02 | open | functional | Charge status LED | — | CHG LED on during charge; PG LED on when VBUS present | REQ-004 |
| TC-P-03 | open | functional | 3V3 | 3.3 ± 3% | 3.3V rail measures within ±3% at no load with VBAT=4.2V | REQ-006 |
| TC-P-04 | open | functional | 3V3 | 3.3 ± 3% | 3.3V rail measures within ±3% at no load with VBAT=3.0V | REQ-006 |
| TC-P-05 | open | functional | 3V3 | 3.3 ± 5% | 3.3V rail within ±5% with ESP32 in active WiFi TX mode at VBAT=3.7V | REQ-006 |
| TC-P-06 | open | functional | LDO_IN | 4 | LDO input current ≤ 4 µA with ESP32 in deep sleep and no load at VBAT=3.7V | REQ-008 |
| TC-S-00 | open | functional | WiFi connection at 2.4 GHz | — | ESP32 connects to WiFi AP at 2.4 GHz; IP address assigned or static IP in use | REQ-031 |
| TC-S-01 | open | functional | BLE 5.0 advertisement | — | BLE advertising started; visible from phone/BLE scanner nearby | REQ-019 |
| TC-S-02 | open | functional | MQTT publish to Raspberry Pi broker | — | Module wakes, connects to WiFi, publishes MQTT message; message received on RPi broker | REQ-031 |
| TC-S-03 | open | functional | Sleep mode toggle via MQTT | — | Both Sleep OFF and Sleep ON modes functional and switchable via MQTT command | REQ-033 |
| TC-S-04 | open | performance | wake_to_tx | 500 | Time from deep sleep wake to MQTT publish ≤ 500 ms with static IP configuration | REQ-034 |
| TC-S-05 | open | performance | VBAT | 4.8 | Average current ≤ 4.8 mA at 10 s wake interval over 10-minute measurement window at VBAT=3.7V | REQ-035 |
Coverage Matrix
| REQ | Title | Category | Coverage | Linked Test Cases |
|---|---|---|---|---|
| REQ-001 | Charge LiPo battery via USB-C | Functional | approved | TC-P-01, TC-P-02 |
| REQ-002 | BQ24075 charge IC with power path management | Interface | approved | TC-P-01, TC-P-02 |
| REQ-003 | Charge current ~593 mA (ISET 1.5 kΩ) | Performance | approved | TC-P-01 |
| REQ-004 | Charge status indicators via CHG and PG outputs | Functional | approved | TC-P-02 |
| REQ-005 | JST-PH 2.0mm 2-pin battery connector | Mechanical | approved | TC-C-01 |
| REQ-006 | 3.3V rail from BQ24075 SYS pin | Functional | approved | TC-P-03, TC-P-04, TC-P-05 |
| REQ-007 | MCP1700-3302E/TO LDO regulator | Interface | approved | TC-P-03 |
| REQ-008 | LDO quiescent current ≤ 4 µA | Performance | approved | TC-P-06 |
| REQ-009 | 3.3V rail bulk decoupling capacitors | Interface | approved | TC-M-00, TC-M-02 |
| REQ-010 | LDO input and output decoupling | Interface | approved | TC-M-00 |
| REQ-011 | Battery voltage monitoring via ADS7828 CH0 | Functional | approved | TC-A-00, TC-A-01 |
| REQ-012 | Battery divider 2×1 MΩ (1:2 ratio) | Performance | approved | TC-A-00, TC-A-01 |
| REQ-013 | Battery divider quiescent drain ≤ 5 µA | Performance | approved | TC-A-02 |
| REQ-014 | Battery divider software-disconnectable | Performance | approved | TC-A-02 |
| REQ-015 | MCU module ESP32-C6-MINI-1-N4 | Interface | approved | TC-D-00 |
| REQ-016 | MCU supply voltage 3.0–3.6V | Performance | approved | TC-D-00 |
| REQ-017 | Deep sleep total board current ≤ 20 µA | Performance | approved | TC-A-03, TC-P-06 |
| REQ-018 | WiFi 802.11ax (WiFi 6) at 2.4 GHz | Functional | approved | TC-S-00 |
| REQ-019 | BLE 5.0 support | Functional | approved | TC-S-01 |
| REQ-020 | I2C bus on external connector | Interface | approved | TC-D-01 |
| REQ-021 | UART on external connector | Interface | approved | TC-D-02, TC-D-03 |
| REQ-022 | SPI bus on external connector | Interface | approved | TC-D-03 |
| REQ-023 | Serial bus connector 3.3V and GND | Interface | approved | TC-C-02 |
| REQ-024 | USB-C connector for charging | Mechanical | approved | TC-C-00, TC-P-00 |
| REQ-025 | USB-C VBUS ESD protection | Safety | approved | TC-C-03, TC-P-00 |
| REQ-026 | ESP32 antenna keep-out zone observed | Mechanical | approved | TC-M-01 |
| REQ-027 | 100 nF decoupling caps near ESP32 VCC pads | Mechanical | approved | TC-M-02 |
| REQ-028 | Bulk 100 µF cap near ESP32 module | Mechanical | approved | TC-M-02 |
| REQ-029 | Battery monitor divider routed away from RF | Mechanical | approved | TC-M-00 |
| REQ-030 | Test points on 3.3V, GND, UART TX/RX, BOOT, RESET | Mechanical | approved | TC-M-03 |
| REQ-031 | WiFi MQTT communication with Raspberry Pi | Functional | approved | TC-S-02, TC-S-00 |
| REQ-032 | Configurable sleep interval persisted in NVS | Functional | approved | TC-S-02 |
| REQ-033 | Sleep OFF and Sleep ON operating modes | Functional | approved | TC-S-03, TC-S-02 |
| REQ-034 | Static IP, wake-to-TX ≤ 500 ms | Performance | approved | TC-S-04 |
| REQ-035 | ≥ 7 days runtime at 10 s wake interval | Performance | approved | TC-S-05 |
| REQ-036 | ≥ 45 days runtime at 30 s wake interval | Performance | approved | TC-A-03 |
| REQ-037 | PI4IOE5V6416 I2C GPIO expander | Interface | approved | TC-D-01 |
| REQ-038 | GPIO expander external module control signals | Functional | approved | TC-D-01 |
| REQ-039 | GPIO expander INT to IO22 for wake-from-sleep | Functional | approved | TC-D-01 |
| REQ-040 | GPIO expander 3.3V with 100 nF decoupling | Interface | approved | TC-D-01 |
| REQ-041 | ADS7828 12-bit 8-channel I2C ADC | Interface | approved | TC-D-01 |
| REQ-042 | ADC CH0 battery voltage monitoring | Functional | approved | TC-A-00, TC-A-01 |
| REQ-043 | Remaining ADC channels available | Functional | approved | TC-D-01 |
| REQ-045 | ADS7828 3.3V decoupling and VREF from REF3425 | Interface | approved | TC-A-04 |
| REQ-046 | Operate from USB alone | Functional | approved | TC-P-00, TC-D-00 |
| REQ-047 | Prioritise USB over battery when USB connected | Functional | approved | TC-P-01 |
| REQ-048 | Simultaneous charging and system operation | Functional | approved | TC-P-01, TC-P-05 |
| REQ-049 | BOOT pin USB bootloader access | Interface | approved | TC-M-03, TC-D-00 |
| REQ-050 | SX1276 LoRa 868 MHz transceiver | Functional | approved | TC-L-00 |
| REQ-051 | SX1276 on SPI2 with IO4 NSS | Interface | approved | TC-D-03, TC-L-00 |
| REQ-052 | SX1276 DIO0 interrupt on IO5 | Interface | approved | TC-L-01 |
| REQ-053 | SX1276 RESET via GPIO expander | Interface | approved | TC-D-01 |
| REQ-054 | SX1276 SMA connector 50 Ω matched trace | Interface | approved | TC-M-00 |
| REQ-055 | SX1276 RF positioned away from ESP32 antenna | Mechanical | approved | TC-M-01 |
| REQ-056 | SX1276 sleep mode during ESP32 deep sleep | Performance | approved | TC-A-03 |
| REQ-057 | LoRa and WiFi concurrent operation | Functional | approved | TC-L-02 |
| REQ-058 | REF3425 2.5V precision voltage reference | Interface | approved | TC-A-04 |
| REQ-059 | Bidirectional battery current measurement via INA333 | Functional | approved | TC-D-01 |
| REQ-060 | INA333 power-gated during deep sleep | Performance | approved | TC-A-03, TC-P-06 |
Trace Link Graph
■ Done ■ Partial ■ Not started ■ No test case
Verification Records
No verification records.
Decisions
GPIO assignments constrained by ESP32-C6-MINI-1-N4 fixed-function pins (UART0, USB) and available GPIO matrix pins. LP_I2C assigned to dedicated low-power capable pins (IO6/IO7). IO4 and IO5 originally reserved for JTAG (MTMS/MTDI) — reservation removed 2026-04-12; reassigned to SX1276 NSS and DIO0.
Trade-offs: IO9 (I2C0 SCL) is a boot strapping pin — I2C pull-up holds it high at boot (safe). IO15 (UART1 RX) is a strapping pin for JTAG source. All GPIOs fully allocated except IO23.
Logical separation of subsystems improves readability and parallel review. Power sheet is self-contained for electrical safety review. MCU sheet isolates digital complexity.
Trade-offs: Cross-sheet signals require KiCad hierarchical labels. USB D-/D+ route from Power sheet to MCU sheet. LP_I2C routes from MCU sheet to On-board Peripherals sheet.
ISET and ILIM share 1.5kΩ value for BOM consolidation. TMR=56kΩ gives ~7h fast-charge timer adequate for LiPo cells. NTC thermistor function disabled — divider holds TS at valid level to prevent fault.
Trade-offs: ISET=1.5kΩ → ~593 mA charge current → ~0.77W dissipation on BQ24075; thermal pad copper pour required; BQ24075 TREG will throttle if die overheats. SYSOFF must not be pulled to VBUS. CE must not be pulled to VBUS.
Address 0x20 selected (no conflict with ADS7828 at 0x48). All 6 connector signals grouped on Port 0 for single-register read. LORA_RESETn on P10 (Port 1) is isolated from connector signals.
Trade-offs: RESET pin passively pulled to VCC via 10kΩ (no free MCU GPIO for soft-reset); I2C General Call Reset available as software alternative. INT pin is open-drain; 10kΩ pull-up to 3.3V; routed to IO22.
No conflict with PI4IOE5V6416 at 0x20. Simplest configuration — both address pins tied to GND.
Trade-offs: Address is fixed in hardware; cannot be changed without PCB rework.
Deviations required to expose REQ-038 module control signals (SHDNn, RESETn). No other adjacent NC pins available in that row. VREF exposed for potential mating board use.
Trade-offs: Mating cable/PCB MUST NOT connect pins 16 or 18 to GND — deviates from reference product. VREF (pin 7) limited drive; buffer required on mating board if load >5 mA.
If USB-CDC proves unreliable on prototype, headers allow a standard USB-serial adapter for UART0 access. Headers serve as test points when unpopulated.
Trade-offs: Prototype decision — revisit after board verification. If USB-CDC reliable: leave DNP in R1. If unreliable: populate and consider dedicated UART connector in R1. Partially satisfies REQ-030.
Bidirectional measurement needed to validate REQ-035/036 battery life estimates. ADS7828 CH1 was spare — no extra I2C device needed. PMOS power-gate preserves REQ-017 deep sleep budget (INA333 Iq=50µA otherwise exceeds 20µA limit). PI4IOE P06 was NC — zero cost.
Trade-offs: Adds R_SHUNT in battery series path (minor voltage drop at 600mA). Firmware must manage SHUNTn enable/disable around deep sleep entry/exit.
NDK NX2016SA unavailable at DigiKey/Mouser at time of BOM build. ECS ECX-1637B series is direct drop-in: 2016 4-pad footprint, CL=10pF, ESR≤50Ω, ±10ppm — all within SX1276 crystal requirements.
Trade-offs: ECS part used for prototype only. NX2016SA should be evaluated at production BOM review (REQ-061). No functional difference expected.
Design Rule Status
■ No violations ■ Warning ■ Error ■ Waived
Bill of Materials
| Ref | Part # | Part Name | Category | Qty | Description |
|---|---|---|---|---|---|
| C1 | EGP10000653 | Capacitor 10u | Capacitor | 1 | — |
| C10 | EGP10000651 | CAP0402 2u2F | Capacitor | 1 | — |
| C11 | EGP10000653 | Capacitor 10u | Capacitor | 1 | — |
| C12 | EGP10000653 | Capacitor 10u | Capacitor | 1 | — |
| C13 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C14 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C15 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C16 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C17 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C18 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C19 | EGP10000652 | Capacitor 4u7 | Capacitor | 1 | — |
| C2 | EGP10000653 | Capacitor 10u | Capacitor | 1 | — |
| C20 | EGP10000593 | Capacitor 10p | Capacitor | 1 | — |
| C21 | EGP10000593 | Capacitor 10p | Capacitor | 1 | — |
| C22 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C23 | EGP10000595 | Capacitor 15p | Capacitor | 1 | — |
| C24 | EGP10000595 | Capacitor 15p | Capacitor | 1 | — |
| C25 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C26 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C27 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C28 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C29 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C3 | EGP10000653 | Capacitor 10u | Capacitor | 1 | — |
| C30 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C4 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C5 | EGP10000650 | CAP0402 1uF | Capacitor | 1 | — |
| C6 | EGP10001791 | A782MS227M1VLAS020 | Capacitor | 1 | — |
| C7 | EGP10001454 | CAP0805 10uF 50V | Capacitor | 1 | — |
| C8 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| C9 | EGP10000641 | CAP0402 100nF | Capacitor | 1 | — |
| D1 | EGP10001684 | APT2012G | Diode | 1 | — |
| D2 | EGP10001684 | APT2012G | Diode | 1 | — |
| FB1 | EGP10001889 | MPZ2012S102 | Inductor | 1 | — |
| J1 | EGP10001935 | S2B-PH-K-S | Connector | 1 | — |
| J2 | EGP10001938 | 632723100011 | Connector | 1 | — |
| J3 | EGP10001412 | Q2 B2B conn receptacle | Connector | 1 | — |
| J4 | EGP10001928 | Conn SMA Surface Mount | Connector | 1 | — |
| L1 | EGP10001937 | LQW15AN15NG80D | Inductor | 1 | — |
| PCB1 | EGP10001925 | PCB Accordion Beacon Module R0 | PCB | 1 | — |
| Q1 | EGP10001761 | AO3407 | Transistor | 1 | — |
| R1 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R10 | EGP10000077 | Resistor 1k5 | Resistor | 1 | — |
| R11 | EGP10000077 | Resistor 1k5 | Resistor | 1 | — |
| R12 | EGP10000077 | Resistor 1k5 | Resistor | 1 | — |
| R13 | EGP10000077 | Resistor 1k5 | Resistor | 1 | — |
| R14 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R15 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R16 | EGP10000145 | Resistor 1M | Resistor | 1 | — |
| R17 | EGP10000145 | Resistor 1M | Resistor | 1 | — |
| R18 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R19 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R2 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R20 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R21 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R22 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R23 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R24 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R25 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R26 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R27 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R28 | EGP10001011 | Resistor 0805 100m | Resistor | 1 | — |
| R29 | EGP10000121 | Resistor 100k | Resistor | 1 | — |
| R3 | EGP10000128 | Resistor 200k | Resistor | 1 | — |
| R30 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R31 | EGP10000001 | Resistor 0 | Resistor | 1 | — |
| R32 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R33 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R34 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R35 | EGP10000001 | Resistor 0 | Resistor | 1 | — |
| R36 | EGP10000001 | Resistor 0 | Resistor | 1 | — |
| R37 | EGP10000121 | Resistor 100k | Resistor | 1 | — |
| R38 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R39 | EGP10000097 | Resistor 10k | Resistor | 1 | — |
| R4 | EGP10000121 | Resistor 100k | Resistor | 1 | — |
| R5 | EGP10000121 | Resistor 100k | Resistor | 1 | — |
| R6 | EGP10001147 | Resistor 49k9 | Resistor | 1 | — |
| R7 | EGP10000121 | Resistor 100k | Resistor | 1 | — |
| R8 | EGP10000121 | Resistor 100k | Resistor | 1 | — |
| R9 | EGP10000115 | Resistor 56k | Resistor | 1 | — |
| U1 | EGP10001929 | BQ24075TRGTR | IC | 1 | — |
| U10 | EGP10001934 | INA333AIDGKT | IC | 1 | — |
| U2 | EGP10001930 | MCP1700T-3302E/MB | IC | 1 | — |
| U3 | EGP10001931 | ESP32-C6-MINI-1-N4 | IC | 1 | — |
| U4 | EGP10001794 | SRV05-4LA 4A | Diode | 1 | — |
| U5 | EGP10001021 | PI4IOE5V6416ZDEX | IC | 1 | — |
| U6 | EGP10000946 | ADS7828EB/2K5 | IC | 1 | — |
| U7 | EGP10001154 | REF3425TIDBVR | IC | 1 | — |
| U8 | EGP10001932 | SX1276IMLTRT | IC | 1 | — |
| U9 | EGP10001933 | 4259-63 | IC | 1 | — |
| X1 | EGP10001939 | ECS-320-10-37B-CKY-TR3 | Crystal | 1 | — |