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 Breadboard Prototyping

Breadboard Prototyping

Edit on GitHub

Bring the whole beacon up on a breadboard first: power, radio, OLED and GPS before soldering

Breadboard Prototyping

Overview

Before soldering the final build, bring every subsystem up on a breadboard. An hour on the bench saves an evening of desoldering, and RF problems are far easier to chase with clip leads than with a glued enclosure.

Power First

  1. Wire the ESP32 DevKit V1 and confirm the serial monitor speaks at 115200.
  2. Add the TP4056 and 18650; confirm the battery reads ~3.7-4.2 V at BAT+.
  3. Confirm the 3.3 V rail reads 3.30 V and stays stable when the radio transmits.

Subsystem Bring-Up Order

StepWhat to verifySymptom if wrong
1Serial console boots cleanNo [ERROR], heap ~290 kB
2OLED header + battery iconBlank panel = wiring or 4-pin I2C mistake
3Buttons[BTN ] lines appear in the log
4Radio initHang = BUSY pin not on GPIO 21
5AudioTone comes out of the jack in SEARCH mode
6GPS (if fitted)[GPS ] Fix acquired outdoors
7First TXProgress bar + serial TX log

Breadboard vs Final Build

ConcernBreadboardFinal
RF groundNoisy, long leadsShort, direct ground
AntennaKeep the SMA at the edgeExits the enclosure
GPS patchNear the radio = no fixMoved away per placement rules

Warning

RF results on a breadboard are indicative, not final. Expect the soldered build to transmit and receive better because the ground planes and lead lengths improve.

Display Variants on the Breadboard

Only one display is mounted at a time. The breadboard layout changes with the display you choose, so pick the variant first and wire to that pin table.

OLED (DISPLAY_TYPE 1) — SSD1309 2.42” 128x64, SPI

Display pinBreadboard railESP32 GPIO
GNDGND railGND
VCC3.3V rail3.3V
SCK (D0)rowGPIO 15
SDA (D1/MOSI)rowGPIO 13
RES (RESET)rowGPIO 4
DC (A0)rowGPIO 16
CSrowGPIO 17

Use short jumper wires for SCK, SDA, DC and CS. Long SPI leads on a breadboard look fine at idle and fail during TX, so keep those four wires short.

TFT (DISPLAY_TYPE 2) — ST7735 1.8” 128x160, SPI

Display pinBreadboard railESP32 GPIO
GNDGND railGND
VCC3.3V rail3.3V
SCKrowGPIO 15
SDA (MOSI)rowGPIO 13
RESETrowGPIO 4
DC (A0)rowGPIO 16
CSrowGPIO 17
LED/BL3.3V rail3.3V

The TFT uses the same five GPIOs as the OLED, so the two screens are drop-in replacements on the breadboard. The only new rail connection is the LED/BL backlight to 3.3V.

LCD (DISPLAY_TYPE 3) — HD44780 16x2, 4-bit parallel

Display pinBreadboard railESP32 GPIO
VSSGND railGND
VDD5V rail5V
V0 (contrast)wiper of 10k potpot 5V to GND
RSrowGPIO 16
ENrowGPIO 17
D4rowGPIO 13
D5rowGPIO 15
D6rowGPIO 4
D7rowGPIO 2
R/WGND railGND
A (backlight anode)5V rail via 100Ω5V
K (backlight cathode)GND railGND

LiquidCrystal lcd(PIN_LCD_RS, PIN_LCD_EN, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7).

LCD (DISPLAY_TYPE 4) — HD44780 20x4, 4-bit parallel

Same six GPIOs, same power, same contrast circuit, same constructor call. The only difference is the display module itself: 20 columns by 4 rows. On the breadboard the LCD 20x4 is wired exactly like the 16x2.

Display pinBreadboard railESP32 GPIO
VSSGND railGND
VDD5V rail5V
V0 (contrast)wiper of 10k potpot 5V to GND
RSrowGPIO 16
ENrowGPIO 17
D4rowGPIO 13
D5rowGPIO 15
D6rowGPIO 4
D7rowGPIO 2
R/WGND railGND
A (backlight anode)5V rail via 100Ω5V
K (backlight cathode)GND railGND

No GPIO 12 conflict: D7 is on GPIO 2, which is boot-safe for this use (the HD44780 data line is a high-impedance input), and the GPS TX line is unconnected. GPS and LCD can share the breadboard without any pin moves.

Contrast

The character LCDs show nothing if the contrast is wrong. On the breadboard, connect a 10k potentiometer between 5V and GND and put the wiper on V0. Twist the pot until the text appears. If you see a faint rectangle but no text, that is a contrast issue, not a dead module.

Choosing the breadboard display

  • Use the OLED if you want the full graphical UI on the bench. It is the default and the easiest to read.
  • Use the TFT if you want colour on the bench. It is wired the same as the OLED and looks the same, with a signal-orange accent instead of white.
  • Use the LCD 16x2 if you want the cheapest bench display and do not need the extra rows.
  • Use the LCD 20x4 if you want coordinates, the decoded Morse text, and scan history visible at the same time without changing mode.

Tips

  • Use short jumper wires for SPI and the radio bus.
  • Keep the SMA side of the E22 module hanging off the board edge.
  • Add 100 nF decoupling near the ESP32 and the radio module.
  • Do not run the breadboard on USB power alone for TX tests; use the cell.
  • Wire the display last, after the radio and the serial console are working. A blank OLED is easy to debug; a dead radio with a working display is harder.