Guides / Guides

Build a Heltec LoRa clone

An ESP32-S3 + SX1262 LoRa board with USB-C, a Li-ion charger and an OLED header, in the spirit of the Heltec WiFi LoRa 32 V3. Blank board to fab files, on iPad.

4 copper layers5 chips + header12 steps868/915 MHzNeeds the current beta

What you’re building

You pick five chips. PCB Canvas adds each chip’s support parts, sourced from datasheets and real boards, wires power by net name, and the auto-router handles the remaining connections.

Heltec LoRa clone block diagram USB-C feeds the USB-serial bridge and the Li-ion charger. USB and battery join through a Schottky diode and P-FET power path into VSYS, which feeds a 3.3 V regulator. 3V3 powers the ESP32-S3 module, the SX1262 radio and the OLED header. The ESP32-S3 talks to the radio over SPI plus BUSY, DIO1 and RESET, to the bridge over UART0, and to the OLED over I2C. The radio drives an RF switch and matching network to a U.FL antenna connector. USB-C CP2102N TP4054 charger Power pathSchottky + P-FET Li-ion cell 3.3 V LDO ESP32-S3-MINI-1U1 · MCU + Wi-Fi/BLE SX1262 radioTCXO · DC-DC · RF match OLED header U.FL antenna UART0I2CSPI + BUSY/DIO1/RSTVSYS3V3VBUSBAT
What the board is made of, and how power and signals flow. PCB Canvas places and wires most of this for you.

Parts

Search each name once in Add Part and take the top result.

Search forRoleWhat the app adds
ESP32-S3-MINI-1MCU module (U1)Decoupling, EN pull-up and RC, boot pull-up, USB-C receptacle, ESD diodes, reset and boot buttons
SX1262IMLTRTLoRa radio31 parts from Semtech's reference design: DC-DC inductor, 32 MHz TCXO, RF switch, matching network, U.FL connector
CP2102NUSB-serial bridgeDecoupling and reset pull-up
TP4054Li-ion chargerCharge LED, 2-pin JST PH battery connector, USB/battery power path
AMS1117-3.33.3 V regulatorInput and output capacitors
OLED header4-pin 2.54 mm header (J)Nothing, you wire it by hand

