Embedded Software Engineer
Role details
Job location
Tech stack
Job description
We design and develop across a full stack of disciplines - Mechanical, Electronic, Electrical and Software Engineering - within the Digital team we develop software for IoT edge devices, cloud services, frontend UI, AI/ML models in computer vision, and Data Analysis., We are seeking a talented and passionate Embedded Software Engineer to join our growing technology team. You will play a crucial role in designing, developing, and implementing embedded software for our next-generation technology.
This is an exciting opportunity to contribute directly to technology for good, working on real-world systems that have a tangible impact. You will be involved in the full software development lifecycle, from requirements gathering to deployment and maintenance, working closely with hardware engineers, data scientists.
What you'll be doing:
- Design, develop, and debug embedded software and firmware for a variety of monitoring and control systems (e.g., sensor integration, automated feeding systems, water quality monitoring devices).
- Write clean, efficient, and well-documented code Python for embedded systems.
- Work with microcontrollers, microprocessors, and real-time operating systems (RTOS).
- Implement communication protocols (e.g., MQTT, UART, SPI, I2C, Ethernet, Bluetooth, LoRaWAN) for data transmission and device control.
- Integrate software with various hardware components, including sensors, actuators, and communication modules.
- Participate in the full software development lifecycle, including requirements analysis, design, implementation, testing, and deployment.
- Develop and execute unit, integration, and system tests to ensure software quality and reliability.
- Troubleshoot and debug software and hardware issues in embedded systems.
- Collaborate effectively with hardware engineers, data scientists, and experts to define system requirements and ensure seamless integration.
- Contribute to the continuous improvement of our software development processes and tools.
- Stay up-to-date with the latest advancements in embedded software development
Requirements
Do you have experience in Scripting?, Do you have a Bachelor's degree?, * Bachelor's degree in Computer Science, Electrical Engineering, or a related field.
- Proven experience (typically 2+ years) in developing embedded software and firmware.
- Strong proficiency in Python programming for embedded systems.
- Experience working with microcontrollers and microprocessors (e.g., ARM Cortex-M, ESP32, NVIDIA Jetson).
- Knowledge of communication protocols relevant to IoT and industrial automation (e.g., MQTT, Modbus).
- Solid understanding of communication protocols (e.g., UART, SPI, I2C, Ethernet, Bluetooth, LoRaWAN).
- Experience with debugging tools and techniques for embedded systems (e.g., JTAG, oscilloscopes, logic analyzers).
- Ability to read and understand hardware schematics and datasheets.
- Experience with C/C++, BASH, etc. for embedded systems or scripting.
- Experience with cloud platforms (e.g., AWS, Azure, Google Cloud) and IoT services.
- Familiarity with data acquisition and processing techniques.
- Understanding of control systems and algorithms.
- Experience with version control systems (e.g., Git).
- Experience with agile development methodologies.