Code and Projects

A selection of mostly fun projects and software written by me:

Homebrew Atomic-Force-Microscope


An AFM based on easy available parts only. The driving of the x,y and z axis takes place by piezoelectric acoustic transducers at +/- 30 V. The deflection of the probe tip (made of platinum or tungsten from incandescent light bulbs) is measured by a reflected laser and a photodetector IC for optical pickups of CD drives. More details...



A NFC tag emulator (ISO 14443-3 compatible Type 2) which requires only 4 resistors, 3 capacitors and 1 diode to connect the RFID antenna to a microcontroller. More details...

Hackaday article:
A bachelor thesis based on SimpleNFC: Passive NFC Environmental Sensor



This python code allows to read and write the most common Beckhoff bus terminals ("Busklemmen") using the bus coupler BK9050 ("Busskoppler BK9050") over Ethernet TCP/IP. It was developed for AI experiments requiring hardware in the loop setups. It allows accessing the hardware directly without maintaining additional abstraction layers.

Source on GitHub:

High pressure swelling measuring apparatus


An apparatus for measurement swelling at up to 200 bars by a feedback controlled probe based on quantum tunneling. The apparatus consists of a high pressure sample chamber. Inside the camber the sample is mounted on a piezo actuator. The actuator can move the sample towards an electrode. Between the conductive sample and the electrode a voltage is applied. The small current caused by quantum tunneling between sample and the electrode is converted to a voltage of up to 50 V to drive the piezo actuator. The circuit controls the piezo driving voltage to maintain a constant current of about 1 nA. The resulting piezo driving voltage is proportional to the swelling of the sample. I developed this apparatus as part of my work at the university.

The flowing publications cover the details including schematic:
doi:10.1016/j.memsci.2017.09.004 (download manuscript)
doi:10.14279/depositonce-7390 (German, download)

Hough transformation for embedded systems


ImageRec is a simple and lightweight computer vision tool for small Linux based embedded systems like the very cheap MT7688AN SoC. I developed the tool for camera based feedback control without a PC or a powerful ARM based system.

The code contains an efficient implementation of Sobel edge detection and Gaussian filter, non-maximum suppression, Hough transformation and local maxima filter. The code is implemented in C and optimized for embedded systems (only integer arithmetic, low memory footprint). More details...

Source code:

Barcode for real-time positioning


Development and implementation of a circular barcode for real-time positioning and orientation detection based on low resolution camera images. Each round code element stores by default 3 bit. In combination with the neighbour elements it identifies the absolute position and orientation.

The code contains an efficient C# implementation of 2D convolution with a Gaussian kernel and 3x3 Sobel operator, non-maximum suppression, hough transformation and local maxima filter. A tool for creating the code pattern as well as the matching lookup table is included as well.

Source on GitHub:

Electromagnetic display


Electromagnetic displays are nice and actually not that hard to create on your own by using 3D printing. Here I show a working prototype of a single digit electromagnetic 7-segment display. Stl-files, circuit and source code is available. Read more...

Hackaday article:

FDM solver


A performant FDM solver in C# for one-dimensional rotational symmetric heat transfer. It was developed to simulate the cooling of an heated tungsten filament inside a gas filed tube in dependency on the heat capacity and the thermal conductivity of the gas(-mixture).

Code on GitHub:


Nettalk is a popular free and open-source IRC client for Windows. Back in the time when IRC was a very common chat protocol, Nettalk was due to its availability with a German GUI probably the most used IRC client in German speaking countries beside mIRC. The GUI has been translated to more than 10 languages.

Link to project page: German, English
Link to Wikipedia page: Nettalk (IRC client)



An app for measuring the heart rate by using the internal smart phone camera. When placing the fingertip on the camera lens the app can measure the periodic pressure change caused by the heart beat. This pressure change lead to a change of the fingers light permeability in the range of a few percent.

At typical room light the penetrating radiation is so low that the change of light intensity is significant lower than the noise level of the CMOS-sensor pixels. But because there is no need for local resolution, the data of many pixels can be averaged to improve the signal to noise ratio to a reasonable level. By applying a FIR bandpass filter, matched to the typical heart rate range of human beings, a clean signal can be obtained.

Source Code: Heart Cam



A scientific calculator app with numeric solver and graph plotter. The numeric solver can be used to calculate numeric solutions for equations as well as maxima, minima and zero crossing.

Description at Microsoft Store

Magnetic stripe data decoder


A software for decoding magnetic stripe data (e.g. from credit cards) from a recording in wave-format (PCM). Software is written in C#. Recording of the stripe data can be done by moving a tape head connected to the microphone input along a ruler.

Code on GitHub:

A fserve search engine maintained from 2004 to 2008. Web interface was written in ASP/VBScript, back end for result lookup and crawler in Visual Basic. It gained some popularity among anime fans, but has been discontinued because of potential legal issues.

Archived snapshot:
Archived website on


A lightweight, easy to set up, free and open-source IRC server for Windows running as a NT service. A Nick-, Chan- and Memoserv with basic functionality is integrated.

Link to project page (German):

Autopilot for wing based drones


An autopilot for wing based drones implemented in C# for the .NET Micro Framework. Navigation is based on data from gyroscope, accelerometer, magnetometer, air pressure and temperature, air speed (pitot tube) and GPS.

The code provides drivers for: BMP085 barometer, DS18B20 temperature sensor, L3G4200D gyro, LSM303DLM accelerometer/Magnetometer, SkyTraq Venus6 GPS recever, Linksprite UART Camera and RFM22b 868 MHz transceiver (20 dbm). It handles analog data from battery voltage and current as well as the MPX 5010DP pressure sensor. The code deals with the navigation to the destination coordinates, controls airspeed and merges data from the IMU sensors with the other data sources.

Source on GitHub:

Topography data from the SRTM


Some work has been done to use topography data from the Shuttle Radar Topography Mission to provide height above ground level for UAVs. Despite this project was never finished, the existing C# code can be used to render nice false color topography images.

High resolution image of Germany: germany_SRTM_large.jpg (3616 x 4822 pixel)
Source not yet published. Please contact me if interested.