Skip to the content
4 layers24 × 32 mmNami, the printed circuit board in 3D

Nami: noncontact AC current sensing hardware with Thread connectivity

Size
24 × 32 mm
Copper layers
4
Thickness
1 mm
Parts
63
Nets
76
Pads
212
Tracks, vias
346, 92
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
26 Sep 2026
Updated
26 Sep 2026

Overview

Nami is an open-source printed circuit board by jemdiggity, from the jemdiggity/nami repository on GitHub. It is a 4-layer board of 24 × 32 mm with 63 parts on 76 nets, routed with 346 tracks and 92 vias.

It is built around the MDBT50Q-1MV2, TPS63900DSKR and W25Q128JVSIQ, with the XAL4020-222MEC, ABS07-32.768KHZ-7-T and BAV199,215-JSM among its other parts. Its parts include 23 resistors, 17 capacitors, 4 ICs, 4 connectors and 2 diodes. It belongs with the nRF52 and nRF5x boards of this library.

Main components

7

README

hardware/nami-rev-a/README.md

Nami Rev A0 — bench hardware

An editable KiCad 10 design for evaluating the SCT006 sensing chain and Thread/BLE operation. This is an unreleased bench prototype, not an outlet-installation or fabrication release. The board is 95 × 75 mm, deliberately larger than the eventual device. No physical hardware, firmware, battery-life test or enclosure validation has been completed.

Open nami.kicad_pro in KiCad. The five-sheet schematic is nami.kicad_sch; the routed two-layer PCB is nami.kicad_pcb. The parts are native editable KiCad symbols and footprints, not an image imported into the editor.

Files

FilePurpose
power.kicad_schBattery/bench input, TPS63900 3.0 V regulator and removable current links
analog.kicad_schBias buffer, gain stage, protection, filters and test points
digital.kicad_schThread/BLE module, clock, flash, SWD and controls
harness.kicad_schPermanently burdened off-board CT assembly
exports/nami-schematic.pdfFive-sheet review copy
exports/nami-board.pngRendered board overview
exports/bom.csvBoard BOM; generic passives specify values/packages, not procurement-approved MPNs
exports/nami-netlist.xmlNetlist exported by KiCad, checked independently
verification/erc.rptKiCad electrical-rule results
verification/drc.rptPCB rules, unrouted-net and schematic-parity results
verification/connectivity-and-calculations.jsonCritical pin checks and approximate signal calculations
nami.sesLocal autorouter session, retained for reproducibility

The clamp, two harness resistors, wiring, battery/holder, programmer and hub are external assemblies; see the table below. Test-point BOM rows are bare PCB pads, not purchased components.

Architecture and selected evaluation parts

  • SCT006 20 A : 25 mA split-core CT, fitted with a permanent 5.00 Ω burden at the sensing head. The main board must not carry a second parallel burden.
  • TPS63900DSKR regulator, 3.0 V output with SEL grounded and CFG3 = 13.3 kΩ. CFG2 = 1.87 kΩ selects 25 mA input current limit. CFG1 = 0 Ω selects an unused 1.8 V alternate output; SEL is not software-controlled. Verify startup with the intended battery and effective capacitance.
  • OPA2333AID dual op amp: midpoint buffer and gain 31.9 stage. This is a characterization choice; its approximately 34 µA typical combined quiescent draw already uses much of the one-year coin-cell budget.
  • Raytac MDBT50Q-1MV2 nRF52840 module. It supports the intended Thread/BLE firmware, but is not preprogrammed for Nami. This documented module is used instead of a bare nRF54L15 on Rev A; a later power-optimized revision may change it.
  • W25Q128JVSIQ, 128 Mbit / 16 MiB SPI flash. The 3.0 V regulated rail satisfies its 2.7 V minimum; firmware must stop writes before the rail leaves specification. No one-year flash energy budget is claimed.
  • External 32.768 kHz, CL=7 pF crystal. The initial 9 pF load capacitors assume about 2.5 pF stray capacitance; verify clock startup and frequency on the real layout.

The module normal-voltage reference configuration ties VDD, VDDH and DCCH together. USB is unused: VBUS is grounded and D+/D− are no-connects. The KiCad symbol types DCCH as a power output; no redundant power flag is added on that rail. REG0 must remain disabled and REG1 DC/DC should be enabled in firmware. The module already contains its high-frequency crystal and REG1 inductor.

Signal ranges and limitations

With an ideal 800:1 CT and 5 Ω burden:

