Serial Terminal Menus for Arduino Applications

I want to write a improved serial terminal menu system for configuring the settings for my LoRaTracker Arduino programs.

I already have a basic terminal menu in the receiver that allows you to control the (remote) tracker via a serial terminal, I normally use TeraTerm. The menu system does allow for some changes to the receiver, you can adjust the frequency of the receiver for instance.

I want to expand the system to allow the user to configure items such as frequencies, bandwidths, spreading factors, whether certain options are disabled or enabled, delay settings, GPS type etc. The selections would be made with a Y\N against an option or by entering a number or text.

The configuration data is already stored in EEPROM (or FRAM) and the tracker transmitter can be configured from the receiver in an OTA bind operation.

I did some Googling and found SerialUI (SerialUI – which looks like it might do. Not too sure its designed for running on ESP32, which would be my preferred Arduino for the project. A really neat feature is that there is 'Device Druid' ( ) a Windows10\Linux application that will connect to the SerialUI on the programmed Arduino and run a GUI style menu without the need to configure the GUI.

Are there any other similar systems out there, possibly with an Android GUI ?

I may be misunderstanding what you want but maybe my EzScrn demo will be of interest. Quoting from the intro

EzScrn is a Python program that works with your Arduino program to provide a simple way to create a GUI screen on a PC (or phone or tablet). The Python program is a small webserver so the GUI screen is accessed through your Browser.

The idea is that all of the design of the GUI is generated with a few lines of Arduino code and all you need to know about Python is how to run the program and access the GUI with your browser.


The prime requirement is a Serial Terminal menu so that you can interact, control and configure the tracker application from a standard serial terminal. Think back perhaps to the age of VT100 type terminal applications.

This for instance is the current menu for the tracker receiver;


434.503MHz (2.0Khz) BW62500 SF10 CR4/5 LDROPT_ON Power 10dBm
This Node 1

  1. Enable FSK RTTY
  2. Disable FSK RTTY
  3. Enable Address Strip
  4. Disable Address Strip
  5. Enable GPS Power Off
  6. Disable GPS Power Off
  7. Increase Transmitter Frequency 1KHZ
  8. Reduce Transmitter Frequency 1KHZ

F) Enable Fence Check
G) Disable Fence Check

O) Receiver Frequency Offset

C) Listen in Command Mode
S) Listen in Search Mode
T) Listen in Tracker Mode

P) Packet Test (0)
R) FSK RTTY Test (1)
L) Link Budget Request

U) Receive Tracker Bind
W) Configure from Memory
X) Configure from Defaults
Y) Clear memory and Settings (re-config needed)
Z) Reset Tracker Transmitter

And with this menu you can control the tracker (could be hundreds of Km away) or switch across to listening for incoming packets.

I dont want to loose the basics of the above, but would like to add a configuration option for all the various LoRa and tracker settings that are normally configured when the tracker transmitter is initially programmed.

The potential for an Windows\Linux\Android app that would replace the Serial Terminal menu is a nice 'good to have' but not the prime requirement.