Skip to the content
PCBKitNew board
2 layers40 × 30 mmSelftest, the printed circuit board in 3D

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

Size
40 × 30 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
32
Pads
40
Tracks, vias
4, 2
Routed
Yes
KiCad
KiCad 10.0 (file 20241229)
Created
1 Jun 2026
Updated
3 Nov 2026

Overview

Selftest is an open-source printed circuit board by LimesKey, from the LimesKey/parsnip-node repository on GitHub. It is a 2-layer board of 40 × 30 mm with 20 parts on 32 nets, routed with 4 tracks and 2 vias.

Its parts include 8 capacitors, 3 resistors, 3 connectors, 1 IC and 1 diode. It belongs with the radio and wireless boards and the ESP32 boards of this library.

README

README.md

parsnip-node

A battery-powered, portable Meshtastic/Meshcore node built around the ESP32-S3, an Ebyte E22P-915M30S LoRa front end, and a u-blox NEO-M9N GNSS receiver. Designed in KiCad, it targets 915 MHz operation in Canada under ISED RSS-247.

Overview

The goal is a self-contained LoRa node that pairs one of the longest range, best value LoRa modules, with an accurate GNSS reciever, running off two 21700 cells in series, to connect to other people on the LoRa mesh network community.

Schematic - v2

GNSS / active antenna schematic
GNSS / active antenna
LoRa front end schematic
LoRa front end
Power rails schematic
Power rails
Charger and BMS schematic
Charger / BMS
USB-C / PD schematic
USB-C / PD
Peripherals schematic
Peripherals

PCB - v2

parsnip-node PCB layout, all layers

3D Render - v2

parsnip-node board 3D render, front

In the field - v1

Assembled parsnip-node board on the bench
Assembled board
parsnip-node during outdoor testing, front
Outdoor testing
parsnip-node during outdoor testing, back
Outdoor testing, back

Hardware

PartPrice
JLCPCB PCB w/ Assembly (to-be changed BOM)$1098.04 CAD (est)
21700 Cells 18650batterystore.com$40 CAD
3.7" E-Ink AliExpress24$ CAD

Board

  • 4-layer with ENIG, 60 x 130 mm
  • JLCPCB JLC04161H-7628 stackup, 2 oz copper outer, 2 oz copper inner
  • L1-L2 prepreg 0.2104 mm, Dk 4.4
  • RF: 0.36mm trace width for ~50 Ω CPWG on this stackup, ground rails stitched with 0.3 mm / 0.6 mm vias at roughly 1.5 to 2 mm pitch

ESP32-S3 GPIO pin map

Host: ESP32-S3-WROOM-1-N16R8 (U1). GPIO numbers are ESP32-S3 GPIO, not module pins.

LoRa - E22P-915M30S (U12)
SignalGPIO
NSS10
SCK12
MOSI11
MISO13
BUSY14
DIO14
NRST40
EN41
GNSS - NEO-M9N (U9)
SignalGPIO
TXD1
RXD2
TIMEPULSE3
EXTINT48
SDA8
SCL9
Other peripherals
FunctionGPIO
I2C SDA8
I2C SCL9
I2C IRQ7
E-Ink BUSY5
E-Ink RESET6
E-Ink D/C18
E-Ink CS17
Bus CS38
USB D- / D+19 / 20
UART0 TX / RX43 / 44
RTC 32 kHz xtal15 / 16
BOOT0
eFuse PG39 / 42
EMI osc gate47
Level shifter46
Load switch21
PSRAM (reserved)35 / 36 / 37
VDD_SPI (reserved)45

Firmware

Firmware is a Meshtastic fork tracked as the firmware submodule (LimesKey/firmware). Development uses VS Code with the pioarduino extension, which Meshtastic pins for ESP32-C6 / Arduino-ESP32 3.x support. A device variant declares the pin map above and the PA control lines so TX actually keys up. Unfortunately there are some extensive changes to the Meshtastic firmware in order to incorporate a SPI GNSS module, as this is not natively supported by Meshtastic.

bash
git clone --recurse-submodules https://github.com/LimesKey/parsnip-node.git

Parts

20
QtyValueFootprintReferences
610ktest:FPC9, R1, R2, R9, R10, R11
20Rtest:FPR4, R5
2HDRConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1, J3
1100nFtest:FPC1
11ktest:FPR3
11uFtest:FPC2
12.2uHInductor_SMD:L_4x4mmL1
132.768kHzCrystal:Crystal_SMD_3215-2Pin_3.2x1.5mmY1
1Conn_CoaxialConnector_Coaxial:U.FL_Hirose_U.FL-R-SMT-1_VerticalJ2
1LEDtest:FPD1
1MCU_OKtest:FPU1
1MountingHoleMountingHole:MountingHole_2.2mm_M2_DIN965_PadH1
1TPTestPoint:TestPoint_Pad_D1.5mmTP1

Questions

How big is the Selftest PCB?

It measures 40 × 30 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Selftest use?

20 parts. 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 Selftest KiCad files?

From the LimesKey/parsnip-node repository on GitHub, at the commit this page was made from: the board is code/claude/kicad-review/references/selftest.kicad_pcb and its schematic block_diagram.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Selftest design in my own project?

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

More from LimesKey/parsnip-node

2
  • 4 layers60 × 130 mmParsnip, the printed circuit board in 3D

    Parsnip

    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.

    481 parts6
  • 2 layers30 × 20 mmSelftest amp2, the printed circuit board in 3D

    Selftest amp2

    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.

    9 parts6

Similar boards

  • 2 layers66.9 × 74.5 mmDeskHop Rev1, the printed circuit board in 3D

    DeskHop Rev1

    hrvach/deskhop

    Fast Desktop Switching Device

    20 parts7.9kGPL-3.0
  • 2 layers86.4 × 64.8 mmSlot machine, the printed circuit board in 3D

    Slot machine

    google/google-ctf

    Google CTF

    20 parts5.1kApache-2.0
  • 2 layers36.2 × 26.8 mmEsp32 minimal, the printed circuit board in 3D

    Esp32 minimal

    atopile/atopile

    Design circuit boards with code! ✨ Get software-like design reuse 🚀, validation, version control and collaboration in hardware; starting with electronics ⚡️

    20 parts4kMIT
  • 2 layers108.1 × 393.8 mmSweep compact ble, the printed circuit board in 3D

    Sweep compact ble

    davidphilipbarr/Sweep

    Sweep - a small promicro based keyboard inspired by the Ferris.

    20 parts2.1k
  • 2 layers26 × 15.9 mmTPS54340 Buck Regulator, the printed circuit board in 3D

    TPS54340 Buck Regulator

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    20 parts1.2k
  • 2 layers67.6 × 30.5 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    20 parts1kGPL-3.0
  • 2 layers44.3 × 28.7 mmLin bus adapter esp32, the printed circuit board in 3D

    Lin bus adapter esp32

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    20 parts915
  • 2 layers89.5 × 61.6 mmFreeDeck TH 2020-02, the printed circuit board in 3D

    FreeDeck TH 2020-02

    FreeYourStream/freedeck-hardware

    all the stuff you need to build your own FreeDeck

    20 parts772