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.
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.
GNSS / active antenna |
LoRa front end |
Power rails |
Charger / BMS |
USB-C / PD |
Peripherals |
Assembled board |
Outdoor testing |
Outdoor testing, back |
| Part | Price |
|---|---|
| JLCPCB PCB w/ Assembly (to-be changed BOM) | $1098.04 CAD (est) |
| 21700 Cells 18650batterystore.com | $40 CAD |
| 3.7" E-Ink AliExpress | 24$ CAD |
- 4-layer with ENIG, 60 x 130 mm
- JLCPCB
JLC04161H-7628stackup, 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
Host: ESP32-S3-WROOM-1-N16R8 (U1). GPIO numbers are ESP32-S3 GPIO, not module pins.
| Signal | GPIO |
|---|---|
| NSS | 10 |
| SCK | 12 |
| MOSI | 11 |
| MISO | 13 |
| BUSY | 14 |
| DIO1 | 4 |
| NRST | 40 |
| EN | 41 |
| Signal | GPIO |
|---|---|
| TXD | 1 |
| RXD | 2 |
| TIMEPULSE | 3 |
| EXTINT | 48 |
| SDA | 8 |
| SCL | 9 |
| Function | GPIO |
|---|---|
| I2C SDA | 8 |
| I2C SCL | 9 |
| I2C IRQ | 7 |
| E-Ink BUSY | 5 |
| E-Ink RESET | 6 |
| E-Ink D/C | 18 |
| E-Ink CS | 17 |
| Bus CS | 38 |
| USB D- / D+ | 19 / 20 |
| UART0 TX / RX | 43 / 44 |
| RTC 32 kHz xtal | 15 / 16 |
| BOOT | 0 |
| eFuse PG | 39 / 42 |
| EMI osc gate | 47 |
| Level shifter | 46 |
| Load switch | 21 |
| PSRAM (reserved) | 35 / 36 / 37 |
| VDD_SPI (reserved) | 45 |
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.
git clone --recurse-submodules https://github.com/LimesKey/parsnip-node.git









