Savenkov
Dmitriy
Let’s talk
← Home

Software portfolio / 08 projects

Software &
Embedded Systems.

I develop embedded firmware and applications for communication equipment, instrumentation, test systems, and engineering workflows. My work spans software architecture, control algorithms, and implementation, connecting microcontroller firmware and Embedded Linux with desktop interfaces, server applications, and physical hardware.

Explore the projects

01 / Radio communications

Interchat — HF Messaging & File Transfer

Interchat is a communication application for Windows, Linux, and macOS, built for HF radio links with limited bandwidth and intermittent connectivity. I designed and implemented its communication protocol, including an application-level automatic repeat request (ARQ) mechanism that retransmits missing fragments, preserves transfer progress across application restarts and modem reconnections, and verifies completed files using SHA-256. Adaptive data-rate control adjusts transmission speed to channel conditions.

I developed the complete application, including its communication protocol, modem and transceiver integration, GPS connectivity, and a transceiver emulator for development and testing. A colleague contributed to the graphical interface; I was responsible for all other development. The application uses C++, Qt/QML, and SQLite.

  • C++
  • Qt/QML
  • SQLite
  • Windows
  • Linux
  • macOS
  • ARQ
  • SHA-256
  • GPS integration
Explore project

02 / Monitoring & remote control

HF Base Station Monitoring & Control

I developed a monitoring and remote-control system for HF radio base stations, combining a TypeScript server and PostgreSQL database with a C++/Qt/QML client. The client accessed server functions through a REST API, while communication with the stations used UDP.

The interface was built around a custom SVG map required by the customer. Color coding distinguished normal operation, faults, emergencies, and areas not served by the system. Operators could select a district to open its map, view base station summaries, and then select a station for detailed, real-time monitoring and control. An alternative overview presented districts and station status indicators as a grid. The system included alarms, event logs, and historical charts.

Station views displayed equipment and battery temperatures; external supply voltage; battery voltage and charge level; transmitter RF output power; voltage standing wave ratio (VSWR); and transmitter on/off status. Operators could remotely switch power and transmitters on or off. Detailed views offered both measured values and status summaries, with individual faults highlighted and loss of communication explicitly indicated.

  • TypeScript
  • PostgreSQL
  • REST API
  • C++
  • Qt/QML
  • UDP
  • SVG
Explore project

03 / Test automation

UPS Test Bench

I developed STM32 firmware and a Qt/QML desktop application for an automated UPS test bench. Test sequences measure voltages and currents, control the load, and evaluate the response to sudden load application and removal. They cover battery charging and discharging, battery operation, and transitions between mains and battery power.

The bench also checks whether output voltage remains within a ±5% tolerance. Test results and reports are saved to a remote database through an HTTPS connection, keeping a record of the electrical tests.

  • STM32
  • Qt/QML
  • Automated test sequences
  • Load control
  • HTTPS
  • Remote database
Explore project

04 / Product identification

Electronic Product Identification

I developed STM32 firmware for a USB smart-card reader used as an electronic identification module inside a computer. An ISO/IEC 7816 smart card stores component configuration data and serial numbers where applicable, keeping this information with the equipment itself.

A companion Qt/QML application for Windows and Linux reads and writes the stored information using a custom communication protocol. The application presents product details alongside the hardware configuration: device model and serial number, production date, processor, memory, storage, motherboard, and PCI device identifiers. The project covered both the embedded firmware and the desktop application.

  • STM32
  • USB
  • ISO/IEC 7816
  • Qt/QML
  • Windows
  • Linux
  • Custom communication protocol
Explore project

05 / Precision timing

NTP & PTP Servers

I led software development for Embedded Linux NTP and PTP time servers, defining the software architecture and implementation tasks while developing control daemons, utilities, and web interfaces. My work covered control of voltage-controlled oscillators (VCOs), enabling and disabling hardware inputs and outputs, and managing synchronization interfaces.

I also modeled phase-locked loop (PLL) behavior for the timing systems and supervised software development activities, combining implementation with technical coordination.

  • Embedded Linux
  • NTP/PTP systems
  • Control daemons
  • Web interfaces
  • VCO control
  • PLL modeling
  • Synchronization interfaces
  • Software architecture
Explore project

06 / Embedded application

Dataterminal — Embedded Software

I developed Qt-based application software for Dataterminal, a portable communication device running Embedded Linux on a TI OMAP-L138 processor. Connected to a radio transceiver, the terminal provided the full functionality of Interchat in a dedicated device for field use.

  • TI OMAP-L138
  • Embedded Linux
  • Qt
  • Interchat integration
Explore project

07 / Engineering documentation

BOM to ESKD Documentation

I developed an engineering documentation tool that imports BOM data from OrCAD CSV files and generates two types of PDF document: product specifications and component lists. The application supports grouping and sorting entries, manual edits, and the first-sheet and continuation-sheet forms used in ESKD (Unified System for Design Documentation).

The output organizes components into categories and presents quantities and reference designators in the appropriate document layout, including compact ranges of consecutive designators. It automates the transfer of component data into formatted documents while allowing the engineer to review and adjust the content before export.

  • Qt/QML
  • OrCAD CSV
  • PDF
  • ESKD
  • Specifications
  • Component lists
Explore project

08 / Engine control

FADEC — Rotary Aircraft Engine Control

In development

Electronic Control Unit (ECU) and motor-generator software for a redundant Full Authority Digital Engine Control (FADEC) system on a rotary aircraft engine, with spark ignition control implemented and wider development ongoing.

I am responsible for Electronic Control Unit (ECU) and motor-generator software within a redundant FADEC project for a rotary aircraft engine at the A. Kemenov Design Bureau. Together with the project lead, I co-develop the system architecture, technical solutions, and embedded software architecture for the engine control units.

The ongoing work covers real-time control, rotor-position synchronization, ECU arbitration, diagnostics, and degraded operating modes. It also includes requirements, failure-mode analysis, and validation planning. Spark ignition control has been implemented; development of the wider control system continues.

  • ECU software
  • Motor-generator software
  • Spark ignition control
  • Real-time control
  • System architecture
  • Fault-tolerant control concepts
  • FMEA
  • Validation planning
Explore project

Beyond the selected projects

Additional
experience.

My earlier work includes OpenBMC web-interface customization, UEFI firmware modification and debugging, and low-level bootloader and diagnostic software in MIPS Assembly. I have also developed signal-processing algorithms for industrial non-destructive testing, embedded software for laboratory instruments, firmware for automated production test equipment, and key-loading software with smart-card integration.

My embedded development experience spans ARM9, Cortex-M3, TMS320C6727 DSP, MSP430, AVR, and 8051 platforms, alongside low-level work on MIPS systems.