(Arduino, Teensy, and ESP32 microcontroller: Last updated by Benjamin on December 5, 2024)
A microcontroller is an integrated circuit that combines almost all the elements of a computer: a processor, memory, storage, input/output interfaces, etc. The microprocessor in your computer needs all of these same peripherals to work, but they are external. It also requires an operating system. On the other hand, microcontrollers offer the advantages of being small and energy-efficient. They are found everywhere, whenever a very specialized task needs to be accomplished. Notably, in all embedded systems, including household appliances, cars, toys, robots, and drones. Not forgetting planes, where they are numerous, without the pilot even suspecting it.
The devices described on this Website use Arduino, Teensy, and Espressif ESP32 development boards.
Arduino microcontroller boards
They are many and varied. Some are dedicated to makers for prototyping simple projects, while others are intended for professionals and industry. See here the official Arduino Website. Many microcontrollers are used, 8-bit or 32-bit, sometimes even dual-core, and clock frequencies range from 16 to 480 MHz. Some boards include communication extensions, Wi-Fi, Bluetooth, GSM, CAN bus, and various sensors, such as inertia, pressure, temperature, and proximity.
However, the three most straightforward boards, Mega 2560, Uno, and Nano, remain the best-known and the most widespread. They are all equipped with an 8-bit 16 MHz microcontroller with 5-volt GPIO pins.
Their open architecture (open hardware) has enabled many clones. This has contributed to their popularity.
Arduino IDE: Integrated Development Environment
Another critical element in the success of Arduino boards is their development environment, the Arduino I.D.E. (for “Integrated Development Environment”). This free, open-source software environment makes the complexity of the microcontroller transparent to the user. Consequently, beginners can write their first program in seconds while learning the basics of C/C++, without needing to understand the complex mechanisms implemented in the microcontroller. Just as you can use your computer without worrying about the microprocessor it contains.
Although there are other development environments for Arduino boards aimed more at professionals, nothing beats the Arduino IDE in ease of use.
Another fundamental point of this success is the existence of innumerable free and open-source libraries. These libraries are extensions of the Arduino IDE, which allow you to perform specific tasks, usually related to a hardware extension. For example, to use a screen, you must download a library from the Internet and include it in the program (the “sketch” in Arduino jargon). The display’s manufacturer may provide a library to drive it. Each hardware extension has its library (its driver, in other words).

Arduino Uno Rev3 microcontroller board
This is the most popular; see here. It has an ATmega328P microcontroller with 32KB of flash memory for programs, 2KB of SRAM RAM, and 1KB EEPROM. The board has 14 digital input/output pins (of which 6 provide PWM output) and six analog input pins. The Arduino Uno provides one serial port, one SPI bus, and one I2C bus.
Moreover, countless expansion boards for the Arduino Uno are commercially available, known as “shields.” Shields are designed to be plugged onto an Arduino board, extending its capabilities. These shields for Arduino Uno have become a standard and have contributed to the extraordinary reputation of Arduino boards. There are shields for Wifi, Bluetooth, Ethernet, GPS, servomotors, CAN bus, micro-SD reader, etc. There is no limit to the imagination of shield designers. For our Micro-EMS, we made a custom shield from a protoshield (a blank shield without any components).
Arduino Mega 2560
It’s a bit like Uno’s big sister; see here. It has an ATmega2560 microcontroller, 256KB of flash memory for programs, 8KB of SRAM RAM, and a 4KB EEPROM. The board has 54 digital input/output pins (of which 15 provide PWM) and 16 analog input pins. The Arduino Mega has four serial ports, one SPI bus, and one I2C bus. All shields designed for the Uno board are compatible with the Mega.
Arduino nano
The classic Nano is the smallest Arduino board; see here. Countless clones are available. The specs are the same as the Arduino Uno, with the same ATmega328P microcontroller, but with reduced size, as shown in Figure 1.
There are many other, newer, and very different (apart from the same small size) Arduino Nano boards: Nano Every, Nano 33 BLE, Nano 33 BLE Sense, Nano 33 IoT, Nano RP2040. They are much more powerful than the “historical” Nano because they are equipped with 32-bit microcontrollers, much larger flash and SRAM memories, 3.3 volts logic, integrated Bluetooth, Wi-Fi, or various sensors.
Arduino Nano ESP32 microcontroller board
This board, introduced in 2023, is the first in the Arduino family to be based on an Espressif ESP32-S3 microcontroller, implemented as a u-blox® NORA-W106 module. See here. This is a 32-bit dual-core chip. The clock frequency is 240 MHz; there are 384 kB of ROM, 512 kB of SRAM, and 16 MB of external flash memory.
The main feature of this board (fig. 2) is its WiFi and Bluetooth LE connectivity. This board has 3.3-volt logic. It has 14 digital input/output pins and 8 analog input pins. All pins support PWM and external interrupts. There is an integrated CAN controller, 2 UART ports, 1 SPI port, and 1 I2C port. This board is used in the AvionicsDuino flight data recorder.

