By Jakob Engblom
They just upgraded our coffee machine in the office. When I came out into the kitchen to get another cup, a service technician was there with a laptop perched on the sink and a USB cable running into the innards of the coffee machine, into the back of its open front panel. When I asked what was going on, he said that he was updating the coffee machine. In particular, he was adding the feature of selecting the strength of the coffee being brewed.
A software update to add features to a coffee machine? It is a bit weird, but also a perfect illustration of how pervasive embedded software has become in all manners of systems.
It is not easy to explain to non-technical people just what an embedded system is and what software does when it is not running as an application on a PC (or smartphone or tablet or other familiar computing device). Our coffee machine upgrade does offer a nice illustration of what is going on, and how software and hardware combine to form cyberphysical systems.
Mechanically, the machine contains a grinder and a water heater and a water dispenser. Software controls these mechanical components to determine how much coffee to grind and how fine to grind it. The software controls the amount of water to use and how much to heat it. With these few variables, almost infinite variety is possible. As our machine also contains a milk dispenser, milk heater, and some other bells and whistles, it can easily provide quite a wide selection of beverages by combining various units and varying their operating parameters.
The importance of the software is clear to anyone who attempts to do the same tasks manually. If it is badly written or contains flawed control algorithms, the result can be almost arbitrarily awful. But it does make the system far more flexible. Decades ago, there would have been a few buttons on the front and each button would have been tied to a set of parameters for the mechanical units. The parameters would have been set by manual tuning of some adjustment screws on the circuit board. Now, the software can just set the parameters at any point in time, making it possible to adjust on the fly, and vary their value in order to vary the strength of the coffee.
The front panel of the machine demonstrates how embedded software can actually become visible to users. I understand the designer convenience of using a graphical display along with a numeric keyboard (!) to make selections. But it does make the machine feel more like a 1980's DOS adventure game than a user-friendly coffee machine. It takes a few keypresses (never less than three) to navigate the maze of menus and get something dispensed. It also allowed the programmers to include a service menu which definitely moves the machine from the realm of a simple appliance into being outed as a computer: