auto-sync 2026-06-24 18:00

This commit is contained in:
Leopoldo Rodríguez 2026-06-24 18:00:06 -06:00
parent e43f9a60c1
commit effe473d2b
19 changed files with 38852 additions and 11 deletions

View File

@ -0,0 +1 @@
,focused-serene-brahmagupta,claude,24.06.2026 21:09,file:///sessions/focused-serene-brahmagupta/.config/libreoffice/4;

View File

@ -0,0 +1 @@
,focused-serene-brahmagupta,claude,24.06.2026 21:03,file:///sessions/focused-serene-brahmagupta/.config/libreoffice/4;

View File

@ -34,7 +34,7 @@ status: Active
| 11 | Headers F 6/8/10-pin | 2.54 mm | 1ea | 10 | board interconnect | | 11 | Headers F 6/8/10-pin | 2.54 mm | 1ea | 10 | board interconnect |
| 12 | **5 V supply** | **Mean Well SD-15B-05** (18–36 V→5 V, 3 A) | 1 | 300 | ✅ industrial — keep | | 12 | **5 V supply** | **Mean Well SD-15B-05** (18–36 V→5 V, 3 A) | 1 | 300 | ✅ industrial — keep |
| 13 | Boost / charger | Adafruit **PowerBoost 1000C** (2465) | 1 | 400 | battery path — review | | 13 | Boost / charger | Adafruit **PowerBoost 1000C** (2465) | 1 | 400 | battery path — review |
| 14 | **Ignition cond.** | DFRobot **DFR1015** buck | 1 | 106 | 24 V ign → Blackpill PA5 | | 14 | **Ignition cond.** | DFRobot **DFR1015** buck | 1 | 106 | **v3: ON-BOARD** — GX16 pin 3 = raw ignition (12–24 V) → DFR1015 → PA5 (digital) |
| 15 | **Battery** | Hyvel **18650 1S4P** (FG-0889, 3.6 V) | 1 | 204 | ⚠ charge ≤45 °C — decide | | 15 | **Battery** | Hyvel **18650 1S4P** (FG-0889, 3.6 V) | 1 | 204 | ⚠ charge ≤45 °C — decide |
| 16 | Status LED + holder | Steren 5 mm + bezel | 1 | 3 | PB0 path | | 16 | Status LED + holder | Steren 5 mm + bezel | 1 | 3 | PB0 path |
| 17 | Resistor | 1.5 kΩ (use TBC — see watchdog-schematic) | 1 | 1 | verify value | | 17 | Resistor | 1.5 kΩ (use TBC — see watchdog-schematic) | 1 | 1 | verify value |
@ -80,16 +80,16 @@ savings at 24 V — sourcing decision lives here in `09_`.
|---|---|---|---| |---|---|---|---|
| Inner case | **ASA — keep** (adequate); optional metal / plate-mount | conduction, not material, is the lever | RCA, hardware-brief §2b | | Inner case | **ASA — keep** (adequate); optional metal / plate-mount | conduction, not material, is the lever | RCA, hardware-brief §2b |
| Internal wiring | **Dupont/hand-wire → PCB + locking connectors** | vibration intermittents | hardware-brief §4 | | Internal wiring | **Dupont/hand-wire → PCB + locking connectors** | vibration intermittents | hardware-brief §4 |
| Battery path | **PowerBoost 1000C + 18650 → decide:** drop / LiFePO4 / supercap | heat + safety; do we need parked tracking? | hardware-brief §6.1 | | Battery path | **RESOLVED 2026-06-24: keep 18650 1S4P + LTC4040 charger** (NTC temp-qualified; MCU cuts charge when cell hot). Proto stand-in = TP4056+MT3608 | runtime needed → fix the *charging*, not the cell | `watchdog-electrical-design-state.md` |
| Fuse | **verify the 2 A blade** vs measured worst-case + inrush | client's "under-rated fuse" | RCA H5 | | Fuse | **verify the 2 A blade** vs measured worst-case + inrush | client's "under-rated fuse" | RCA H5 |
| Watchdog discretes | **2N3904/IRF9540N/pull-ups → integrated load switch on PCB** | fewer parts, defined turn-on | hardware-brief §4 | | Watchdog discretes | **2N3904/IRF9540N/pull-ups → integrated load switch on PCB** | fewer parts, defined turn-on | hardware-brief §4 |
| SIM | micro-SIM buried → **front-panel SIM or MFF2 eSIM** | maintainability | hardware-brief §6.2 | | SIM | micro-SIM buried → **front-panel SIM or MFF2 eSIM** | maintainability | hardware-brief §6.2 |
| Thermal | **conduct heat to metal plate / sunshade; NO internal fan** | sealed-box physics | hardware-brief §2b | | Thermal | **v3.0: waterproof duct + Blackpill smart fan** (active managed) + conduct to plate / sunshade | a *ducted* fan removes heat without breaking IP67 | hardware-brief §2b, RCA |
## Open Questions ## Open Questions
- [ ] Confirm the **installed blade-fuse value** (2 A may be under-rated for LTE inrush). - [ ] Confirm the **installed blade-fuse value** (2 A may be under-rated for LTE inrush).
- [ ] Battery decision (drop vs LiFePO4 vs supercap) — blocks the PCB power section. - [x] ~~Battery decision (drop vs LiFePO4 vs supercap)~~ → **RESOLVED 2026-06-24: 1S4P + LTC4040** (NTC temp-qualified charging). Now: **confirm the pack Ah** (label says 40 Ah — suspect; 4× 18650 ≈ 10–14 Ah) → it sizes the charge current + the LTC4040 safety timer.
- [ ] Lock supplier per line (Helgen vs alternate quote) for the August batch. - [ ] Lock supplier per line (Helgen vs alternate quote) for the August batch.
## Related ## Related
@ -97,3 +97,5 @@ savings at 24 V — sourcing decision lives here in `09_`.
- [[CLAUDE|Master Index]] · [[03-Architecture-Hardware/cabinet-electrical-bom|Cabinet BOM detail]] · - [[CLAUDE|Master Index]] · [[03-Architecture-Hardware/cabinet-electrical-bom|Cabinet BOM detail]] ·
[[03-Architecture-Hardware/hardware-respec-and-pcb-brief|Hardware re-spec + PCB brief]] · [[03-Architecture-Hardware/hardware-respec-and-pcb-brief|Hardware re-spec + PCB brief]] ·
[[03-Architecture-Hardware/watchdog-schematic|Watchdog schematic]] [[03-Architecture-Hardware/watchdog-schematic|Watchdog schematic]]
- **[[03-Architecture-Hardware/watchdog-electrical-design-state|Electrical design state & assumptions (CANONICAL)]]** ·
`watchdog-protoboard-BOM-3boards.xlsx` + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto BOMs, 3 boards)

