Skip to content
View kiranj26's full-sized avatar

Block or report kiranj26

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
kiranj26/README.md

Hi, I'm Kiran 👋

Firmware Engineer @ Eaton · Boulder, Colorado 🏔️

I build and verify real-time control and communication firmware: from model, to emulator, to silicon.

while (1) { build(); verify(); ship(); }

Portfolio LinkedIn Topmate Email


🙋 About me

By day I write firmware for Smart Circuit Breakers at Eaton. By night I'm usually at my bench, building things like a drum kit on an ESP32, or putting a blinky LED through four levels of verification, because "it works on my board" never felt like enough.

My path so far: vehicle motion control at ZF, emissions control software at KPIT, an M.S. at CU Boulder (with firmware internships at Danfoss, Canoo, and the SWARM-EX CubeSat), and now Eaton.

If it isn't verified, it isn't done.

Terminal flashing firmware and passing requirement tests, next to a scope drawing a closed-loop step response


🧭 How I engineer

  • Requirements first. Tests are named after requirements and traced back to them. (see STM32H7 Control Lab)
  • Verify at every level. The same code runs in a model, in an emulator, and on real hardware: MIL → SIL → PIL → HW.
  • Measure, don't guess. Latency, timing, and sensor data are measured on the bench, not assumed. (see Drum Kit and Posture Tracker)

🔧 Featured work

STM32H7 Control Lab: closed-loop control, verified from model to silicon I was tired of tuning gains by trial and error. This is a 7-project curriculum where OpenModelica plant models drive firmware running unmodified in Renode and on a real Nucleo-H743ZI2, with Robot Framework checking every result against written requirements. Proof: a single firmware binary passes 5/5 Robot tests on both the board and the emulator in CI, and the plant model matches the exact solution within 3.8 µV.

TI F280039C CAN Library: a portable CAN driver, built like a product CAN drivers tend to get rewritten for every project. This one has a handle-based API, a strict state machine (including ERROR_PASSIVE and BUS_OFF), hardware isolated behind a port layer, and a boundary ready for CAN FD. Proof: host-tested with GoogleTest and mocks, a GCC + Clang CI matrix, and automated releases.

ESP32 Drum Kit: press a button, hear a drum. No phone, no laptop, no Wi-Fi. I built it in six phases, each solving one constraint: interrupt-driven debounced input, a Wi-Fi AP with WebSockets, a FreeRTOS dual-core task split to remove jitter, WAV samples loaded from SD, and I2S DMA to a Class D amp. Proof: 4-voice polyphony with end-to-end latency under 10 ms.

MicroOCPP on STM32F4: the EV charger protocol on a microcontroller OCPP for EV chargers on an STM32F4, using an ESP32-C3 as a Wi-Fi bridge, with UART communication, secure WebSockets, TLS, and FreeRTOS tasks. Status: [IN PROGRESS: UPDATE WITH CURRENT STATE].

CAN Log Parser: turning raw CAN logs into answers Decodes CAN logs against a DBC file and plots any signal over a chosen time window, so you get from "something's wrong on the bus" to "here's the signal" quickly. Proof: CI, Codacy code-quality checks, and flake8 linting.

Posture Tracker: hardware that notices when you slouch Long debug sessions are hard on your back. This uses an ESP32 with an MPU-6050 to track tilt, with filtered angle output. Proof: axis maps and angle ranges verified on real hardware with recorded data, plus endurance testing.


🧰 Tools & libraries


🛠 Engineering toolkit

Area Tools
Control & power Motor control · PID / LQR · TI C2000
Networks CAN / CAN FD · UART · SPI · I²C · BLE · Wi-Fi · OCPP
RTOS & platforms FreeRTOS · Zephyr · STM32 · ESP32 · RP2040 · SiLabs EFR32
Verification Renode · Robot Framework · GoogleTest · GitHub Actions

C C++ Python Assembly Linux CMake Docker MATLAB


🔭 Currently

  • 🔭 Closing the first loop: the P1 thermal chamber on the STM32H7
  • 🥁 Drum kit phase 5: adding an OLED display
  • 🌱 Learning: Zephyr RTOS on the ESP32-S3
  • 🤝 Mentoring engineers 1-on-1 on Topmate

💼 Experience
  • Lead Firmware Engineer, Eaton: real time firmware control for smart circuit breakers
  • Firmware Intern (Motor Control), Danfoss: motor control firmware for Editron electric drivetrains
  • Embedded Software Intern, Canoo: embedded software for EV platforms
  • Firmware Engineer, SWARM-EX CubeSat, CU Boulder: flight firmware for a CubeSat swarm mission
  • Senior Engineer, ZF Friedrichshafen AG: vehicle motion control software
  • Embedded Engineer, KPIT Technologies: emissions aftertreatment control software

🎓 M.S. Electrical Engineering, CU Boulder · PG Diploma, Embedded System Design, CDAC · B.Tech Electronics Engineering, Government College of Engineering

🧪 Lab notebooks: every board I own gets one

🎒 Off the clock

I don’t really have an “off” switch, just a low-power mode. On weekends you’ll find me hiking around Boulder, and somewhere around mile three I start thinking about my next build.


📊 GitHub stats

Kiran's GitHub stats Top languages


If your CAN bus won't stop going bus-off, or you're just getting started in embedded, let's talk. I'm always happy to talk firmware over coffee ☕

Popular repositories Loading

  1. Raspberry-Pi-Pico-RP2040-Projects Raspberry-Pi-Pico-RP2040-Projects Public

    This repository contains a collection of projects for the Raspberry Pi Pico RP2040, showcasing the use of various peripherals. Each project folder includes the source code and detailed instructions…

    Python 18 4

  2. MicroOCPP-on-STM32F4 MicroOCPP-on-STM32F4 Public

    Integration of MicroOCPP on STM32F4 Nucleo-F446RE using ESP32-C3 as a Wi-Fi bridge. Implements UART communication, secure WebSocket connections, and Open Charge Point Protocol (OCPP) for EV chargers.

    C 13 5

  3. C2000-Piccolo-F28027F-Projects C2000-Piccolo-F28027F-Projects Public

    This repository is dedicated to projects and examples for the Texas Instruments C2000 Piccolo LaunchPad Evaluation Kit (LAUNCHHXL-F28027F). It contains a variety of projects, ranging from basic GPI…

    9 1

  4. C-in-Depth C-in-Depth Public

    Repository containing all the coding problems from the book 'Data Structures Through C in Depth' by S.K. Shrivastava

    C 7

  5. STM32-PlatformIO-Playground STM32-PlatformIO-Playground Public

    This repository serves as a hands-on learning environment to explore various STM32 peripherals using PlatformIO as the sole IDE. The examples range from basic tasks like LED blinking to advanced pe…

    6 1

  6. CAN-Log-Parser CAN-Log-Parser Public

    This repository contains a Python-based tool to parse DBC formatted CAN log files and plot the signals. It leverages cantools for parsing DBC files and matplotlib for plotting signals, providing an…

    Python 4 1