/images/avatar.png

Embedded Kate Blog

Arduino Internals: running wokwi simulation on CI/CD

Testing projects is one of the major challenges in embedded devices field. Many existing projects still rely on manual building by developers and exclusive manual tests on the real hardware. In such case, pushing the change that breaks the compilation, or breaks the functionality of device, could go unnoticed for some time. An additional issue is that testing each change and iteration on real hardware is time-consuming for developers.

While nothing really can fully replace the end tests on the real hardware, we can (and should) introduce multiple layers of testing that can be done automatically, without effort from the developers side.

Arduino Internals: building sketches with Arduino CLI

Do you know that you don’t actually need the Arduino IDE to build and upload sketches?

Arduino projects can be compiled and uploaded straight from the command line using the Arduino Command Line Interface (CLI). Underneath, this process is identical to what happens when you build and upload from the IDE, because Arduino IDE 2.0 and later use arduino-cli under the hood. The only difference is how do you trigger build and upload — by command line instead of clicking inside IDE.

Arduino Internals: how Arduino builds your code

Arduino is one of the most popular ways to start learning embedded systems. At the same time, you can find plenty of debates online about whether Arduino is a good choice for that (like “Is there anything wrong with Arduino?”, “Why engineers hate Arduino?[1], [2] ).

While the list of arguments from Arduino “opponents” is quite long — and some of their points are completely reasonable — I want to prove that you can learn just as much with Arduino as with any other embedded platform, as long as you avoid blindly relying on the Arduino API and stay curious to explore what’s happening under the hood. That’s why I am creating the Arduino Internals series.

As a starting point, let’s take a closer look at what happens when you build a sketch in the Arduino IDE.