Embedded
An end-to-end project at TUM’s Institute of Automation and Information Systems spanning the full stack of intelligent distributed embedded systems. The work covers formal system modeling with Petri nets, PLC control programming, MATLAB/Simulink-based control design, and model-driven engineering with automated code generation — all applied to a Festo sorting station as the target hardware platform.
My Contributions
- Petri Net Modeling: Modeled concurrent and distributed systems using Petri nets, analyzed network properties (deadlock-freedom, liveness, reproducibility, and termination), and constructed incidence matrices. Used PIPE for graphical verification and MATLAB to compute reachability vectors.
- Stateflow Control Design: Designed a complete Stateflow state machine in MATLAB Simulink to control a Festo sorting station, implementing a safe initialization sequence, height and color sensor evaluation, and two distinct workpiece paths (rejection vs. acceptance).
- PLC Programming: Programmed the Festo station in CoDeSys using IEC 61131-3 Structured Text, and established a live connection between the MATLAB simulation and the real PLC runtime.
- Metamodel Design: Designed an Ecore metamodel for a library management system using Obeo Designer, capturing inheritance hierarchies, composition relationships, and associations. Used the Eclipse Modeling Framework (EMF) to auto-generate Java model code from the metamodel.
- Service Plant Modeling: Modeled the Festo system as a service plant model, defining pre/post-conditions and service states for each step of the control sequence.
- Model-to-Text Transformation: Implemented M2T transformations using Acceleo templates to generate structured text reports from the library model. Used OCL queries (
oclIsTypeOf,->select()) for type-safe filtering over inheritance hierarchies and navigated multi-level associations for dynamic output. Applied the same approach to generate the Festo plant model description from the service plant model.
A fully designed and assembled 1U CubeSat, covering mechanical structure, electronics, and flight software. The OBC runs on STM32 with a flight-phase finite state machine, CCSDS telemetry over an S2LP Sub-GHz radio link, GNSS parsing, and MEMS sensor integration, alongside a matching ground station receiver.
My Contributions
- Communication System & CCSDS Protocol: Designed and implemented the full communication stack on top of the S2LP Sub-GHz radio chip (868 MHz, 2-FSK, 38.4 kbps). Implemented CCSDS-style Telemetry (TM) packet generation with primary headers, data field headers, and state vector fragmentation to fit radio frame constraints. Handled sequence flags, sequence counters, and multi-packet reassembly per CCSDS conventions.
- FSM Design: Contributed to the flight-phase finite state machine (
flight_fsm) that classifies the mission into phases (waiting, ascent, descent, landed) based on sensor history including pressure, altitude, and vertical speed. - OBC Software Architecture: Participated in the overall OBC-SW and OBSW-DP design, including the state vector structure (
StateVector_t) tying together GNSS, IMU, environmental sensors, and flight status into a single telemetry payload. - 3D CAD & Mechanical Design: Contributed to the 3D CAD drawings for the 1U CubeSat structure.
- Assembly & Manufacturing: Participated in the physical assembly and manufacturing of the 1U CubeSat, including hardware integration and subsystem bring-up.
A barometer-based altimeter system built for the Spacecraft Electronics practical lab course at TUM Chair of Spacecraft Systems. The system reads atmospheric pressure and temperature from an MS5611 sensor over I2C, converts them to altitude using the Hypsometric and Barometric formulas, and displays the result on a TM1637 seven-segment display. Digital filtering (moving average and 1D Kalman filter) is applied to reduce sensor noise and stabilize altitude estimates.
My Contributions
- Altitude Computation: Implemented both the Hypsometric and Barometric formula models to derive altitude from raw pressure and temperature readings, with full temperature compensation.
- Digital Filtering Pipeline: Developed the moving average filter for pressure smoothing and the 1D Kalman filter for altitude stabilization, tuning process and measurement noise parameters for optimal response.
- MS5611 Driver: Implemented I2C communication with the MS5611 barometric sensor, including sensor reset, PROM calibration coefficient readout, and compensated pressure/temperature conversion.
- TM1637 Display Driver: Interfaced the TM1637 7-segment LED driver over its 4-wire serial protocol to display real-time altitude readings.
- Validation Testing: Performed accuracy, sensitivity, temperature compensation, response time, altitude simulation, long-term stability, power supply variation, vibration, and I2C communication tests to verify system performance.
This project implements an Ackermann-steering RC car controlled entirely by hand gestures.
Using an MPU6050 IMU, we captured the hand’s yaw and tilt angles over I2C on an ATmega328p microcontroller. These angles are processed to generate steering and throttle commands, which are transmitted wirelessly over RF to the car.
On the vehicle side, the microcontroller decodes the RF packets and drives the steering servo and DC motor driver to follow the commanded trajectory.