Turn an ESP32, a 1.8" ST7735 SPI TFT, and five push-buttons into a real-time Morse → Text typer.
Tap DOT/DASH, press NEXT LETTER to translate the letter, SPACE for word gaps, and RESET to clear.
No timing detection—just fast, reliable input.
- 5-button workflow (no dot/dash timing headaches)
- Live TFT UI:
- “Morse:” shows the current Morse sequence (
.-..) - “Text:” shows translated text
- “Morse:” shows the current Morse sequence (
- Debounced button reads (stable input)
- Minimal dependencies: Adafruit_GFX + Adafruit_ST7735
- Works with Arduino IDE or PlatformIO
- ESP32 Dev Board (e.g., ESP32-WROOM DevKit)
- 1× 1.8" ST7735 SPI TFT (128×160)
- 5× Momentary push buttons
- (Optional) Breadboard, jumper wires
| TFT Pin | ESP32 Pin | Note |
|---|---|---|
| CS | GPIO 5 | Chip Select |
| DC | GPIO 16 | Data/Command |
| RST | GPIO 17 | Reset |
| SCLK | GPIO 18 | VSPI SCK |
| MOSI | GPIO 23 | VSPI MOSI |
| VCC | 3V3 | Power |
| GND | GND | Ground |
| MISO | — | Not used |
Power the TFT at 3.3V. Ensure common GND with the ESP32.
All buttons are wired the same way:
- One leg → ESP32 GPIO
- Other leg → GND
Enable INPUT_PULLUP in code so LOW = pressed.
| Button | ESP32 GPIO |
|---|---|
| DOT | GPIO 32 |
| DASH | GPIO 33 |
| NEXT | GPIO 25 |
| SPACE | GPIO 26 |
| RESET | GPIO 27 |
These pins are chosen to avoid conflicts with the VSPI TFT pins.
esp32-morse-interpreter/
├─ src/
│ └─ main.cpp
├─ include/
├─ lib/
├─ docs/
│ ├─ esp32-morse.png # schematics svg
│ ├─ esp32-morse-schematic.pdf # printable diagram
│ └─ cover.png
├─ platformio.ini # if using PlatformIO
└─ README.md
- Create a new PlatformIO project (board:
esp32dev). - Replace
platformio.iniwith:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
adafruit/Adafruit GFX Library
adafruit/Adafruit ST7735 and ST7789 Library
