Embedded software and device integration

The device works, the app works, and the connection between them is nobody's job. That's usually where the project stalls. I work both of those sides: driving printers, scanners, and sensors from production software, and writing the firmware on the device when that's the missing piece.

Based in Groningen, working across the Netherlands and remotely for clients worldwide.

Software that talks to physical devices, and firmware for the devices themselves. Driving equipment over serial, USB, Bluetooth LE, and MQTT, plus firmware for ESP32 and Arduino boards.

Suitable when the device comes from one team and the software from another, and nobody sits in between.

Good for

How I approach it

  1. The protocol first. Before any screen exists, I get a throwaway script talking to the device and write down what the device actually does, including the undocumented parts. Everything above that layer is cheap to change. This layer is not.
  2. Dropouts as the default. Cables get unplugged, batteries die, WiFi drops mid-write. Queueing, retries, and idempotent commands are designed in from the start, not patched on after the first field report.
  3. One system, not three. The device, the backend, and the dashboard are built and released together. That way a change to the protocol doesn't quietly break the screen that reads it.
  4. Prove it on the real device. Every milestone is signed off on your hardware, not on a simulator: a demo or a log of the device doing what we agreed. For firmware, that includes how you update the device yourself later, over the air or with a flashing script you can run without me.

Work I can show

Tech I work with

Serial and USB (CDC, ESC/POS), Bluetooth LE, MQTT, TCP, ESP32, Arduino, C and C++, Go, Python, TypeScript, Postgres, offline-first sync.

Frequently asked questions

Do you write the firmware, or only the software that talks to the device?

Both, though the track record differs per part. Driving devices over serial and USB is what I've shipped in production. Bluetooth LE, and firmware for ESP32 and Arduino, have so far come out of my own projects, and the builds above show what that looks like. As with any project, the first step is one small fixed-price milestone, so you see it running on your hardware before committing to the rest.

We already have the hardware. Can you connect to it?

Usually yes. With a datasheet or protocol document it's straightforward. Without one it becomes investigation: capturing traffic on the wire, reconstructing the command set, and confirming it against the device. That takes time, so I scope it as its own step instead of hiding it inside a fixed price.

Is this one prototype, or devices in the field?

Both happen, but they're different projects. One device on a bench is mostly protocol and firmware. Two hundred devices out at customer sites also bring in provisioning, remote updates, and some way to see what's going wrong.

What happens when the network or the device drops out?

Commands queue locally, and the device and the central system reconcile once the connection returns. On the firmware side that means watchdogs, and a device that comes back up in a known state after a power cut.

Do you design the electronics or the PCB?

No. Schematics, PCB layout, and enclosures aren't my field, and I'd rather say so than learn on your budget. CE marking and EMC testing are the same answer: work for a test lab, and for whoever puts the device on the market. What I do is work with off-the-shelf boards and pre-certified radio modules, stay inside the limits of those modules, and supply the documentation the test lab asks for. Otherwise I work alongside your electronics engineer, on both sides of the connector.

Read more:

Tell me what the device has to do

Tell me which device or module it is, what documentation you have, even if that's none, and what it needs to drive. I'll tell you whether it's feasible and what the first step would be, and that costs you nothing.

Get in touch

Other services

Start a conversation