What platform should I use for my IoT project?

There is a large choice of platforms, embedded microcontrollers and breakout boards available for prototyping your projects. I want to show you some aspects, that might help you to device what platform you should choose.

First of all, answer the following questions for yourself:

  1. Do I need WiFi connection, or is some other wireless technology (such as BLE, Zigbee, LoRaWAN) sufficient for my project?
  2. Do I want to power my project from a battery?
  3. Do I have a size constraint, or can my battery and my board be as large as it needs to?
  4. Is there a requirement regarding the battery lifetime (e.g. at least 1 day, at least 1 year, or at least 5 years)?
  5. Will I execute complex algorithms on my device, or will I just do lightweight tasks such as sensor data acquisition?
  6. How large should the flash memory be for my program? Is several kilobytes enough, or do I need at least 1MB or more?

Platforms

Arduino

easy-to-use large community

Arduino is well-known for its simplified “Arduino C” language and the IDE. It allows anyone to get started quickly with simple embedded projects, and there are numerous software libraries for extension boards and common tasks available.

However, Arduino boards themselves do not include connectivity. So if you need some form of communication, you have to add another chip and communicate with it using SPI, UART or some other protocol.

PlatformProsCons
Arduino Nano– Already a small form factor for the prototype– Limited amount of flash memory (32KB)
– No integrated wireless connectivity
– Only an 8-bit processor
Arduino Uno– Easily extendable with shield boards that can be stacked on top– Same MCU as the Nano, so limited amount of flash (32KB)
– No integrated wireless connectivity
– Only an 8-bit processor
Arduino Mega 2560– Many IO pins available
– Also extendable using shield boards
– Faster processor (16MHz) and larger program memory (256KB) than the smaller Arduinos
– No integrated wireless connectivity
– Only an 8-bit processor

Espressif ESP line

WiFi on-board fast processor

The devices from Espressif revolutionized the world of maker projects, because they include a full 802.11 stack on a 1cmx1cm board. They also come with a strong processor consisting of two cores, and one of them is fully dedicated to handling WiFi connectivity.

PlatformProsConsBoards
ESP8266– 32-bit microcontroller
– 80 to 160 MHz clock frequency
– Supports up to 16 MiB of flash memory
– Integrated Wireless LAN (802.11) connectivity allows easy integration into the network
Due to the strong processor and the support for WiFi, it needs a lot of power. Does not last long on batteries.– Wemos D1 mini
– ESP8266 NodeMCU
ESP32– 32-bit microcontroller
– 160 to 240 MHz clock frequency
– Integrated Wireless LAN (802.11) connectivity
– More interfaces such as CAN
– Hardware crypto module (AES)
Due to the strong processor and the support for WiFi, it needs a lot of power. Does not last long on batteries.– ESP32 NodeMCU
– LOLIN32

STM32 platform

STM32 microcontrollers are all 32-bit and based on the ARM Cortex architecture. Depending on the sub-line, there are processors for any kind of use case available. I personally also like the CubeMX development environment. It makes pin configuration and all the peripheral configuration in general really easy.

(Ultra) Low Power: STM32L0, STM32L1, STM32L4 and STM32L5

The low-power line from STM32 perfectly fits use-cases and projects, where you need to run from a battery for a long time. Of course, this requires that you adjust your software so that the MCU is in deep sleep most of the time.

The STM32 low-power MCUs are available with different Cortex instruction sets: Cortex-M0, M3 and M4.

You can find more information about the STM32 low-power MCUs on the page from STMicroelectronics.

Mainstream (most common features): STM32F0, STM32F1, STM32F3, STM32G0, STM32G4

STM32 processors in this category cover most of the use-cases for average projects. They can be used as any kind of control device, or for controlling an OLED or LCD. However, they might not be the perfect fit for projects that require long battery life, because they are not optimized for it.

More details about the STM32 mainstream line can be found here.

High Performance: STM32F2, STM32F4, STM32F7, STM32H7

For tasks such as graphical user interfaces (GUIs) on larger screens, or neural network processing, STM32 offers the high performance MCUs. They run on a clock frequency up to 480MHz, and can thus process more data more quickly.

Details about the high-performance STM32 MCUs can be found here.

Wireless MCUs: STM32WB, STM32WL

Finally, STM32 also offers wireless MCUs. There are chips with Sub-GHz radios, as well as 2.4GHz. The STM32WB supports Bluetooth LE 5, IEEE 802.15.4 and Zigbee.

The STM32WL is the world’s first System-on-Chip that integrates LoRa connectivity together with an MCU. So this is quite a nice choice for a project that requires a small board footprint and low power consumption.

More details about the wireless STM32 MCUs can be found here.

Leave a Reply