--- tags: [project-drogheda, hardware, watchdog, prototype, breadboard, bom, bring-up] project: Project Drogheda author: Helgen CTO date: 2026-06-22 status: Active — shop list for the Blackpill bring-up --- # Watchdog Bring‑up — Protoboard Shopping List (print me) > **⚠ SUPERSEDED for sensors (2026-07-03):** the proto suite is now **AHT10 (0x38, alone on > I²C1, 3V3) + LM35→PA7 + NTC→PB1** — no SHT40/SHT31/BME280/TMP102 on the proto (PCB-only). > Charge cutoff = **PA8 `CHRG_RUN`** on the TP4056 IN+ (the kit module has no TEMP pin). > Current shop lists = `watchdog-protoboard-BOM-3boards.xlsx` / `watchdog-LISTA-DE-COMPRAS-ES.xlsx`; > wiring = ledger xlsx + Guía v2.2. The sensor/substitute rows below are kept for history only. > Goal: breadboard the v2.2 watchdog on your **existing Blackpill**, prove the > state machine + sensing + load switch + fans + temp loop, **before** any PCB. > All parts are **through‑hole / breadboard‑friendly** and stocked at a normal MX > electronics shop (Steren / AG Electrónica / local). Quantities include spares. > Pin map: [[03-Architecture-Hardware/watchdog-pcb-v3-design#2|design §2]] · > firmware: `blackpillrtkcode_v2.ino` (v2.2). ## 0. Already have — do NOT buy STM32F411 Blackpill · USB‑C/micro cable · 18650 + PowerBoost · Mean Well SD‑15B‑05 (or a bench PSU) · multimeter · the F9P + 4G master (only needed later, not for the bring‑up). A **heat source** (hair dryer / lighter / hot water cup) to trigger the thermal/fan test — household, no need to buy. --- ## 1. Core — bring up the "brains" (buy this even if the shop is sparse) | # | Item | Qty | Value / part | ~MXN | For | |---|---|---|---|---|---| | 1 | Breadboard 830‑pt | 2 | half/full | 120 | build surface (2 = room for fans/sensors) | | 2 | Jumper wires M‑M | 1 pk | 65 pcs | 60 | board wiring | | 3 | Jumper wires M‑F | 1 pk | 40 pcs | 50 | to Blackpill / modules | | 4 | Resistor assortment box | 1 | ¼ W (incl. 330Ω,1k,4.7k,10k,100k,220Ω) | 120 | dividers, gates, pull‑ups | | 5 | LED (any) | 5 | 3/5 mm | 10 | status LED on PB0 | | 6 | Ceramic cap 100 nF | 10 | 0.1 µF (104) | 20 | ADC filters + decoupling | | 7 | Electrolytic 100 µF / ≥16 V | 4 | — | 20 | rail bulk / modem‑burst reservoir | | 8 | **2N3904** (NPN, TO‑92) | 3 | load‑switch driver | 15 | PA1 → P‑FET gate | | 9 | **IRF9540 / IRF9540N** (P‑MOSFET, TO‑220) | 2 | high‑side 5 V switch | 40 | switched 5 V to "stack" | | 10 | **10 kΩ trim pot** | 2 | breadboard trimmer | 30 | sweep VBAT / ignition to test thresholds | | 11 | Tactile button or slide switch | 2 | — | 20 | simulate ignition on/off | | 12 | Male header strip | 1 | 1×40, 2.54 mm | 15 | solder onto any module that needs pins | **Core subtotal ≈ 520 MXN.** With this you can flash v2.2, watch the `$PHLG`/TLM log, and validate the **load switch + the three sense dividers + LED** — the whole watchdog logic — without the thermal parts. --- ## 2. Thermal add‑ons — fans + temperature (the v3 new stuff) | # | Item | Qty | Value / part | ~MXN | For / note | |---|---|---|---|---|---| | 13 | 5 V fan, 40–60 mm, **3‑wire** | 1 | 3‑wire = has tach | 60 | one extraction fan; 3‑wire so PB10 reads RPM. Grab a 2nd as a spare if cheap | | 14 | **IRLZ44N** (logic‑level N‑MOSFET, TO‑220) | 2 | fan low‑side PWM | 30 | 1 + spare; **must be logic‑level**; see substitute below | | 15 | Schottky **1N5819** | 3 | fan flyback | 10 | one across the fan (1N4007 ok if out) | | 16 | I²C temp+RH breakout | 1 | **SHT31 / SHT40** ideal | 120 | matches firmware (0x44). RH catches condensation | | 17 | Analog temp **LM35** (TO‑92) | 2 | sure‑thing fallback | 25 | every shop has it; heat it → watch fans ramp | | 18 | **DS18B20** waterproof probe | 1 | 1‑wire | 45 | great as the battery/modem hot‑spot probe | | 19 | LM2596 buck module (adj.) | 1 | 24/12 → 5 V | 35 | dedicated **fan 5 V** rail (caveat §0a) if no 2nd bench PSU | **Thermal subtotal ≈ 260 MXN** (one fan + driver + one temp option). Grab #13–15 for the fan, and **one** temperature option (#16 ideal, else #17/#18). --- ## 3. Substitutions (shop stock varies — these all work) | If they're out of… | Buy instead | Catch | |---|---|---| | IRLZ44N (logic‑level FET) | **2N2222A** (TO‑92) or **TIP120** (Darlington) | BJT: add 1 kΩ base resistor; fine for a <0.5 A fan. **Plain IRF540/IRFZ44 won't fully turn on from 3.3 V — avoid.** | | SHT31/SHT40 I²C breakout | **BME280/BMP280** (I²C, common) | address 0x76/0x77 → small firmware change | | Any I²C sensor | **LM35** (analog) or **DS18B20** (1‑wire) | not I²C → firmware reads ADC / 1‑wire instead (I'll patch it) | | IRF9540 P‑MOSFET | keep your original, or **2N2222 high‑side** is awkward — ask for any P‑channel ≥30 V | gate fully pulled to GND by the 2N3904, so a standard P‑FET is OK here | | 1N5819 Schottky | **1N4007** | slightly slower; fine at fan PWM | --- ## 4. Bring‑up order (so the list maps to actions) 1. **Just USB** — flash v2.2, open serial @115200. Confirm `BOOT/COLS/TLM` lines **and a `$PHLG,...*CS` every 30 s**. (No external parts — this proves the firmware.) 2. **LED on PB0** via 330 Ω → watch the blink codes change with state. 3. **Load switch** — 2N3904 + IRF9540 + 1 kΩ (base) + 10 kΩ (gate pull‑up) from a 5 V rail; put an LED+330 Ω on the switched output. Toggle: confirm **OFF at reset**, ON when PA1 drives. (This is the heart of recovery.) 4. **Sense dividers** — two 10 kΩ each (÷2) into **PA0** (battery via 18650) and **PA4** (5 V rail); a 10 kΩ pot into **PA5** (ignition). Sweep them and watch `veh`/`ign` flip in the TLM with hysteresis/debounce. 5. **Fan** — PA6 → gate (220 Ω) of IRLZ44N → fan(−); flyback diode across the fan; 100 kΩ gate→GND. Watch it spin/ramp; tach wire → 10 kΩ pull‑up to 3V3 → PB10 → RPM in the log; **unplug the fan → `FAN_FAULT`**. 6. **Temperature** — I²C breakout on PB6/PB7 (+4.7 kΩ pull‑ups), or LM35 on an ADC pin. Heat it → fans ramp per the 45→70 °C curve; at 75 °C the existing thermal derate kicks in. --- ## 5. Wiring cheat‑sheet (Blackpill side) ``` PA0 ← BAT ÷2 (10k/10k) from 18650+ PA6 → 220Ω → IRLZ44N gate; fan(−); 1N5819 ∥ fan PA4 ← 5V ÷2 (10k/10k) from 5V rail PB10 ← fan tach, 10k pull-up → 3V3 (1k series) PA5 ← IGN ÷2 (10k/10k) from pot/switch PB6/PB7 → I²C SCL/SDA (+4.7k each → 3V3) PA1 → 1k → 2N3904 base; collector → IRF9540 PB0 → 330Ω → LED → GND gate; 10k gate→5V; drain → switched (PA7/PB12 left free — 2nd fan if ever needed) 5V → stack (use an LED load to test) GND/5V/3V3 rails common; fan 5V from a SEPARATE 5V (LM2596 or 2nd PSU) — not the stack rail. ``` --- ## 6. Note on the temp sensor + firmware The v2.2 firmware reads **I²C SHT40 (0x44) + TMP102 (0x48)**. Whatever you bring back: - **SHT31/SHT40** → works as‑is (SHT40) or a 1‑line address tweak (SHT31). - **BME280** → change address + read call. - **LM35 / DS18B20** → analog / 1‑wire; tell me which and I'll patch `buildPHLG()` + the fan‑curve input to read it. For *tomorrow's* bring‑up the fan loop can also be driven off the **MCU‑internal** temp (already in firmware) — heat the whole board and the derate still triggers, so you can prove the fan path even before the sensor arrives. ## 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-design|v3 design (pin map, sub‑circuits)]] · `04-Source-Code/firmware/blackpillrtkcode_v2/blackpillrtkcode_v2.ino`