A wifi base utility driver is very usefull for robotics or in this case a Model Railroad. This can be used for a variety of analog/digital sensors, DC motors and PWM (lights etc) needed.
Small 45mm x 70mm Utility Driver Board. (1) 7 x PWM porst, (2) CH340G based serial USB, (3= ESP32, (4) 12 x Servo or IO porst, (5) 12V external PSU for motors, (6) USB port for programming with Arduino IDE, (7) PSU selection 5V or 12V for Servo/Motors.
ESP32 have a programmable IO system allowing you to soft wire many of it’s features to any IO Pin. This means that the 12 x Servo/IO pin’s on left are very capable. Designed as a Servo port supporting 5V or 12V PSU the IO pin can be configured as a Servo, Analogue In/Out, Digital In/Out and much more.
Programming of this is done with a classic Arduino IDE through a CH340G based USB. This can also be used for serial communication.
Source code take advantage of the 2 cores on ESP32. We use one core to bit-bang the IO table, while the second core maintain communication on Wifi/Bluetooth.
The bitbang core will just run in an ever loop taking advantage of the CPU speed of 240Mhz to bit-bang IO setting with a maximum accuracy. This techniue is simple, but give us better total resolution that timers can.
The second communication core take advantage of the included FreeRTOS to create threads and maintain heavier communication tasks.
The dual core with shared IO and memory is close to idea as it allows us to use one core for hard real-time, while the other core focus on tasks that benefit from a threaded design.