Freelance › Projects › Software development › Firmware for an ESP32 IoT device with sensors and cloud telemetry
Firmware for an ESP32 IoT device with sensors and cloud telemetry

Employer
Ivan
Project parameters
Type of cooperationOne-time project
SectionSoftware development
Prepaymentwithout prepayment
Payment methodsCash, Bank transfer
Acceptance of requestsfrom today, 07:21 until Sep 14, 2026
Project description
We have a small hardware product built around an ESP32 module, and we need a reliable firmware developer to bring it to life. The board reads several sensors (temperature, humidity and a current shunt), drives a couple of actuators through a relay and a small motor driver, and has to stay awake only when it needs to. Right now we have a bare prototype that blinks an LED and nothing more, so the whole embedded layer is still to be written. We are looking for someone who has actually shipped devices, not only run examples on a breadboard, because this unit will live in the field for months on battery power.
The firmware should read the sensors on a schedule, apply simple calibration and thresholds, and control the actuators locally so the device keeps working even when the network is down. It must connect over WiFi, with BLE used for the initial provisioning from a phone, and then push telemetry to our server in small JSON packets over MQTT or HTTPS. We care a lot about robustness: reconnect logic, a watchdog, safe behaviour on brown-out, and a clean state machine instead of one giant loop. Over-the-air updates are mandatory, with a rollback path if a new image fails to boot, because we will not be able to reach every unit physically.
Power management is the part that worries us most. The device spends most of its time in deep sleep and wakes up either on a timer or on an external interrupt, so we need the sleep current measured and kept low, peripherals powered down correctly, and wake reasons handled cleanly. Please share examples of embedded work you have done, tell us which toolchain you prefer (ESP-IDF or Arduino core), and describe how you test firmware before it goes out. Clean, commented C or C++ and a short document on how to flash and configure a unit are part of the deliverable.
What we expect from the finished work:
— sensor reading with calibration and local thresholds;
— actuator control that is safe offline;
— WiFi and BLE connectivity with reliable reconnect;
— MQTT or HTTPS telemetry in a documented format;
— OTA updates with rollback;
— deep-sleep power management with measured current.
The firmware should read the sensors on a schedule, apply simple calibration and thresholds, and control the actuators locally so the device keeps working even when the network is down. It must connect over WiFi, with BLE used for the initial provisioning from a phone, and then push telemetry to our server in small JSON packets over MQTT or HTTPS. We care a lot about robustness: reconnect logic, a watchdog, safe behaviour on brown-out, and a clean state machine instead of one giant loop. Over-the-air updates are mandatory, with a rollback path if a new image fails to boot, because we will not be able to reach every unit physically.
Power management is the part that worries us most. The device spends most of its time in deep sleep and wakes up either on a timer or on an external interrupt, so we need the sleep current measured and kept low, peripherals powered down correctly, and wake reasons handled cleanly. Please share examples of embedded work you have done, tell us which toolchain you prefer (ESP-IDF or Arduino core), and describe how you test firmware before it goes out. Clean, commented C or C++ and a short document on how to flash and configure a unit are part of the deliverable.
What we expect from the finished work:
— sensor reading with calibration and local thresholds;
— actuator control that is safe offline;
— WiFi and BLE connectivity with reliable reconnect;
— MQTT or HTTPS telemetry in a documented format;
— OTA updates with rollback;
— deep-sleep power management with measured current.