College of Engineering & Applied Science · University of Cincinnati

Tech Playground

A working notebook of embedded systems, PCB design, and software experiments — built, debugged, and documented by Petar Acimovic.

Selected Work

Projects & Experiments

Eight builds spanning firmware, PCB design, and embedded C/C++ — most of them open-source and still evolving.

01 / 08

Game Controller

The goal is to make a functional PCB with buttons and a display that serves as a controller for a game running on a Raspberry Pi.

Communication is wireless, using RF technology with an NRF24 transceiver and an antenna.

The PCB is developed using KiCad, and the files are on GitHub.

02 / 08

SPI Driver

An SPI driver for STM32 applications, written from ST's reference manual for the STM32Fxx family and using standard SPI conventions.

Tested with the ADXL345 3-axis accelerometer, replacing the ST HAL layer for SPI communication. Source and header provided.

03 / 08

STM32 Development Board PCB Design

My first printed circuit board, designed from schematic to layout in KiCad: an STM32F4 microcontroller, 16 MHz oscillator, UART, I2C, buttons, switches, LEDs, and a battery power circuit.

Along the way I learned to build a PCB, draw schematics, pick components and footprints, and flash custom firmware. The complete KiCad project and a starting firmware framework — programmable over SWD — are on GitHub, and an I2C display can be attached for a seamless read-out.

04 / 08

Smart Lamp

A lamp prototype that brightens as you approach and dims to save energy when you're not around — an ST Nucleo board, ultrasonic sensor, LED, transistor, and optional display, written in bare-metal C.

The ultrasonic sensor runs continuously; the echo time is converted to a distance and mapped to a brightness value driven by PWM, using timers and interrupts throughout.

Feel free to design a 3D-printed enclosure around this idea — collaboration welcome.

05 / 08

Si7021 Library

A driver library for Sparkfun's Si7021 temperature and humidity sensor, built on an ST Nucleo board and portable to any of their boards or MCUs with minor changes.

The project was a chance to practice I2C and UART protocols, bitwise programming, working with a logic analyzer, and the conventions for writing a clean C sensor library.

06 / 08

Pacman

A legendary Pacman game written in C++ with an emphasis on object-oriented design — classes, methods, and pointers all get exercised.

Right now the player can move through the map, teleport from one side to the other, and collect points. Ghosts aren't in yet; it's still a work in progress and open-source, so contributions are welcome.

07 / 08

Arduino VICEP

Part of the Virtual International Collaborative Experiment Program (VICEP), working with students from Bahir Dar University and the University of Cincinnati on an Arduino-based plant soil health and irrigation system.

Sensors drove the irrigation logic — a good exercise in teamwork across a virtual, international environment, as well as embedded systems and sensing.

08 / 08

Lego Mindstorms

For my Engineering Design Thinking class, our team built two autonomous robots — one that walked like an animal, another that drove and moved objects to designated locations.

The build practiced teamwork in engineering and put LabVIEW, MATLAB, and Python to work side by side.

Get in Touch

Let's build something.

Open to collaboration, internships, and interesting problems in embedded systems, PCB design, and firmware.