Aleksandar Baros

Custom Hardware Design and Software Development


Experienced Hardware and Firmware/Software Engineer seeking a contract in micro controllers based embedded systems design. I am working as a contractor since year 2006. This page contains description of my professional work as well as some of my projects done for fun.

I will appreciate any inquiries with description of your new project, and how I could help with it.

Aleksandar Baros
Saskatoon, Saskatchewan, Canada, Oct 2022.

Stove Guard

I am a proud designer of Stove Guard, an automatic stove safety shutoff device. It turns off electric power for an electric stove or gas supply for a gas stove, if cooking was left unattended. Unattended cooking is cause of most home fires (43% - source FEMA, statistic for 2007-2011). Stove Guard helps to prevent food and pots from burning, as well as reducing the risk of fire.

            Guard picture

More than 2000 Stove Guard units were sold in North America and Australia from year 2006 when I started to work with Stove Guard International. A couple of years ago I talked with a customer who asked for manual for Stove Guard. He had a nine years old Stove Guard that worked well without any problem. I was very pleased to hear that.

Technologies used in development of Stove Guard includes: various Microchip PIC microcontrollers, Microchip MPLAB IDE, Microchip Embedded wireless Connectivity 802.11b/g - WiFi, SPI, Pyroelectric passive infrared sensor, Active movement sensor, Current detection, Pressure measurement, Zhengzhou Winsen Technology gas sensors MQ-4 and MP-5 and WinQCAD for schematic and PCB design.

You can buy a Stove Guard for gas stoves from Stove Guard International. Details are at:

Deterr Enterprises Inc.

Reason for Paint ball security Turret system development is to deter intruders by shutting paint ball at them. Turret has two static cameras, one of them is infrared camera, and one main camera with pan and tilt movement. It has a paintball gun with pressure tank and feeding tube. Sensors in the turret are for temperature, ball presence in feeding tube and in the gun chamber. There is an DC motor for feeding balls to the gun, and two stepper motors for main camera movement. Inside turret case is Peltier module for heating or cooling.

Turret has Neousys POC210 fanless embedded controller with LINUX. It is connected to a Windows computer inside the house. Operator can watch what is in front of cameras, controls position of main camera, and shut paintballs by joystick.

My task was sensor reading, pulse width modulation for DC motor, controlling of two stepper motors for tilt and pan movement, move turret to home position on start-up, encoders for stepper motor position reading, limit switches for stepper motor, joystick software, Peltier module control for heating and cooling, video camera image grabbing, real time streaming output of three USB3 video cameras with user data transmitting and receiving, UDP server software on Linux, UDP client software on Windows, image processing for movement detection, digital zooming, time and date stamp on images, data collection and video recording and color restoring of raw images.

Two parts of video showing test of Paint ball security Turret are here: Turret_1 and Turret_2. Test balls without paint were used.

Technologies used includes: Microsoft Visual Studio C/C++ on Windows, GNU C/C++ with command line and Qt Creator on Ubuntu Linux, Object presence detection hardware and software with IR diode and photo transistor, Open CV, Phidgets USB boards, UDP server software on Linux, UDP client software on Windows, Bayer filter.


In two separate contacts in years 2007 in 2010, I worked with SHEC Labs - Solar Hydrogen Energy Corporation.

I was responsible for hardware design, software development and PCB design for USB communication, digital I/O and analog boards. Communication board was connected to a personal computer trough USB port. Communication board had 10 connectors for peripheral boards. Digital I/O board has 15 digital inputs or outputs (TTL level). Analog board had 16 analog inputs with four voltage levels. Was possible to use 8 differential analog inputs instead of 16 single inputs. Every Digital I/O and analog input board had a 9 bits board identification.

Hardware and tools used: USB and SPI communication, Atmel AT89C5131A-M, A/D conversion, Visual C++, virtual COM port, Keil uVision3 and WinQCAD.

AX64 - embedded system with x64 or how to start long mode and use auxiliary processors

To use a personal computer based on Intel or AMD x64 processor as an embedded system in efficient way, a good idea is to avoid an operating system that is designated for a general use. It makes software smaller, with faster execution. Approach used here is to start with a processor in real mode, optionally set a graphic mode, put processor in long (64 bit) mode, and start auxiliary processors if they exist.

Software is divided in three parts. In video part is software for finding a proper high resolution graphic video mode for video card and monitor combination. If only text mode is required this part could be skipped. The second part, long mode (64 bit) software, starts long mode. Included are programs for transfer data between files and long mode linear 64 bits address. Keyboard and clock hardware interrupts are available in long mode. Simple debug in long mode is provided using break point exception. In the third, multiprocessor part of software number of processors is checked, all auxiliary processors will be prepared for use in long mode. Function for starting auxiliary processor are provided.




PRINT80 subroutine prints 80 bits Extended Precision Floating Point Numbers as a decimal string. It is written in assembly language for x86-64 processor.

Most programming languages have floating point arithmetic based on IEEE 754 standard with 64 bits binary numbers. IEEE 754 has good support in processor hardware, both in Floating Point Unit and SSE extensions. If calculations requires more precision, it is useful to use extended precision floating point arithmetic. Some programming languages have support for 80 bits extended precision numbers, as they are calculated in x87 Floating Point Unit, but a proper decimal representation of extended precision numbers is missing. PRINT80 subroutine is a solution for this task.



BCD calculator

Calculator with 27 digits accuracy for Windows.

Calculator Screenshot




Have you ever played BlockOut? It is a Tetris extension to third dimension.

Tetris 4D goes even further. It is a version of Tetris in four dimensions. This game is for Windows OS. You can download Zip file with game and manuals.

If you want to see how rotation in four spatial dimensions look like, check this game. Have accurate four dimension's math in algorithm. Way how you "see" a for-dimensional hyper solid on screen is original: 2-dimensional array of 2-dimensional surfaces. It is a complete 4D view from all sides, and it is easier to "see" fourth dimension this way than as usually presented as a 3D shadow of a hyper solid in perspective. In manual is more about this and how to play the game.

Tetris4D Screenshot


Cube 4D

Game is extension of soma cubes in fourth spatial dimension. Goal of game is to fill a four-dimensional hypercube 2x2x2x2 with four or five different hypersolids. Hypersolid is a closed four-dimensional figure.

Two versions of game are available.

The first version use keybord as input. It requires a personal computer with installed Python 2 and Kivy library for Python. The second version is use a point device for input. It works on:

     * Personal computer with a mouse and installed Python 2 and Kivy library for Python.

     * Device with Android OS with touch-screen with Kivy Launcer installed.

Cube4D Screenshot




FRACTALS - digital art

Link to Fractal page

PHOTOGRAPHY - The best way to convert deep infrared images to black and white

Link to IR to BW page