Drogheda/README.md

88 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Project Drogheda (GPS RTK)
Helgen Technologies' **HBOX** RTK GPS tracker fleet for **Hutchison Ports** heavy
equipment (ICAVE / TIMSA / EIT / LCT) — centimetre-class position over 4G, streamed to the
Helgen backend (`retranslator` → Wialon/Traccar → VERONICA), built to survive a hot, salty,
high-vibration port environment.
> **New here? Read [`00-Project-Management/Engineering-Handover.md`](00-Project-Management/Engineering-Handover.md) first.**
> It is the deep context: product, failure analysis, fixes, repo map, open items, glossary.
> This README is the 2-minute orientation; [`CLAUDE.md`](CLAUDE.md) is the terse machine index.
---
## Where we are (2026-06-20)
We deployed a first batch of HBOX trackers on ICAVE machines in **Veracruz**. They worked
"ish," then failed. We are **mid-crisis, hardening for scale** — target **30 units by
August**. The failure is **three independent fronts**, fixed in parallel:
1. **Backend** (confirmed in code) — `retranslator.py` head-of-line blocks the whole fleet
on slow upstream, and an anti-jump filter can **permanently black-hole a healthy unit**.
2. **Thermal** — an **ASA** case (UV-stable, ~95–100 °C — adequate) sealed in a sealed **IP67**
cabinet that also holds the heat-generating **Mean Well** PSU, in full sun → nested heat trap
for the **battery / boost / modem** (not the case).
3. **Prototype hardware** — Dupont + hand-wiring + 18650/PowerBoost; fragile under vibration.
**Units:** all pulled — **4 in hand (3 dead, 1 working-ish)** in Veracruz; team in Querétaro
→ **remote debug**. Field firmware is **v1** (no thermal log).
> **Free triage:** a unit **ONLINE in htracker but OFFLINE in Wialon** is a **backend
> victim**, not dead hardware. Check that before condemning a radio.
---
## The product in one breath
**Rover (HBOX)** on the machine + **Base Station** (Ardusimple AS-PRO-CORS, 110/230 V)
publishing **RTCM3** corrections over **NTRIP**. The rover gets corrections **over the 4G
modem, not the GNSS** → recover a dead link by **power-cycling the 4G stack**, never a GNSS
reset. HBOX core: simpleRTK2B **Pro** (ZED-F9P) · 4G NTRIP Master · STM32F411 watchdog ·
Mean Well SD-15B-05 (24→5 V) · PowerBoost + 18650 · GX16-5 to the cabinet. **24 V is the
production variant.**
## Invariants (never violate)
1. Power-off is the safe state. 2. Never vanish, never loop. 3. Corrections ride the 4G
modem, not the GNSS. 4. No material that softens below ~80 °C (PLA-class) in the thermal path —
the ASA enclosure complies; design to *measured* cabinet temperature. 5. Backend forwards without head-of-line blocking; anti-jump never
locks out a healthy unit. 6. **No secrets in the repo** (the committed MSSQL password is a
live violation to rotate).
## Repo layout
`00-Project-Management` (plan, ethos, financials, **handover**, Drive tooling) ·
`01-Requirements` (SRS, product spec, tracker) · `02-Architecture-Software` (backend review) ·
`03-Architecture-Hardware` (cabinet/HBOX, BOM, PCB brief, watchdog, manual) ·
`04-Source-Code` (`firmware/` · `htracker/` · `notifications/`) ·
`05-Analytics-Reports` (SQL views — placeholder) · `06-Testing-Validation` (RCA, diagnostics) ·
`Marketing` (datasheet, brochure) · `_brand` (LaTeX style) · `99-Archive` (raw inputs).
## Quick start
```bash
# Branded docs (XeLaTeX; League Spartan + MADE Evolve Sans):
cd 01-Requirements/HBOX-Ficha-Tecnica && latexmk -xelatex main.tex
# Firmware (own repo 'hbox-firmware', at 04-Source-Code/firmware):
# open blackpillrtkcode_v2/blackpillrtkcode_v2.ino in the STM32duino toolchain.
# ⚠ Bench-test before any field flash — the sandbox cannot build STM32.
# Backend: 04-Source-Code/htracker (ssh://git.helgen.dev:6611/htracker, feature/test500unidades)
```
## Storage model (one home per artifact)
**This repo** = working source of truth (editable `.md`/`.tex`, code). **Google Drive**
`Drogheda (GPS RTK)` = finalized exports (branded PDFs, native Docs/Sheets). **Second Brain
vault** = distilled decisions/lessons. Author in repo → export final to Drive → distill to
vault. Drive upload how-to + mapping: `00-Project-Management/Drive-Upload/README.md`. Never
change Drive sharing — that's Leo's call.
## Go deeper
- **Deep context / onboarding** → [`00-Project-Management/Engineering-Handover.md`](00-Project-Management/Engineering-Handover.md)
- Current priorities → [`00-Project-Management/PLAN.md`](00-Project-Management/PLAN.md)
- Machine index → [`CLAUDE.md`](CLAUDE.md)
- Failure analysis → [`06-Testing-Validation/RCA-2026-06-field-failures.md`](06-Testing-Validation/RCA-2026-06-field-failures.md)