Your First Custom BLE PCB: How to Go from Dev Kit Schematic to Fabrication Files

Your firmware works. The dev kit blinks, advertises, connects, streams sensor data. Your manager (or your inner founder) says: great, now make it a product. You open KiCad for the first time and stare at an empty schematic, and the gap between “working demo” and “fabricable hardware” suddenly looks like a cliff.
The path from dev kit to custom board is well-trodden, and most of the hard problems have already been solved by Nordic’s RF engineers. You just have to copy their homework and avoid 4 or 5 specific traps that generic PCB tutorials never mention because they assume you’re laying out an Arduino clone with no radio on it.
This article walks the path: dev kit schematic to fab-ready Gerbers, in KiCad, on an nRF52. Assembly and bring-up are different beasts and get their own articles. Here, the goal is files you can upload to JLCPCB without lighting $200 on fire.
Step 0: Mindset, or What Not to Optimize on Spin One
Your first board has one job: prove the design works.
Things to defer: smallest BOM, cheapest part variants, tightest form factor, EMC compliance, FCC pre-scan, beautiful silkscreen art. All of that is real work, and none of it matters if the board doesn’t power up.
Things to nail: power integrity, the RF section, debug access, test points on every important rail.
┌─────────────────────────────────────────┐
│ SPIN 1 GOAL: Does it turn on, run │
│ firmware, and radiate? │
│ │
│ NOT SPIN 1: Is it cheap, small, │
│ FCC-ready, beautiful? │
└─────────────────────────────────────────┘Plan for 2 to 3 spins. Every experienced hardware engineer I know assumes the first board has bugs and is delighted when it doesn’t. Budget the boards, budget the time, stop trying to make spin 1 perfect. You don’t yet know what “perfect” means for this design.
Step 1: Start From Nordic’s Reference Design
Find Nordic’s nRF52840 reference layout. The schematic, the layout files, the BOM, all of it is published. Download it. Open it. Read it.
This matters more for BLE than for anything else you might design. Nordic’s RF front-end has been tuned by people whose entire job is getting 2.4 GHz to behave on a small piece of FR4. The matching network, the antenna feed, the ground geometry, the decoupling around the radio supply pins. Copy their work and you skip the single hardest part of BLE PCB design. Reinvent it and you’ll spend 3 spins discovering what they already knew.
What to copy verbatim:
- Decoupling network around the SoC
- 32 MHz crystal circuit and its load capacitors
- DC/DC vs LDO power mode (mirror what your dev kit uses)
- Antenna matching pi-network
- PCB antenna footprint and surrounding keep-out
What you’ll add: your sensors, your power source (battery, USB, whatever), your connectors, your LEDs, your application logic.
The mental model: Nordic gave you the engine. You’re building the car around it.
Step 2: EE Fundamentals You Actually Need
Each of these has a Wikipedia rabbit hole. Read one level deeper on anything that feels foreign. Don’t block on mastering any of them.
Decoupling capacitors. Tiny local energy reservoirs that smooth out the current spikes when an IC switches. Rule: 100nF per power pin, placed as close to the pin as physically possible, plus a bulk cap (often 4.7µF or 10µF) on each rail. The nRF52 datasheet specifies exact values per pin. Follow it.
Power topology. LDO is simple, quiet, inefficient. DC/DC is efficient, switchy, more components. Battery direct (with the nRF52’s internal regulator) is great for coin-cell designs. For spin 1, mirror the dev kit’s choice. Don’t mix this up with productization.
Crystals and load caps. The 32 MHz crystal sets BLE timing accuracy. Load capacitor values come from the crystal datasheet, not intuition. The formula is 2 × (CL - Cstray), where Cstray is usually 2 to 3 pF. So an 8 pF crystal wants roughly 10–12 pF caps.
Pull-ups, pull-downs, reset. Copy the reference. Don’t think hard about this on spin 1.
Debug header. SWD via the standard 10-pin Cortex header or a 4-pin Tag-Connect footprint. Don’t skip this. A board without SWD access is a brick the moment your firmware misbehaves, which it will.
Step 3: Schematic Capture in KiCad
Set up a fresh KiCad project. KiCad 8 has decent Nordic symbols built in; if you need anything else, SnapEDA and Ultra Librarian export KiCad-compatible symbols and footprints. Verify the footprint against the part datasheet before you commit, because wrong footprints are the second most common reason boards don’t work.
Use hierarchical sheets. Put the MCU and RF section on one sheet, your application circuitry (sensors, power, connectors) on another. This makes review tractable, and reviewing your own schematic before layout is the single highest-leverage thing you can do.
Run ERC (Electrical Rules Check). Fix every warning you don’t deliberately understand. “Unconnected pin” warnings on intentionally floating pins are fine if you mark them with the no-connect flag. Everything else, fix it.
Name your nets. SDA_SENSOR is better than Net-(U2-Pad14). Future-you, squinting at the layout at 11pm, will be grateful.
Pre-layout checklist:
[ ] Every IC power pin has a decoupling cap nearby in schematic
[ ] SWD header connected to SWDIO / SWDCLK / RESET / GND / VDD
[ ] Crystal load caps match the crystal datasheet
[ ] Antenna pi-network matches Nordic reference exactly
[ ] Test points on key rails (VDD, 3V3, GND, any switching node)
[ ] ERC cleanStep 4: Layout, and the RF-Specific Gotchas
This is where most beginner tutorials fail you, because most beginner tutorials are laying out an Arduino clone. BLE has rules.
Use 4 layers, not 2. Stackup: Signal / GND / Power / Signal. A solid, uninterrupted ground plane under the RF section is non-negotiable. At JLCPCB the price difference for 4-layer vs 2-layer at small quantities is a few dollars. Pay it.
Antenna keep-out. The area under and around the PCB antenna must be empty of copper on every layer, including the ground plane. Nordic specifies the exact dimensions in the reference design. Copy them. The failure mode here is a board that connects at 3 feet but not 30, and it’s the single most common beginner mistake. I once watched a team chase a 20 dB sensitivity loss for a week before someone noticed a ground pour had filled in under the antenna during the last DRC pass.
Antenna placement. At the edge of the board. Away from batteries, USB connectors, shields, metal mounting hardware. The antenna radiates into space, not into a lithium cell.
The RF trace. 50Ω controlled impedance from the SoC’s RF pin through the pi-network to the antenna feed. Short. Straight. Never routed over a split in the ground plane. KiCad’s built-in impedance calculator plus your fab’s published stackup tells you the trace width. On JLCPCB’s standard 4-layer stackup, that’s around 11 mil for a 50Ω microstrip over the second-layer ground.
Place all three pi-network footprints, even if you’re using Nordic’s exact matching values. If your enclosure detunes the antenna, and it might, you’ll want the option to swap components without a respin.
Decoupling caps sit as close to their IC pin as physically possible, with a short trace to the pin and a short via straight to the ground plane. Not “near the chip.” Right at the pin.
Crystal. Short traces. A guard ring of ground vias around it. No high-speed signals routed underneath on any layer.
Ground stitching. Stitch vias around the perimeter of the RF section to tie the top ground pour to the inner ground plane. Rule of thumb is λ/20 at 2.4 GHz, which works out to around 6 mm spacing.
Things you can be sloppy about on spin 1: trace widths on non-RF signals (within reason), aesthetic routing on the digital side, perfect component alignment.
┌──────────────────────────────────────┐
│ [USB] [LDO] [sensors/LEDs] │
│ │
│ ┌──────────┐ │
│ │ nRF52 │ [SWD hdr] │
│ │ │ │
│ └────┬─────┘ │
│ [pi-net]──┘ │
│ ╔═══════╗ <-- antenna keep-out │
│ ║ ANT ║ (no copper, any │
│ ╚═══════╝ layer) │
└──────────────────────────────────────┘If you’re building the board to talk to Hubble’s network specifically, the terrestrial transmission guidance covers the radio behavior expected on the wire side. The PCB still needs to radiate cleanly first.
Step 5: Design Rules, DRC, and Fab Constraints
Pull JLCPCB’s capability sheet (or PCBWay’s, or OSHPark’s; pick one and stick with it for spin 1). Enter their minimums into KiCad’s Board Setup dialog: minimum trace width, minimum clearance, minimum via diameter, minimum drill.
Don’t push the limits. For spin 1, use 6 mil traces, 6 mil clearance, 0.3 mm vias. These numbers are cheap, reliable, and available at every fab on earth.
Run DRC. Fix everything. A DRC violation that you “think will be fine” is a coin flip on whether your board works.
Silkscreen: label connectors, mark pin 1 on every IC, put a board version number somewhere visible (REV A), and add your initials and the date. When you’re staring at a pile of 5 prototypes 6 months from now, this saves you.
Step 6: Generating the Fabrication Files
KiCad’s Plot dialog. Export these layers:
F.Cu,B.Cu(top and bottom copper)In1.Cu,In2.Cu(inner layers, if 4-layer)F.Mask,B.Mask(solder mask)F.Silkscreen,B.SilkscreenEdge.Cuts(board outline)
Generate Excellon drill files. Split or merge PTH and NPTH based on what your fab prefers. Default to RS-274X Gerber unless you have a reason to use Gerber X2.
Zip the output folder. Upload to JLCPCB. Use their Gerber preview tool, and visually compare the rendered preview against your KiCad 3D view, layer by layer. Mismatches here are catastrophic and obvious if you look. Wrong layer assignments. Missing silkscreen. Drill files in the wrong units. Catch them in 30 seconds of preview review or pay for them later.
First order recommendation: 5 boards, 4-layer, HASL or ENIG finish, 1.6 mm thickness, green soldermask (cheapest and ships fastest). Roughly $30 to $50 shipped, about a week.
Spin 1 Will Have Bugs. Ship It Anyway.
You took a working firmware demo and produced manufacturable hardware. That is a real skill, and you now have it.
The first spin will have bugs. A wrong footprint, a missing pull-up, a power rail that sags under load, an antenna that’s 3 dB off. Document what you find, plan spin 2, and ship it anyway.
Next in this pillar: assembly options (hand-soldering vs JLCPCB SMT service), the bring-up checklist when your board arrives, and what to do when it doesn’t enumerate over USB.
References
- Nordic Semiconductor nRF52840 reference design files (Nordic’s developer site, search “nRF52840 reference design”)
- KiCad 8 documentation: kicad.org/help
- JLCPCB capabilities sheet: jlcpcb.com/capabilities
- Hubble device SDK and supported chipsets: hubble.com/docs/device-sdk/downloads
- Hubble compatibility list for BLE silicon: hubble.com/docs/compatibility
Hubble Network lets your custom BLE board reach the cloud directly via satellite, no gateways or cellular required. See supported chipsets →