Vsecondary = 0.00625 × Iprimary and Vhigh − Vmid = 31.9 × (Vsense − Vmid).

ConditionCalculated signal, before losses/filtering
0.1 A RMS at burden0.625 mV RMS
0.1 A RMS at high-gain output19.94 mV RMS
20 A RMS at burden125 mV RMS
20 A, crest factor 3375 mV peak at burden
0.8 A, crest factor 3, high gain478.5 mV peak

Both ADC channels are differential against VMID with a nominal ±0.6 V range. Use the high path only for complete windows that remain within a characterized range; initially aim below 0.8 A at crest factor 3. At higher currents the high path deliberately saturates. Use the low path and allow measured amplifier recovery time before returning to high gain. Software must inspect both raw clipping and analog overload behavior.

Start at 32,768 samples/s per range, 12-bit differential, 10 µs acquisition, hardware triggering and DMA. This rate is for characterization, not an optimized production power setting. The two ADC conversions occur sequentially; calculate each path's RMS independently rather than splicing mismatched samples.

R8/C5 and the two output RC networks provide input filtering. R8 also loads the low-path RC, so the low filter is not simply R14 × C8. The verification script calculates the coupled small-signal response. It is only an approximate RC/single-pole-amplifier calculation, not SPICE validation. CT harmonic response, alias rejection, noise, offset, nonlinearity, gain error and saturation remain bench measurements. There is no demonstrated ±10% accuracy or one-year battery life yet.

Connectors and firmware assignment

ConnectionPins / mapping
J1 CT1 = CT positive/signal; 2 = VMID/CT return. Return is not ground.
J2 power1 = battery positive; 2 = GND. One source only, 2.0–3.3 V, correct polarity. No charger or reverse-polarity protection is fitted.
J3 SWDStandard 10-pin 1.27 mm: 1 VTref, 2 SWDIO, 3/5/9 ground, 4 SWCLK, 10 reset; 6/7/8 unused. Debugger must sense VTref, not supply it.
J4 analog debug1 low ADC, 2 high ADC, 3 VMID, 4 ground
P0.02 / AIN0ADC_LOW
P0.03 / AIN1ADC_HIGH
P0.04 / AIN2VMID, negative input for both differential channels
P0.05 / AIN3Battery monitor: VBAT/3, separate single-ended ADC configuration
P0.00 / P0.01External low-frequency crystal
P0.13 / P0.14Flash clock / chip select
P0.15 / P0.16Flash MOSI / MISO
P0.17Pair button, active low
P0.18Reset: configure the nRF52840 UICR reset function
P0.19LED, active high; normally off

R1 permits whole-system current measurement. R5, R6 and R7 isolate module, analog and flash rails for measurement. Removing a link is a diagnostic action: other signal pins can back-power an unpowered subsystem. Do not infer its leakage by removing its supply while other pins are driven. SWD/debugger connection also changes the power measurement.

The battery divider is 2 MΩ / 1 MΩ with a 100 nF reservoir. Its high source resistance requires deliberate ADC acquisition timing and verification. Battery checks and offset calibration must not silently create missing current samples. The initial divider alone draws about 1 µA at 3 V.

External assembly BOM

ItemQuantitySpecification
CT1SCT006, explicitly 20 A : 25 mA; not another SCT006 variant
R101, R102210 Ω, 0.1%, suitable low-tempco resistor; parallel to make 5 Ω
CT harness1Short twisted pair, insulated solder joints and strain relief; burden stays with clamp
Battery and holder1CR2450 candidate; external holder for bench characterization
Power lead1Polarized/clearly marked lead to J2
Debug probe13 V compatible SWD, external target-power sense
Hub1Powered host plus Thread radio/border router and eventual Nami service

J101 on the harness drawing represents permanent solder joints. Solder both burden resistors directly at the sensing-head secondary connection, upstream of any detachable lead. Verify the ordered CT's internal secondary protection rather than assuming it from a product-family photo. Bench-check burden resistance before clamping a current-carrying test wire.

