Microcontroller Boards
Current list of Microcontrollers
EX‑CommandStation currently is designed for Atmel AVR based Arduino and compatible microcontrollers, and some ARM based boards such as the Teensy range. Out of the box, it is compatible with the following boards:
Choosing a microcontroller
With so many microcontrollers to choose from, how do you know which is the best for your needs?
We’ve compiled this simple summary table to help with this:
Type / Brand |
R |
S |
Level |
Shield |
HAL |
E |
EX- |
Track |
D C |
W |
Wifi |
Comments / Notes |
---|---|---|---|---|---|---|---|---|---|---|---|---|
EX-CSB1 |
Yes |
Yes |
Conductor |
UNO / Mega |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
~11 |
This is our stable, well supported platform |
Arduino Mega2560 |
Yes |
Yes |
Tinkerer |
UNO / Mega |
Yes |
Yes |
Yes |
Yes |
Yes [2] |
yes [1] |
4 |
This is our stable, well supported platform |
Yes |
Yes |
Tinkerer |
- |
Yes [5] |
No |
Yes |
Yes |
Yes [2] |
Yes |
~11 |
Inexpensive and includes both WiFi and Bluetooth connectivity, limited in I/O pins |
|
Yes |
Yes |
Tinkerer |
- |
Yes |
No |
Yes |
Yes |
4 |
Lots of memory and 32 bit architecture, still in the convenient Uno form factor but with more I/O pins |
|||
Arduino Uno R3 |
No |
Yes |
Tinkerer |
UNO / Mega |
No |
Yes |
Limit- |
No |
No [2] |
No |
- |
Ok for small layouts with no programming, or a dedicated programmer with JMRI |
Arduino Uno R4 |
- |
No |
- |
Different architecture to the R3. Will never be supported. |
||||||||
Arduino Nano |
No |
Yes |
Tinkerer |
- |
No |
Yes |
Limit- |
No |
No [2] |
No |
- |
Similar to Uno, but without the convenient Uno footprint |
Arduino Mega+WiFi |
No [6] |
Yes |
Tinkerer |
UNO / Mega |
Yes |
Yes |
Yes |
Yes |
Yes [2] |
Yes |
4 |
This is our stable, well supported platform, but with WiFi on board, but beware quality issues |
SAMD21 |
No |
Engineer |
- |
Yes |
No |
Yes |
Yes |
No [2] |
Yes [1] |
4 |
Limited support only, will be removed in 6.0.0 |
|
No |
Dep- |
Engineer |
- |
Yes |
Yes |
Yes |
No |
No [2] |
Yes [1] |
4 |
Limited support only, will be removed in 6.0.0 |
|
No |
Dep- |
Engineer |
- |
Yes [5] |
Yes |
Yes |
No |
No [2] |
Yes [1] |
4 |
Limited support only, will be removed in 6.0.0 |
Will you support other microcontrollers in the future?
New microcontrollers are constantly being developed and released, and we continue to monitor those to see if they are beneficial for our users.
Right now, however, we have a good selection of microcontrollers with the Mega2560 and the newer generation ESP32 and STMicroelectronics Nucleo, so we’re not looking to add more in the immediate future.
Note the Arduino Giga and Arduino Uno R4 are still not on our roadmap as per our No support planned for the Uno R4 or Giga News announcement.
Notes on 3v3 vs 5V microcontrollers
It’s important to note that the newer generations of microcontrollers almost always operate at 3.3 volts rather than 5 volts.
Digital IO
For some, like the STM32F4xx range, this is largely a non-issue as many of their digital I/O pins are designed to be 5V tolerant, meaning your existing digital sensors, serial devices, and I2C devices running at 5V are expected to be compatible. Outputs may need further consideration though, as while a “high” signal at 3v3 will trigger most 5V input logic devices, in some rare instances it can potentially not provide a high enough voltage. Using level shifters for digital outputs will resolve these issues, and if you want an extra layer of caution, you can use level shifters for the digital inputs as well.
For others that are not 5V tolerant, such as the ESP32, connecting accessories with 5V outputs to the ESP32’s input will cause damage to the microcontroller. Therefore, for ESP32 and similar 3v3-only microcontrollers digital input level shifters is mandatory. For digital outputs from 3v3 microcontrollers you may find most accessories with 5V inputs will accept 3v3 as a correct “logic 1”.
Analog IO
However, ALL 3v3 microcontrollers require analog inputs to be restricted to no more than 3.3V. This means only some Motor Driver boards are compatible unmodified with 3v3 microcontrollers to read output current. For the moment we recommend the genuine Ardiuno Motor Driver R3, and only the R3 version of it. Motor Drivers such as the Deek Robot can be modified readily enough. We will document this, but in the meantime ask on the Discord server.
Note
Some devices such as the ESP01 WiFi board and HC05/06 Bluetooth boards are already 3v3 devices, so if you have set these up with level shifters, the level shifters will no longer be required when using 3v3 microcontrollers.
Boards that will NOT work
WAVGAT Uno clone - This board is NOT 100% Uno compatible. It uses a LGT8F328P processor from a company in China called “Logic Green”. It has no EEPROM and requires a bit of configuration in the Arduino IDE to get it to be seen correctly and compile sketches. It is, however, a good board for developing other applications on because it can be switched to run at 32mHz instead of 16. It also has 12 bit analog pins instead of 10 bit. That means higher resolution readings, 0-4096 instead of 0-1024. It could potentially work as a Command Station with more testing and some code changes, but we will leave that to someone else to attempt. Various other microcontrollers offer more memory, more serial ports and more GPIO pins and are just a better way to go for the future.
Arduino Uno R4 - Despite the name, this is not simply a new release of the tried and true Arduino Uno platform, and is a major redesign using a totally different CPU architecture and is expensive. Refer to the No support planned for the Uno R4 or Giga News article.
Arduino Giga - Like the above Uno R4, this is not just an enhanced version of our recommended Arduino Mega2560 but rather an entirely new (and also very expensive) board that just happens to share the same footprint. Refer to the No support planned for the Uno R4 or Giga News article.