3D chess on Irrlicht engine (code lost) - C++ in Dev-C++ IDE.
PE (exe) file analyzer for anti-virus company (code lost) in Visual Studio IDE.
Stars and Stars 3D demo in x86 assembler (code lost).
2D game in x86 assembler - using DMA channels for sounds playback, ports listening and much more. Probably my biggest project with a few thousands lines of code.
In this game I used DMAs, keyboard ports, VGA ports, self-developed sprite animations. Also what surprised me after seeing the code 15 years after development was how well commented and structured it is. Also, I did local version control with maaany folders with newer and newer code.
Download the code of the game
Data logger for automotive (truck) OEM on NI CompactRIO platform (Host + Real-time + FPGA).
Data logger for Mazda 6: acceleration, speed, ABS data, gas position, temperature, GPS data, RPM on NI CompactRIO platform (Host + Real-Time + FPGA).Download report.
Data logger for child's stroller: acceleration, gyroscope (rotation), temperature, GPS on Raspberry PI.
Here we can see first mechanical idea. Later many things changes, for example I added supercapacitor, to be able to log one last second of data.
Here we can see the logger in enclosure. We have 4 temperature channels, GPS, Ethernet (later changed to wi-fi).
Lesson learnt: I learn a lot. Nuances of Linux, SPI, I2C, serial, GPS logging/parsing. Data storage techniques. Multithreading. Cooling. PCB development. And much more.
Portable logger for measuring temperature from 2 channels, recording in EEPROM and displaying values online. Based on Arduino. For Real-Time Clock DS3232RTC was used and for display I used I2C Liquid Display. So in total I used RS232 for communication with PC, I2C for Display and DS3232RTC, 1-Wire for DS18B20.
Interesting thing: "pre" tag in HTML doesn't display properly included libraries and some parts of code in the below preview.
Lesson learnt: Even simple electronics has a lot of nuances. How to send data back to PC (serial commands)? What's the best mechanism to store data?
Robot that teaches children recognize and call colors. It uses OEM MP3 player (DFPlayerMini), has a state machine programmed on Arduino and consists of numerous, colorful LEDs.
Again, code is not displayer properly in "pre" section below.
Lessons learnt: do not place any children toy in cartoon box :)
This crazy machine has 4 LED buttons and buzzer. Pressing the buttons either make the buzzer buzz, switch on LEDs (but not on the pressed button!) and showcases momentary and toggle switches.
"Doing nothing" machine helped me get in total 30' of free time - since it is a great toy for interested-in-everything child!
This project was meant to create IP for C64 processor (MOS 6510) on FPGA.
Also, I found on old pendrive LabVIEW code that translated mnemonics into processor's instructions (so I basically wrote assembler in LabVIEW...).
Lesson learnt: such approach (switch) results in long chains and lower max f. Approach needs to be changed.
This is simple voltage amplifier based on E88CC lamp and supply voltage of 12V. The amplification reached the level of around 10 V/V. The amplifier showcases negative feedback for fine-tuning THD or amplification depending on our needs.
Below you can find a first prototype.
Cool trick I used here - to have 6.3V for heater, I used LM7806 that outputs 6V and I referenced it to ground through Schottky diode that has a voltage drop of 0.2-0.3V.
This simple device uses 555 for blinking the LED, uses solar panels to charge supercapacitors, PNP transistors to switch 555 on when it is dark and diode for making sure solar panels don't discharge the supercaps.
LED strip controlled via WIFI
Here I used 3 colors LED strip that can be attached to the furniture, stair or any other object at home. The device is controlled by WIFI - I used DNS catch-all ESP8266 code with HTML page that allows for switching LEDs on/off or choosing defined PWM duty cycle or dimming algorithm. ESP8266 transmits commands over the TX line of RS-232, luckily 5V-arduino can accept it with no signal amplification (other way round it would work without voltage divider). Arduino simply has a loop that checks the commands and sets proper PWM outputs.
For power transistors I used not-that-cheap IRF3205s.
Issues I had:
Lessons learnt - even simple project takes a lot of time. Not keeping the promise of voltage ratings and resulting burnt electronics, not available all pieces at home lab (3V3 stabilizer as an exmample), soldering on universal PCB, mounting that stuff to the universal enclosure, drilling - all those take precious time.