Steps

  1. New board

    Boards ▸ New Board ▸ Create.

    A fresh 50 by 26 millimetre 4-layer board on the PCB Canvas grid
    The blank 50 × 26 mm board. This run selects four layers at creation.
  2. Use four copper layers

    Open Layers in the left rail and set the copper count to 4. The two inner layers become the ground and power planes the router uses.

    Why four layers: the two inner layers become uninterrupted ground and power planes, so every signal has a return path directly underneath it. That is most of what good high-frequency layout means. The outer layers stay free for parts and routing.
  3. Add the MCU

    Add Part ▸ search ESP32-S3-MINI-1 and take the top result. In the support offer, tap Place All. USB-C, ESD and the buttons start ticked; untick any you don’t want with Include in Place All.

    The board after the ESP32-S3 support offer: decoupling, EN circuit, boot pull-up and buttons placed around U1
    After Place All on the ESP32-S3 offer: C1, C2, R1 to R3 and SW1 placed, with the LDO suggestion below. This step took 39 seconds in the scripted run.
    Why a module, not a bare chip: the MINI-1 is the ESP32-S3 die plus its flash, crystal and RF matching, already laid out and FCC/CE certified under a shield can. The radio section is the hardest part of a board like this, and the module means it’s already done.
  4. Add the radio

    Add Part ▸ SX1262IMLTRT. When the offer asks which antenna, pick U.FL. Tap Place All.

    The SX1262 support cluster placed around U3 with the U.FL antenna connector and connection guides
    The radio’s 31 support parts: TCXO, DC-DC inductor, RF switch, matching network, and the U.FL connector chosen at the antenna prompt, placed as one offer.
    Why the app asks about the antenna: the right antenna depends on your enclosure, band and budget. A U.FL jack suits an external whip antenna; a chip antenna needs a ground keep-out. The choice changes the matching network and keep-outs, so the app asks instead of assuming.
  5. Wire the radio in one tap

    In the radio’s support offer, open Connect SX1262 to U1 and choose Heltec V3 pins. All seven lines join by name; one Undo removes them.

    What those seven lines are: four SPI lines (the data bus), plus RESET and two radio status lines, BUSY and DIO1, that the driver polls. The pin assignment follows Heltec’s V3 schematic, which is why Meshtastic’s heltec_v3 firmware target boots on this board unmodified.
  6. Add the bridge, charger and regulator

    Add Part ▸ CP2102N, then TP4054, then AMS1117-3.3, tapping Place All each time.

  7. Choose battery polarity

    On the charger’s battery connector, pick BAT+ on pad 2 for Adafruit and SparkFun cells, or BAT+ on pad 1 for stock KiCad JST PH. The menu shows how many real boards use each. A cell plugged into the wrong one is reversed.

    Why this is a choice and not a default: JST-PH battery pigtails disagree in the wild. Adafruit and SparkFun wire BAT+ opposite to the stock KiCad footprint, and a reversed cell is destroyed on contact. The menu shows how many real boards use each convention so you can match the cell you actually own.
  8. Let power wire itself

    Regulator output, ESP32, radio and bridge join 3V3. USB feeds the charger, and USB or battery reach the regulator through VSYS. Anything left without a supply is named in Problems.

  9. Wire USB serial

    Enter Route. Connect CP2102N TXD (pad 18) to U1 U0RXD (pad 40), and CP2102N RXD (pad 17) to U1 U0TXD (pad 39).

    Route mode while wiring the radio and bridge: pads tapped pair by pair with the Connect control
    Wiring in Route mode: tap a pad, tap its partner, then Connect. The header counts the remaining connections.
  10. Add the OLED header

    Add Part ▸ OLED header gives the standard 2.54 mm 1×4. Wire GND, 3V3, SDA to U1 GPIO17 (pad 21) and SCL to U1 GPIO18 (pad 22).

  11. Auto-route

    In Route, tap Auto-route all. The line under it counts connections left. On our reference run it routed all 58 in a few seconds.

    Why the radio was wired before auto-routing: power and logic only need legal, connected copper, which the router handles well. The RF path from radio to matching network to antenna, and the SPI bus, carry constraints the router can’t infer, so those were placed and connected deliberately first.
  12. Check and export

    Open Problems: anything blocking sits under “to fix” with a plain reason. Then Boards ▸ Export for Manufacturing ▸ Generate for Gerbers, and Export a KiCad copy for the .kicad_pcb.

    The Manufacturing Files sheet: What are you ordering, Bare PCB or Assembled PCB, Generate PCB Files, Geometry verified
    The export sheet at the end of the run: geometry verified on the iPad, no paired computer required.
    Measured on our reference run: the auto-router finished all 58 remaining connections in about 7 seconds, and the export produced validated Gerbers, drills, BOM and placement on the iPad. The scripted end-to-end run takes about 37 minutes; expect longer your first time through.

Wiring reference

Radio lines follow Heltec’s WiFi LoRa 32 V3.2 schematic; Meshtastic’s heltec_v3 variant agrees. ESP32 pads are for the ESP32-S3-MINI-1.

Radio (joined for you by Connect SX1262 to U1)

SignalSX1262 padESP32 GPIOMINI-1 pad
NSS19812
SCK18913
MOSI171014
MISO161115
RESET151216
BUSY141317
DIO1131418

USB serial and OLED (wired by hand)

SignalESP32 GPIOMINI-1 pad
UART RX ← CP2102N TXD (pad 18)4440
UART TX → CP2102N RXD (pad 17)4339
OLED SDA1721
OLED SCL1822
Use pads 39 and 40 for USB serial. Pads 36 and 37 are GPIO40/41; a board wired there can’t be flashed over USB.

Before you order

Known limits in the current build, with fixes in progress: