Follow our illustrated blog on Embedded Software Architecture

How to build a hybrid solar/wind energy harvester?

Energy Harvester Telemetry

Everything becomes networked Development focus is very important in order to prevent scope creep, however it does not hurt to look a bit further in the future to try to see how things evolve. Our development track for the energy harvester is progressing nicely, but what will be next? We think that information sharing and […]

Share

The energy harvester is ready for iteration 4

Iteration 3 overview Essentially, a charge controller is a high-power switching device. The switching core determines how much energy flows to batteries, and how much excess energy is burned by a dump load. Next picture is key and PMD2 of our system design: Of course, for our experiments in iteration 3 we needed devices and more specifically, […]

Share

The embedded hierarchy — Part 1

Good programming skills is not the only quality a software engineer needs to have in order to write extendable, reusable and manageable software. Understanding the domain is equally important because it enables you to build good abstractions, and to do correct configuration management (version control). This is no different in embedded software: creating or even […]

Share

Object-orientation in C — Part 2

In Part1 we have laid the foundation of how a class could look like in C. This simple class is good for creating an Abstract Data Type but it doesn’t support polymorphism and inheritance…yet. Here is an UML diagram (made with dia) of what we are trying to achieve in this post: Admitted, the example is not very original […]

Share

Beware of premature optimization

One should only write optimized code? No, one should not write only optimized code. One should write maintainable and readable code, which adheres to the KISS principle. Depending on the foreseeable scenario, certain optimizations could be introduced in order to meet the performance requirements. The dangers of early optimization “fever” are loosing yourself in the […]

Share

Object-orientation in C — Part 1

Object-orientation Object-orientation is about classes and objects. A class is an abstract data type: data type: because it defines a new type to work with by providing data and operations on this data, but also abstract: because it encapsulates this data and hides implementation details behind an hopefully nice and clean interface. An object then […]

Share

5 reasons why embedded device development projects fail

Missing stakeholder support  “The project is defined, so implement it and roll it out” does not work well in human organizations. Every entity and person has its own target, purpose and agenda. That is the way the world works, so one must take into account the process (and the time) it takes to get all […]

Share

To smarter battery charging

Each battery(bank) has properties such as voltage and maximum load amperage and It also behaves differently (in our context of energy harvesting) depending on its state of charge (empty, half, full). To charge a battery efficiently and safely the (average) voltage and (average) load current must be measured, filtered and checked continuously. First thing a […]

Share

How procedural code evolves to object-oriented code

Introduction Most (real :-)) embedded software is written in C. Although C is a general-purpose procedural programming language, it is perfectly possible and useful to write object-oriented code in it. Object-orientation – well, GOOD object-orientation – allows for better code maintenance by managing code complexity. Actually, there are two ways to manage software complexity: abstractions, […]

Share

Painless CRC for your embedded device

We cannot take credit for any of the code – which is public domain – but we found it to be so valuable that we dedicate this blog post to it. A CRC or cyclic redundancy check algorithm is used to detect errors or changes in raw data. It is good at detecting unintentional changes […]

Share