@ -1 +1 @@
Subproject commit cf90f5fad3a5740b0c24752c559287b4771d72cc Subproject commit 45eed65860823dd11044a02baa4c92a173d5e284

File diff suppressed because it is too large Load Diff

View File

@ -649,7 +649,7 @@
"uuid": "561403b3-895e-4153-a7be-3876ae930d43" "uuid": "561403b3-895e-4153-a7be-3876ae930d43"
} }
], ],
"used_designators": "", "used_designators": "#PWR1-4",
"variants": [] "variants": []
}, },
"sheets": [ "sheets": [

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1" version="1.1"
width="297.0022mm" height="210.0072mm" viewBox="0.0000 0.0000 297.0022 210.0072"> width="297.0022mm" height="210.0072mm" viewBox="0.0000 0.0000 297.0022 210.0072">
<title>SVG Image created as hbox-watchdog-v3.svg date 2026-06-24T00:42:37 </title> <title>SVG Image created as hbox-watchdog-v3.svg date 2026-06-24T00:45:31 </title>
<desc>Image generated by Eeschema-SVG </desc> <desc>Image generated by Eeschema-SVG </desc>
<g style="fill:#000000; fill-opacity:1.0000;stroke:#000000; stroke-opacity:1.0000; <g style="fill:#000000; fill-opacity:1.0000;stroke:#000000; stroke-opacity:1.0000;
stroke-linecap:round; stroke-linejoin:round;" stroke-linecap:round; stroke-linejoin:round;"

Before

Width:  |  Height:  |  Size: 811 KiB

After

Width:  |  Height:  |  Size: 811 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -10,6 +10,12 @@ against: blackpillrtkcode_v2.ino v2.2 · watchdog-pcb-v3-design.md
# Watchdog Connection List — Justification & Firmware Cross‑Check # Watchdog Connection List — Justification & Firmware Cross‑Check
> ⚠️ **Current electrical state (2026-06-24): see
> [[03-Architecture-Hardware/watchdog-electrical-design-state|watchdog-electrical-design-state.md]]
> (CANONICAL).** The PA5 ignition row's "R9/R10 (÷2)" is **superseded** — there is **no divider**
> (DFR1015 **on-board** → Rig 100 Ω → D5 BAT54 clamp → PA5 digital). EXT_LED (J1/14) was a real
> disconnect, now fixed. Reset, 4-LED gauge, power-cutoff, and the LTC4040 battery backup were added.
> Every connection in [[03-Architecture-Hardware/watchdog-connections|`watchdog-connections.xlsx`]] > Every connection in [[03-Architecture-Hardware/watchdog-connections|`watchdog-connections.xlsx`]]
> justified — **where it goes, how it's wired, why** — and checked **against the actual > justified — **where it goes, how it's wired, why** — and checked **against the actual
> firmware** (`blackpillrtkcode_v2.ino` v2.2). This pass found **3 issues to fix before fab** > firmware** (`blackpillrtkcode_v2.ino` v2.2). This pass found **3 issues to fix before fab**

View File

@ -0,0 +1,170 @@
---
title: Watchdog v3 — Electrical Design State & Assumptions
tags: [project-drogheda, hardware, watchdog, electrical, assumptions, canonical]
project: Project Drogheda
author: Helgen CTO
date: 2026-06-24
status: Active — CANONICAL current electrical state (read this first)
---
# HBOX Watchdog v3 — Electrical Design State & Assumptions
> **Read this to get the electrical context.** It is the single source of truth for the
> *current* state of the watchdog electrical design — power tree, pin map, the decisions made
> and why, the bug fixes, what is in the schematic vs. still pending, the prototype approach,
> and the open items. Supersedes scattered notes. Links: [[watchdog-pcb-v3-design|design doc]] ·
> [[BOM-master|production BOM]] · `kicad/hbox-watchdog-v3.kicad_sch` (schematic).
---
## 0. Status (2026-06-24)
KiCad schematic `03-Architecture-Hardware/kicad/hbox-watchdog-v3.kicad_sch` — **ERC = 0 errors**
(only cosmetic off-grid + one `Q_NPN_BCE` symbol-cache warning). Authored via the KiCad MCP;
renders to PDF/SVG (`kicad-cli` PATH fixed in `claude_desktop_config.json`).
**In the schematic NOW:** MCU (Blackpill J1/J2), MAIN5V/3V3 rails, 24 V reverse-polarity protect
(Q10 + 15 V Zener DzG), RTK-stack load switch (Q1/Q5), three sense dividers, **on-board DFR1015
ignition conditioning**, fan driver + dedicated fan buck (U2), I²C temp sensors (SHT40 0x44 +
TMP102 0x48), status LED, **reset (SW1 on-board + P10 external)**, **4-LED battery gauge**,
output connectors, PWR_FLAGs.
**Designed but NOT yet wired (next pass):** the **battery-backup power section** (LTC4040 block
+ battery connector + NTC + the P2→MAIN5V re-route) and the **power-cutoff switch**. The LTC4040's
detailed switching reference circuit (symbol, inductor, program resistors sized to the real pack)
is a dedicated power-design pass — *not fabricated blind*.
---
## 1. Power tree (current intent)
```
Cabinet 24 V ─GX16─► Mean Well SD-15B-05 (24→5 V) ─► MAIN5V (board logic rail)
├─► Blackpill 5V (J1/20, J2/18) → 3V3 (on-module LDO)
├─► Load switch (Q5 NPN → Q1 P-FET) → SW_5V → RTK stack
└─► [PLANNED] LTC4040 backup ↔ 1S4P cell; boosts to 5 V on power loss
Cabinet 24 V ─GX16─► Q10 rev-pol P-FET (IRFR5305 + DzG 15 V Zener) ─► U2 fan buck (MP1584) → 5V_FAN → fan
Machine ignition (12–24 V) ─GX16 pin 3─► DFR1015 (ON-BOARD, →5 V) ─► Rig 100 Ω ─► D5 BAT54 clamp→3V3 / C9 ─► PA5
[PLANNED] cutoff switch in series with SYS_5V (downstream of the battery merge) → kills vehicle + battery
```
- **MAIN5V** is the board logic rail. With the LTC4040 inserted, `P2` (vehicle 5 V) feeds the
LTC4040 input and the LTC4040 output feeds MAIN5V (so MAIN5V is the *backed-up* rail).
- **Corrections ride the 4G modem**, not the GNSS — recover a dead link by power-cycling the stack.
- **Power-off is the safe state**: the RTK stack defaults OFF (gate pull-up) until the MCU asserts.
---
## 2. Pin map — STM32F411 Blackpill (current)
J1 = header P1, J2 = header P2. SWD (PA13/PA14) is **not** on the 2×20 → flash via USB.
| Pin | Net | Function | Notes |
|---|---|---|---|
| PA0 | `BAT_SENSE` | ADC ÷2 from battery+ | also feeds the gauge logic |
| PA1 | `PWR_CTRL` | RTK-stack load-switch enable | HIGH = stack ON |
| PA2 / PA3 | `GNSS_TX/RX` | USART2 ↔ F9P UART | NMEA |
| PA4 | `5V_SENSE` | ADC ÷2, vehicle 5 V present | — |
| PA5 | `IGN_SENSE` | **digital** `INPUT_PULLDOWN` | from DFR1015 via Rig + D5 clamp — **NO ÷2** (Finding 2) |
| PA6 | `FAN_PWM` | 25 kHz fan PWM | TIM3_CH1 |
| PA8 | `CHRG_EN` | **[PLANNED]** LTC4040 charge enable/disable | MCU cuts charge when TMP102 reads cell hot |
| PA9 / PA10 | `USART1` relay | optional NMEA relay | `ENABLE_PHLG_RELAY` default 0 |
| PB0 | `EXT_LED` | status LED (low-side) | **FIXED 2026-06-24** (was disconnected) |
| PB6 / PB7 | `I2C1 SCL/SDA` | SHT40 (0x44) + TMP102 (0x48) | 4.7 k pull-ups |
| PB10 | `FAN_TACH` | fan RPM + stalled-fan fault | EXTI |
| PB12–PB15 | `BATLED1–4` | **[NEW]** battery gauge bar | firmware-driven from `BAT_SENSE`, 330 Ω + LED each |
| PC13 | onboard LED | — | WeAct module |
| NRST | `NRST` | **[NEW]** reset | SW1 (on-board) + P10 (external), both → GND |
---
## 3. Decisions made this session (2026-06-24) + rationale
1. **DFR1015 folded ON-BOARD** (was an external module). **GX16 pin 3 now carries RAW machine
ignition (12–24 V), not pre-conditioned 5 V.** The on-board DFR1015 (7.5–30 V in, 5 V out)
auto-handles 12 V *and* 24 V machines, drops the external-module dependency, and removes the
risk of 24 V reaching the 5 V-rated clamp. Nets: `IGN_24V` (P1/3 → U5 VIN), `IGN_5V`
(U5 VOUT → Rig). **Harness implication: feed raw ignition to GX16 pin 3 — not 5 V.**
2. **Ignition sense topology (confirmed, Finding 2):** PA5 is a *digital* input. Path =
DFR1015 5 V → `Rig 100 Ω` series → `IGN_SENSE` → `D5 BAT54` clamp to 3V3 + `C9 100 nF` → PA5.
**No ÷2 divider** (a divider drops the logic-high below V_IH).
3. **Battery backup RE-ADDED** — reverses the old "battery dropped / vehicle-only" (Finding 3).
Real trackers carry a cell; we want runtime on a parked machine. Pack = **18650 1S4P**
(Hyvel FG-0889, 3.6 V). Charger = **LTC4040** (1S Li-ion/LiFePO4 *battery-backup manager*:
switching reverse-buck charger + power-path + 2.5 A boost to 5 V backup + **NTC**). **Safety
lever:** NTC on the cell **+** the Blackpill gates charge (`CHRG_EN`) off when TMP102 reads the
cell hot — this directly answers the RCA's #1 failure (hot Li-ion swelling/ignition). The
charge voltage jumper-selects Li-ion *or* LiFePO4, so a future chemistry change is config, not
redesign. **LTC4040 is 1S-only → sufficient for 1S4P.** (Rejected: supercap = last-gasp only;
BQ24074 + boost = cheap/available but no LiFePO4 path, linear charge heat.)
4. **Reset** — on-board button **SW1** + external connector **P10**, both pull `NRST` → GND.
5. **Battery gauge** — 4 LEDs (D_BAT1–4 = 25/50/75/100 %) on PB12–PB15 via 330 Ω, firmware-driven
from `BAT_SENSE` (no gauge IC; reuses spare GPIOs).
6. **Power cutoff** *(planned)* — external switch in series with the **system 5 V** (downstream of
the battery merge) so it kills vehicle **and** battery power.
---
## 4. Bug fixes this session
- **EXT_LED disconnect (real):** J1/14 (PB0) was not on the `EXT_LED` net — a wire ran *through*
the pin without terminating, so the MCU couldn't drive the status LED. Fixed →
`EXT_LED` = J1/14 · Rled · Q4 gate.
- **Panel-LED short:** a stray wire bridged `P8` pin 1↔pin 2 (anode↔cathode of the external status
LED). Deleted → `LED_A`/`LED_K` clean.
- **Ground unified:** 4 stray `power:GNDREF` symbols (added during arrangement) → `power:GND`
(left as-is they'd have renamed the whole ground net to `GNDREF`). One `GND` net now.
- Schematic grid-snapped to 1.27 mm; symbol fields (Footprint/Datasheet/Description) hidden so only
Reference + Value show.
---
## 5. Prototype approach (3 boards, easy-to-find parts)
- BOMs: `watchdog-protoboard-BOM-3boards.xlsx` (engineering, ≈ MXN 5,341) and
`watchdog-LISTA-DE-COMPRAS-ES.xlsx` (plain-Spanish shop list for a non-expert buyer).
- **Battery backup on proto = module stand-in:** **TP4056** charger + **MT3608** boost + 2× 1N5819
OR-ing + 10 k NTC — reproduces charge / power-loss→backup / `BAT_SENSE` / cell-temp so the
firmware is fully testable. **The PCB uses the LTC4040.** The one thing the proto can't test
exactly is the *temperature-qualified charge cutoff* (LTC4040-only) — validate it in firmware logic.
- **GNSS + 4G: one F9P + 4G set, shared** across the three watchdog boards (the watchdog logic,
sensing, fan/temp, gauge, reset, cutoff and backup all test without them).
---
## 6. Key assumptions / invariants (electrical)
- Backup pack is **1S4P, 3.6 V nominal** (NOT 3S). The "40 Ah" on the label is suspect (4× 18650 ≈
10–14 Ah max) — **confirm**; it sets charge current + the LTC4040 safety timer.
- **GX16 pin 3 = raw machine ignition (12–24 V)** into the on-board DFR1015 (changed this session).
- **MAIN5V** = board logic rail (from SD-15B-05; backed up via the LTC4040 path once wired).
- Corrections ride the **4G modem** → recover the link by power-cycling the stack, never a GNSS reset.
- **Power-off is the safe state**; the load switch defaults OFF until the MCU asserts confidence.
- **Enclosure is ASA** (not PLA); the thermal liability is the **power components** (battery/boost/
modem), not the case. v3.0 thermal = **waterproof duct + Blackpill smart fan** (active managed).
- No material softening < ~80 °C in the thermal path.
---
## 7. Open items / TODO (electrical)
- [ ] **Wire the battery-backup section** into the schematic: LTC4040 block (U6) + battery connector
(BAT+, BAT−, NTC) + the `P2 → LTC4040 → MAIN5V` re-route + `CHRG_EN`/`BAT_SENSE` to the MCU.
- [ ] **Add the power-cutoff switch** in series with SYS_5V.
- [ ] **LTC4040 detailed reference design** — symbol, inductor, `RPROG` (charge current sized to
the real pack Ah), input-current limit, PFI divider, NTC bias, compensation — then **bench-validate**.
- [ ] **Confirm the real pack capacity** (the "40 Ah" label).
- [ ] **Firmware**: gauge-LED driver (PB12–15 from `BAT_SENSE`); `CHRG_EN` cut-charge-when-hot logic
(TMP102); reset is hardware-only.
- [ ] Cosmetic: position the new parts on-grid (clears off-grid warnings).
---
## 8. Pointers
- **Schematic:** `kicad/hbox-watchdog-v3.kicad_sch` (+ `…-schematic.pdf/.svg`).
- **Design doc:** [[watchdog-pcb-v3-design]] (sub-circuits, pin map, findings).
- **Connections:** `watchdog-connections.xlsx` + [[watchdog-connections-rationale]].
- **BOMs:** [[BOM-master]] (production) · `watchdog-protoboard-BOM-3boards.xlsx` +
`watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto) · [[watchdog-protoboard-bringup]] (bench order).
- **Firmware:** `04-Source-Code/firmware/blackpillrtkcode_v2/` (v2.3) + `docs/PINOUT.md`, `docs/LOGGING-SPEC.md`.

View File

@ -9,6 +9,13 @@ supersedes_section: hardware-respec-and-pcb-brief.md §4 (watchdog carrier detai
# HBOX Watchdog Carrier PCB — v3.0 Design (Watchdog + Smart-Fan Thermal) # HBOX Watchdog Carrier PCB — v3.0 Design (Watchdog + Smart-Fan Thermal)
> ⚠️ **Current electrical state (2026-06-24): see
> [[03-Architecture-Hardware/watchdog-electrical-design-state|watchdog-electrical-design-state.md]]
> (CANONICAL).** Since this doc, the DFR1015 folded **on-board** (GX16 pin 3 = raw ignition), the
> **battery was re-added** (LTC4040 + NTC temp-qualified charging on the 1S4P pack), and **reset +
> 4-LED gauge + power-cutoff** were added. Where this doc disagrees with the canonical state, the
> canonical state wins. (Also: 1 fan, not "two" — see the 1-fan update.)
> The production PCB for the STM32F411 watchdog, **expanded** to drive two > The production PCB for the STM32F411 watchdog, **expanded** to drive two
> extraction fans and monitor internal temperature/humidity. This is the > extraction fans and monitor internal temperature/humidity. This is the
> schematic-capture spec: every sub-circuit, every value, every part, the pin > schematic-capture spec: every sub-circuit, every value, every part, the pin
@ -464,7 +471,7 @@ Either way, **v3 ships unchanged** — this experiment only informs a *later* de
SD-15B-05 powers the MCU; **PA4 senses the vehicle-side 5 V**; P4 = sense-only, battery SD-15B-05 powers the MCU; **PA4 senses the vehicle-side 5 V**; P4 = sense-only, battery
DNP). *If ICAVE needs parked tracking*, fit LiFePO4/supercap on P4 **and move the PA4 DNP). *If ICAVE needs parked tracking*, fit LiFePO4/supercap on P4 **and move the PA4
sense tap to the SD-15B-05/P2 (vehicle) node**, not the battery-backed rail. sense tap to the SD-15B-05/P2 (vehicle) node**, not the battery-backed rail.
- [ ] Confirm the **DFR1015** stays an external module (P1 IGN) or folds on-board later. - [x] ~~Confirm the **DFR1015** stays external or folds on-board~~ → **RESOLVED 2026-06-24: folds ON-BOARD.** GX16 pin 3 now carries raw machine ignition (12–24 V) into the on-board DFR1015 → Rig 100 Ω → D5 BAT54 clamp 3V3 → PA5 (digital, no divider).
- [ ] **Load switch**: discrete (default, sourceable) vs eFuse U1 — verify AP2553 LCSC - [ ] **Load switch**: discrete (default, sourceable) vs eFuse U1 — verify AP2553 LCSC
stock at order; otherwise ship discrete. stock at order; otherwise ship discrete.

View File

@ -118,6 +118,7 @@ The v2.2 firmware reads **I²C SHT40 (0x44) + TMP102 (0x48)**. Whatever you brin
the derate still triggers, so you can prove the fan path even before the sensor arrives. the derate still triggers, so you can prove the fan path even before the sensor arrives.
## Related ## Related
- **3-board PROTO BOM (use this for bring-up):** `watchdog-protoboard-BOM-3boards.xlsx` (engineering, ≈MXN 5,341) + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (plain-Spanish shop list). **v3 adds:** reset (on-board + external), 4-LED battery gauge, power-cutoff switch, and battery backup (proto: TP4056+MT3608+OR-diodes+NTC; PCB: **LTC4040**). Canonical electrical state: [[03-Architecture-Hardware/watchdog-electrical-design-state|watchdog-electrical-design-state.md]].
- [[03-Architecture-Hardware/watchdog-pcb-v3-bom|v3 BOM (production + bench, xlsx)]] · - [[03-Architecture-Hardware/watchdog-pcb-v3-bom|v3 BOM (production + bench, xlsx)]] ·
[[03-Architecture-Hardware/watchdog-pcb-v3-design|v3 design (pin map, sub‑circuits)]] · [[03-Architecture-Hardware/watchdog-pcb-v3-design|v3 design (pin map, sub‑circuits)]] ·
`04-Source-Code/firmware/blackpillrtkcode_v2/blackpillrtkcode_v2.ino` `04-Source-Code/firmware/blackpillrtkcode_v2/blackpillrtkcode_v2.ino`

View File

@ -59,6 +59,17 @@ retracted; only **master 21** confirmed). Built **`hbox-log-tools`** (Log Explor
analyzer + dashboard + manual) and a **Blackpill v2.1 logging spec** to fix observability. analyzer + dashboard + manual) and a **Blackpill v2.1 logging spec** to fix observability.
Canonical: `06-Testing-Validation/2026-06-20_Drogheda_GNSS-Findings-Summary.md`. Canonical: `06-Testing-Validation/2026-06-20_Drogheda_GNSS-Findings-Summary.md`.
**Electrical / PCB (2026-06-24).** Watchdog v3 KiCad schematic
(`03-Architecture-Hardware/kicad/hbox-watchdog-v3.kicad_sch`, ERC-clean). **DFR1015 folded
on-board → GX16 pin 3 now carries RAW machine ignition (12–24 V)**, not pre-conditioned 5 V.
**Battery re-added** with a proper charger — **LTC4040 + NTC temperature-qualified charging** on
the 1S4P pack; the Blackpill cuts charge when the cell is hot (answers the RCA's #1 failure).
Added **reset** (on-board + external), a **4-LED battery gauge**, and a **power-cutoff** switch;
fixed two real schematic bugs (EXT_LED disconnect, panel-LED short). Proto = **3 boards** of
easy-to-find parts (`watchdog-protoboard-BOM-3boards.xlsx` + Spanish shop list
`watchdog-LISTA-DE-COMPRAS-ES.xlsx`). **Canonical electrical state →
`03-Architecture-Hardware/watchdog-electrical-design-state.md` — read first for any electrical context.**
--- ---
## 1. System architecture (corrected from the BOM, 2026-06-20) ## 1. System architecture (corrected from the BOM, 2026-06-20)
@ -86,7 +97,10 @@ Canonical: `06-Testing-Validation/2026-06-20_Drogheda_GNSS-Findings-Summary.md`.
- **Power into HBOX = clean 24 V** from the cabinet (via **GX16-5**). Internal - **Power into HBOX = clean 24 V** from the cabinet (via **GX16-5**). Internal
**Mean Well SD-15B-05** makes 5 V; **PowerBoost 1000C + 18650** is battery **Mean Well SD-15B-05** makes 5 V; **PowerBoost 1000C + 18650** is battery
backup; **DFR1015** conditions ignition to the Blackpill. backup; **DFR1015** conditions ignition to the Blackpill. *(This diagram is the field
as-built; the **v3 PCB design supersedes the battery + ignition path** — DFR1015 and an
**LTC4040** battery-backup charger fold on-board, GX16 pin 3 carries raw ignition. See
`03-Architecture-Hardware/watchdog-electrical-design-state.md`.)*
- **Corrections arrive over the 4G modem** (RTCM3 via NTRIP), not the GNSS — so a - **Corrections arrive over the 4G modem** (RTCM3 via NTRIP), not the GNSS — so a
GNSS reset can't fix a dead link; recover by power-cycling the stack (v2 does). GNSS reset can't fix a dead link; recover by power-cycling the stack (v2 does).
- **Watchdog** = STM32F411; see [[03-Architecture-Hardware/watchdog-schematic|watchdog-schematic]]. - **Watchdog** = STM32F411; see [[03-Architecture-Hardware/watchdog-schematic|watchdog-schematic]].
@ -130,7 +144,7 @@ these before presenting; if it breaks one, say so and propose the compliant fix.
| `00-Project-Management` | plan, ethos, hackathon, **financials**, **handover**, client comms, Drive tooling | [[00-Project-Management/PLAN\|PLAN]] · [[00-Project-Management/Engineering-Handover\|Engineering-Handover]] · `ethos.md` · `hackathon-plan.md` · `Financials.md` · `Drive-Upload/` · `client-comms/` | | `00-Project-Management` | plan, ethos, hackathon, **financials**, **handover**, client comms, Drive tooling | [[00-Project-Management/PLAN\|PLAN]] · [[00-Project-Management/Engineering-Handover\|Engineering-Handover]] · `ethos.md` · `hackathon-plan.md` · `Financials.md` · `Drive-Upload/` · `client-comms/` |
| `01-Requirements` | what we build | `SRS.md` · `HBOX-product-spec.md` | | `01-Requirements` | what we build | `SRS.md` · `HBOX-product-spec.md` |
| `02-Architecture-Software` | backend/software analysis, ADRs | `backend-review.md` | | `02-Architecture-Software` | backend/software analysis, ADRs | `backend-review.md` |
| `03-Architecture-Hardware` | HBOX/cabinet, wiring, BOM, **watchdog PCB v3** | `hardware-respec-and-pcb-brief.md` · `cabinet-electrical-bom.md` · `watchdog-schematic.md` · `watchdog-health-telemetry.md` · `firmware-review.md` · `BOM-master.md` · **`watchdog-pcb-v3-design.md`** (schematic spec: +1 fan, +I²C temp/RH) · `watchdog-pcb-v3-bom.xlsx` (proto+production, LCSC) · `watchdog-pcb-v3-kicad-guide.md` (KiCad→JLCPCB) · `watchdog-pcb-v3-blockdiagram.svg` · `watchdog-protoboard-bringup.md` (shop list) · `watchdog-connections.xlsx` (pin/net connection list, PCB+proto) · `watchdog-connections-rationale.md` (per-connection justification + firmware cross-check; flags Q10 Vgs, ignition level, 5V-sense tap) | | `03-Architecture-Hardware` | HBOX/cabinet, wiring, BOM, **watchdog PCB v3** | `hardware-respec-and-pcb-brief.md` · `cabinet-electrical-bom.md` · `watchdog-schematic.md` · `watchdog-health-telemetry.md` · `firmware-review.md` · `BOM-master.md` · **`watchdog-pcb-v3-design.md`** (schematic spec: +1 fan, +I²C temp/RH) · `watchdog-pcb-v3-bom.xlsx` (proto+production, LCSC) · `watchdog-pcb-v3-kicad-guide.md` (KiCad→JLCPCB) · `watchdog-pcb-v3-blockdiagram.svg` · `watchdog-protoboard-bringup.md` (shop list) · `watchdog-connections.xlsx` (pin/net connection list, PCB+proto) · `watchdog-connections-rationale.md` (per-connection justification + firmware cross-check; flags Q10 Vgs, ignition level, 5V-sense tap) · **`watchdog-electrical-design-state.md`** (CANONICAL electrical state — read first) · `kicad/hbox-watchdog-v3.kicad_sch` (schematic, ERC-clean) · `watchdog-protoboard-BOM-3boards.xlsx` + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto BOMs) |
| `04-Source-Code` | firmware + backend repos | `firmware/` (**own git repo `hbox-firmware`**: `blackpillrtkcode_v2/` deploy · `legacy/` v1 · `docs/LOGGING-SPEC.md` v2.1) · `htracker/` · `notifications/` · `rtk-config/` | | `04-Source-Code` | firmware + backend repos | `firmware/` (**own git repo `hbox-firmware`**: `blackpillrtkcode_v2/` deploy · `legacy/` v1 · `docs/LOGGING-SPEC.md` v2.1) · `htracker/` · `notifications/` · `rtk-config/` |
| `05-Analytics-Reports` | SQL views, dashboards (VERONICA/PowerBI), **observability** | `2026-06-22_Drogheda_Manual-Logs-Grafana_v1.0.pdf` (Grafana/Loki log-consultation manual) | | `05-Analytics-Reports` | SQL views, dashboards (VERONICA/PowerBI), **observability** | `2026-06-22_Drogheda_Manual-Logs-Grafana_v1.0.pdf` (Grafana/Loki log-consultation manual) |
| `06-Testing-Validation` | RCA, diagnostics, test evidence, **log analysis & tooling** | `RCA-2026-06-field-failures.md` · `remote-diagnostic-protocol.md` · `2026-06-20_Drogheda_Bench-Log-Analysis_v1.0.md` (rev-3) · `2026-06-20_Drogheda_GNSS-Findings-Summary.md` · `log-analysis/` (repo **`hbox-log-tools`**: `log-explorer.html` · `analyze_logs.py` · `build_dashboard.py` · `docs/manual.pdf`) | | `06-Testing-Validation` | RCA, diagnostics, test evidence, **log analysis & tooling** | `RCA-2026-06-field-failures.md` · `remote-diagnostic-protocol.md` · `2026-06-20_Drogheda_Bench-Log-Analysis_v1.0.md` (rev-3) · `2026-06-20_Drogheda_GNSS-Findings-Summary.md` · `log-analysis/` (repo **`hbox-log-tools`**: `log-explorer.html` · `analyze_logs.py` · `build_dashboard.py` · `docs/manual.pdf`) |