Choosing a Micro-controller
There are lots of options to choose from and choice paralysis may set in if you try to optimize. If you don’t already have an UNO in your hands, buy one of the processors on my current favourites list and start experimenting to understand what the possibilities are.
If you do have a processor or two on your desk, start experimenting with your application idea on whatever processor is available and you will quickly get a sense of which features are missing. That will help you narrow down the options for other alternatives. If you code your initial experiments in the Arduino IDE, it should be fairly portable to run on whatever processor you eventually settle on for your project.
If you aren’t sure which processor to use, just start the project with what you have!
What I have been using
I have focussed on micro-controllers that I can program through the same Arduino IDE as beginners use for the Arduino UNO, so we can bring those skills along to use more sophisticated and more powerful processors. This chart sums up what I have been playing with over the last few years. The course columns list what I would have picked that year if starting from scratch, but reality has lagged behind for practical reasons.
Years | What I have been using in new projects | What I think is interesting | MECH 217 | MECH 848 |
2015 and before | Arduino UNO, DUE (discontinued), micro, Teensy 3, 3.1, 3.2, ESP8266 | WiFi options for IOT | UNO | UNO |
2016 / 2017 | Adafruit Feather M0 family, WINC1500 | Secure options for WiFi | UNO | Feather M0 WiFi |
2018 | Teensy 3.5, Adafruit M0 Express | ESP32 | UNO | Feather M0 WiFi |
2019 | Particle Argon, Xenon, Adafruit M4 Express, Teensy 3.5 | Adafruit Grand Central M4 Express as DUE replacement, Circuit Python | UNO | not offered |
2020 | Itsy Bitsy M0 Express |
My Current Favourites
I am biased towards Adafruit as a supplier and like to support their progressive and educational goals. All of my current favourites are available from them, and some from other sources. All my current favourites are 3.3V processors, making it easy to power them from LiPo batteries and compatible with most sensors without the need for level shifting.
Adafruit Itsy Bitsy M0 Express: small, powerful, inexpensive alternative to the UNO will also run Circuit Python in addition to C. Perfect for plugging into a half size breadboard. For student use it should probably not have pins in Bat, USB, pin 5, and VHi locations to avoid accidentally connecting 5V USB power to 3V data pins and causing damage.
It provides the capacity to use the 2MB flash storage as a disk to write files, then read them on a computer, however this process is more complex than ideal for use in MECH 217.
In addition to the usual LED on pin 13, it provides an RGB LED that can be accessed via the DotStar library to provide additional signalling.
Adafruit Feather M0 WiFi: small, powerful, with independent secure WiFi and built in LiPo charger. Still leaves some space on a half size breadboard. Don’t forget to upload the latest firmware and SSL certificates as detailed in the tutorial.
Teensy 3.5: extra powerful with a faster M4 processor and lots of IO pins for bigger projects. Plugs into a full size breadboard leaving lots of prototyping room.
The Arduino UNO remains a sentimental favourite as an excellent teaching platform with amazing robustness, but carrying some serious baggage. 5V operation is a hazard to 3.3V sensors. The 8 bit processor, tiny memory, and 10 bit resolution impose unrealistic limits on students, although they do promote deeper understanding. Easy availability of legitimate clones like in this Smraza Kit can still make them a good first experience.
ESP8266 and ESP32: These are available in various configurations with WiFi and other communications. The base processors are very good value and find their way into a lot of IOT devices on the market. Unfortunately they are poorly documented, and the analog side of the processors are problematic and low accuracy. Even the newer ESP32 has low impedance on the analog read, which can pull down the result, and analog accuracy poorer than +/- 6% without calibration. Don’t use them for analog instrumentation unless you are ready to put significant effort in.