Drogheda/03-Architecture-Hardware/4G-USB-Reset-LED-addition.md

153 lines
7.9 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.

---
title: HBOX v3 — 4G modem USB / Reset / LED / power-pin fix (build spec)
project: Project Drogheda
date: 2026-07-05
status: SCHEMATIC COMPLETE (ERC 0 errors) — board sync + place + route to finish in KiCad GUI
tags: [project-drogheda, hardware, 4g, usb, revision]
---
# 4G NTRIP module — add USB, reset, LED + fix required power pins
Goal: firmware-update and reset the 4G modem **in place** on the EINARBoard (no more
swapping it to the simpleRTK), and wire the module's **mandatory** pins that are
currently floating.
## Module pin map (XBee-form, per datasheet) → EINARBoard socket
J7 = module pins 1–10 (row 1), J8 = module pins 11–20 (row 2, numbered 20→11 top-to-bottom).
| Module pin | Function | Socket pad | Current | Action |
|---|---|---|---|---|
| 1 VCC | 3.3–3.6 V, 2 A pk | J7.1 | 3V3_MODEM ✓ | keep |
| 2 TX | data out | J7.2 | DOUT_4G ✓ | keep |
| 3 RX | data in | J7.3 | DIN_4G ✓ | keep |
| 4 GND | ground | J7.4 | **NC** | → GND |
| 5 RESET | low = reset | J7.5 | **NC** | → reset button → GND |
| 6 V_USB | 5 V enables USB | J7.6 | **NC** | → USB VBUS (5 V) |
| 7 USB+ | USB D+ | J7.7 | **NC** | → USB D+ |
| 8 USB− | USB D− | J7.8 | **NC** | → USB D− |
| 9 DTR | disabled | J7.9 | NC | leave |
| 10 GND | ground | J7.10 | GND ✓ | keep |
| 11 GND | ground | **J8.10** | **NC** | → GND |
| 12 CTS | disabled | J8.9 | NC | leave |
| 13 LED | 1.8 V LED drive | **J8.8** | **NC** | → R + LED → GND |
| 14 VREF | **must = VCC** | **J8.7** | **NC** | → 3V3_MODEM |
| 15 GND | ground | **J8.6** | **NC** | → GND |
| 16 RTS | disabled | J8.5 | NC | leave |
| 20 ON/OFF | **GND = always ON** | **J8.1** | **NC** | → GND |
> ⚠️ **Must-fix even if we skipped USB:** VREF (J8.7→VCC) and ON/OFF (J8.1→GND). Without
> ON/OFF tied low the modem may never power on. Confirm J8 pad numbers vs. the Ardusimple
> footprint before wiring.
## Parts to add
| Ref | Part | Notes |
|---|---|---|
| J9 | **USB-C receptacle, USB 2.0** (e.g. GCT USB4085 / TYPE-C-31-M-12) | D+/D−, VBUS, GND, 2×CC |
| R_cc1, R_cc2 | 5.1 kΩ 0402/0603 | CC1, CC2 → GND (device-mode detect, required for Type-C) |
| R_dp, R_dm | 0 Ω (optional series) | in D+/D− if you want the option; can be DNP |
| SW_4G | tactile 6 mm (or SMD) | RESET(J7.5) ↔ GND |
| D_4G | LED 0805 | anode ← R_led ← LED(J8.8); cathode → GND |
| R_led | ~1 kΩ | LED current limit (pin sources 1.8 V) |
## New nets
`USB_VBUS` (→ J7.6 V_USB + USB-C VBUS), `USB_DP` (J7.7 ↔ USB-C D+), `USB_DM` (J7.8 ↔ USB-C D−),
`MODEM_RST` (J7.5 ↔ SW_4G ↔ GND), `MODEM_LED` (J8.8 ↔ R_led ↔ D_4G ↔ GND).
Reuse existing `3V3_MODEM` for VREF, `GND` for ON/OFF + spare grounds.
## Placement
Open pocket **right of / below the XBee sockets** (board ≈ x200–212, y76–98). USB-C at the
board edge (mechanical access), button + LED beside it.
## Routing
- **USB D+/D−**: keep the pair together and short; USB-2.0 FS/HS firmware speed is forgiving —
no controlled-impedance needed, just route them side-by-side, similar length, GND nearby.
- Everything else is low-speed/DC — trivial.
- Do it by adding to the **schematic first** → re-import → place → FreeRoute the new nets
(lock existing routing) → DRC → re-export fab.
---
## STATUS 2026-07-05 — what's done, what's left
**DONE (in the schematic `hbox-watchdog-v3-PROD.kicad_sch`, verified ERC 0 errors):**
- Modem must-fix pins wired: **J8.1→GND (ON/OFF), J8.7→3V3_MODEM (VREF), J8.6/J8.10/J7.4→GND**.
- New parts added + net-labelled: **J9** USB-C (USB_C_Receptacle_USB2.0_14P, fp GCT_USB4085),
**Rcc1/Rcc2** 5.1k, **SW4G** reset (CK_PTS636 SMD), **Rmled** 1k, **D4G** LED (0805).
- All connections: USB_VBUS→J7.6, USB_DP→J7.7, USB_DM→J7.8, MODEM_RST→J7.5+SW4G, MODEM_LED→J8.8
chain, CC resistors→GND, USB-C VBUS/GND/CC/D±. (Verified on a trial board sync — J7/J8 pads
took the right nets.)
- Fixed a reference collision: the schematic already had a `Rled` (10k, live circuit); the new
LED resistor is **`Rmled`** so the existing part is untouched.
**LEFT (do in the KiCad GUI — the MCP's board backend left spurious DRC shorts on sync, so the
board was reverted to its clean pre-USB state; the schematic is the source of truth):**
1. **Tools → Update PCB from Schematic (F8)** — pulls in J9, Rcc1, Rcc2, SW4G, Rmled, D4G and
assigns the modem-pin nets. (GUI F8 is clean; don't use the MCP sync.)
2. **Place** the 6 parts in the pocket right of the XBee (board coords, mm):
| Ref | x | y | note |
|---|---|---|---|
| J9 (USB-C) | 199.5 | 79 | fills pocket; pads clear J8 (left) & P3 (right) |
| Rcc1 | 198.5 | 75.3 | CC1 5.1k, row above J9 |
| Rcc2 | 201.2 | 75.3 | CC2 5.1k |
| Rmled | 203.9 | 75.3 | LED 1k |
| D4G | 206.4 | 75.3 | LED |
| SW4G | 202.5 | 90 | reset, in the strip below the y≈87.5 trace |
Courtyard "kisses" with J8/P3 are OK (pads clear) — same as the board's existing by-design kisses.
3. **Route 9 nets.** GND pads (J9 grounds+shields, Rcc·2, SW4G·2, D4G·1) drop to the In1 GND plane
with a via each (THT grounds auto-connect). Signals: USB_VBUS/DP/DM run J7.6/7/8 → J9 (under the
module is fine); MODEM_RST J7.5→SW4G; MODEM_LED J8.8→Rmled→D4G; CC1/CC2 J9→Rcc. Keep D+/D-
together. **FreeRouting** the ratsnest is the fast path (as before).
4. **Fill All Zones (B)** → **DRC** → should be back to the pre-existing cosmetic set (0 shorts).
5. **Re-export the JLCPCB fab package** (`fab-jlcpcb/`) — the current zip predates all of this.
Backup of the clean board kept at `kicad/hbox-watchdog-v3-PROD.kicad_pcb.bak-preusb`.
---
## STATUS 2026-07-05 (later) — board cleaned, ready to place + route in GUI
**What happened:** F8 from the (fixed) PROD project pulled in the 6 USB parts **plus 15
duplicates**, because this project has a **board↔schematic refdes mismatch** (schematic names 18
parts `Cbst1, Rled1 … D4G1, Rmled1, SW4G1`; the routed board uses the clean names `Cbst, Rled …`).
KiCad saw the schematic names as "missing" and added copies. Cleaned at the file level:
- Removed the 15 duplicate footprints from the board; renamed my 3 USB parts to clean names.
- **Board = 132 parts, no duplicates, all 6 USB parts present with correct nets (J9 verified:
VBUS×4, GND+shields, CC1/CC2, D+/D− pairs).** Loads clean, electrically sound.
- Backups: `…kicad_pcb.bak-predupclean`, `…kicad_sch.bak-predupclean`, `…kicad_pro.bak-projfix`.
**F8 is now SAFE (reconciled 2026-07-05).** The schematic's 18 `…1` names were renamed to the
board's clean names (`Cbst1→Cbst … D4G1→D4G, Rmled1→Rmled, SW4G1→SW4G`), so schematic and board
now agree — a future F8 will match by reference and won't duplicate. ERC added **0 new errors**
(one pre-existing "Pin not connected" remains — unrelated; locate it via Inspect→ERC in the GUI).
Backup: `…kicad_sch.bak-prereconcile`.
**Placement:** the board is packed — no clean ~11 mm hole for J9 (USB-C is ~10.5 mm; the J8 pocket
is ~9 mm, and the lower-right is under U7/C43/Ccomp2). Place J9 where its **pads** clear even if
courtyards "kiss" a neighbor (the board already has by-design kisses) — do it live in the GUI.
**Net map for routing (ratsnest targets):**
| Part · pin | Net | Connects to |
|---|---|---|
| J9 A4/A9/B4/B9 | USB_VBUS | **J7 pin 6** |
| J9 A6/B6 | USB_DP | **J7 pin 7** |
| J9 A7/B7 | USB_DM | **J7 pin 8** |
| J9 A5 | USB_CC1 | Rcc1·1 |
| J9 B5 | USB_CC2 | Rcc2·1 |
| J9 GND + 4 shields | GND | plane (via) |
| Rcc1·2, Rcc2·2 | GND | plane |
| SW4G·1 | MODEM_RST | **J7 pin 5** |
| SW4G·2 | GND | plane |
| Rmled·1 | MODEM_LED | **J8 pin 8** |
| Rmled·2 ↔ D4G·anode | MODEM_LED_A | each other |
| D4G·cathode | GND | plane |
So the USB/reset cluster (J9, Rcc1, Rcc2, SW4G) wants to sit near **J7** (left XBee column); the
LED pair (Rmled, D4G) near **J8 pin 8**. GND pads just drop a via into the In1 plane.
**Finish:** place the 6 → route (FreeRoute the DSN or hand-route; D+/D− as a pair) → **B** to fill
zones → DRC (expect 0 shorts) → re-export the JLCPCB package.