Usman Mehmood
Hello 👋, my name is
I'm a mechatronics engineer by heart, and an embedded software engineer by profession. Currently working on safety critical applications, making reliable and safe devices.
Based in Spaichingen, Germany
About Me
My name is Usman Mehmood and I'm an embedded software engineer at Safety System Products GmbH & Co. KG.
Considering myself a "full-stack" engineer, I take pride in my diverse skill set. From designing complex circuits and multi-layer PCBs to making production ready desktop and server application, and a little bit of everything in between, I like being able to do it all!
Key Skills:
- IEC 61508 and MISRA compliant firmware development in RTOS using C.
- Proficient with embedded communication standards (i2c, SPI, CAN, UART, RS485 etc.)
- Development of .NET desktop, server and embedded applications.
- Schematic and PCB design using KiCad.
- Prototype soldering, troubleshooting, debugging and reworking SMT parts.
Tech Stack:
C, CMake, Zephyr, MISRA, .NET, C#, IEC 61508, KiCad, FreeRTOS, JavaScript
Professional Experience
Embedded Software Engineer
Safety System Products - Jan 2023 - Present
- Developing firmware for functional safety products according to IEC 61508 and MISRA C standards.
- Handling bare-metal development and writing device drivers for STM32 series microcontrollers.
- Creating robust unit and integration tests, including a self-developed custom testing framework.
- Creating and managing CI/CD pipelines for automated analysis and testing to ensure code quality.
- Developing desktop and server apps, services and internal tools in .NET to support the use and development of the embedded devices.
- Created supporting software for mass programming, updating, repairing and configuring the software of devices.
- Implemented solutions to protect intellectual property and sensitive data while updating and repairing using obfuscation, encryption, source validation and integrity validation.
- Creating and updating documentation for legacy firmware.
Technologies: STM32, C, MISRA, IEC61508, FunctionalSafety, .NET
Embedded Software Engineer
MTronic Pk - July 2021 - Dec 2022
- Was part of a team working on a home automation and energy management solution, with 10+ devices and sensors under development.
- Designed low power BLE mesh nodes and increased the battery life of a node from 9 months to 3+ years by heavily optimizing its hardware and algorithms without effecting the user experience.
- Was part of a team working on automotive grade controllers and PLCs.
- Wrote .NET services to support CAN bus, Modbus RTU and Modbus TCP for a building energy monitoring system, storing the energy consumption data in an SQL database.
- Wrote .NET WPF application for parsing and composing SAE-J1939 CAN bus symbol files in multiple formats.
- Wrote .NET scripts for reverse-engineering and decoding data transmitted by a hybrid solar inverter.
- Developed documentation templates for documentation of features, algorithms, and libraries in embedded software.
Technologies: ESP32, nRF52, FreeRTOS, Zephyr, HomeAutomation, BLE, LowPower
System Design Engineer
RISETech - Oct 2020 - June 2021
- Responsible for design, development, and support for all embedded products.
- Developed a wearable armband for epilepsy detection, with extremely constrained space and power conditions.
- Developed firmware for nRF52 and ESP32 based custom boards and used version control.
- Added performance and safety features in old circuits, and optimized old PCB designs.
- Modelled and 3D printed mechanisms and enclosures for devices.
Technologies: ESP32, nRF52, LowPower, Wearables, BLE
Embedded Systems Intern
Air University Islamabad - June 2017 - Oct 2017
- Designed and fabricated an intelligent energy monitoring system for homes and small buildings.
- Schematics and PCB design using KiCad, and SolidWorks for enclosure assembly and wiring.
- The energy monitoring system reduced the power usage of a house by 17% by providing intelligent analytics.
Technologies: ESP32, KiCad, PCBs
Professional Work
Simplifier Gateway
Safety System Products
The Simplifier Gateway provides a bridge between SSP's own Wireless PLCs, the Safety Simplifiers, and the industry standard Profisafe bus. This product is aimed to comply with SIL-3 functional safety standard. I am responsible for its software testing, validation and delivery automation.
Tech Stack: C, IEC-61508
View Project
NonSafe Simplifier Gateway
Safety System Products
A more affordable version of the Simplifier Gateway, at the cost of not being functional safety compliant. I am responsible for complete development of this product, including its support software for remote updates, mass setup and programming.
Tech Stack: C#, .NET
View Project
Gateway Setup Tool
Safety System Products
An internal tool for mass programming and repairing the software of our NonSafe Simplifier Gateways. While I did create an underlying CLI for it to be integrated into CI/CD and hardware production pipelines, I also made an intuitive GUI for it to be used by individual users (production staff) when needed. I designed the UI to blend in with our other software in terms of its intuitive layout, company colors and fluid animations.
Tech Stack: C#, WPF, .NET
Gateway Config Tool
Safety System Products
An easy to use device configuration app that can read and create configuration files for our Gateways. This app is made available to the customers so that they can create working configuration files every time. The UI of this app was also made on the same design principles as the setup and repair tool.
Tech Stack: C#, WPF, .NET
Change in Build System
Safety System Products
Replaced an IDE-centric build system with a CMake based build system for our embedded software. The biggest motivation and benefit for this change was to automate our builds. Which of course is the basic requirement for automated testing, which in turn is a requirement for Continuous Integration. The exploration and learning of CMake later allowed me to develop my VS Code extension, "C Toolkit".
Tech Stack: C, CMake, Shell
CI Pipelines
Safety System Products
I created Continuous Integration pipelines for automated testing of our embedded software on various test harnesses. These include tests for basic peripherals, stress tests, hardware and software fault insertion tests, and general software quality checks.
Tech Stack: GitHub, CMake, Shell
Motion and Light Sensor
MTronic Pk
I developed an ultra low-power motion and light sensor as part of the MTronic building automation system. This sensor initially had the same Bluetooth SoC as other MTronic devices, allowing us to collectively develop a centralized software stack and use that to accelerate our development time massively. However the high power consumption of the SoC would not allow for a battery life beyond 9 months despite heavy hardware, software and algorithmic optimizations. I migrated the sensor to a much more power efficient, albeit more expensive nRF52 SoC. I independently implemented the necessary basic software components in just two months on Zephyr RTOS, something the team and I had no previous experience in. It took me another month to port the sensor algorithms and external libraries, and a few more days of debugging to get the sensor working perfectly. The sensor now boasts a battery life of 3+ years.
Tech Stack: C, Zephyr RTOS, Bluetooth Mesh
Bluetooth Firmware Upgrade
MTronic Pk
I created a key part of the firmware for all MTronic devices: their ability to upgrade the firmware remotely. The update architecture contained source verification, firmware integrity checks and rollback in case of faulty updates. This allowed us to push feature and security updates to devices that were already in use by the customers. Naturally, the update mechanism was developed, tested and verified in a much more thorough way, relative to other parts of the firmware, as it is arguably one of the most critical features of any IoT device.
Tech Stack: C, FreeRTOS, Bluetooth
Energy Logger
Mtronic Pk
I developed an energy monitoring system for a Tier 1 automotive electronics manufacturer to track power usage across their facility. Using a .NET backend and a JavaScript/React frontend, I collected consumption data from energy meters using Modbus TCP, processed it, and stored it in an SQL database. The data was then displayed on a visually appealing dashboard. This system provided the client with valuable insights into their energy consumption, enhancing their operational efficiency and supporting regulatory compliance.
Tech Stack: C#, .NET, JavaScript, SQL
File Format Converter
MTronic Pk
This project was the start of my .NET and C# development, which has since been instrumental in my career. I developed a .NET tool for a Tier 1 automotive electronics manufacturer to convert SAE-J1939 CAN bus message information from Excel into .dbc, .sym, and .csv formats. The project involved creating an intuitive WPF GUI with the Prism framework and MVVM architecture. This tool enabled the client to integrate CAN message encoding and decoding into their applications, which are crucial for their operations. The raw data required extensive parsing and cleaning, due to frequent inconsistencies and irregularities in data.
Tech Stack: C#, .NET, WPF
Hobby Projects
C C++ Toolkit
2023
A VSCode extension to help create, build, run, debug and test C and C++ projects using CMake. With features like status bar buttons, project creation, library creation, snippets, and automatic installation of missing tools. The extension now has over 10,000 downloads!
Tech Stack: JavaScript, VsCode
View Project
View Project
EzLogger
2024
A lightweight and easy-to-use logging framework for .NET applications, designed for efficient logging with minimal overhead. It has multiple logging verbosities and offers configurable console and file logging. It is asynchronous by nature, and has automated log management to control file sizes. With a straightforward API, EzLogger prioritizes simplicity and efficiency over advanced flexibility.
Tech Stack: .NET
View Project
View Project
Genetic Algorithm
2023
Implementation of a genetic algorithm in C. Genetic Algorithms(GAs) are adaptive heuristic search algorithms that belong to the larger part of evolutionary algorithms.
Tech Stack: C, CMake
View Project
PID Controller
2023
An implementation of a PID (Proportional-Integral-Differential) controller in C. A PID controller is a closed loop control system that is widely used in engineering applications for controlling continuous-time dynamic systems.
Tech Stack: C, CMake
View Project
Numerical Calculus
2023
An implementation of numerical integrals and derivatives taken of a given dataset. It is used as an example and a testing place for a relatively more complicated application, the PID Controller.
Tech Stack: C, CMake
View Project
Random Particle Optimization
2021
An implementation of a the Random Particle Optimization (RPO) method, used for determining the optimal path from a specified initial pose of a mobile robot in a static or dynamic environment, models obstacles and target as repulsive and attractive Coulomb potentials respectively. It is a sensor-based method drawing its methodology from bacterial foraging just as Genetic Algorithms (GA) are based on Darwin's genetic evolution of species.
Tech Stack: C++, MATLAB
View Project
C Asserts
2023
A rudimentary assertion library written in C. The library is designed to facilitate simple unit testing by providing straightforward macros and utilities for testing conditions within C programs. If a test condition fails, the library will output the file, line number, and function where the failure occurred.
Tech Stack: C, CMake
View Project
C Queue
2023
An implementation of a queue in C, just for practicing C.
Tech Stack: C, CMake
View Project
C Ring Buffer
2023
An implementation of a ring buffer in C, just for practicing C.
Tech Stack: C, CMake
View Project
Manifest Checker
2024
A Rust-based command-line tool designed to ensure the integrity of files within a specified directory by comparing them against a manifest file. It can be useful in environments where ensuring the authenticity and integrity of firmware or software is critical.
Tech Stack: Rust
View Project
Power Estimator
2023
A power consumption and battery life estimation tool for IoT devices. With classes like 'Source', 'Load', and 'Device', user can easily express their electronics design and estimate the battery life.
Tech Stack: C#, .NET
View Project
Serial Logger
2021
Logs serial data from available COM ports for specified time, and writes them into a .csv file.
Tech Stack: C#, .NET, Prism
View Project
Contact
Email: usmanmehmood55@gmail.com
GitHub: https://github.com/usmanmehmood55
LinkedIn: https://www.linkedin.com/in/usmanmehmood55
Medium: https://medium.com/@usmanmehmood55
Stack Overflow: https://stackoverflow.com/users/14821590/usman-mehmood
To talk about any tech ideas, consultations, or feedback on my articles. email: usmanmehmood55@gmail.com
© 2024 Usman Mehmood. All rights reserved.