Tech Playground

Game Controller

In this project the goal is to make a functional PCB with buttons, display that serves as a controller for a game that is ran on raspberry pi.
The communication is wireless, using RF technology with an NFR24 transceiver and an antenna.
The PCB is developed using KiCad software, and the files are on Git Hub.

SPI driver

This is an SPI driver that can be used in STM32 applications. It is written based on a reference manual from ST for their stm32fxx microcontroller. It uses standard SPI conventions.
The driver is tested with the ADXL345 3-axis accelerometer replacing the ST HAL layer for SPI communication.
The source and header are provided.

STM32 Development Board PCB Design

In this project, I designed my first printed circuit board. I used KiCad to create schematics and design the board.
I made a development board with an ST32F4 microcontroller, 16Hz oscillator, UART, I2C, buttons, switches, LEDs, and a circuit for battery power.
I learned how to create a PCB, create schematics, pick components and make footprints, use different circuit components, as well as flash custom firmware.
There is a complete KiCad folder on my GitHub and a starting framework that can be programmed on the board using SWD.
An I2C-based screen can be attached to the board for a seamless display of information.

Smart Lamp

This is the prototype of a lamp that will increase brightness when you are close and save energy by decreasing brightness when you are not around.
I used an ST Nucleo board, ultrasonic sensor, LED, transistor, and display (optional), and the code is written in C.
In this project, I utilized pulse-width modulation, timers, and interrupts. The firmware is in bare metal. The ultrasonic sensor will work constantly, and the time it takes a wave to hit an object and come back is measured. After that, when the distance is calculated, it is mapped to a corresponding brightness value that is used with PWM to dim or brighten the LED.
Feel free to design a lamp around this idea that can be 3D printed. I am open to all collaborations.

Si7021 Library

This is a project with the library for a temperature and humidity sensor si7021 from Sparkfun.
I used the ST Nucleo board, and this library will work on any of their board/MCUs with minor modifications in the code.
In this project, I learned and practiced I2C and UART protocols, bitwise programming, using a logic analyzer, and standards for writing a library in C for a sensor.


This project is a legendary Pacman game. The game is written in C++ language. It emphasizes object-oriented programming. I practiced working with classes, methods, and pointers.
Right now, you can move your player through a map (and teleport from one side to another) and collect points.
The game currently does not have ghosts, and it's still in the process of making.
Feel free to contribute. It's open-source now.

Arduino VICEP

I was part of the Virtual International Collaborative Experiment Program (VICEP). I worked with a team of students from Bahir Dar University and the University of Cincinnati on an Arduino project. We created a plant soil health/irrigation system. We used sensors to create a logic behind the irrigation system. I learned more about and practiced teamwork in a virtual environment, embedded systems, and sensors.

Lego Mindstorms

In my Engineering Design Thinking class, I was working in a team, and we built two autonomous robots that could walk like an animal or drive and move objects to designated locations. I learned and practiced teamwork in engineering and used LabVIEW, MATLAB, and python as tools.