Learning Embedded IoT: 3 Steps for Choosing a Development Board

Search for a command to run...

No comments yet. Be the first to comment.
A community giveaway program by The Embedded Rustacean ร Seeed Studio to grow the embedded Rust ecosystem

Introduction Another year comes to an end; as always, it is an opportunity to reflect on the achievements of the past year and look forward to the next. It's been over 3.5 years since I embarked on my embedded Rust journey, and it only gets more exci...

Introduction Another year comes to an end, as such, this is an opportunity to reflect on the achievements of 2024 and look forward to 2025. It's been over 2.5 years since I embarked on my embedded Rust journey, and it remains as exciting as ever. If ...

Introduction ๐ On Friday, May 17th, 2024, the release of Simplified Embedded Rust was announced marking a new kind of book in the embedded Rust learning space. I'm happy to say that this book, design

This post is the sixth of a multi-part series where I'm exploring the use of Bluetooth Low Energy along embedded Rust on the ESP32. Information in this post might rely on knowledge presented in past p

A huge part of learning embedded IoT is doing hands-on work through projects that involve programming microcontrollers. To achieve that goal, some sort of development board is needed. A problem that learners often struggle with is the process of choosing a development board. The challenge emerges from the existence of a huge variety of boards where there isn't a one size fits all option. Below I will be describing the steps that I take in choosing a board. Note that the below relates mostly to boards needed for bare-metal development.

As obvious as it sounds, I cannot emphasize the importance of this step enough, and is the first question I ask when one is seeking help looking for a board. A lack of clarity on what you want to do makes selecting a board ever harder. Even if it is for learning then, what is it you want to learn? Is it a certain architecture, peripherals, or programming a specific application?
The clarity you achieve from identifying what you want to do with the board will help you answer all the forthcoming questions. You'll see that there might be things you don't care about and that's ok. All you need to do is assure that your board can at least provide the things you need. What is also important here is that you be as detailed and specific as possible.
Let's look at two examples of descriptions. A non-detailed description would look something like this:
I want a board to read temperature measurements from a sensor
One can argue that any board can do this and is probably true. However, how does the statement even help hone in on a particular board? Compared to something like:
I want a board to read analog temperature measurements every 10 ms with 1-degree Celcius accuracy using an ADC integrated into a microcontroller. The microcontroller should have an ARM Cortex processor. I want to also be able to send the measurements I collect to a remote web server using board-integrated Wifi every 10 seconds. I want to power the board using USB power from my PC and program it using the C language with any standard IDE.
I think the difference here is obvious. I can even add more detail as appropriate. If you notice here I am also defining what the sensor interface is like (analog temperature sensor). This means that sometimes you also need to identify ahead of time the external components that you want to work with in this step as well.
I'd like to add that sometimes you can skip to the third step immediately if you don't necessarily care about microcontroller performance and architechture specifics. That way you can focus on board functions that your application needs. If you are a learner though, the second step is necessary at times if you want a simple device targeting a specific architecture for learning purposes. Some boards that exist in the market, although target learners have microcontrollers with more complex architectures are hard to navigate.
In identifying the microcontroller, part of the challenge is that there is an even wider variety than boards. In choosing a microcontroller the selection criteria are as follows:
Again, keep in mind you do not have to know all the answers to the points above, but you need to define something to help you choose. As a matter of fact, your answer could be that it doesn't matter for several parameters. Additionally, certain things sometimes come through experience and estimation, like code memory size so you can really give a solid answer. For a beginner though, this is something that most of the time you don't need to care for much until you start building more complex applications.
Finally, keep in mind there are a ton of microcontrollers available but platforms integrate only a few. Suppliers typically create a family of microcontrollers that scale up in performance and features. I would say that for learning purposes, it's better and easier to identify a family of controllers that work for your purpose rather than a single one. This gives you more flexibility to find a board that is compatible with you needs in the following step.
Now that we identified various compatible microcontrollers we need to find a board that incorporates any of them. To choose a board selection criteria includes the following:
To give more context, I'd like to point out the types of boards that are commonly available by suppliers in the market. Knowing that this might make the selection process easier. While this is not a rule, it is common to see that board suppliers typically have three tiers of boards as follows:
As mentioned earlier, identifying a platform is one of the most important criteria. This helps also extensively reduce the number of choices. After that, you can choose a specific board from that one platform supplier. Here I list some of the popular platforms and what they are known for:
Beginner Friendly Entry Level General Embedded IoT Platforms
Beginner to Advanced Embedded Platforms
Entry Level IoT Focused Platforms (Wireless Enabled)
Intermediate to Advanced IoT Focused Platforms (Wireless Enabled)
Custom Platforms
Identifying a board for embedded IoT is a daunting task even for practiced users. With experience, an individual builds certain preferences and the selection process becomes quicker, but still, the variety of choices is huge. It is not uncommon that an individual acquires a board to discover that it doesn't completely fit the need and it's okay. It's part of the learning process and happens even with the well-trained. The point is to try to reduce the chance of that happening. As a result, it's always good to have a proper framework/process in choosing which board to acquire. In this post, I provide a framework to follow for selecting the best board for your next project. Have I missed anything? Are there any other parameters you look at to identify boards? Share your thoughts in the comments below ๐.