
HB UNI SEN BATT ATMega1284P E07-900MM10S CO2 FUEL4EP
FUEL4EP/HomeAutomation
Home Automation repository of FUEL4EP

Local coordinator for tado V3+ heating devices, with a Home Assistant integration and add-on
Freedo radio is an open-source printed circuit board by CappyT, from the CappyT/freedo repository on GitHub, published under the Apache-2.0 licence. It is a 4-layer board of 100 × 75 mm with 135 parts on 132 nets, routed with 692 tracks and 648 vias.
It is built around the DP9900LP-5V, E07-900MM10S and ESP32-S3-MINI-1-N8, with the H5VUT2U, W5500 and CC0603KRX7R9BB104 among its other parts. Its parts include 47 resistors, 37 capacitors, 10 diodes, 6 ICs and 4 connectors. It belongs with the home automation and IoT and radio and wireless boards and the ESP32 boards of this library.
This PCB design is almost completely AI-generated. I have no experience designing a PCB, this work is not tested and may be completely wrong. If you are willing to help, a pull request is accepted.
Documented checks: an electrical review (findings E01 to E20, outcome in section 8.3) and a silkscreen DRC result (section 6.4). No ERC result is documented.
The repository shows no built board, and every bring-up check in section 8.2 is open. tools/make_fab.py generates the fabrication package (gerbers, BOM, placement file) on demand. The package is not committed. It comes from an untested design, so have it reviewed before you order it.
The design files in this directory are under the same licence as the rest of the project (Apache License 2.0, see the LICENSE file at the root). The footprints and symbols in lib/ derive from EasyEDA and LCSC libraries and from Espressif libraries. This is provenance only. The terms of those sources apply to those parts.
Rev A replaces the ESP32 devkit and the CC1101 module with one board. The board carries an ESP32-S3-MINI-1-N8, an Ebyte E07-900MM10S CC1101 module, a W5500 with a discrete transformer, an optional isolated PoE module and USB-C. The host talks to the board over USB (native USB-Serial-JTAG) or, after a firmware port, over Ethernet. JLCPCB makes the 4-layer PCB and assembles all SMD parts on the top side. The user hand-solders the RJ45 jack, the DP9900LP-5V module, the edge-mount SMA and, when needed, the J203 header.
Conventions in this file:
LINE SIDE (PoE) || SYSTEM SIDE
||
J301 RJ45 -- pairs 1/2, 3/6 --[ T301 B1608S ]-- MDI -- U301 W5500 -- SPI GPIO 9-14 ----------------+
| | line CTs 15, 10 || | Y301 25 MHz |
| 4/5, 7/8 | || |
BR401 MB10S BR402 MB10S || |
+------+------+ || |
| VIN+/VIN-, D401 SMAJ58A || |
[ U401 DP9900LP-5V, isolated ]-- +VDC 5.66 V -- D402 SS34 --------------+ |
Bob Smith: 4 x (75R + 10 nF) || | |
-> C322 -> SHIELD -> C323 -> GND || J201 USB-C -- F201 -- D201 -- D202 --+ 5V_SYS |
|| | D+/D- via U202 (no VBUS pin) | |
| VBUS -> R216/R217 -> GPIO17 U203 TLV76133DCYR |
| | 3V3 |
+-- USB GPIO 19/20 ------> U201 ESP32-S3-MINI-1-N8 <-+
J203 ----> | SPI GPIO 36-42
+---------------------------------------------------+
3V3 -- L1 -- 3V3_RF -- U1 E07-900MM10S -- ANT -- R191 0R -- L191 shunt -- J1 SMA (edge)PoE option: only U401 is optional. JLC fits the SMD PoE parts on every board, because one order has one BOM (section 5.4).
Module pads from the ESP32-S3-MINI-1 datasheet v1.7, Table 3-1 (pdf p.11-12).
| Signal | GPIO | Pad | Dir | Circuit |
|---|---|---|---|---|
| W5500 RSTn | 9 | 13 | out | R313 10k pull-up to 3V3 |
| W5500 INTn | 10 | 14 | in | R314 10k pull-up to 3V3 |
| W5500 MOSI | 11 | 15 | out | direct |
| W5500 MISO | 12 | 16 | in | direct |
| W5500 SCLK | 13 | 17 | out | R208 33R at the module |
| W5500 SCSn | 14 | 18 | out | W5500 internal pull-up (50-112k) |
| Radio GDO2 (E22 DIO1) | 36 | 32 | in | direct, TP106 |
| Radio GDO0 (E22 DIO3) | 37 | 33 | in | direct, TP105 |
| Radio SCLK | 39 | 35 | out | R209 33R at the module, TP101 |
| Radio CSn (E07 CSN, E22 NSS) | 40 | 36 | out | R210 10k pull-up to 3V3_RF, TP104 |
| Radio SI (MOSI) | 41 | 37 | out | direct, TP102 |
| Radio SO (E07 MISO/GDO1, E22 MISO) | 42 | 38 | in | direct, TP103 |
| E22 NRST (option) | 21 | 25 | out | R101 0R DNP to U1 pad 3 |
| E22 RXEN (option) | 47 | 27 | out | R102 0R DNP to U1 pad 10 |
| E22 BUSY (option) | 48 | 30 | in | R103 0R DNP to U1 pad 11 |
| VBUS_SENSE | 17 | 21 | in | R216 68k from VBUS, R217 100k and C209 100 nF to GND |
| I2C SDA | 15 | 19 | io | J203-2, R219 4.7k to 3V3 DNP |
| I2C SCL | 16 | 20 | io | J203-3, R220 4.7k to 3V3 DNP |
| Header IO1 (ADC1_CH0) | 1 | 5 | io | J203-4 |
| Header IO2 (ADC1_CH1) | 2 | 6 | io | J203-5 |
| Header IO7 (ADC1_CH6) | 7 | 11 | io | J203-6 |
| Header IO8 (ADC1_CH7) | 8 | 12 | io | J203-7 |
| LED TX | 4 | 8 | out | R212 1k, D204 to GND |
| LED RX | 5 | 9 | out | R213 1k, D205 to GND |
| LED STATUS | 6 | 10 | out | R214 1k, D206 to GND |
| USB D- | 19 | 23 | io | R203 22R, U202, J201 A7/B7 |
| USB D+ | 20 | 24 | io | R204 22R, U202, J201 A6/B6 |
| UART0 TX (U0TXD) | 43 | 39 | out | R207 1k at the module, TP211, J203-8 |
| UART0 RX (U0RXD) | 44 | 40 | in | TP212, R218 1k to J203-9 |
| BOOT | 0 | 4 | in | R206 10k pull-up, SW202 to GND |
| EN (CHIP_PU) | - | 45 | in | R205 10k pull-up, C201 1 uF, SW201 to GND |
| 3V3 | - | 3 | pwr | C206 22 uF + C207 100 nF at the pad |
| GND | - | 1, 2, 42, 43, 46-65 | pwr | 46-60 is the antenna-end row, 61 the EPAD, 62-65 the corner pads |
| Not connected | 3, 45, 46, 26 | 7, 41, 44, 26 | - | Straps (3, 45, 46) and PSRAM CS (26) |
| Not connected | 33-35 | 28, 29, 31 | - | Octal flash lines, free on the N8 |
| Spare, not connected | 18, 38 | 22, 34 | - | GPIO38 is driven low in USB-OTG download (see below) |
GPIO allocation rules for the new signals:
Boot states of the bus pins. At reset, no pin in the table has a pull or an output (S3 DS Table 2-1, pdf p.16-17). After reset, each is an input (IE). GPIO39 also gets the weak pull-up while pad JTAG is not disabled (note 7).
| GPIO | Signal | ESP32 side | Power-up glitch | SPI boot | USB-OTG download |
|---|---|---|---|---|---|
| 9 | W5500 RSTn | out | 60 us low | input | input |
| 10 | W5500 INTn | in | 60 us low | input | input |
| 11 | W5500 MOSI | out | 60 us low | input | input |
| 12 | W5500 MISO | in | 60 us low | input | input |
| 13 | W5500 SCLK | out | 60 us low | input | input |
| 14 | W5500 SCSn | out | 60 us low | input | input |
| 36 | radio GDO2 | in | none | input | input |
| 37 | radio GDO0 | in | none | input | input |
| 38 | spare | - | none | input | output low (VMO) |
| 39 | radio SCLK | out | none | input | output low (VPO) |
| 40 | radio CSn | out | none | input | output high (OEN) |
| 41 | radio MOSI | out | none | input | input (VM) |
| 42 | radio MISO | in | none | input | input (VP) |
Pin notes:
J201 VBUS -- F201 0.75 A PTC --+-- D201 SMF6.0A -- GND
+-- C208 100 nF, R215 4.7k bleeder -- GND
+-- R216 68k -- VBUS_SENSE (GPIO17) -- R217 100k || C209 100 nF -- GND
+-- D202 SS34 ---------------+
U401 +VDC 5.66 V -- C401 100 uF, C402 10 uF -- D402 SS34 ---+-- 5V_SYS: C202 10 uF, C203 100 nF, TP "5V_SYS"
|
U203 TLV76133DCYR (SOT-223)
|
3V3: C204 10 uF, C205 100 nF, TP "3V3"
+-- U201 pad 3: C206 22 uF, C207 100 nF
+-- U301 VDD (C312, C313); FB301 -> 3V3A (C305-C311)
+-- L1 BLM15HG102SN1D -> 3V3_RF (C1 10 uF, C2 100 nF) -> U1 E07-900MM10S
+-- 6 LEDs, J203 pin 1U202 (H5VUT2U) protects D+/D- only. It has no VBUS pin.
| Load | Typical | Peak | Source |
|---|---|---|---|
| ESP32-S3, 240 MHz dual core, Wi-Fi off | 100 mA | 108 mA | MINI-1 DS Table 6-6 |
| ESP32-S3, Wi-Fi TX burst 802.11b 20.5 dBm (replaces the row above) | - | 355 mA | MINI-1 DS Table 6-4 |
| W5500, 100M link / 100M TX | 128 mA | 132 mA | W5500 DS 5.3, 5.4 |
| E07-900MM10S TX (RX 18 mA) | 32 mA | 32 mA | E07 DS 2.2 |
| 6 LEDs at ~1.3 mA | 8 mA | 8 mA | calculated, (3.3 - 2.0) V / 1k (unverified Vf) |
| LDO quiescent | 0.07 mA | 0.1 mA | TLV761 DS 5.5 |
| Total | ~270 mA | ~530 mA |
D202 (USB) and D402 (PoE) form a diode-OR into 5V_SYS. The higher source carries the load.
| Sources | Carries the load | 5V_SYS | Reason |
|---|---|---|---|
| USB only | USB through D202 | 5.0 - 0.1 (PTC) - 0.4 = 4.5 V | D402 blocks back-feed into the DP9900 output |
| PoE only | DP9900 through D402 | 5.66 - 0.4 = 5.26 V | D202 blocks back-feed into VBUS (leakage only) |
| USB and PoE | DP9900 | 5.26 V | 5.66 V is 0.41 V above the 5.25 V VBUS maximum (unverified) |
3V3 capacitance. FB301 and L1 are low impedance at the loop frequencies, so C311 and C1 count:
| Rail | Capacitors | Nominal | Effective at 3.3 V (typical X5R, unverified) |
|---|---|---|---|
| +3V3 | C204 10 uF, C206 22 uF, C312 10 uF, C205, C207, C313 100 nF | 42.3 uF | 6 + 10 + 6 + 0.3 = 22.3 uF |
| 3V3A (FB301) | C311 10 uF, C305-C310 100 nF | 10.6 uF | 6.6 uF |
| 3V3_RF (L1) | C1 10 uF, C2 100 nF | 10.1 uF | 6.1 uF |
| Total | 63.0 uF | ~35 uF |
The total lies inside the 1-220 uF range. The MLCCs sit at their loads and connect through board copper, which adds series resistance to the 2 mohm ESR floor. Check 3V3 for ringing on a load step at bring-up (section 8.2).
USB attach (USB 2.0 7.2.4.1: at most 10 uF at attach, including the capacitance visible through the regulator):
VBUS side, charged at attach through D202:
C208 0.1 + C202 10 + C203 0.1 = 10.2 uF nominal, ~7.7 uF effective at 5 V (10 uF 25 V 0805 X5R, typical)
Q = 7.7 uF x 5.25 V = 40 uC <= 10 uF x 5.25 V = 52.5 uC
C209 sits behind R216 68k (tau 4 ms): 0.3 uC over milliseconds, no attach current.
3V3 side, behind U203:
U203 starts after VIN passes UVLO (2.4 V max) and ramps OUT over ~500 us (soft-start).
Q3V3 = 35 uF x 3.3 V = 115 uC -> I = 115 uC / 0.5 ms = 0.23 A (0.42 A with the nominal 63 uF)
The VBUS edge settles in microseconds (review E05 simulation), before the 3V3 ramp starts.
Visible capacitance at attach: ~7.7 uF effective <= 10 uF.The 0.23 A soft-start current then adds to the start-up load. That load is above 100 mA anyway (review E06, accepted in section 8.3).
VBUS protection:
Dissipation, P = (VIN - 3.3 V) x I:
| Case | VIN | 0.27 A | 0.35 A | 0.53 A burst |
|---|---|---|---|---|
| USB only | 5.0 - 0.1 (PTC) - 0.4 = 4.5 V | 0.32 W | 0.42 W | 0.64 W |
| PoE (with or without USB) | 5.66 - 0.4 = 5.26 V | 0.53 W | 0.69 W | 1.04 W |
| PoE, worst (review E10) | 5.66 x 1.05 - 0.27 (SS34 hot) = 5.67 V | 0.64 W | 0.83 W | 1.26 W |
Thermal estimate at the 0.83 W worst case and 50 C ambient:
Module (Ebyte E07-M series DS v1.0):
PHY that freedo uses (cc1101/cc1101.go): 868.324 MHz (channel 26), 2-GFSK, 49.99 kBaud, 25.39 kHz deviation,
135 kHz RX bandwidth, sync D391D391, variable length, CRC-16, FOC +-34 kHz, GDO0 = CRC OK (IOCFG0 0x07),
GDO2 = RX FIFO threshold (IOCFG2 0x00). The module crystal (+-10 ppm = +-8.7 kHz) stays inside the FOC range.
Pad table. The pad drawings are identical: 10.0 x 10.0 mm, 20 pads, 1.27 mm pitch, 2.46 mm, pad 0.75 x 0.80 mm with a 0.40 mm half hole (E07 DS 3.1 pdf p.7-8, tolerance +-0.1 mm; E22-900MM22S DS ch. 3 pdf p.5-6, tolerance +-0.2 mm). The EasyEDA lands of both parts (C5844212, C5333985) put pad 1 at the same place with the same numbering.
| Pad | E07-900MM10S | E22-900MM22S | Net on this board |
|---|---|---|---|
| 1 | VCC | VCC | 3V3_RF |
| 2 | GND | GND | GND |
| 3 | NC | NRST | E22_NRST_PAD3, R101 0R DNP to GPIO21 |
| 4 | NC | NC | open |
| 5 | NC | NC | open |
| 6 | ANT | ANT | RF_ANT, R191 0R to J1 |
| 7 | GND | GND | GND |
| 8 | NC | NC | open |
| 9 | NC | TXEN | E22_TXEN_PAD9, R104 0R DNP to pad 19 |
| 10 | NC | RXEN | E22_RXEN_PAD10, R102 0R DNP to GPIO47 |
| 11 | NC | BUSY | E22_BUSY_PAD11, R103 0R DNP to GPIO48 |
| 12 | MISO/GDO1 | MISO | CC_MISO, GPIO42 |
| 13 | MOSI | MOSI | CC_MOSI, GPIO41 |
| 14 | CSN | NSS | CC_CSN, GPIO40, R210 10k to 3V3_RF |
| 15 | SCK | SCK | CC_SCK, R209 33R to GPIO39 |
| 16 | GND | GND | GND |
| 17 | NC | NC | open |
| 18 | GDO0 | DIO3 | CC_GDO0, GPIO37 |
| 19 | NC | DIO2 | E22_DIO2_PAD19, R104 0R DNP to pad 9 |
| 20 | GDO2 | DIO1 | CC_GDO2, GPIO36 |
Every supply and GND pad has the same function on both modules.
E22-900MM22S option (SX1262, LCSC C5333985, not fitted):
Supply: 3V3 -> L1 BLM15HG102SN1D -> 3V3_RF -> C2 100 nF at pad 1 and C1 10 uF next to it.
RF path: U1 pad 6 (RF_ANT) -> R191 0R -> J1 (RF_J1).
| Ref | Function | Value | Package | MPN | LCSC | Class | Mount | Asm | Fit |
|---|---|---|---|---|---|---|---|---|---|
| U1 | 868 MHz radio module | E07-900MM10S | LCC-20 10 x 10 mm | E07-900MM10S | C5844212 | E | SMD | JLC | yes |
| L1 | 3V3_RF feed | 1 kohm at 100 MHz, 250 mA | 0402 | BLM15HG102SN1D | C76889 | E | SMD | JLC | yes |
| C1 | 3V3_RF bulk | 10 uF 10 V X5R | 0603 | CL10A106KP8NNNC | C19702 | B | SMD | JLC | yes |
| C2 | U1 pad 1 | 100 nF 50 V X7R | 0603 | CC0603KRX7R9BB104 | C14663 | B | SMD | JLC | yes |
| R210 | CSn pull-up | 10k 1% | 0603 | 0603WAF1002T5E | C25804 | B | SMD | JLC | yes |
| R191 | feed series | 0R | 0402 | 0402WGF0000TCE | C17168 | B | SMD | JLC | yes |
| C191 | feed shunt | - | 0402 | - | - | - | SMD | none | DNP |
| L191 | ESD shunt at J1 | 56 nH 2% wire-wound | 0402 | LQW15AN56NG00D | C167482 | E | SMD | JLC | yes |
| R101-R104 | E22 links | 0R | 0603 | 0603WAF0000T5E | C21189 | B | SMD | none | DNP |
| J1 | antenna | SMA jack, 50 ohm, 0-3 GHz, 1.6 mm board | edge mount | XUNPU SMA-KE-347-H13.5-1.6 | C5723200 | E | edge | hand | yes |
U1 footprint Ebyte_LCC-20_10x10mm_P1.27mm_E07-MM10S_E22-MM22S: 20 lands 0.8 x 1.7 mm, 0.8 mm under the module and
0.9 mm outside the body, so an iron reaches every pad. No pad under the module. A 3 x 3 grid of tented GND vias
(2.8 mm pitch) stitches the F.Cu pour under the body to In1.Cu. A rule area keeps tracks out of the module area on all
copper layers. The top GND pour and its stitching vias are allowed (E07 DS 4.1). The 3D model is
the E22 model from easyeda2kicad (same 10.0 x 10.0 x 2.5 mm body, centred, offset 0), because C5844212 has none.
J1 choice: the XUNPU drawing shows an end-launch jack for a 1.60 mm board. The center pin (0.95 mm) lies on a top pad. The body legs clamp both board faces, so the joints are easy to hand-solder. Stock 1,678. The land pattern is three 1.20 x 4.20 mm pads with a 5.65 mm span (XUNPU drawing). Repeat the two ground pads on the bottom side. J1 fixes the board thickness at 1.6 mm.
RF_Module:ESP32-S3-MINI-1 points to the footprint
RF_Module:ESP32-S2-MINI-1. Check every pad of the footprint against MINI-1 DS Fig 11-1 before use:
60 pads 0.8 x 0.4 mm at 0.85 mm pitch, 4 corner pads 0.8 x 0.8 mm, center EPAD. Too much EPAD paste lifts
the module (MINI-1 DS 9).VBUS_SENSE = VBUS x 100k / (68k + 100k) = 0.595 x VBUS (1 % parts: 0.590-0.600)
VIH min = 0.75 x VDD <= 0.75 x 3.36 V = 2.52 V (MINI-1 DS Table 6-3; VDD 3.24-3.36 V, section 4.4)
VBUS 4.40 V -> 2.60-2.64 V reads high (>= 2.52 V)
VBUS 5.50 V -> 3.25-3.30 V below VIH max = VDD + 0.3 V >= 3.54 V (MINI-1 DS Table 6-3)
7.1 V hot-plug peak (microseconds): tau = (68k || 100k) x 100 nF = 4.0 ms, the pin moves < 15 mV
At power-up the pin rises with tau 4 ms, slower than the 0.5 ms soft-start of 3V3: it stays below VDD + 0.3 V.
Divider current 33 uA at 5.5 V. GPIO leakage 50 nA max (Table 6-3): no effect.| Ref | Function | Value | Package | MPN | LCSC | Class | Mount | Asm | Fit |
|---|---|---|---|---|---|---|---|---|---|
| U201 | MCU module | ESP32-S3-MINI-1-N8 | module | ESP32-S3-MINI-1-N8 | C2913206 | E | SMD | JLC | yes |
| J201 | USB-C receptacle | 16P USB 2.0 | SMD + shell legs | HRO TYPE-C-31-M-12 | C165948 | E | SMD | JLC | yes |
| U202 | USB ESD | 2-line, 0.6 pF, no VBUS pin | SOT-23 | H5VUT2U | C20615824 | P | SMD | JLC | yes |
| F201 | VBUS PTC | 0.75 A hold, 1.5 A trip, 16 V | 0805 | BSMD0805-075-16V | C976303 | E | SMD | JLC | yes |
| D201 | VBUS TVS | VRWM 6 V, VC 10.3 V | SOD-123FL | SMF6.0A | C19077499 | P | SMD | JLC | yes |
| D202 | USB OR diode | 40 V 3 A Schottky | SMA | SS34 | C8678 | B | SMD | JLC | yes |
| U203 | 3.3 V LDO | 1 A, 18 V in, soft-start | SOT-223 | TLV76133DCYR | C7527500 | E | SMD | JLC | yes |
| C202 | 5V_SYS / LDO in | 10 uF 25 V X5R | 0805 | CL21A106KAYNNNE | C15850 | B | SMD | JLC | yes |
| C203, C205, C207, C208, C209 | decoupling, VBUS sense filter | 100 nF 50 V X7R | 0603 | CC0603KRX7R9BB104 | C14663 | B | SMD | JLC | yes |
| C204 | LDO out | 10 uF 10 V X5R | 0603 | CL10A106KP8NNNC | C19702 | B | SMD | JLC | yes |
| C206 | module pad 3 | 22 uF 6.3 V X5R | 0603 | CL10A226MQ8NRNC | C59461 | B | SMD | JLC | yes |
| R201, R202 | CC Rd | 5.1k 1% | 0603 | 0603WAF5101T5E | C23186 | B | SMD | JLC | yes |
| R203, R204 | USB series | 22R 1% | 0603 | 0603WAF220JT5E | C23345 | B | SMD | JLC | yes |
| R205, R206, R210 | EN, GPIO0, radio CSn pull-ups | 10k 1% | 0603 | 0603WAF1002T5E | C25804 | B | SMD | JLC | yes |
| R215 | VBUS bleeder | 4.7k 1% | 0603 | 0603WAF4701T5E | C23162 | B | SMD | JLC | yes |
| R216 | VBUS sense, top | 68k 1% | 0603 | 0603WAF6802T5E | C23231 | B | SMD | JLC | yes |
| R217 | VBUS sense, bottom | 100k 1% | 0603 | 0603WAF1003T5E | C25803 | B | SMD | JLC | yes |
| C201 | EN delay | 1 uF 50 V X5R | 0603 | CL10A105KB8NNNC | C15849 | B | SMD | JLC | yes |
| SW201, SW202 | RESET, BOOT | tactile | SMD 5.1 x 5.1 | TS-1187A-B-A-B | C318884 | B | SMD | JLC | yes |
| R207, R218 | U0TXD, U0RXD series | 1k 1% | 0603 | 0603WAF1001T5E | C21190 | B | SMD | JLC | yes |
| R208, R209 | SCLK series | 33R 1% | 0603 | 0603WAF330JT5E | C23140 | B | SMD | JLC | yes |
| D203-D206 | PWR, TX, RX, STATUS | red LED | 0603 | KT-0603R | C2286 | B | SMD | JLC | yes |
| R211-R214 | LED series | 1k 1% | 0603 | 0603WAF1001T5E | C21190 | B | SMD | JLC | yes |
| J203 | GPIO header | 1x10 2.54 mm | THT | - | - | - | THT | hand | DNP |
| R219, R220 | I2C pull-ups | 4.7k 1% | 0603 | 0603WAF4701T5E | C23162 | B | SMD | none | DNP |
C202 is a 25 V 0805 part: a 0603 22 uF part is rated 6.3 V and loses most of its capacitance at 5 V bias (unverified). C202 is 10 uF so that the attach capacitance stays at or below 10 uF (section 4.4).
Circuit (W5500 DS v1.1.0 and WIZnet "W5500-Ref-ExternalMag"):
WIZnet reference contradictions:
| Item | Conflict | Resolution | Source |
|---|---|---|---|
| RX termination | ExternalMag ref: R6/R7 82R. RJ45WithMag ref: 49.9R. | 82R. This board uses a discrete transformer, and ExternalMag is the WIZnet reference for that topology. The W5500 DS gives no MDI values. No document explains the difference; LilyGO T-ETH-Lite-S3 also uses 82R with H1102NLT. | W5500-Ref-ExternalMag, W5500-Ref-RJ45WithMag (both 2015-09-25) |
| Pin 23 (RSVD) | DS: "It must be tied to GND." ExternalMag ref: no-connect marker. | Tie to GND. The datasheet is the part specification. The pin has an internal pull-down (48-174k), so the open pin of the ref also reads low. | W5500 DS v1.1.0 Table 2 p.9, 5.3 p.59 |
| Bob Smith with PoE | WIZnet ref: 75R from each line CT to one node, 49.9R networks on 4/5 and 7/8, 150R from RX+/RX- to the node. With PoE the two 75R put 150 ohm across the PSE output (CT to CT); 48 V / 150 ohm = 320 mA. | 75R in series with 10 nF on each of the four power lines, to a common node, then 1 nF 2 kV to SHIELD. Delete the 49.9R and 150R networks. The WIZnet documents do not cover PoE. | TI SLUA454 1.4 and Figure 1-1 (0.01 uF 100 V, 1000 pF 2 kV 1808); TI SLVA233A p.12 (2 kV line-to-earth, 200 V for the 10 nF) |
| TX CT bias | Both WIZnet refs: R3 10R. LilyGO: 49.9R. | 10R. Both WIZnet references agree. | both WIZnet reference schematics |
The 10 nF DC blocks use 100 V parts, as in SLUA454. SLVA233A calls 200 V a safe choice for surge. This is an open item if the board must pass a surge test.
| Ref | Function | Value | Package | MPN | LCSC | Class | Mount | Asm | Fit |
|---|---|---|---|---|---|---|---|---|---|
| U301 | Ethernet controller | W5500 | LQFP-48 7x7 | W5500 | C32843 | E | SMD | JLC | yes |
| T301 | LAN transformer | 1:1, 350 uH, PoE+ 720 mA | SMD-16 12.7x7 | CND-tek B1608S | C507596 | E | SMD | JLC | yes |
| J301 | RJ45, shielded, no LEDs, 1500 V AC contacts to shield | 8P8C | THT | Hirose TM24RSG-5A-88 | C6285250 | E | THT | hand | yes |
| Y301 | crystal | 25 MHz CL 12 pF +-10 ppm | 3225-4P | X322525MOB4SI | C9006 | B | SMD | JLC | yes |
| C301, C302 | crystal load | 18 pF 5% C0G | 0603 | CL10C180JB8NNNC | C1647 | B | SMD | JLC | yes |
| R301 | XI-XO | 1M 1% | 0603 | 0603WAF1004T5E | C22935 | B | SMD | JLC | yes |
| R302, R309-R312 | XO series, MDI damping | 0R | 0603 | 0603WAF0000T5E | C21189 | B | SMD | JLC | yes |
| R303 | EXRES1 | 12.4k 1% | 0603 | 0603WAF1242T5E | C22865 | E | SMD | JLC | yes |
| C303 | TOCAP | 4.7 uF 16 V X5R | 0603 | CL10A475KO8NNNC | C19666 | B | SMD | JLC | yes |
| C304, C317 | 1V2O, RX CT | 10 nF 50 V X7R | 0603 | 0603B103K500NT | C57112 | B | SMD | JLC | yes |
| FB301 | 3V3D -> 3V3A | 120 ohm at 100 MHz, 2 A | 0603 | BLM18PG121SN1D | C14709 | B | SMD | JLC | yes |
| C305-C310, C313 | AVDD, VDD decoupling | 100 nF 50 V X7R | 0603 | CC0603KRX7R9BB104 | C14663 | B | SMD | JLC | yes |
| C311, C312 | 3V3A, VDD bulk | 10 uF 10 V X5R | 0603 | CL10A106KP8NNNC | C19702 | B | SMD | JLC | yes |
| R304, R305 | TX pull-ups | 49.9R 1% | 0603 | 0603WAF499JT5E | C23185 | B | SMD | JLC | yes |
| R306 | TX CT bias | 10R 1% | 0603 | 0603WAF100JT5E | C22859 | B | SMD | JLC | yes |
| C314 | TX CT | 22 nF 50 V X7R | 0603 | CL10B223KB8NNNC | C21122 | B | SMD | JLC | yes |
| C315, C316 | RX series | 6.8 nF 50 V X7R | 0603 | 0603B682K500NT | C1631 | B | SMD | JLC | yes |
| R307, R308 | RX termination | 82R 1% | 0603 | 0603WAF820JT5E | C23255 | P | SMD | JLC | yes |
| R313, R314 | RSTn, INTn pull-ups | 10k 1% | 0603 | 0603WAF1002T5E | C25804 | B | SMD | JLC | yes |
| D301, D302 | LINK, ACT | red LED | 0603 | KT-0603R | C2286 | B | SMD | JLC | yes |
| R315, R316 | LED series | 1k 1% | 0603 | 0603WAF1001T5E | C21190 | B | SMD | JLC | yes |
| R317-R320 | Bob Smith | 75R 1% | 0603 | 0603WAF750JT5E | C4275 | B | SMD | JLC | yes |
| C318-C321 | Bob Smith DC block | 10nF/100V X7R | 0603 | 0603B103K101NT | C43253 | E | SMD | JLC | yes |
| C322, C323 | BS -> SHIELD, SHIELD -> GND | 1nF/2kV X7R | 1808 | 1808B102K202NT | C81332 | E | SMD | JLC | yes |
The schematic Value of C318-C323 carries the voltage (10nF/100V, 1nF/2kV). The BOM groups by Value and
Footprint, so these parts cannot merge with the 10 nF 50 V C304 and C317.
C322/C323 are 1808 because they cross the isolation barrier. A standard 1206 land has a ~1.8 mm pad gap (unverified), below the 2 mm rule. The 1206 part C9196 is Basic and would save one Extended fee.
Circuit (DP9900 DS Figure 3, TI SLUA454 1.4):
| Ref | Function | Value | Package | MPN | LCSC | Class | Mount | Asm | Fit |
|---|---|---|---|---|---|---|---|---|---|
| BR401, BR402 | bridges | 1 kV 1 A | MBS | MB10S | C2488 | B | SMD | JLC | yes |
| D401 | PD input TVS | 58 V VRWM, 93.6 V VC | SMA | SMAJ58A (MDD) | C123816 | E | SMD | JLC | yes |
| U401 | PD module | 5 V isolated, 802.3af | 8-pin THT module | SDAPO DP9900LP-5V | C5380108 | E | THT | hand | opt |
| R401 | output adjust | 0R | 0603 | 0603WAF0000T5E | C21189 | B | SMD | JLC | yes |
| C401 | output bulk | 100 uF 25 V hybrid aluminium, 105 C 10000 h | SMD 6.3 x 7.7 | Panasonic EEHZA1E101XP | C264047 | E | SMD | JLC | yes |
| C402 | output ceramic | 10 uF 25 V X5R | 0805 | CL21A106KAYNNNE | C15850 | B | SMD | JLC | yes |
| D402 | PoE OR diode | 40 V 3 A Schottky | SMA | SS34 | C8678 | B | SMD | JLC | yes |
| R402 | RB bleeder | 56R 5% 1 W | 2512 | ROHM MCR100JZHJ560 | C308356 | E | SMD | none | DNP |
TestPoint_THTPad_D1.5mm_Drill0.7mm) beside the radio bus. A
B.Cu stub from one tap via on the bus reaches the pad directly, so no stub needs a second via (section 6.4).
The other test pads are SMD.| J203 pin | Signal | GPIO | Circuit |
|---|---|---|---|
| 1 | 3V3 (output) | - | +3V3 |
| 2 | I2C SDA | 15 | R219 4.7k to 3V3, DNP |
| 3 | I2C SCL | 16 | R220 4.7k to 3V3, DNP |
| 4 | IO1 | 1 | ADC1_CH0 |
| 5 | IO2 | 2 | ADC1_CH1 |
| 6 | IO7 | 7 | ADC1_CH6 |
| 7 | IO8 | 8 | ADC1_CH7 |
| 8 | UART0 TX | 43 | R207 1k at U201 |
| 9 | UART0 RX | 44 | R218 1k at J203 |
| 10 | GND | - | GND |
Unique Extended parts that JLC assembles:
| # | Part | LCSC | Block |
|---|---|---|---|
| 1 | ESP32-S3-MINI-1-N8 | C2913206 | MCU |
| 2 | HRO TYPE-C-31-M-12 | C165948 | USB |
| 3 | BSMD0805-075-16V | C976303 | USB |
| 4 | TLV76133DCYR | C7527500 | power |
| 5 | E07-900MM10S | C5844212 | RF |
| 6 | LQW15AN56NG00D | C167482 | RF |
| 7 | BLM15HG102SN1D | C76889 | RF |
| 8 | W5500 | C32843 | Ethernet |
| 9 | B1608S | C507596 | Ethernet |
| 10 | 12.4k 1% 0603 | C22865 | Ethernet |
| 11 | 10 nF 100 V 0603 | C43253 | Ethernet |
| 12 | 1 nF 2 kV 1808 | C81332 | Ethernet |
| 13 | SMAJ58A | C123816 | PoE |
| 14 | EEHZA1E101XP 100 uF 25 V | C264047 | PoE |
The module carries its own match and shield, so the board RF rules cover the ground, the supply and the 50 ohm feed only (rules RF-M1 to RF-M5; E07 DS 4.1).
RF_J1_IN1_VOID).RF_MODULE_NO_TRACKS enforces it. The E22 DIO2 link is the only
track near U1: B.Cu under the GDO and SPI pads, 7.5 mm from pad 6 (E07 DS 4.1).| Boundary | Minimum, every layer | Target | Parts that cross | Measured F.Cu / In1.Cu / In2.Cu / B.Cu |
|---|---|---|---|---|
| Line side <-> system | 2.0 mm | 3 mm | T301, U401 | 5.08 / 6.29 / 6.29 / 6.29 mm |
| Line side <-> SHIELD | 2.0 mm | 3 mm | C322 | 2.00 / 3.05 / 3.05 / 2.00 mm |
| SHIELD <-> system | 2.0 mm | 3 mm | C323 | 2.88 / 5.10 / 5.10 / 3.20 mm |
Measured after the zone fill, copper edge to copper edge (pads, tracks, vias and zone fills exported from pcbnew, distances with shapely), pads of the crossing parts excluded (they are exempt from each other). The line side is the POE_LINE class plus T301 pins 9-16 and U401 pins 5-8.
The barrier strip x 22-25 has no copper on any layer. Only the C323 pads reach into it (2.6 mm pad gap).
The SHIELD pour fills up to the 2.0 mm rule, so line side <-> SHIELD sits at the minimum on B.Cu (PAIR_45 track) and F.Cu (BS track), below the 3 mm target.
Rule check: a GND via placed 1.0 mm from T301 pin 11 on a copy of the board raises iso_line_side (1.90 mm to the
CT_36 track).
The M3 screws are chassis. The SHIELD pour ends 0.25 mm from the H3 hole wall, and the system GND pour ends 0.25 mm from H2 and H4. So a metal screw head bonds SHIELD and GND to a metal enclosure and bypasses C323. This is the intended bond for a metal enclosure. Where the chassis must float, use a plastic enclosure or insulating washers.
Line side: J301 contacts, T301 pins 9-16, BR401, BR402, D401, R317-R320, C318-C321, node BS, U401 pins 5-8 and the traces between them.
System side: GND, 3V3, 5V_SYS, T301 pins 1-8, U301, U401 pins 1-4 and everything else.
SHIELD: J301 shield pins, C322 pad 2, C323 pad 1 and the SHIELD pour on F.Cu and B.Cu (outline in section 6.4), stitched with 18 vias of 0.6/0.3 mm (SLUA454 1.4). The pour gives the cable shield a low-inductance path to C323. The iso rules set its clearance, so the fill stops 2.0 mm from line-side copper.
Only T301, U401, C322 and C323 cross the barrier.
The barrier strip is x 22-25 mm over the full board height (rule area ISOLATION_BARRIER, section 6.4). T301 and
U401 center on x 23.5. The C322/C323 1808 pad gap is 2.6 mm.
freedo-radio.kicad_dru enforces the 2.0 mm minimum on every layer: iso_line_side (net class POE_LINE to
every other class, SHIELD included), iso_shield_to_system (SHIELD to the system classes) and
iso_line_to_mounting_holes (3.9 mm from the H1-H4 hole wall, because the screws are chassis). The pads of
T301, U401, C322, C323 and J301 are exempt from each other.
Inner planes stop at the barrier. No power or ground plane under T301 (WIZnet note c). The T301 land rows are 6.4 mm apart inside (B1608S land pattern: 10.40 mm outer span, 2.00 mm pads). The U401 pin rows are 11.38 mm apart.
Rule source: 2 mm for 1500 Vrms on FR4 (Microchip AN3468 7). Others: 1.5 mm (TI SLUA454, AN3533), 3 mm (Silvertel).
J301 withstands 1500 V AC for 1 minute from the terminals to the shield (TM24R catalog p.2). Its maker land keeps
1.56 mm from the shield pads 11-14 to the contact pads 1 and 8, with 0.15 mm rings on those pads. That is below the
2.0 mm board rule and above the 1.5 mm of TI SLUA454. iso_line_side exempts the J301 pads from each other.
Stackup: JLCPCB JLC04161H-7628, 4 layers, 1.6 mm, 1 oz outer, 0.5 oz inner, ENIG finish for the fine-pitch parts. It is the JLC standard stackup: no stackup fee, and it allows Economic PCBA. KiCad holds it in Board Setup > Physical Stackup.
| Layer | Material | Thickness (mm) | Use |
|---|---|---|---|
| F.Cu (L1) | 1 oz | 0.035 | parts, RF feed, pairs, GND pour |
| prepreg | 7628 x1, er 4.4 | 0.2104 | |
| In1.Cu (L2) | 0.5 oz | 0.0152 | solid GND. One void under the J1 center pad (section 6.1). Stops at the barrier. |
| core | FR4, er 4.6 | 1.065 | |
| In2.Cu (L3) | 0.5 oz | 0.0152 | solid GND, one zone over the whole system side. Stops at the barrier. |
| prepreg | 7628 x1, er 4.4 | 0.2104 | |
| B.Cu (L4) | 1 oz | 0.035 | routing, GND pour |
Copper and dielectric add up to 1.586 mm, 1.616 mm with the 0.015 mm mask layers. JLC gives 1.59 mm +-10% finished.
Reason for the stackup (JLC quote page, impedance page and PCBA price page, read 2026-09-24):
Impedance geometry, all on F.Cu over In1.Cu GND (0.21 mm):
| Line | Net class | Track | Gap | JLC calculator | Closed form, no mask |
|---|---|---|---|---|---|
| 50 ohm grounded coplanar, U1 pad 6 -> R191 -> J1 | RF_50 | 0.30 mm | 0.20 mm to the F.Cu GND pour | 0.306 mm for 50 ohm | 47-57 ohm |
| USB D+/D-, 90 ohm differential | USB_90 | 0.29 mm | 0.20 mm | 0.291 mm for 90 ohm | 92-98 ohm |
| Ethernet MDI, 100 ohm differential, both sides of T301 | ETH_100; line side POE_LINE | 0.23 mm | 0.20 mm | 0.226 mm for 100 ohm | 103-109 ohm |
Net classes (freedo-radio.kicad_pro) and custom rules (freedo-radio.kicad_dru):
| Class | Nets | Track | Clearance | Via |
|---|---|---|---|---|
| Default | all others | 0.20 mm | 0.20 mm | 0.45/0.2 mm |
| RF_50 | /rf/RF_ANT (U1 pad 6 to R191), /rf/RF_J1 (R191 to J1) | 0.30 mm, no vias | 0.20 mm | - |
| USB_90 | USB_DP/USB_DN, USB_MCU_DP/USB_MCU_DN | 0.29 mm, gap 0.20 mm | 0.20 mm, pour 0.5 mm | 0.45/0.2 mm |
| ETH_100 | TXP/TXN, TD_P/TD_N, RXP/RXN, RX_TERM_P/RX_TERM_N, RD_P/RD_N | 0.23 mm, gap 0.20 mm | 0.20 mm, pour 0.5 mm | 0.45/0.2 mm |
| POWER | VBUS (both sides of F201), 5V_SYS, +3V3, +VDC, 3V3_RF, 3V3A | 0.65 mm | 0.20 mm | 0.6/0.3 mm |
| POE_LINE | MDI_TX_P/N, MDI_RX_P/N, PAIR_45, PAIR_78, CT_12, CT_36, Bob Smith nets, BS, VIN+, VIN-, T301 pins 12/13 | 0.50 mm | 2.0 mm to other classes | 0.6/0.3 mm |
| SHIELD | SHIELD | 0.50 mm | 2.0 mm to system classes | 0.6/0.3 mm |
eth_100_pair gives them the 100 ohm geometry.usb_90_gap and eth_100_gap hold the 0.20 mm gap on the coupled runs. The pairs split only where they
fan out. The USB pair splits inside the R203, R204, U202 and J201 courtyards and on U201 -> R203/R204. The
Ethernet pairs split inside the rule areas ETH_FANOUT. These areas cover only J301 pins 3/6 with the RX_P length
bump, the T301 line pins, the R309-R312 pads with the TX vias and the U301 pins 1-6. So the rule checks the runs
between them. TD, RD and RX_TERM join series parts that sit 1.9-5.7 mm apart and cannot couple, so eth_100_gap
skips them.power_rail_width keeps VBUS, 5V_SYS, +3V3 and +VDC at 0.5 mm or more, except necks into U201, U301 and
J201 pins inside their courtyards (the J201 VBUS pads sit between the NPTH pegs and the CC/SBU pads). 3V3_RF and
3V3A neck down to the U1 and W5500 pins.Net-(F201-Pad1) and
Net-(C318-Pad1)-Net-(C321-Pad1). A change of these designators breaks the patterns. The RF_50 nets carry
labels (RF_ANT, RF_J1).via_not_in_smd_pad: 0.075 mm from a via to
any SMD pad of any net, so no via reaches into a pad or its 0.05 mm mask opening (0.071 mm at a square corner).
A via in the C401 pad, and a via 0.04 mm outside it, each raise the rule on a copy of the board.no_paste_on_dnp gives the pads of every DNP footprint a -10 mm paste margin. KiCad clamps the aperture to zero
size and does not plot it, so the stencil has no opening on C191, R101-R104, R219, R220 and R402. The rule reads
the footprint DNP attribute, which comes from the schematic.Routing:
Board: 100 x 75 mm, 1 mm corner radius, 4 x M3 NPTH (3.2 mm, H1-H4, board-only footprints) 4 mm in from each corner. Coordinates: origin at the top-left corner of the outline, x to the right, y down, mm. The KiCad grid origin and drill/place origin sit on that corner. The regions, the U203 copper areas and the planned routing channels are drawn on User.Comments. The generated placement maps show them.
Size reason:
| Edge | Part | Position |
|---|---|---|
| Top | U201 antenna, overhanging | module center (65, 5.25), rotation 0. The board edge is the module line: the antenna (15.4 x 5.0 mm) is off the board, pads 46-60 end 0.4 mm inside. |
| Top | SW201 RESET, SW202 BOOT | side by side right of U201, rotation 180, centers (80.6, 5.1) and (88.7, 5.1): the bodies end 2.55 mm from the top edge (JLC conveyor edge 2.5 mm). The EN and BOOT pads form the north row, the GND pads the south row, 1.1 mm pad gap between the switches. The silk labels RESET and BOOT sit above the switches. SW201 is next to pad 45, so EN stays short (HDG 1.3.3). The switches sit on the board, outside the U201 antenna keep-out (y < 0). SW202 ends 0.1 mm from the H2 screw-head courtyard. |
| Top | J203 GPIO header | rotation -90, pin 1 (3V3) at (49.8, 2.9), pin 10 (GND) at (26.94, 2.9). Its courtyard ends 0.14 mm from the barrier strip, 26 mm from the RF feed. |
| Right | J1 edge SMA | center (97.85, 43.54), rotation 90. The pads end 0.05 mm inside the Edge.Cuts center line: j1_edge_launch allows 0 mm, and DRC counts the 0.05 mm edge line. The flange sits on the edge, the body is off the board. JLC asks for 0.2 mm copper to a routed edge: confirm the J1 pads at the DFM query (hand-soldered edge launch). |
| Right | TP211-TP213 | UART group at x 97.4, 2.54 mm pitch, top to bottom TP212 RX, TP211 TX, TP213 GND (y 9.5-14.58). The reference sits next to each pad, the net name beyond it after a 1 mm gap. |
| Inner | TP101-TP107 | radio group beside the bus fan-out, 2.54 mm pitch: TP106 GDO2, TP105 GDO0, TP101 SCK, TP104 CSN at x 73.3 (y 25.28-32.9), west of the GDO lines; TP107 GND, TP102 MOSI, TP103 MISO at x 89.0 (y 26.92-32.0), east of E22_BUSY. Stubs 4.7-9.4 mm, one via or none. |
| Left | J301 RJ45, mouth outward | center (7.06, 26), rotation -90. The board edge is 2.6 mm in front of the front pin row; the jack face overhangs the edge by 2.4 mm (TM24R catalog p.3; 2.34 mm in the 3D model). Keep the two catalog no-trace areas at the front shell holes (footprint keep-outs). |
| Bottom | J201 USB-C, mouth outward | center (65.425, 70.23), rotation 0: its D+/D- pads sit on the vertical line through U201 pads 23/24. The shell front face is 0.30 mm past the edge (front shell legs at y 72.70, face 2.60 mm ahead of them per the HRO drawing), so a plug overmold seats on the shell, not on the board edge. |
| Bottom | TP250, TP251, TP252, TP301 | y 72.5, x 77.0-84.62, 2.54 mm pitch: 5V_SYS, 3V3, GND, GND. |
| Region | x | y | Contents |
|---|---|---|---|
| Line side | 0-22 | 0-75 | J301 contacts; T301 pins 9-16 (x 19.3); Bob Smith columns at x 4.6-13.6, 3.0 mm pitch, in the B.Cu lane order PAIR_45, PAIR_78, CT_12, CT_36 (R319/C320, R320/C321, R317/C318, R318/C319), resistors at y 39.8 above the capacitors at y 43.4; BR402 (13, 51.5), D401 (12.5, 58.5) and BR401 (13, 64.8) beside U401 pins 5-8 (x 17.81); C322 (6, 63.8) with pad 2 toward the SHIELD strip. The J301 line-side pairs meet T301 in the same order (RX above TX), so they need no layer change. |
| SHIELD | 0-2, 0-22 | 31.6-75, 71.4-75 | J301 bottom flank (pins 10, 13, 14), a 2 mm strip along the left edge and a strip along the bottom edge to C323 (23.5, 72.5), with a finger to C322 pad 2. The J301 top flank (pins 9, 11, 12, y 11-20) is a second SHIELD area, joined through the jack shell. Pour on F.Cu and B.Cu. |
| Barrier | 22-25 | 0-75 | rule area ISOLATION_BARRIER: no track, via or pour on any copper layer. T301 (23.5, 26), U401 (23.5, 53) and C323 straddle it: pins 1-8 of T301 and 1-4 of U401 face +x. |
| Header, LEDs | 25-57 | 0-17 | J203 on the top edge. R212, R213, R214, R211 (y 8, signal pad up) above D204, D205, D206, D203 (y 11.8, anode up) at x 40-49, 3.0 mm pitch: the power LED D203 at the east end. R218 (29.48, 7.1), under J203 pin 9 with room for the pin label. R220 and R219 (46.4) on y 15.8. C207 and C206 (x 55.6 and 53, y 2.6) at U201 pad 3. |
| Ethernet, system side | 25-61 | 17-41 | U301 (46.5, 26), rotation -90: the MDI pins face T301, the SPI pins, XI/XO and VDD face U201. MDI parts between T301 and U301: the RX parts in columns x 31.2 and 35.0 from y 18.6 to 25.3 (C316/R312 at y 21.35, 1.0 mm pad gap to C315/R311); the TX ladder R305/R310 (y 28.7) and R304/R309 (y 32.8) at x 34.15/36.1, with R306 (32.2, 30) and C314 (30.1, 30). U301 pin shunts: C305 (40.35, 23.4, pin 4), C306 (39, 26.6, pin 8), R303 (39, 28.6, pin 10), C307 (39, 30.6, pin 11). Decoupling fan under the bottom pins, 1.95 mm pitch from x 42.9, y 32.98-33.95: C308 (pin 15), C309 (17), C303 (TOCAP 20), C310 (21), C304 (1V2O 22). C311 (3V3A bulk) at (39.2, 33). R313 (48.4, 19.5) on the RST lane, R314 (52.9, 22.1) on the INT lane, R208 (59.9, 17.6) in the SCLK lane. Right of U301: C313 (53, 28) at pin 28 with C312 (55, 29.3), R301 (57.2, 30.7, upright between XO and XI, 1.25 mm from C312) and R302 on XI/XO, C302 and Y301 (59, 34.3), C301 (55.9, 37.2). FB301 (37, 38.4) and the LINK/ACT row D301, R315, R316, D302 (y 40.3, x 46.4-57.6) under U301. |
| MCU | 57-73 | 0-16 | U201. The W5500 pads 13-18 sit at the bottom-left corner, the USB pads 23/24 at the bottom center, the E22 pads 25/27/30 at the bottom right, the radio pads 33-38 in the lower right column. |
| EN, RESET, BOOT, UART | 73-94 | 0-13 | C201/R205 (x 74.9, y 1.6 and 3.8) at pad 45, SW201 RESET (80.6, 5.1), SW202 BOOT (88.7, 5.1), R206 (88.7, 8.45) under SW202, R207 (75.3, 6.95) at pad 39, R209 at pad 35. |
| Radio | 70-96 | 25-55 | U1 (84, 41), rotation 90: SPI pads on top, GDO pads on the left, ANT pad 6 on the right side facing J1. Feed: pad 6 -> C191 (91.0) -> R191 (92.9) -> L191 (94.8) -> J1, straight at y 43.54, 5.85 mm from pad 6 to the J1 pad. C2 and C1 under pad 1 (pad gaps 1.7 and 2.1 mm), L1 next to C1, R101 under pad 3, R102 (93, 35.6) and R104 (93, 38) right of pads 10 and 9, R103 (86.54, 32.35) above pad 11, R210 (75.1, 34.5) on the CSN lane west of the bus. The radio test pads TP101-TP107 flank the bus fan-out (see the edge table). A 1.5 mm ring around the U1 lands stays clear. |
| Power, USB | 25-70 | 41-75 | U203 (45, 56.2), rotation -90: tab up into the 3V3 copper area, pins down. C204 and C205 at the tab, C203 and C202 under the IN pin. U401 pins 1-4 with R401, C402, D402 (38.6, 62.4), C401 (43.5, 70.2, away from U203 and U401) and R402 (31, 72.2). R203/R204 (x 64.175 and 66.175, y 19.6, 1.05 mm pad gap) at pads 23/24, U202 (64.925, 61) on the pair, R201/R202 beside U202, D202 (57.8, 60), the VBUS row F201, D201, C208, R215 (y 70.8), R216 (62.4, 55.6) and C209 (61.6, 22.0), R217 (61.6, 24.0) on the VBUS_SENSE line from pad 21. |
U203 copper (section 4.4): zones U203_3V3_F (x 32.6-58.8, y 41-57.6) and U203_3V3_B (x 34-56, y 42.4-57.4).
Filled copper: 4.26 cm2 on F.Cu and 3.28 cm2 on B.Cu, joined by 16 +3V3 vias of 0.6/0.3 mm around the tab. The tab
and the OUT pin connect solid. Only U203, C204, C205 and their GND vias sit inside. U203 is 32 mm from U1. The zones and
their vias are locked.
Decoupling at the pins: every capacitor sits on F.Cu next to its pin. A 100 nF or smaller part keeps at most 2.0 mm pad to pad and has room for its own GND via. A bulk part (1 uF or more) keeps at most 5 mm. The pad gaps come from the board, pad edge to pad edge. The W5500 pin groups follow W5500-Ref-ExternalMag (C1-C6 at the AVDD pins, C7 10 uF on 3V3A, C11/C12 at VDD, C17 at 1V2O, C18 at TOCAP).
| IC | Pin | Net | Capacitor | Gap mm |
|---|---|---|---|---|
| U301 | 4 AVDD | 3V3A | C305 100 nF | 0.73 |
| U301 | 8 AVDD | 3V3A | C306 100 nF | 1.28 |
| U301 | 11 AVDD | 3V3A | C307 100 nF | 2.30 |
| U301 | 15 AVDD | 3V3A | C308 100 nF | 1.87 |
| U301 | 17 AVDD | 3V3A | C309 100 nF | 1.33 |
| U301 | 21 AVDD | 3V3A | C310 100 nF | 1.85 |
| U301 | 11 AVDD (group) | 3V3A | C311 10 uF | 4.36 |
| U301 | 20 TOCAP | TOCAP | C303 4.7 uF | 0.77 |
| U301 | 22 1V2O | 1V2O | C304 10 nF | 2.67 |
| U301 | 28 VDD | +3V3 | C313 100 nF, C312 10 uF | 1.03, 3.18 |
| U201 | 3 | +3V3 | C207 100 nF, C206 22 uF | 1.53, 4.13 |
| U1 | 1 VCC | 3V3_RF | C2 100 nF, C1 10 uF | 1.68, 2.20 |
| U203 | 3 IN | 5V_SYS | C203 100 nF, C202 10 uF | 1.31, 1.99 |
| U203 | 2/4 OUT | +3V3 | C205 100 nF, C204 10 uF | 1.76, 1.83 |
| U401 | 1/2 +VDC | +VDC | C402 10 uF, C401 100 uF | 2.39, 10.98 |
Routing (the channels on User.Comments, layer in each label):
Layer use as routed (hand-placed geometry, 0/45/90 degree segments; no autorouter output):
via_not_in_smd_pad). The nearest are the eight U201 EPAD vias in the gaps between the paste squares (MINI-1 DS
Fig 11-1), 0.093 mm from the square corners. 592 of 0.45/0.2 mm, 56 of 0.6/0.3 mm (power), 562 on GND.Silkscreen:
Every text is 1.0 mm tall or more with a 0.15 mm stroke, the JLC legend minimum (169 texts, 1.0-1.5 mm).
Every silk line, arc, circle and polygon has a 0.15 mm stroke or more, the JLC minimum line width. Filled marks keep their printed size: the stroke grows and the shape shrinks by the same amount.
Every reference designator is visible, off every pad, mask opening and via, and off the bodies of other parts. It sits nearer its own part than any other. Where no free spot next to the part exists, a 0.15 mm leader line of 0.3-2.2 mm points to the part: C201, C307, C308, C309, C315, D205, D206, H2, R303, R306, R307, R310, R312, SW202.
Labels: "freedo radio", "rev A 2026-09", RESET and BOOT above the switches, USB, "ETH / PoE", "868 MHz", the J203 pin names under the pins (3V3, SDA, SCL, IO1, IO2, IO7, IO8, TX, RX, GND) and a net label next to each test point.
Pin-1 and polarity marks come from the footprints (ICs, modules, diodes, LEDs, bridges, C401, J203, T301, U401).
U401 marks its orientation, because the DP9900 pins are 180 degree symmetric (DS 4.2: rows 1.46/1.36 mm from the body edges, well inside the hole play). The outline has a chamfered pin-1 corner. An arrow points at pin 1. The DS pin names (+VDC, -VDC, ADJ, VIN+, VIN-) stand next to the pins. CHECK ORIENTATION runs along the body. If the module is reversed, it puts 36-57 V on +VDC and 5V_SYS (section 8.2).
DRC: 0 silk over copper, 0 silk overlap. The 8 silk-to-edge warnings are the intended overhangs of the U201 antenna, J1, J201 and J301 outlines.
The antenna overhangs the edge (HDG 1.4.7 Fig 24/25). The module keep-out areas lie off the board. Dense ground vias near the antenna end of the module. 15 mm clearance to the housing in all directions (HDG 1.4.7).
U201 sits on the top edge, not in a corner (HDG 1.4.7 Fig 25). Accepted: Wi-Fi is not in the transport plan (USB and Ethernet). J203 pin 1 sits 7.5 mm from the module side when the header is fitted. Move the module to a corner if a later revision uses Wi-Fi.
The MINI-1 puts the USB pads between the W5500 pads and the radio pads, on the side away from the antenna. So the blocks run Ethernet/PoE -> MCU -> radio along x, with USB and power under the MCU. J201 sits on the edge opposite the antenna, so the pair is straight but 53 mm long.
The radio sits at the far end from U401 (62 mm), U203 (42 mm) and Y301 (28 mm). U1 is 40 mm from U301.
Both SPI buses are planar (section 3): the lanes on User.Comments keep 0.2 mm from every other-net pad at 0.2 mm track width.
The 1808 pads of C323 reach 0.2 mm into the 3 mm strip (2.6 mm pad gap, above the 2.0 mm minimum).
The antenna overhangs the board edge by 5.0 mm. Check at order time whether JLC asks for rails because of it (unverified).
firmware/cc1101_bridge/cc1101_bridge.ino). LEDs 4, 5, 6. W5500 RST 9, INT 10, MOSI 11, MISO 12, SCLK 13, CS 14. GPIO38 is spare:
leave it an input.
VBUS_SENSE 17 (input). J203: I2C SDA 15, SCL 16, IO1, IO2, IO7, IO8. E22 option: NRST 21, RXEN 47, BUSY 48;
keep them as inputs while the E07 is fitted.SPIClass(HSPI) (SPI3).SPI (FSPI, SPI2) and the W5500 gets SPI3_HOST through
ETH.begin(ETH_PHY_W5500, ...).SPI_MASTER_FREQ_26M, 80 / 3).
arduino-esp32 defaults to 20 MHz. CC1101 runs at 1/6 MHz.Serial is the HWCDC. The
baud rate has no effect. Debug logs go to Serial0 (UART0, GPIO43/44), never to the protocol port.
Writes time out when no host reads. After a reset, the ROM prints to USB. The host drain removes it.cc1101/bridge.go: remove the 2 s wait after open. Opening the port does not reset the S3
(Linux cdc-acm sets DTR and RTS together; TRM v1.8 Table 33.3-2: RTS=1 DTR=1 is no action). Keep the 0x00
write and the drain. Never set RTS=1 with DTR=0: that resets the chip. Use the /dev/serial/by-id/ path.
Not tested on hardware.cc1101.go writes paTable0 = 0xC0. The E07 gives 9-11 dBm at its maximum setting (E07 DS 2.1);
its match is inside the module. The limit in 868.0-868.6 MHz is 25 mW e.r.p. = +14 dBm (EN 300 220-2 V3.2.1
Annex B Table B.1, review E12). The antenna gain, net of cable loss, must stay at or below
14 - 11 + 2.15 = 5.15 dBi at the maximum setting. Measure the conducted power per PATABLE value at bring-up.
Duty cycle (1% in bands L and M) stays a firmware item.tadoRegs sets 0x40 and curFSCTRL0 starts at 0x40. That is the crystal offset of the old module.
The E07 crystal is +-10 ppm (E07 DS 2.3). Re-run freedo-dev autotune and store a new calibration.ETH_PHY_W5500 (arduino-esp32 >= 3.0.0), wire INTn, and serve the
bridge byte protocol over TCP. The host driver needs a TCP transport next to the serial one.setup(), set USB_SERIAL_JTAG_PAD_PULL_OVERRIDE = 1 and DP_PULLUP = 0 while VBUS_SENSE (GPIO17) is low.
Release the override when VBUS_SENSE goes high, and apply it again when it goes low. USB 2.0 7.2.1: a device
must not power the D+ pull-up without VBUS. Test on a PoE-only board with a Type-C host cabled.cc1101/ (command interface with BUSY, 256-byte buffer, CRC
polynomial 0x8005 seed 0xFFFF). The SX1262 has no GFSK frequency-error readout for the autotune. Measure the
CSL and ACK timing again. Limit the power to +14 dBm e.r.p.dmesg shows no re-enumeration, the uptime keeps
counting.freedo-dev autotune in receive only. Store the new FSCTRL0 calibration.The electrical review lists findings E01-E20. The review file is not in the repository. The design fixes E01-E05, E07, E09, E10 and E13. E08 (699 MHz spur of the chip-down CC1101) does not apply to the module: section 8.2 measures its spurs. E12 and E17 are firmware items (section 7). These stay as accepted:
| ID | Finding | Reason to accept |
|---|---|---|
| E06 | The board draws ~0.27 A from power-up and 0.53 A in Wi-Fi bursts; USB 2.0 allows 100 mA before configuration. | Same class as the ESP32-S3-DevKitC-1. Wi-Fi stays off on USB-only boards. PoE boards do not load VBUS. |
| E11 | The DP9900 minimum load (100 mA) can fail with USB and PoE together at a low DP9900 corner, or with EN held low. | No damage: audible noise and possible PoE cycling only. Fit R402 on boards that run on USB and PoE together. |
| E14 | F201 hold current derates to 0.41 A at 70 C and 0.34 A at 85 C. | Without Wi-Fi the board draws 0.27-0.29 A: 17 % margin at 85 C local. Keep F201 away from U203. |
The datasheets are not stored in the repository. Fetch them from the links below.
usb_20_20190524.zip); ETSI EN 300 220-2 V3.2.1 Annex B| Qty | Value | Footprint | References |
|---|---|---|---|
| 13 | 100nF | freedo-radio:C_0603_1608Metric | C2, C203, C205, C207, C208, C209, C305, C306, C307, C308, C309, C310, C313 |
| 10 | 0R | freedo-radio:R_0603_1608Metric | R101, R102, R103, R104, R302, R309, R310, R311, R312, R401 |
| 8 | 1k | freedo-radio:R_0603_1608Metric | R207, R211, R212, R213, R214, R218, R315, R316 |
| 6 | KT-0603R | freedo-radio:LED_0603_1608Metric | D203, D204, D205, D206, D301, D302 |
| 5 | 10k | freedo-radio:R_0603_1608Metric | R205, R206, R210, R313, R314 |
| 4 | 10nF/100V | freedo-radio:C_0603_1608Metric | C318, C319, C320, C321 |
| 4 | 10uF | freedo-radio:C_0603_1608Metric | C1, C204, C311, C312 |
| 4 | 75R | freedo-radio:R_0603_1608Metric | R317, R318, R319, R320 |
| 4 | MountingHole_3.2mm_M3 | freedo-radio:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 4.7k | freedo-radio:R_0603_1608Metric | R215, R219, R220 |
| 3 | Fiducial | freedo-radio:Fiducial_1mm_Mask2mm | FID1, FID2, FID3 |
| 3 | GND | freedo-radio:TestPoint_Pad_D1.5mm | TP213, TP252, TP301 |
| 2 | 10nF | freedo-radio:C_0603_1608Metric | C304, C317 |
| 2 | 10uF | freedo-radio:C_0805_2012Metric | C202, C402 |
| 2 | 18pF | freedo-radio:C_0603_1608Metric | C301, C302 |
| 2 | 1nF/2kV | freedo-radio:C_1808_4520Metric | C322, C323 |
| 2 | 22R | freedo-radio:R_0603_1608Metric | R203, R204 |
| 2 | 33R | freedo-radio:R_0603_1608Metric | R208, R209 |
| 2 | 49.9R | freedo-radio:R_0603_1608Metric | R304, R305 |
| 2 | 5.1k | freedo-radio:R_0603_1608Metric | R201, R202 |
| 2 | 6.8nF | freedo-radio:C_0603_1608Metric | C315, C316 |
| 2 | 82R | freedo-radio:R_0603_1608Metric | R307, R308 |
| 2 | MB10S | freedo-radio:MBS_L4.7-W3.8-P2.40-LS7.0-TL | BR401, BR402 |
| 2 | SS34 | freedo-radio:SMA_L4.3-W2.6-LS5.2-RD | D202, D402 |
| 2 | TS-1187A-B-A-B | freedo-radio:SW_XKB_TS-1187A | SW201, SW202 |
| 1 | 0R | freedo-radio:R_0402_1005Metric | R191 |
| 1 | 100k | freedo-radio:R_0603_1608Metric | R217 |
| 1 | 100uF | freedo-radio:CP_Elec_6.3x7.7 | C401 |
| 1 | 10R | freedo-radio:R_0603_1608Metric | R306 |
| 1 | 12.4k | freedo-radio:R_0603_1608Metric | R303 |
| 1 | 1M | freedo-radio:R_0603_1608Metric | R301 |
| 1 | 1uF | freedo-radio:C_0603_1608Metric | C201 |
| 1 | 22nF | freedo-radio:C_0603_1608Metric | C314 |
| 1 | 22uF | freedo-radio:C_0603_1608Metric | C206 |
| 1 | 3V3 | freedo-radio:TestPoint_Pad_D1.5mm | TP251 |
| 1 | 4.7uF | freedo-radio:C_0603_1608Metric | C303 |
| 1 | 56R | freedo-radio:R_2512_6332Metric | R402 |
| 1 | 56nH | freedo-radio:L_0402_1005Metric | L191 |
| 1 | 5V_SYS | freedo-radio:TestPoint_Pad_D1.5mm | TP250 |
| 1 | 68k | freedo-radio:R_0603_1608Metric | R216 |
| 1 | B1608S | freedo-radio:CND-tek_B1608S_SMD-16_P1.27mm | T301 |
| 1 | BLM15HG102SN1D | freedo-radio:L_0402_1005Metric | L1 |
| 1 | BLM18PG121SN1D | freedo-radio:L_0603_1608Metric | FB301 |
| 1 | BSMD0805-075-16V | freedo-radio:F0805 | F201 |
| 1 | CC_CSN | freedo-radio:TestPoint_THTPad_D1.5mm_Drill0.7mm | TP104 |
| 1 | CC_GDO0 | freedo-radio:TestPoint_THTPad_D1.5mm_Drill0.7mm | TP105 |
| 1 | CC_GDO2 | freedo-radio:TestPoint_THTPad_D1.5mm_Drill0.7mm | TP106 |
| 1 | CC_MISO | freedo-radio:TestPoint_THTPad_D1.5mm_Drill0.7mm | TP103 |
| 1 | CC_MOSI | freedo-radio:TestPoint_THTPad_D1.5mm_Drill0.7mm | TP102 |
| 1 | CC_SCK | freedo-radio:TestPoint_THTPad_D1.5mm_Drill0.7mm | TP101 |
| 1 | DNP | freedo-radio:C_0402_1005Metric | C191 |
| 1 | DP9900LP-5V | freedo-radio:SDAPO_DP9900LP_THT-8 | U401 |
| 1 | E07-900MM10S | freedo-radio:Ebyte_LCC-20_10x10mm_P1.27mm_E07-MM10S_E22-MM22S | U1 |
| 1 | ESP32-S3-MINI-1-N8 | freedo-radio:ESP32-S3-MINI-1 | U201 |
| 1 | GND | freedo-radio:TestPoint_THTPad_D1.5mm_Drill0.7mm | TP107 |
| 1 | GPIO | freedo-radio:PinHeader_1x10_P2.54mm_Vertical | J203 |
| 1 | H5VUT2U | freedo-radio:SOT-23-3_L2.9-W1.5-P1.90-LS2.6-BR | U202 |
| 1 | SMA-KE-347-H13.5-1.6 | freedo-radio:SMA_XUNPU_SMA-KE-347-H13.5-1.6_EdgeMount | J1 |
| 1 | SMAJ58A | freedo-radio:SMA_L4.3-W2.6-LS5.2-RD | D401 |
| 1 | SMF6.0A | freedo-radio:SOD-123FL_L2.7-W1.8-LS3.8-RD | D201 |
| 1 | TLV76133DCYR | freedo-radio:SOT-223-4_L6.5-W3.5-P2.30-LS7.0-BR | U203 |
| 1 | TM24RSG-5A-88 | freedo-radio:RJ45_Hirose_TM24RSG-5A-88 | J301 |
| 1 | TYPE-C-31-M-12 | freedo-radio:HRO_TYPE-C-31-M-12 | J201 |
| 1 | UART0_RX | freedo-radio:TestPoint_Pad_D1.5mm | TP212 |
| 1 | UART0_TX | freedo-radio:TestPoint_Pad_D1.5mm | TP211 |
| 1 | W5500 | freedo-radio:LQFP-48_L7.0-W7.0-P0.50-LS9.0-BL | U301 |
| 1 | X322525MOB4SI | freedo-radio:CRYSTAL-SMD_4P-L3.2-W2.5-BL | Y301 |