Bring-up sequence

  1. Inspect assembly orientation and power-to-ground resistance. Verify the two parallel burden resistors measure approximately 5 Ω before attaching the CT winding. After attachment the winding's DC resistance is in parallel, so an ordinary ohmmeter across the completed assembly will not necessarily read 5 Ω. Check continuity and the permanent solder connections separately.
  2. Start with a current-limited 3.0 V bench source at J2. No coin cell and no primary current initially. Check VREG approximately 3.0 V and VMID approximately 1.5 V; check regulator startup, ripple and heating.
  3. Connect SWD with external target-power sensing. Read the MCU ID, program minimal diagnostics, verify reset and low-frequency crystal. Then read flash JEDEC ID and exercise erase/program/read.
  4. On an isolated low-voltage AC test loop, compare the burden and amplifier waveforms with a calibrated reference. Sweep current, especially 0.1 A, and verify the high path's overload recovery. An oscilloscope ground lead connects to board GND, not VMID.
  5. Exercise complete one-second acquisition during flash activity and radio transmissions. Verify alias/noise sensitivity, clipping flags and absence of unnoticed gaps.
  6. Measure subsystem and total energy with the debugger disconnected. Test radio/flash pulses on the intended battery at low voltage and temperature, including 25 mA regulator input limiting. Do not equate regulator input-current limit with acceptable coin-cell pulse behavior.
  7. Validate Thread connection, commissioning, lost-hub backoff and backfill once firmware/hub software exists. Repeat RF testing in the eventual enclosure; this open bench board cannot establish in-box range.

Review status and remaining work

  • Native schematics, board, BOM, exported netlist and render are provided.
  • KiCad ERC and PCB DRC including schematic parity are recorded in verification/.
  • Independent checks compare the exported pin connectivity against the intended CT, amplifier, supply, module, flash and debug connections.
  • Routing used a local Freerouting 2.0.1 session, then explicit module ground connections and copper pours. No cloud autorouting service was used. Autorouting and a clean DRC do not validate switching-loop EMI, RF performance or analog noise.
  • Final analog/power layout review, actual passive sourcing/ratings, footprint-to-ordered-part audit, firmware, calibration, cell endurance, enclosure and installation review remain required before a fabrication/field release. No Gerbers are issued as a manufacturing release.

Sources and reproducibility

The committed CAD is authoritative for this revision. The scripts under ../tools/ reproduce it; rerunning generate.py overwrites the schematic and project settings, and place_board.py overwrites the PCB with an unrouted board. Do not rerun them over manual edits without committing/backing up first.

generate.py requires Python plus sexpdata; the board scripts require KiCad's bundled Python with pcbnew and wx. Set KICAD_SYMBOL_DIR and KICAD_FOOTPRINT_DIR on other systems. Sequence: generate schematic, export XML netlist with KiCad CLI, place board, route DSN locally (or reuse the matching committed nami.ses), finish board, synchronize metadata, run ERC/DRC and verify.py. Changing placement invalidates the old routing session. finish_board.py expects a fresh unrouted board and imports the session itself.

Parts

63
QtyValueFootprintReferences
5100kResistor_SMD:R_0603_1608MetricR16, R17, R18, R19, R20
4100n X7RCapacitor_SMD:C_0603_1608MetricC10, C12, C15, C17
4Fiducial_0.5mm_Mask1mmFiducial_0.5mm_Mask1mmFID1, FID2, FID3, FID4
30R / CURRENT LINKResistor_SMD:R_0603_1608MetricR5, R6, R7
310u 10V X7RCapacitor_SMD:C_0805_2012MetricC2, C11, C16
31kResistor_SMD:R_0603_1608MetricR8, R14, R15
21M 0.1%Resistor_SMD:R_0603_1608MetricR9, R10
21u X7RCapacitor_SMD:C_0603_1608MetricC6, C7
29p C0GCapacitor_SMD:C_0603_1608MetricC13, C14
10RResistor_SMD:R_0603_1608MetricR2
10R / AMMETERResistor_SMD:R_0603_1608MetricR1
11.87k 1%Resistor_SMD:R_0603_1608MetricR3
1100RResistor_SMD:R_0603_1608MetricR11
1100n 10V X7RCapacitor_SMD:C_0603_1608MetricC4
1100u 6.3V X5RCapacitor_SMD:C_1210_3225MetricC1
110k 0.1%Resistor_SMD:R_0603_1608MetricR12
113.3k 1%Resistor_SMD:R_0603_1608MetricR4
11M 1%Resistor_SMD:R_0603_1608MetricR23
11n C0GCapacitor_SMD:C_0603_1608MetricC5
12.2uH >=2AInductor_SMD:L_Coilcraft_XAL4020-XXXL1
122n C0GCapacitor_SMD:C_0805_2012MetricC8
12M 1%Resistor_SMD:R_0603_1608MetricR22
1309k 0.1%Resistor_SMD:R_0603_1608MetricR13
132.768kHz CL=7pFCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
14.7kResistor_SMD:R_0603_1608MetricR21
147n C0GCapacitor_SMD:C_0805_2012MetricC9
147u 6.3V X5RCapacitor_SMD:C_1210_3225MetricC3
1ADC_HIGHTestPoint:TestPoint_Pad_D1.0mmTP5
1ANALOG POGONami:Pogo_1x04_P1.27J4
1BATTERY / BENCH 2.0-3.3VNami:WirePads_2_P2.5J2
1BAV199Package_TO_SOT_SMD:SOT-23D1
1CT HARNESSNami:WirePads_2_P2.5J1
1GNDTestPoint:TestPoint_Pad_D1.0mmTP2
1GREENLED_SMD:LED_0603_1608MetricD2
1MDBT50Q-1MV2RF_Module:Raytac_MDBT50QU3
1OPA2333AIDGKRPackage_SO:VSSOP-8_3x3mm_P0.65mmU2
1PAIRButton_Switch_SMD:SW_SPST_B3U-1000PSW1
1RESETButton_Switch_SMD:SW_SPST_B3U-1000PSW2
1SENSETestPoint:TestPoint_Pad_D1.0mmTP3
1SWD POGO 1.27mmNami:Pogo_2x05_P1.27J3
1TPS63900DSKRPackage_SON:WSON-10-1EP_2.5x2.5mm_P0.5mm_EP1.2x2mmU1
1VMIDTestPoint:TestPoint_Pad_D1.0mmTP4
1VREGTestPoint:TestPoint_Pad_D1.0mmTP1
1W25Q128JVSIQPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU4

