WiTcontroller (Physical)
WiTcontroller uses exactly the same hardware as the DccExController, but uses the wiThrottle Protocol instead of the DCC-EX Native command protocol.
From Engine Driver’s very own Peter Akers (flash62au on our Discord server), comes a physical hardware throttle using only 4 parts and a battery:
ESP32 with LiPo charger
Rotary encoder
3x4 keyboard
OLED Display
Optionally you can add:
Up to 8 extra buttons
A battery monitor
Files for a 3D printed case are also available.
For a video on how to do this, click below:
Features
Provides a list of discovered SSIDs with the ability to choose one. When you select one:
If it is one in your specified list (in the sketch), it will use that specified password
If it is a DCC++EX WiFi Command Station in access Point mode, it will guess the password
Otherwise it will ask to enter the password (Use the rotary encoder to choose each character and the encoder button to select it. * = backspace. # = enter the password.)
Optionally provides a list of SSIDs with the specified passwords (in the sketch) to choose from
Auto-connects to the first found WiThrottle Protocol Server if only one found, otherwise
Asks which to connect to
If none found will ask to enter the IP Address and Port
Guesses the WiThrottle IP address and Port for DCC++EX WiFi Access Point mode Command Stations
Optionally can add a #define (a preference) to disable this auto connect feature
Rudimentary on-the-fly consists
Assign commands directly to the 1-9 buttons (in the sketch) (see list below)
This is done in config_button.h
Latching / non-latching for the function is provided by the roster entry of WiThrottle server
Optionally use a potentiometer (pot) instead of the rotary encoder
Optional ability to assign commands directly to the 1-11 additional buttons (in the sketch) (see list below)
These are defined config_button.h
Command menu (see below for full list) including:
Able to select and deselect locos:
by their DCC address, via the keypad
On NCE systems, a leading zero (0) will force a long address
from the first 50 locos in the roster
Able to select multiple locos to create a consist
Able to change the facing of the additional locos in the consists (via the ‘extra’ menu after selection)
Able to activate any function (0-31)
Showing of the roster function labels (from the WiThrottle server if provided)
Quick access to the functions by pressing #. Temporarily enabled via the Extras menu (or permanently enabled in config_button.h)
Limited ability to configure which functions are sent to the first or all locos in a consist (defined in config_button.h)
Able to throw/close turnouts/points:
from the address
from the first 50 turnouts/points in the server list
Able to activate routes:
from their address
from the first 50 routes in the server list
Set/unset a multiplier for the rotary encoder
Power Track On/Off
Disconnect / Reconnect
Put ESP32 in deep sleep and restart it
Option to switch between Single Loco and Consist/MU (Drop before Acquire)
Option to save the currently select locos (on multiple throttles) and have them automatically re-acquired on next connection.
Option to have up to 6 command sequences executed on connection
Option to automatically acquire a loco if there is only one loco in the roster
Have up to 6 throttles, each with an unlimited number of locos in consist. Default is 2 throttles, which can be increased or decreased temporarily via the Extras menu (or permanently enabled in config_button.h)
Limited dealing with unexpected disconnects. It will throw you back to the WiThrottle Server selection screen.
Boundary between short and long DCC addresses can be configured in config_buttons.h
The default speed step (per encoder click) can be configured in config_buttons.h
The controller will automatically shut down if no SSID is selected or entered in 4 minutes (to conserve the battery)
NOTE: This is an open source Project and is therefore always a work in progress. New features are being added regularly.
Source code and instructions can be found on GitHub here: https://github.com/flash62au/WiTcontroller
Images
Here is a connection diagram drawn in Frizing showing how to wire the parts together:

Fig 361: Basic WiTcontroller connection diagram
Here are pictures showing parts placement inside the case:

Fig 362: WiTcontroller assembly

Fig 363: WitController in case
Build Variations
Some of the build variations that are possible…

Fig 364: WiTcontroller Extra Butons

Fig 365: WiTcontroller Extra Butons

Fig 366: WiTcontroller Larger Screen