IoT nodes
Sensor-to-cloud firmware handling connectivity, telemetry and OTA updates.
Firmware design services covering C/C++ development for ESP32, ESP32-S3, STM32 and Arduino-compatible hardware — the drivers, protocols and application logic that make a board actually do something.
Firmware sits alongside PCB design as one of the two core engineering disciplines behind every product we build — and it gets its own page here because it's often the harder half of the job. We write embedded C/C++ for ESP32, ESP32-S3, STM32 and Arduino-compatible targets: sensor drivers, communication protocols, power management and the application logic that ties them together, developed and debugged on real hardware rather than left as a simulation.
We build on the Espressif IDF and Arduino frameworks for ESP32/ESP32-S3, and STM32 HAL-based development for STM32 targets, with JTAG/SWD hardware debugging used to diagnose issues that only show up on the actual board.
Confirm what the firmware needs to do and which peripherals/protocols it touches.
Design the firmware structure and the drivers it depends on.
Write and unit-test the firmware against the target hardware.
Debug on real hardware and confirm behaviour under actual operating conditions.
Firmware is tested against the interfaces and conditions it actually has to run under, not just against a simulator. That means exercising each communication protocol against its real peripheral, confirming behaviour at power-up and after a brownout or reset, and checking OTA update and rollback behaviour before anything ships. Where a test jig or a set of test points is useful for production flashing and functional test, we design that into the process rather than treating it as an afterthought.
To scope a firmware project accurately, it helps to know: what the device needs to do, the target MCU or a rough idea of the candidate hardware, which peripherals and communication protocols are involved, any power or memory constraints, and whether OTA updates or production flashing/test support are part of the scope. Existing schematics, datasheets or reference code are useful if you have them, but not required to start the conversation.
Sensor-to-cloud firmware handling connectivity, telemetry and OTA updates.
Firmware for automation hardware talking RS-485/Modbus on a plant floor.
LoRa and UWB firmware for long-range telemetry and indoor positioning.
Firmware and PCB layout depend on each other more than a typical project plan admits. A pin assignment that looks fine on the schematic can make a communication protocol awkward to implement cleanly in firmware, and a firmware architecture decided in isolation can demand hardware changes once real timing or interrupt behaviour shows up on the bench. Designing both together means these conflicts get caught during schematic review, not after boards come back from manufacturing — a meaningfully cheaper time to fix them.
The board this firmware runs on.
ESP32-specific firmware, ranging and wireless connectivity.
Firmware as part of a complete connected product.
Want more background first? Read Firmware Development Best Practices for Reliable Embedded Systems.
If your product needs embedded firmware — new development, a fix for unstable code, or OTA and provisioning added to something already shipping — our team can help with the firmware itself and, where useful, the schematic design, PCB layout, component selection and prototyping around it, since firmware rarely stands alone from the hardware it runs on. Scope, deliverables, schedule and quotation are confirmed after we've reviewed your specific requirements; every project's constraints on hardware, timeline and budget are different enough that a generic estimate isn't a useful starting point. We work with clients internationally and collaborate remotely as standard practice.
See also: Portfolio · PCB Design · Contact
ESP32, ESP32-S3, STM32 and Arduino-compatible targets are our main platforms — we'll confirm fit during scoping if your hardware uses something else.
Yes, retrofitting secure OTA update support onto an existing, already-shipping product is common work, not just something built in from day one.
Yes, we take on firmware-only projects against hardware you've already designed or had built elsewhere, alongside full PCB-and-firmware projects.
Reviewing and stabilising existing firmware — including code left behind by a previous developer — is a common starting point, not a blocker.
Send your hardware details and what the firmware needs to do.