Embedded Firmware & IoT: Engineering Battery-Powered Connected Devices
Most of my engineering lives at the intersection of constrained hardware and real-world reliability: firmware that has to run for months on a battery, survive field conditions, and still talk securely to a server. Here is a closer look at the embedded and IoT work behind that.
Real-time IoT firmware on battery-powered devices
Built on FreeRTOS with a Quectel cellular modem and an ESP32 BLE co-processor, these devices monitor temperature, CO₂, humidity, ambient light, and location in real time, and report to the server over an efficient Protocol Buffers wire format. The challenge was less about features and more about doing all of it within a tight power and memory budget.
Architecture: Designed an RTOS event-driven framework with modular components that simplified task synchronization and cut the firmware development cycle time by 60%.
Power: Reduced power consumption by 90% during 2G network registration by optimizing modem protocols and using LPWA low-power modes (eDRX and PSM).
Reliability: Eliminated random resets affecting ~10% of devices by tracing bootloader memory conflicts, rewriting linker scripts, and optimizing stack usage to fully prevent stack overflows.
Performance: Cut TCP communication delays from ~70 seconds to near-zero using circular buffers and tighter task synchronization.
Serviceability: Added an OTA configuration feature to cut manual labor, and wrote a custom bootloader that removed the need for external hardware debuggers.
Firmware security for ATM / cashbox systems
For payment-grade hardware, the firmware itself is part of the threat model. On STM32 platforms I built a defense-in-depth chain around secure storage, verified boot, and authenticated communication.
Tamper-proof credit storage: Combined a SHA-256 hash of the credit value and the CPU's unique ID with AES-256 encryption in EEPROM, preventing credit tampering and device cloning while guaranteeing data integrity.
Secure boot chain: Designed a Bootstrap → Bootloader → Application chain where each stage validates the digital signature of the next block, so only verified, trusted code ever executes.
Authenticated comms: Secured all external communication with ECDH (P-256) key exchange, deriving a fresh per-session AES key for encrypted, authenticated links.
Hardware and PCB design
Firmware doesn't exist without the board underneath it, so I also led the hardware side — multi-board and multilayer PCB design in Altium, plus a push to bring modern engineering discipline to hardware workflows.
Led the design of a rechargeable smart facemask that senses real-time air quality and streams it to a mobile app over BLE, using multi-board PCBs in Altium.
Led PCB and hardware projects (Altium, Proteus) that reduced production costs by up to 20% while improving reliability of consumer and healthcare IoT products.
Drove adoption of Git-based version control in PCB and hardware workflows, reducing design conflicts and rework and accelerating multi-board delivery.
Build, test, and DevOps for embedded
Set up automated build and test pipelines for firmware using GitLab CI, bringing continuous integration to embedded components.
Integrated Coverity static analysis into the pipeline, identifying and fixing 21 unsafe and 49 critical issues to improve firmware reliability and maintainability.
Supported deployment through containerized test environments and cross-compilation pipelines targeting both Embedded Linux and RTOS.
Tech stack: ARM, FreeRTOS, STM32, ESP32, BLE, Quectel modem, LPWA (eDRX / PSM), Protocol Buffers, AES-256, SHA-256, ECDH P-256, EEPROM, Altium, Proteus, GitLab CI, Coverity.
Comments