More from jemdiggity/nami

1
  • 2 layers95 × 75 mmNami, the printed circuit board in 3D

    Nami

    jemdiggity/nami

    Nami: noncontact AC current sensing hardware with Thread connectivity

    63 parts

Similar boards

  • 4 layers228 × 115.4 mmOcxPrototype, the printed circuit board in 3D

    OcxPrototype

    ocxpke/ocx

    Open Computer Experience

    126 partsCERN-OHL-S-2.0
  • 4 layers60 × 36 mmCamera Project, the printed circuit board in 3D

    Camera Project

    Raphi25/Camera-Project

    This project investigates the development of a low-cost wearable camera system intended to support caregivers by capturing images throughout the wearer's daily life.

    132 parts
  • 4 layers75 × 55 mmEos epu up5k, the printed circuit board in 3D

    Eos epu up5k

    embeddedos-org/eCAD-Hardware-Products

    Hardware designs + EE docs + Board datasheets of Multiple products

    145 parts8MIT
  • 4 layers96 × 70 mmTradewind, the printed circuit board in 3D

    Tradewind

    binaryBeachLLC/tradewind

    Tradewind TW-1: solar LoRaWAN field sensor. KiCad 9 board, CadQuery enclosure, RUI3 firmware, simulations, test data, report and datasheet.

    85 parts
  • 2 layers65.2 × 144.9 mmLECV2.0 Main Board, the printed circuit board in 3D

    LECV2.0 Main Board

    MSTRocketDesignTeam/Liquid-Engine-Controller

    Evolution of the RDT's Custom Liquid Engine Control Unit!

    64 parts2AGPL-3.0
  • 2 layers23 × 83 mmL Smart Baton, the printed circuit board in 3D

    L Smart Baton

    yuanf2004/smart-baton-kicad

    54 parts1
  • 4 layers65 × 100 mmPGR, the printed circuit board in 3D

    PGR

    Projeto-Guarda-Rios/PCB

    O repositório para a PCB do Projeto Guarda Rios! Inclui todos os ficheiros relacionados com a PCB!

    188 parts2MIT
  • 4 layers60 × 75 mmMixed Signal Demo PCB, the printed circuit board in 3D

    Mixed Signal Demo PCB

    rcardenes/FEDEVEL-Mixed-Signal-PCB

    KiCAD files for the Mixed-Signal Hardware Design course at Fedevel, by Phil Salmony

    114 parts2

Questions

How big is the Nami PCB?

It measures 24 × 32 mm and has 4 copper layers, 1 mm thick.

What parts does the Nami use?

63 parts, built around the MDBT50Q-1MV2, TPS63900DSKR, W25Q128JVSIQ and XAL4020-222MEC. 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.

Where can I download the Nami KiCad files?

From the jemdiggity/nami repository on GitHub, at the commit this page was made from: the board is hardware/nami-compact/nami.kicad_pcb and its schematic hardware/nami-compact/analog.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Nami design in my own project?

Its repository states no licence, so its author keeps all rights: ask jemdiggity before reusing the design.