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.
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.
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: https://stoveguardintl.com/automatic-stove-shut-off-device-for-natural-gas-or-propane-stoves/
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.
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.
DOWNLOAD AX64
Download
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.
DOWNLOAD PRINT80
Download
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.
DOWNLOAD TETRIS 4D
DownloadGame 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.
DOWNLOAD CUBE 4D KEYBOARD VERSION
DownloadDOWNLOAD CUBE 4D POINT INPUT VERSION
DownloadLink to Fractal page
Link to IR to BW page