02.02.2025 aktualisiert


Embedded Software Engineer | C++ | ARM-Cortex | STM32 | Linux
Skills
Programmiersprachen:
- Embedded C/C++ (11, 14, 17)
- C/C++ (11, 14, 17) für x86 Systeme
- Linux Betriebssystem Programmierung
- Python
- Bash
- Bootloader
- Anbindung externer Peripherie an Prozessoren
- Treiber
- Bare-Metal oder mit RTOS Programmierung
- EAGLE
- KiCAD
- ARM-Cortex-M
- x86
- ATMEL-AVR
- WAGO PFC200
- ST Microelectronics (STM32)
- TI
- Microchip
- Scilabs
- ESP32
- Freescale (NXP)
- SPI, QSPI, I2C, UART, RS-485
- DMA, 8080 Paralellel, ADC, DAC, Timer, JTAG
- MII (Ethernet 100BASE-TX, 1000BASE-TX), CAN
- 802.11 b/g WLAN, Bluetooth, 886MHz, 433MHz
- Linux (Debian/Ubuntu)
- Embedded-Linux (pengtronix)
- FreeRTOS
- ERIKA OS
- Flash (W25Q64JVZPI)
- EEPROM (M24C64)
- LCD Displays (ILITEK9341V)
- Ethernet MAC / PHY (Microchip KSZ9896C)
- NXP PCA9955B (LED Treiber)
- RN-41 Class 1 Bluetooth Module (https://www.microchip.com/en-us/product/RN41)
- TSL2561 (Lichtsensoren)
- L3GD20 (Drei Achsen Gyroskop)
- LIS3DSH (MEMS Sensor)
- Sharp GP2Y0D815Z0F (Infrarot Sensoren)
- VSCode
- SEGGER Ozone
- SEGGER SystemView
- STM32CubeIDE / STM32CubeMX / STM32CubeProgrammer
- Eclipse
- Atmel Studio
- sublime
- vi
- KiCAD
- Altium Designer Viewer
- CMake / Make
- Docker
- Git / Gitlab / SVN / Mecurial
- valgrind
- clang tools (clang-format, clang-tidy)
- Jenkins
- Doxygen, Sphinx
- JIRA / Confluence
- GNU (gcc / gnu-arm-none-eabi-gcc)
- clang
- googletest / googlemock
- cUnit
- cppUnit
- SEGGER J-Link
- SEGGER J-Trace Pro
- Saleae Logic Pro
- Rigol Oszilioskope
- sysWorkXX USB CAN Module1
- HackRF SDR
- MQTT
- REST
- JSON
- Modbus/TCP, Modbus/RTU
- M-Bus
- DALI
- CANOpen
- RSTP (Rapid Spanning Tree Protocol)
- HDLC
- FatFS
- STL / Templates / Lambdas
- CMSIS
- STM32-HAL
- Qt
- spdlog
- libmodbus
- libbluetooth
- libssh
- nlohman (JSON)
- paho (MQTT)
- fmt
- Robotik (Lokalisierung mobiler Roboter mittels LIDAR und Odometrie)
- Logistik
- Netzwerktechnik
- Funksysteme
- Energiesektor (Stromzähler, Gas-, Wasser-, Wärmemengenzähler)
- Batteriehersteller
- Beleuchtungsindustrie
- Automotive
- Produzierende Unternehmen (Landwirtschaft)
- Automatisierung
- Modellbasierte Softwareentwicklung
Sprachen
Projekthistorie
- C++ 11/14/17
- ARM-Cortex-M / STM32 / WAGO PLC
- CMSIS / TouchGFX
- Echtzeitsysteme / FreeRTOS / Embedded Linux / Ubuntu Linux
- Schaltpläne und Layouts (Altium Designer / KiCAD)
- i2c / SPI / QSPI / UART / ADC / DAC / Timer / PWM / 8080 / Firmwareupdate
- ILI9341 LCD Displays
- Flash / EEPROM / RTC
- Gigabit-Ethernet 1000BASE-T PHY (MII) Schnittstellen Entwicklung
- Netzwerkkommunikation : Gigabit-Ethernet, MQTT, CANOpen, REST, JSON
- Testautomatisierung: Jenkins / Unittests / Googletest / Google Mock / Docker / Python / Bash
- Softwarequalität: clang-tidy, clang-format
- SCM: SVN / Git / GitLab
- compiler: gnu-arm-none-eabi, gcc, keil
- Buildsysteme: CMake / Make
- IDE: VSCode / Eclipse / vi / STMCubeIDE / STMCubeMX / Segger OZone / Segger SystemView
- Embedded C / Embedded C++
- Python / Node-RED
- Linux ARM / x86 / Raspberry Pi
- CMake / Make
- Ethernet / Modbus TCP
- Multithreading
- Konzeption und Entwicklung einer Parametrierung für die Batteriesteuerung
- Konzeption und Entwicklung eines Loggingsystems
- Konzeption und Entwicklung von Zustandsautomaten
- Dokumentation per Doxygen
- Gitlab
- CI
Für den Fertigungsprozess von Redox-Flow-Batterien wurde eine Prozesssteuerung einer Laserschweißanlage, zum Verschweißen elektrochemischer Zellen entwickelt. Von der Konzeption bis zur fertigen Anlage und Inbetriebnahme wurde die Entwicklung begleitet. Durch die Ansteuerung von Wegeventilen können pneumatischen Aktoren die Einzelkomponenten der Zellen auf einem CNC-Tisch fixieren und in Position bringen. Anschließend werden die Zellen durch einen Diodenlaser auf dem CNC-Tisch verschweißt. Für den CNC-Tisch wurde eine Hardwareschnittstelle für eine externe CNC-Software entwickelt. So wurde eine 0-10V Spindeldrehzahlsteuerung integriert, die den Tisch in X und Y Richtung einer Ebene bewegt. Die Anlage wurde zudem aktiv belüftet und mit einem Kamerainterface ausgestattet, welcher den Schweißvorgang visualisiert. Die Software wurde auf einer speicherprogrammierbaren Steuerung mit Embedded C++ implementiert. Die Tests wurden On-Target, sowie Off-Target realisiert. Dafür wurde der C++ Code plattformunabhängig programmiert und die Schnittstellen gemockt, sodass der Prozess auf einem x86-System ebenfalls in Betrieb genommen und der Ablauf getestet werden konnte.
- Konzeption, Implementierung und Inbetriebnahme der Prozessteuerung
- Entwicklung eines Stromlaufplans und der Teileliste
- Entwicklung einer Hardwareschnittstelle zu einer externen CNC Steuerung
- Ansteuerung von Pneumatikaktoren zur Fixierung der Teile und des Diodenlasers
- Umsetzung der Benutzerinteraktion (Eingaben / Ausgaben / Visualisierung)
- Implementierung eines Algorithmus für den Schweißvorgang von elektrochemischen Zellen
- Linux ARM / x86
- CMake / Make
- git
- Testen mit Unittests (googletest)
- Simulation von Schnittstellen (Mocken) (googlemock)
- Ethernet Kommunikation (MQTT)
- C++ (17)
- Entwicklung eines Prozesslogging mittels spdlog
- Dokumentation mit UML und Doxygen
Zertifikate
Architektur Hands-on Training, Prof. Dr. Jens Liebehenschel und Colin Appel, Frankfurt Univ. of Appl. Sciences
Embedded Software Engineering Kongress2020
Best Practices für modernes C++, Rainer Grimm, Modernes C++
Embedded Software Engineering Kongress2020