KiCad Schematic Reference
SCADA Sensor Node v2.1 — Heltec WiFi LoRa 32 V4 — 200×140mm
KiCad Schematic Reference — SCADA Sensor Node v2.1
Every connection needed to draw the schematic.
Board: Heltec WiFi LoRa 32 V4 ONLY (ESP32-S3 + SX1262), 200×140mm
POWER ARCHITECTURE — READ FIRST
There are TWO independent 3.3V regulators in this system:
- AP2112K-3.3 (U1, on this PCB): Generates +3V3 for sensor ICs,
pullup resistors, and external sensor terminals.
Input: +5V rail. Output: +3V3 rail (net name: +3V3).
- Heltec internal LDO (inside the module): Generates 3.3V for the
ESP32-S3, SX1262 LoRa, and OLED. Fed from +5V via J_HELTEC_R pin 2.
The Heltec outputs its 3.3V on J_HELTEC_L pins 2-3, but we do NOT
connect these to our +3V3 rail. They are NC on our PCB.
This prevents backfeeding between regulators and allows each to
handle its own load independently.
+5V rail powers: Heltec (via header), ULN2003A relays, fan, fuses,
relay LEDs, power LEDs, AP2112K input, 5V sense divider.
+3V3 rail (from AP2112K) powers: ADS131M08, TCA9548A, TMP102,
I2C pullups, One-Wire pullup, flow/DIN pullups, sensor terminals
(DS18B20 VCC, SHT31 VCC, ADXL345 VCC, Qwiic VCC).
FIELD WIRING POWER SOURCES — which terminals provide power
Board-powered terminals (3.3V from our AP2112K):
J_TEMP1-4 Pin 1: +3V3 (powers DS18B20 probes directly)
J_HUM Pin 1: +3V3 (powers SHT31 module directly)
J_VIB1-3 Pin 1: +3V3 (powers ADXL345 modules directly)
J_FLOW1-2 Pin 1: +3V3 (powers flow sensor pull-up / open-collector output)
J_DIN1-4 Pin 1: +3V3 (powers digital input pull-up circuits)
J_QWIIC1-2 Pin 2: +3V3 (powers Qwiic I2C modules directly)
Board-powered terminals (5V from main rail):
J_PRESS1-2 Pin 1: +5V (for 5V loop-powered 4-20mA transmitters)
J_FAN Pin 1: +5V (always-hot fan power)
J_RELAY1-6 Pin 1: +5V via fuse (relay coil common)
Externally-powered terminals (no power from board):
J_CT1-4: CT clamps are passive (no power needed)
J_AIN6: Spare analog — user provides signal
J_PRESS1-2: If using 24V transmitters, ignore Pin 1 and use
external 24V loop supply. Only the signal (Pin 2)
and GND (Pin 3) connect to the board's sense circuit.
MECHANICAL — FINAL DECISIONS
Board size: 200mm × 140mm, 2-layer, 1.6mm thickness
Mounting: 4× M3 holes at corners + 2× DIN rail clip slots (elongated)
DIN rail: Standard 35mm rail. Use Phoenix Contact 1201578 or equivalent
clip that screws into the elongated slots on the PCB underside.
Heltec header spacing: 25.4mm center-to-center (matches module pin rows)
HOW TO USE THIS FILE
Open KiCad → New Project → Open Schematic Editor
Draw each section below as a block on the schematic
Use net labels (shown in CAPS) to connect between blocks
Every pin-to-pin connection is listed explicitly
Symbol libraries you'll need:
-
power: GND, +3V3, +5V
-
Device: R, C, LED, D_Schottky, D_TVS_x2
-
Connector_Generic: Conn_01x02, Conn_01x03, Conn_01x04, Conn_01x18
-
Interface_Expansion: TCA9548A, PCF8574 (if using KiCad built-in)
-
Custom symbols needed: ADS131M08, ULN2003A, TMP102
(or use generic IC symbols with correct pin count)
NET NAMES (use these as labels in KiCad)
Power nets:
+5V, +3V3, GND, AGND, VBIAS
SPI nets (ADC):
ADC_SCLK, ADC_MISO, ADC_MOSI, ADC_CS, ADC_DRDY, ADC_SYNC
I2C nets:
SDA, SCL
MUX_SDA0, MUX_SCL0 (TCA ch0 → VIB1)
MUX_SDA1, MUX_SCL1 (TCA ch1 → VIB2)
MUX_SDA2, MUX_SCL2 (TCA ch2 → VIB3)
One-Wire:
OW_DATA
Analog:
CT1P, CT1N, CT2P, CT2N, CT3P, CT3N, CT4P, CT4N
PRES1_SIG, PRES2_SIG
AIN6P, AIN6N (spare analog input)
5V_SENSE (AIN7P — power monitoring, not a spare channel)
Digital:
FLOW1_SIG, FLOW2_SIG
DIN1_SIG, DIN2_SIG, DIN3_SIG, DIN4_SIG
RELAY1..RELAY6
FAN_CTRL
TMP_ALERT
BLOCK 1: POWER INPUT + PROTECTION
Components: J_PWR, F1, D7, D8, U1, C1, C2, C3, LED1, LED2, R_LED1, R_LED2
J_PWR (Conn_01x02, 5.08mm screw terminal)
Pin 1 → net: 5V_RAW
Pin 2 → GND
F1 (Polyfuse 1.5A, 1812)
Pin 1 → 5V_RAW
Pin 2 → 5V_FUSED
D7 (1N5819, Schottky diode, SOD-123)
Anode → GND
Cathode → 5V_FUSED
(Reverse polarity protection: if polarity is reversed,
D7 forward biases and F1 trips)
D8 (SMBJ6.0A, bidirectional TVS, SMB)
Pin 1 → 5V_FUSED
Pin 2 → GND
After D7 and D8, 5V_FUSED becomes the clean +5V rail:
5V_FUSED → net: +5V
C1 (100μF 16V electrolytic)
- → GND
U1 (AP2112K-3.3, SOT-223) — LOW DROPOUT (250mV)
Pin 1 (GND/Adj) → GND
Pin 2 (VOUT) → +3V3
Pin 3 (VIN) → +5V
Tab → GND
C2 (10μF 0805)
Pin 1 → +3V3
Pin 2 → GND
C3 (100nF 0805)
Pin 1 → +3V3
Pin 2 → GND
C1B (220μF 16V electrolytic, additional bulk cap)
- → GND
LED1 (Green 3mm, 5V power indicator)
Anode → R_LED1 → +5V
Cathode → GND
R_LED1 (1kΩ 0805)
Pin 1 → +5V
Pin 2 → LED1 Anode
LED2 (Green 3mm, 3.3V power indicator)
Anode → R_LED2 → +3V3
Cathode → GND
R_LED2 (1kΩ 0805)
Pin 1 → +3V3
Pin 2 → LED2 Anode
VBIAS voltage divider:
R7 (10kΩ 0805)
Pin 1 → +3V3
Pin 2 → VBIAS
R8 (10kΩ 0805)
Pin 1 → VBIAS
Pin 2 → GND
C9 (10μF 0805)
Pin 1 → VBIAS
Pin 2 → GND
VBIAS = 1.65V (mid-supply for CT bias)
BLOCK 2: ADS131M08 (8-ch 24-bit ADC)
U2: ADS131M08IPBS (TQFP-32, 5×5mm)
Power pins:
Pin 1 (AVDD) → +3V3
Pin 8 (AGND) → GND # (analog zone — place in analog island during layout) (connect to GND at star point)
Pin 24 (DVDD) → +3V3
Pin 17 (DGND) → GND
Decoupling:
C4 (100nF): +3V3 → GND # (analog zone — place in analog island during layout) (place within 3mm of pin 1)
C5 (10μF): +3V3 → GND # (analog zone — place in analog island during layout) (place within 5mm of pin 1)
C6 (100nF): +3V3 → GND (place within 3mm of pin 24)
C7 (10μF): +3V3 → GND (place within 5mm of pin 24)
Reference:
Pin 12 (CAP) → C8 (1μF) → GND (reference buffer, required)
Using internal 1.2V reference. REFP/REFN unconnected.
SPI Interface:
Pin 25 (SCLK) → ADC_SCLK → Heltec GPIO 43
Pin 26 (DIN) → ADC_MOSI → Heltec GPIO 1
Pin 27 (DOUT) → ADC_MISO → Heltec GPIO 44
Pin 28 (CS) → ADC_CS → Heltec GPIO 39
Pin 29 (DRDY) → ADC_DRDY → Heltec GPIO 40
Control:
Pin 31 (SYNC/RESET) → ADC_SYNC → R26 (10kΩ) → +3V3
→ Heltec GPIO 41
Pin 30 (CLKIN) → GND (internal oscillator)
Analog inputs:
Pin 2 (AIN0P) → CT1P
Pin 3 (AIN0N) → CT1N
Pin 4 (AIN1P) → CT2P
Pin 5 (AIN1N) → CT2N
Pin 6 (AIN2P) → CT3P
Pin 7 (AIN2N) → CT3N
Pin 9 (AIN3P) → CT4P
Pin 10 (AIN3N) → CT4N
Pin 11 (AIN4P) → PRES1_SIG
Pin 13 (AIN4N) → GND # (analog zone — place in analog island during layout)
Pin 14 (AIN5P) → PRES2_SIG
Pin 15 (AIN5N) → GND # (analog zone — place in analog island during layout)
Pin 16 (AIN6P) → AIN6P
Pin 18 (AIN6N) → AIN6N
Pin 19 (AIN7P) → AIN7P → 5V_SENSE (power monitoring divider)
Pin 20 (AIN7N) → GND # (analog zone — place in analog island during layout)
Remaining pins:
Pin 21 → GND (NC/GND)
Pin 22 → GND (NC/GND)
Pin 23 → GND (NC/GND)
BLOCK 3: CT INPUTS ×4 (repeat for each channel)
For CT1 (same pattern for CT2→AIN1, CT3→AIN2, CT4→AIN3):
J_CT1 (Conn_01x02, 5.08mm screw, BLUE)
Pin 1 → CT1_RAW_P
Pin 2 → CT1_RAW_N
R1 (22Ω 1%, 0805, burden resistor)
Pin 1 → CT1_RAW_P
Pin 2 → CT1_RAW_N
R9 (10kΩ, 0805, bias high)
Pin 1 → VBIAS
Pin 2 → CT1P
R10 (10kΩ, 0805, bias low)
Pin 1 → VBIAS
Pin 2 → CT1N
C10 (1nF, 0805, filter P)
Pin 1 → CT1P
Pin 2 → GND # (analog zone — place in analog island during layout)
C11 (1nF, 0805, filter N)
Pin 1 → CT1N
Pin 2 → GND # (analog zone — place in analog island during layout)
D1 (BAV99, SOT-23, TVS clamp)
Pin 1 (common cathode) → CT1P
Pin 2 (anode 1) → GND # (analog zone — place in analog island during layout)
Pin 3 (anode 2) → CT1N
(Clamps both pins to ±0.7V above/below each other)
Connection:
CT1_RAW_P → CT1P (after burden R, before bias/filter)
CT1_RAW_N → CT1N
CT1P → ADS131M08 Pin 2 (AIN0P)
CT1N → ADS131M08 Pin 3 (AIN0N)
REPEAT for CT2 (R2, R11, R12, C12, C13, D2 → AIN1P/AIN1N)
REPEAT for CT3 (R3, R13, R14, C14, C15, D3 → AIN2P/AIN2N)
REPEAT for CT4 (R4, R15, R16, C16, C17, D4 → AIN3P/AIN3N)
BLOCK 4: PRESSURE INPUTS ×2
J_PRESS1 (Conn_01x03, 5.08mm screw, PURPLE)
Pin 1 → +5V (powers the 4-20mA transmitter loop. For 24V transmitters,
leave Pin 1 unconnected and use external 24V loop supply instead.
Pin 1 is a convenience for 5V-powered transmitters only.
WARNING: Do NOT connect 24V to Pin 1 — it feeds directly into the 5V rail
and will damage the board. For 24V transmitters, leave Pin 1 floating.)
Pin 2 → PRES1_RAW
Pin 3 → GND
R5 (47Ω 1%, 0805, sense resistor)
Pin 1 → PRES1_RAW
Pin 2 → GND
(4-20mA flows through R5: 4mA=0.19V, 20mA=0.94V)
C18 (100nF, 0805, filter)
Pin 1 → PRES1_SIG
Pin 2 → GND # (analog zone — place in analog island during layout)
D5 (BAV99, SOT-23)
Pin 1 → PRES1_SIG
Pin 2 → GND # (analog zone — place in analog island during layout)
Pin 3 → GND # (analog zone — place in analog island during layout)
Connection:
PRES1_RAW → PRES1_SIG (junction of R5 top and C18)
PRES1_SIG → ADS131M08 Pin 11 (AIN4P)
ADS131M08 Pin 13 (AIN4N) → GND # (analog zone — place in analog island during layout)
REPEAT for PRESS2 (R6, C19, D6 → AIN5P/AIN5N)
BLOCK 5: SPARE ANALOG INPUT (AIN6 only — AIN7 used for 5V sense)
AIN6 is the only remaining spare analog input.
AIN7 is used for 5V power supply monitoring (see Block 19).
J_AIN6 (Conn_01x03, 5.08mm screw, WHITE)
Pin 1 → AIN6P_RAW
Pin 2 → AIN6N_RAW
Pin 3 → GND # (analog zone — place in analog island during layout)
C_F6P (100nF): AIN6P → GND # (analog zone — place in analog island during layout)
C_F6N (100nF): AIN6N → GND # (analog zone — place in analog island during layout)
AIN6P_RAW → AIN6P → ADS131M08 Pin 16
AIN6N_RAW → AIN6N → ADS131M08 Pin 18
BLOCK 6: HELTEC V4 MODULE (pin headers)
IMPORTANT — POWER ARCHITECTURE:
The Heltec V4 has its OWN internal LDO that generates 3.3V from the 5V input.
Our AP2112K LDO generates a SEPARATE +3V3 rail for the sensor ICs on this PCB.
These two 3.3V sources are NOT connected to each other.
Heltec J3 pins 2-3 output the Heltec's internal 3.3V — leave them UNCONNECTED (NC).
This prevents backfeeding between the two regulators.
HEADER PHYSICAL SPEC:
Two 1×18 female pin sockets, 2.54mm pitch, vertical through-hole.
Spacing between headers: 25.4mm center-to-center (matching Heltec pin rows).
The Heltec V4 module plugs straight down into these sockets.
Total pins: 36 (18 per side). Of these: 21 connected, 9 NC, 6 power/reset/GND.
MODULE KEEPOUT ZONE (define in PCB editor):
The Heltec module body is 25.4mm × 50.2mm, mounted 8.5mm above the PCB
surface on the female header pins. SMD components CAN be placed under
the module (ceramic caps, resistors, etc.) since there is 8.5mm clearance.
Through-hole components with leads taller than 8mm should NOT be placed
under the module.
Keepout rectangle (no tall TH components):
Center: same as Heltec center (x=-11, z=-4 in our layout coords)
Width: 28mm (25.4mm module + 1.3mm margin each side)
Length: 54mm (50.2mm module + 1.9mm margin each end)
ANTENNA KEEPOUT (critical for LoRa range):
The Heltec V4 antenna is a PCB trace antenna at the USB-C end of the module.
In our layout, this is the BOTTOM end of the Heltec (z = -4 + 25 = +21).
Keep a 15mm clear zone (no copper pour, no components, no traces) beyond
the antenna end of the module. This means:
No copper pour on TOP layer from z=+21 to z=+36, x=-24 to x=+2
No components in this zone
The bottom-layer ground plane CAN extend under the antenna (acts as reflector).
J_HELTEC_L (Conn_01x18, female header, LEFT side = J3)
Heltec V4: 18 pins per header side. Using Conn_01x18.
Pin 1 → GND
Pin 2 → NC (Heltec 3V3 output — do NOT connect to our +3V3 rail)
Pin 3 → NC (Heltec 3V3 output — do NOT connect to our +3V3 rail)
Pin 4 → NC (GPIO37, blocked: octal SPI)
Pin 5 → net: GPIO46 → DIN2_SIG (with R_BOOT46 to GND)
Pin 6 → net: GPIO45 → FLOW2_SIG (with R_BOOT45 to GND)
Pin 7 → net: GPIO42 → DIN1_SIG
Pin 8 → net: GPIO41 → ADC_SYNC
Pin 9 → net: GPIO40 → ADC_DRDY
Pin 10 → net: GPIO39 → ADC_CS
Pin 11 → NC (GPIO38, blocked: octal SPI)
Pin 12 → net: GPIO1 → ADC_MOSI
Pin 13 → net: GPIO2 → RELAY1
Pin 14 → net: GPIO3 → RELAY2
Pin 15 → net: GPIO4 → RELAY3
Pin 16 → net: GPIO5 → RELAY4
Pin 17 → net: GPIO6 → RELAY5
Pin 18 → net: GPIO7 → RELAY6
J_HELTEC_R (Conn_01x18, female header, RIGHT side = J2)
Pin 1 → GND
Pin 2 → +5V (power input TO Heltec — board supplies 5V to module here)
Pin 3 → NC (Ve/Vext, controlled internally by Heltec)
Pin 4 → NC (Ve/Vext)
Pin 5 → net: GPIO44 → ADC_MISO
Pin 6 → net: GPIO43 → ADC_SCLK
Pin 7 → RST (active low reset, connects to SW1 and C_RST)
Pin 8 → NC (GPIO0, boot strapping pin — do not use)
Pin 9 → NC (GPIO36, blocked: octal SPI)
Pin 10 → NC (GPIO35, blocked: octal SPI/LED)
Pin 11 → NC (GPIO34, blocked: octal SPI)
Pin 12 → NC (GPIO33, blocked: octal SPI)
Pin 13 → net: GPIO47 → DIN3_SIG
Pin 14 → net: GPIO48 → DIN4_SIG
Pin 15 → net: GPIO26 → FLOW1_SIG
Pin 16 → net: GPIO21 → OW_DATA
Pin 17 → net: GPIO20 → SCL
Pin 18 → net: GPIO19 → SDA
BLOCK 7: RESET BUTTON
SW1 (Tactile switch, 6mm)
Pin 1 → RST (J_HELTEC_R Pin 7)
Pin 2 → GND
C_RST (100nF, 0805, debounce)
Pin 1 → RST
Pin 2 → GND
BLOCK 8: I2C BUS + PULLUPS
Main I2C bus: SDA, SCL
R17 (4.7kΩ, 0805, SDA pullup)
Pin 1 → +3V3
Pin 2 → SDA
R18 (4.7kΩ, 0805, SCL pullup)
Pin 1 → +3V3
Pin 2 → SCL
Devices on main bus:
SDA → U4 (TCA9548A) Pin 23
SCL → U4 (TCA9548A) Pin 22
SDA → U7 (TMP102) Pin 6
SCL → U7 (TMP102) Pin 5
SDA → J_HUM Pin 3
SCL → J_HUM Pin 4
SDA → J_QWIIC1 Pin 3, J_QWIIC2 Pin 3
SCL → J_QWIIC1 Pin 4, J_QWIIC2 Pin 4
BLOCK 9: TCA9548A I2C MULTIPLEXER
U4: TCA9548A (DIP-24, in socket SK_U4)
Pin 24 (VCC) → +3V3
Pin 12 (GND) → GND
Pin 23 (SDA) → SDA
Pin 22 (SCL) → SCL
Pin 3 (RESET) → +3V3 (keep active, not reset)
Pin 1 (A0) → GND ■
Pin 2 (A1) → GND ■ I2C addr = 0x70
Pin 21 (A2) → GND ■
Channel 0 (→ VIB1):
Pin 4 (SD0) → MUX_SDA0
Pin 5 (SC0) → MUX_SCL0
R19 (4.7kΩ): +3V3 → MUX_SDA0
R20 (4.7kΩ): +3V3 → MUX_SCL0
Channel 1 (→ VIB2):
Pin 6 (SD1) → MUX_SDA1
Pin 7 (SC1) → MUX_SCL1
R21 (4.7kΩ): +3V3 → MUX_SDA1
R22 (4.7kΩ): +3V3 → MUX_SCL1
Channel 2 (→ VIB3):
Pin 8 (SD2) → MUX_SDA2
Pin 9 (SC2) → MUX_SCL2
R23 (4.7kΩ): +3V3 → MUX_SDA2
R24 (4.7kΩ): +3V3 → MUX_SCL2
Channels 3-7: unconnected (pins 10,11,13,14,15,16,17,18,19,20 → NC)
BLOCK 10: VIBRATION SENSOR TERMINALS ×3
J_VIB1 (Conn_01x04, 5.08mm screw, GREEN)
Pin 1 → +3V3
Pin 2 → GND
Pin 3 → MUX_SDA0
Pin 4 → MUX_SCL0
J_VIB2 (Conn_01x04)
Pin 1 → +3V3, Pin 2 → GND
Pin 3 → MUX_SDA1, Pin 4 → MUX_SCL1
J_VIB3 (Conn_01x04)
Pin 1 → +3V3, Pin 2 → GND
Pin 3 → MUX_SDA2, Pin 4 → MUX_SCL2
BLOCK 11: HUMIDITY TERMINAL
J_HUM (Conn_01x04, 5.08mm screw, TEAL)
Pin 1 → +3V3
Pin 2 → GND
Pin 3 → SDA
Pin 4 → SCL
BLOCK 12: TEMPERATURE ONE-WIRE BUS
R25 (4.7kΩ, 0805, One-Wire pullup)
Pin 1 → +3V3
Pin 2 → OW_DATA
OW_DATA → Heltec GPIO 21 (J_HELTEC_R Pin 16)
J_TEMP1 (Conn_01x03, 5.08mm screw, ORANGE)
Pin 1 → +3V3
Pin 2 → OW_DATA
Pin 3 → GND
C20 (100nF): +3V3 → GND (bypass, place at terminal)
J_TEMP2: same. Pin 2 → OW_DATA. C21 bypass.
J_TEMP3: same. Pin 2 → OW_DATA. C22 bypass.
J_TEMP4: same. Pin 2 → OW_DATA. C23 bypass.
BLOCK 13: FLOW SENSOR INPUTS ×2
J_FLOW1 (Conn_01x03, 5.08mm screw, YELLOW)
Pin 1 → +3V3
Pin 2 → FLOW1_RAW
Pin 3 → GND
R27 (10kΩ, pullup)
Pin 1 → +3V3
Pin 2 → FLOW1_RAW
R33 (1kΩ, series protection)
Pin 1 → FLOW1_RAW
Pin 2 → FLOW1_SIG
C24 (100nF, debounce)
Pin 1 → FLOW1_SIG
Pin 2 → GND
FLOW1_SIG → Heltec GPIO 26 (J_HELTEC_R Pin 15)
J_FLOW2 (same pattern):
R28 (10kΩ pullup), R34 (1kΩ series), C25 (100nF debounce)
FLOW2_SIG → Heltec GPIO 45 (J_HELTEC_L Pin 6)
R_BOOT45 (4.7kΩ, bootstrap pulldown)
Pin 1 → GPIO45 net (= FLOW2_SIG)
Pin 2 → GND
BLOCK 14: DIGITAL INPUTS ×4
J_DIN1 (Conn_01x03, 5.08mm screw, GRAY)
Pin 1 → +3V3
Pin 2 → DIN1_RAW
Pin 3 → GND
R29 (10kΩ, pullup): +3V3 → DIN1_RAW
R35 (1kΩ, series): DIN1_RAW → DIN1_SIG
C26 (100nF, debounce): DIN1_SIG → GND
DIN1_SIG → Heltec GPIO 42 (J_HELTEC_L Pin 7)
J_DIN2: R30, R36, C27 → DIN2_SIG → GPIO 46 (J_HELTEC_L Pin 5)
R_BOOT46 (4.7kΩ): DIN2_SIG → GND (bootstrap pulldown)
J_DIN3: R31, R37, C28 → DIN3_SIG → GPIO 47 (J_HELTEC_R Pin 13)
J_DIN4: R32, R38, C29 → DIN4_SIG → GPIO 48 (J_HELTEC_R Pin 14)
BLOCK 15: ULN2003A RELAY DRIVER + LEDs + FUSES
U3: ULN2003A (DIP-16, in socket SK_U3)
Pin 1 (IN1) → RELAY1 → Heltec GPIO 2 (J_HELTEC_L Pin 13)
Pin 2 (IN2) → RELAY2 → Heltec GPIO 3 (J_HELTEC_L Pin 14)
Pin 3 (IN3) → RELAY3 → Heltec GPIO 4 (J_HELTEC_L Pin 15)
Pin 4 (IN4) → RELAY4 → Heltec GPIO 5 (J_HELTEC_L Pin 16)
Pin 5 (IN5) → RELAY5 → Heltec GPIO 6 (J_HELTEC_L Pin 17)
Pin 6 (IN6) → RELAY6 → Heltec GPIO 7 (J_HELTEC_L Pin 18)
Pin 7 (IN7) → TMP_ALERT (fan control from TMP102)
Pin 8 (GND) → GND
Pin 9 (COM) → +5V (flyback diode return)
Pin 16 (OUT1) → RELAY1_OUT
Pin 15 (OUT2) → RELAY2_OUT
Pin 14 (OUT3) → RELAY3_OUT
Pin 13 (OUT4) → RELAY4_OUT
Pin 12 (OUT5) → RELAY5_OUT
Pin 11 (OUT6) → RELAY6_OUT
Pin 10 (OUT7) → FAN_CTRL
For each relay output (example RELAY1):
FH1 (mini blade fuse holder)
Pin 1 → +5V
Pin 2 → RELAY1_FUSED
R_LED3 (1kΩ, 0805)
Pin 1 → RELAY1_FUSED
Pin 2 → LED3 Anode
LED3 (Red, 3mm)
Anode → R_LED3
Cathode → RELAY1_OUT
J_RELAY1 (Conn_01x02, 5.08mm screw, RED)
Pin 1 (COM) → RELAY1_FUSED
Pin 2 (LOAD) → RELAY1_OUT
REPEAT for RELAY2 through RELAY6 (FH2-FH6, R_LED4-R_LED8, LED4-LED8, J_RELAY2-J_RELAY6)
FAN output:
R_LED9 (1kΩ): +5V → LED9 Anode
LED9 (Green, 3mm): Anode → R_LED9, Cathode → FAN_CTRL
J_FAN (Conn_01x03, 5.08mm screw, GREEN)
Pin 1 → +5V
Pin 2 → FAN_CTRL (ULN2003A OUT7)
Pin 3 → GND
BLOCK 16: TMP102 ONBOARD TEMPERATURE + FAN CONTROL
U7: TMP102 (SOT-563, 6-pin)
Pin 1 (V+) → +3V3
Pin 2 (GND) → GND
Pin 3 (ALERT)→ TMP_ALERT → R39 (10kΩ) → +3V3 (pullup)
→ ULN2003A Pin 7 (IN7)
Pin 4 (ADD0) → GND (I2C addr = 0x48)
Pin 5 (SCL) → SCL
Pin 6 (SDA) → SDA
C30 (100nF, 0805, bypass)
Pin 1 → +3V3
Pin 2 → GND
(Place adjacent to U7)
TMP102 ALERT is configured in firmware as active-HIGH (POL=1).
When board temp > 45°C: ALERT goes HIGH → ULN IN7 → OUT7 sinks → fan ON
When board temp < 40°C: ALERT goes LOW → fan OFF
BLOCK 17: QWIIC CONNECTORS
J_QWIIC1 (JST SH 4-pin, 1mm pitch, SMD)
Pin 1 → GND
Pin 2 → +3V3
Pin 3 → SDA
Pin 4 → SCL
J_QWIIC2 (same)
Pin 1 → GND
Pin 2 → +3V3
Pin 3 → SDA
Pin 4 → SCL
BLOCK 18: BOOTSTRAP PULLDOWNS
R_BOOT45 (4.7kΩ, 0805)
Pin 1 → GPIO45 net (same as FLOW2_SIG)
Pin 2 → GND
Purpose: Ensure GPIO45 is LOW at boot (3.3V flash mode)
R_BOOT46 (4.7kΩ, 0805)
Pin 1 → GPIO46 net (same as DIN2_SIG)
Pin 2 → GND
Purpose: Clean boot, consistent behavior
BLOCK 19: BROWNOUT / 5V POWER SENSE
Voltage divider monitors 5V rail via ADS131M08 channel 7 (reassigned to 5V sensing).
Firmware detects power dips and sends alarms before brownout.
R_SENSE1 (47kΩ, 0805)
Pin 1 → +5V
Pin 2 → 5V_SENSE
R_SENSE2 (10kΩ, 0805)
Pin 1 → 5V_SENSE
Pin 2 → GND # (analog zone — place in analog island during layout)
5V_SENSE → ADS131M08 Pin 19 (AIN7P)
ADS131M08 Pin 20 (AIN7N) → GND # (analog zone — place in analog island during layout)
At 5V input: sense = 0.877V
At 4V input: sense = 0.702V → POWER_LOW alarm
At 3.6V input: sense = 0.632V → POWER_CRITICAL alarm
C1B (220μF 16V electrolytic, bulk hold-up capacitor)
- → GND
(Place in parallel with C1)
BLOCK 20: TEST PADS
TP1 → +5V
TP2 → +3V3
TP3 → GND
TP4 → GND # (analog zone — place in analog island during layout)
TP5 → VBIAS
TP6 → SDA
TP7 → SCL
TP8 → OW_DATA
Style: plated through-hole, 2.0mm diameter. Use KiCad TestPoint_Plated_Hole_D2.0mm.
NET SUMMARY — EVERY NET AND WHERE IT CONNECTS
+5V:
F1 out, D7 cathode, D8 pin1, C1+, U1 VIN, Heltec J2 pin2,
ULN2003A COM, FH1-FH6 input, R_LED1, LED1, J_FAN pin1
+3V3:
U1 VOUT, C2, C3, C4, C5, C6, C7,
R7 (bias top), R17 (SDA pullup), R18 (SCL pullup),
R19-R24 (mux pullups), R25 (OW pullup), R26 (SYNC pullup),
R27-R28 (flow pullups), R29-R32 (DIN pullups), R39 (ALERT pullup),
R_LED2, U4 VCC, U4 RESET, U7 V+, C30,
J_TEMP1-4 pin1, J_HUM pin1, J_VIB1-3 pin1, J_FLOW1-2 pin1,
J_DIN1-4 pin1, J_QWIIC1-2 pin2
GND:
F1/D7/D8, C1-, C2, C3, C4(AGND), C5(AGND), C6, C7, C8, C9,
C10-C29, C30, C_RST, C_F6P/N, C_F7P/N,
R8 (bias bottom), R_BOOT45, R_BOOT46,
U1 GND, U2 DGND, U4 GND/A0/A1/A2, U7 GND/ADD0, U3 GND,
J_PWR pin2, J_TEMP1-4 pin3, J_HUM pin2, J_VIB1-3 pin2,
J_FLOW1-2 pin3, J_DIN1-4 pin3, J_FAN pin3,
J_AIN6 pin3, J_QWIIC1-2 pin1,
SW1 pin2, all test pad GND,
Heltec J2 pin1, Heltec J3 pin1
SDA:
Heltec GPIO19 (J2 pin18), R17, U4 pin23, U7 pin6,
J_HUM pin3, J_QWIIC1 pin3, J_QWIIC2 pin3
SCL:
Heltec GPIO20 (J2 pin17), R18, U4 pin22, U7 pin5,
J_HUM pin4, J_QWIIC1 pin4, J_QWIIC2 pin4
OW_DATA:
Heltec GPIO21 (J2 pin16), R25,
J_TEMP1 pin2, J_TEMP2 pin2, J_TEMP3 pin2, J_TEMP4 pin2
ADC_SCLK: Heltec GPIO43 (J2 pin6) → U2 pin25
ADC_MOSI: Heltec GPIO1 (J3 pin12) → U2 pin26
ADC_MISO: Heltec GPIO44 (J2 pin5) → U2 pin27
ADC_CS: Heltec GPIO39 (J3 pin10) → U2 pin28
ADC_DRDY: Heltec GPIO40 (J3 pin9) → U2 pin29
ADC_SYNC: Heltec GPIO41 (J3 pin8) → U2 pin31, R26
RELAY1-6: Heltec GPIO2-7 → ULN2003A IN1-IN6
FAN_CTRL: ULN2003A OUT7 → J_FAN pin2, LED9
TMP_ALERT: U7 pin3 → R39 → ULN2003A IN7
KICAD FOOTPRINT ASSIGNMENTS
U1 AP2112K-3.3 → SOT-223-3_TabPin2
U2 ADS131M08IPBS → TQFP-32_5x5mm_P0.5mm (or QFP-32)
U3 ULN2003A → DIP-16_W7.62mm
U4 TCA9548A → DIP-24_W7.62mm (in socket SK_U4, DIP only)
U7 TMP102 → SOT-563
SK_U3 → DIP-16_Socket_W7.62mm
SK_U4 → DIP-24_Socket_W7.62mm
R (all 0805) → R_0805_2012Metric
C (all 0805) → C_0805_2012Metric
C1 (electrolytic) → CP_Radial_D6.3mm_P2.50mm
D1-D6 (BAV99) → SOT-23
D7 (1N5819) → SOD-123
D8 (SMBJ6.0A) → SMB_DO-214AA
F1 (polyfuse) → Fuse_1812_4532Metric
SW1 (tactile) → SW_SPST_6x6mm
LED (3mm) → LED_D3.0mm
J_CT1-4 (2P screw) → TerminalBlock_01x02_P5.08mm
J_PRESS1-2 (3P) → TerminalBlock_01x03_P5.08mm
J_TEMP1-4 (3P) → TerminalBlock_01x03_P5.08mm
J_HUM (4P) → TerminalBlock_01x04_P5.08mm
J_VIB1-3 (4P) → TerminalBlock_01x04_P5.08mm
J_FLOW1-2 (3P) → TerminalBlock_01x03_P5.08mm
J_DIN1-4 (3P) → TerminalBlock_01x03_P5.08mm
J_RELAY1-6 (2P) → TerminalBlock_01x02_P5.08mm
J_PWR (2P) → TerminalBlock_01x02_P5.08mm
J_FAN (3P) → TerminalBlock_01x03_P5.08mm
J_AIN6 (3P) → TerminalBlock_01x03_P5.08mm
J_HELTEC_L (1x18) → PinSocket_1x18_P2.54mm_Vertical
J_HELTEC_R (1x18) → PinSocket_1x18_P2.54mm_Vertical
J_QWIIC1-2 → JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm
FH1-FH6 → Fuse_Holder_MiniATO (or similar PCB mount)
TP1-TP8 → TestPoint_Plated_Hole_D2.0mm