Other Arduino boards
There are many other Arduino boards. It is impossible to cite them all. Some are primarily intended for professionals, such as the Portenta, Nicla, Opta, and MKR families. Furthermore, the Arduino UNO Q, intended for experienced makers, is no longer a simple microcontroller board: it combines a Linux® Debian-capable Qualcomm® Dragonwing™ QRB2210 microprocessor with a real-time STM32U585 microcontroller.
Teensy microcontroller boards
See here the official PJRC Website. We will only consider the most recent ones: Teensy 3.6, 4.0, and 4.1. They are all equipped with a 32-bit microcontroller with 3.3V logic. In addition to their considerable power (especially for the 4.x family), these boards have two advantages over some other 32-bit boards, such as STM32. They use the same IDE as 8-bit Arduino boards (with a software add-on called Teensyduino) and benefit from a vast collection of libraries optimized explicitly for them. Therefore, they are programmed precisely the same way as Arduino boards. Their cost is of the same order of magnitude.

The Teensy 4.1, not shown in this photo, shares the same format as the Teensy 3.6
Teensy 3.6
ARM Cortex-M4 at 180 MHz
Floating-point math unit, 32 bits only
1024 Flash, 256K RAM, 4K EEPROM
64 digital input/output pins, 22 PWM output pins
25 analog input pins, 2 analog output pins, 11 capacitive sense pins
6 serial, 3 SPI, 4 I2C ports
2 CAN bus
1 SDIO (4-bit) native SD Card port
RTC for date/time
Unfortunately, since this page was first drafted, the Teensy 3.6 and 3.2 development boards have been discontinued. They delivered outstanding performance on analog inputs. Consequently, PJRC recommends using Teensy 4.0/4.1 for new projects.
Teensy 4.0
ARM Cortex-M7 at 600 MHz
Floating-point math unit, 64 & 32 bits
1984K Flash, 1024K RAM (512K tightly coupled), 1K EEPROM (emulated)
40 digital input/output pins, 31 PWM output pins
14 analog input pins
7 serial, 3 SPI, 3 I2C ports
3 CAN Bus (1 with CAN FD)
RTC for date/time
Teensy 4.1
ARM Cortex-M7 at 600 MHz
Floating-point math unit, 64 & 32 bits
7936K Flash, 1024K RAM (512K tightly coupled), 4K EEPROM (emulated)
55 digital input/output pins, 35 PWM output pins
18 analog input pins
8 serial, 3 SPI, 3 I2C ports
3 CAN Bus (1 with CAN FD)
1 SDIO (4-bit) native SD Card port
Ethernet 10/100 Mbit with DP83825 PHY
RTC for date/time
Espressif ESP32 microcontroller boards
Espressif Systems is a Chinese company founded in 2008. It is primarily known for producing two series of microcontrollers: the ESP8266, introduced in 2014, and the ESP32, introduced in 2016. The ones we’re interested in here are the ESP32s, a family of low-cost microcontrollers with built-in Wi-Fi and Bluetooth. That’s why ESP32 is widely used in IoT.
There are many variations depending on the CPU, number of cores, clock speed, available memory, package, and number of GPIOs. Moreover, in addition to Espressif, several manufacturers distribute modules containing Espressif chips, and an even larger number distribute various development boards based on these varieties. The reader may thus wish to consult, for example, the ESP32 Wikipedia page to better navigate this complex subject.
ESP-IDF: the official development framework
Espressif developed ESP-IDF for the ESP32 family. For experienced users, it makes the most of the ESP32’s capabilities, particularly the FreeRTOS operating system built into the device. Fortunately, the Arduino IDE is also perfectly usable for less experienced users.
As part of the AvionicsDuino project, we chose to use ESP32-S3 modules or development boards for two main reasons. First, the ESP-NOW protocol, based on Wi-Fi, can be used to enable different subsets to communicate with each other in parallel or in addition to the CAN Bus. The second reason is the availability of a very high-quality graphics library, LovyanGFX, dedicated to ESP32, and capable of exploiting the ESP32-S3 hardware to interface directly with an LCD panel in RGB or 16-bit parallel mode. LovyanGFX makes intensive use of sprites, allowing for complex, perfectly smooth animations without flickering.
For our next-generation EFIS-EMS (dedicated page coming soon), the 7″ display module uses an ESP32-S3-WROOM-1-N16R8 module (Fig. 4).

The Remote Data Acquisition Module (RDAM) of this new EFIS-EMS uses a Seeed Studio XIAO ESP32-S3 development board (fig. 5). As shown above, our flight data recorder uses an Arduino Nano ESP32 board.

Which board to choose?
In short, we can say that an 8-bit/16 MHz Arduino Uno or Nano board is well-suited to managing a few sensors and actuators (for example, to control a trim servo), building a tachometer, or building a fuel computer. The very first AvionicsDuino prototype (Arduino Micro-EMS) used an Arduino UNO Rev 3 board. It successfully monitored RPM, fuel level, fuel flow, battery level, and current. An Arduino Mega board could probably be enough to be the heart of an EMS (Engine Monitoring System). However, for applications requiring more computing power, such as displaying multiple gauge charts or an artificial horizon while monitoring many different sensors and managing communications between several devices over a CAN bus or Wi-Fi, Teensy and ESP32 boards are much better suited, particularly Teensy 4.x and ESP32-S3.