Programming of microcontrollers and other equipment

Piotr Lewandowski, 10 September 2019

Programming of microcontrollers

There is a particular group of projects that we love to engage with. Each new topic from this group ignites hope amongst our programmers, who line themselves up for the chance of taking it on or at least to find out what will be the subject of the new enterprise. It’s all about hardware projects.

Hardware programming and creating systems that communicate directly with hardware is a very broad area. While most people dealing with contemporary computer science (and technology in general) are very familiar with the term IoT (internet of things), microcontroller software is less well-known. Perhaps this is due to modern specialisation in other areas (currently, web solutions and mobile applications are the most popular), and perhaps from the conviction that this is an uninteresting, difficult or unfashionable area. But in our opinion it is in fact the other way around and thus it is worth paying attention to all topics which are “close to metal”!

In addition to the mentioned IoT and all kinds of microcontrollers, the programming of mechanical devices covers a wide range of applications. It is also widely understood as industrial automation, embedded systems, various robotic solutions or distributed systems. We are used to work with both broadly applied standards (as the MQTT protocol) and the more specialized ones (like the DALI standard used in lighting systems).

The market in this area has its own dynamics and clear trends. Although 8-bit microcontrollers are still used (such as the very popular C8051 from Silicon Laboratories), 32-bit ARM chips are the leader (although 64-bit growth is also notable), in particular the STM32 family. The Atmel AVR, NXP LPC and MSP430 families from Texas Instruments follow closely behind.

Falling hardware prices allow us to create interesting solutions that do not necessarily have to be based on programming in assemblers or even in C / C ++. The situation is clearly changing in favour of more developer-friendly, “high-level” languages, such as Python (MicroPython, CircuitPython) or even JavaScript (Espruino). It is also noticeable that educational solutions, such as Arduino or Raspberry Pi, are increasingly boldly entering the commercial market. All this makes working with embedded systems easier for the average programmer.

On the other hand, however, programming hardware requires quite a specific set of skills, and entry into some technologies involves the need to study various documents, schemes, standards and protocols. As you can see, this is not a task for everyone. We, however, believe that this very complexity has a charm to it that we can’t resist, and our programmers are always happy when they can work with physical equipment. This is one of the few situations when their work directly translates not only into virtual reality, but also affects the physical realm. We have superb teams that work in web technologies and mobile applications, which helps us to easily implement projects where equipment can interact with web or mobile applications.

Probably it’s simply because we like this kind of topic, and because of this we are not afraid of difficulty, that such “auxiliary” projects tend to reach us. Although we can’t rule out the possibility that this is also due to favourable recommendations.