Role Overview
We are looking for an Embedded Software Engineer who has hands-on experience in embedded systems and microcontroller-based product development. The candidate will be responsible for developing, testing, debugging, and maintaining embedded software for our devices.
Responsibilities
- Develop and maintain embedded firmware/software for microcontroller-based systems.
- Work with ESP32 and other microcontrollers for embedded product development.
- Develop and integrate communication protocols such as MQTT for device-to-server/cloud communication.
- Work with RTOS and implement multitasking, task scheduling, synchronization, and resource management.
- Develop firmware for IoT-connected devices and ensure reliable communication between hardware and software.
- Interface and work with various sensors, modules, displays, and peripheral devices.
- Debug hardware-software integration issues and troubleshoot firmware-related problems.
- Perform firmware testing, debugging, validation, and optimization.
- Work closely with the hardware and electronics team during product development and testing.
- Participate in product integration, field testing, and troubleshooting when required.
- Maintain technical documentation, firmware versions, test reports, and development records.
- Identify and resolve performance, connectivity, and reliability issues in embedded systems.
Requirements
- Strong knowledge of Embedded C/C++.
- Hands-on experience with ESP32 or similar microcontrollers.
- Working knowledge of RTOS such as FreeRTOS or similar.
- Experience with MQTT and other communication protocols.
- Understanding of UART, SPI, I2C, GPIO, ADC, PWM, and other common embedded interfaces.
- Knowledge of debugging tools and techniques for embedded systems.
- Understanding of basic electronics and hardware-software integration.
- Experience with Git or other version-control systems is preferred.
- Good problem-solving and troubleshooting skills.
Skills
- Embedded C/C++
- ESP32
- RTOS
- MQTT
- UART/SPI/I2C