Documentation
Onboarding
Getting Started
Power & Battery
Hardware & Components
Build & Assembly
Radio & RF Design
Frequencies & Regulations
Firmware & Software
USB & Connectivity
GPS & Navigation
Morse & Communication
Modes & Operation
Field Operations & Rescue
Building Effectively
Build Variants
Project & Reference
Docs Build & Assembly GPIO Pin Map Reference

GPIO Pin Map Reference

Edit on GitHub

One consolidated table of every ESP32 pin used by the beacon, with function, direction and notes

GPIO Pin Map Reference

Overview

This is the consolidated pin reference for the beacon. It brings together the radio, GPS, OLED, buttons, status LED, and any other GPIO the firmware uses, in one place. Use it when wiring the board or checking a clone layout.

Pin numbers follow the ESP32 package used on the dev board. Not every dev board maps pins identically; confirm against your board’s silkscreen.

Full Pin Table

FunctionGPIODirectionNotes
Radio SCK18outputSPI clock
Radio MISO19inputSPI MISO
Radio MOSI23outputSPI MOSI
Radio CS5outputchip select
Radio RST14outputreset
Radio BUSY21inputmust be wired
Radio DIO12inputRX/TX events
Radio TCXO—power1.6V if present
GPS TX12outputESP TX to GPS RX
GPS RX22inputESP RX from GPS TX
GPS VCC3.3Vpower3.3V only
OLED SCK15outputSPI clock for OLED
OLED SDA13outputSPI MOSI for OLED
OLED RES4outputreset
OLED DC16outputdata/command
OLED CS17outputchip select
SW_MODE33inputmode button
SW_SEL32inputselect button
SW_UP35inputup button
SW_DN34inputdown button
Status LED—outputonboard or external
Battery ADC—inputbattery voltage read

A few pins are labeled with their function rather than a fixed number where the implementation uses a board-specific pad or an onboard resource. Confirm on your schematic.

Direction Notes

  • GPIO 34 and GPIO 35 are input-only on many ESP32 packages. That is why the down button is on 34 and the up button is on 35: they only need to read a press.
  • GPIO 22 is used for GPS RX on the current firmware because it works as an ESP TX on the chosen UART. Earlier prototype wiring put the GPS RX on 34, which caused a pin-side error; the current assignment fixes that.
  • The radio BUSY pin is input-only in function but must be connected to a real GPIO so the library can read it.

SPI Bus Separation

The beacon uses two SPI buses:

  • The radio uses SPI on the pins in the table above.
  • The OLED uses its own SPI pins, separate from the radio.

This keeps the OLED from interfering with the radio during TX. Do not share the radio’s SPI pins with the OLED.

UART Separation

The GPS uses UART2, separate from the USB serial console. This keeps GPS NMEA data off the debug console and lets the USB serial remain available for logging.

Button GPIOs

The four buttons use the GPIOs in the table. Their firmware behavior is:

  • SW_MODE on 33.
  • SW_SEL on 32.
  • SW_UP on 35.
  • SW_DN on 34.

If you clone the board, keep these assignments unless you also update the firmware pin definitions.

Safety Notes

  • Do not drive 5V into a 3.3V pin.
  • Do not leave the radio BUSY pin floating.
  • Keep the GPS power at 3.3V.