FUEL4EP/HomeAutomation
Home Automation repository of FUEL4EP

LimesKey/parsnip-node
A portable LoRa communicator. Custom 4-layer PCB (ESP32-S3 + E22P-915M30S LoRa + NEO-M9N GNSS), designed in KiCad for 915 MHz.

chithigun23/ANUFS-Telemetry
To use custom hardware to measure parameters and dynamics of an ICE Formula SAE car.

magic-alt/fpga-servo
This directory preserves the ADS8588S legacy PCB, native project and custom rules from b0172a2f65902c7281cf4a8454f192dc791a9ef9.

TheKingOfChaos/RF-Power-Monitor
A 2-layer carrier board for the WIZnet W5500-EVB-Pico-PoE. It is 80 x 51.5 mm: exactly as long as the module, so both short edges line up with the module.

crexodon/LED-Window-Matrix-Neo
Turning the campus building into a led display

enkhbold470/iron-node
ESP32-S3 industrial gateway: W5500 Ethernet, isolated RS-485 (ADM2587E), CAN, 9-36 V input. 4-layer KiCad 10 board.

It measures 100 × 75 mm and has 4 copper layers, 1.62 mm thick.
135 parts, built around the DP9900LP-5V, E07-900MM10S, ESP32-S3-MINI-1-N8 and H5VUT2U. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the CappyT/freedo repository on GitHub, at the commit this page was made from: the board is hardware/radio/freedo-radio.kicad_pcb and its schematic hardware/radio/ethernet_poe.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).