Gauss Rifle

Senior Capstone Project
August 2016 - December 2016

For our senior capstone design project, we were given the liberty of choosing our own design. Our group chose to design and implement a Gauss Rifle, or Coilgun, which uses forces produced by electromagnetic coils to launch a ferromagnetic projectile. Using a National Instruments myRIO microcontroller and infrared sensors, ten stages of powerful electromagnetic coils were delivered 20A to send a ferromagnetic projectile down a 40-inch barrel. These coils were powered by a bank of large capacitors connected in parallel, totaling 150mF and charged to 50V. With five different printed circuit board designs and 14 boards in total, the Coilgun was able to shoot the projectile at 18m/s, punching holes in cardboard boxes at a distance of over 15 feet. The project drew upon our knowledge of microcontroller programming, circuit design and analysis, circuit board design, and electromagnetic fields, spanning the entire curriculum of the Electrical and Computer Engineering department.

The group consisted of Michael Eller, Brendon Koch, Evan Lendermon, Noah Sauber, and myself. Our technical advisor was Professor Harry Powell, a professor of electrical engineering in the ECE Department.


SafeCollab

Advanced Software Development
January 2016 - May 2016

SafeCollab was a project for Advanced Software Development (CS3240). The application is a web-based report system. Reports can be uploaded, encrypted, organized, and shared in the application. Messages (both public and private) can be sent between users for maximum communication on reports. Written in Python using Django, SafeCollab is currently hosted on Heroku at the link below.

The project focused on the software development cycle and group development. Tools such as Pivotal Tracker and Git (GitHub) were required for the project to keep the ‘customer’ (Teacher’s Assistant) in the loop, much like a real project.


LIFX Bulb Controller

Dataflow Programming - Machine Vision
January 2016 - May 2016

At the end of Dataflow Programming: Machine Vision Lab, we were tested on our embedded computing skills using machine vision and LabVIEW. The objective of the laboratory project was open-ended: create an embedded system using LabVIEW that runs on the National Instruments myRIO and incorporates the Microsoft LifeCam camera. The purpose of the assignment was to begin working with larger embedded systems to ease into the Capstone project.

The LIFX Bulb Lighter is a standalone, embedded system that alters the color of a LIFX light bulb. It does so using HTTP requests to the LIFX servers, sending a data dictionary that was created by the VI. It has two modes, Average Color and Hex Code.

Average Color mode uses a Vision Assistant script to scan the entire field-of-view of the camera and outputs three color histograms, one for each of the three primary colors for light (red, blue, and green). These clusters have the average color (0-255) of each of the colors. This data was then able to be combined into a data dictionary using the Build Text VI and passed to the LIFX servers. These requests occurred every 1.5 seconds.

The second mode, Hex Code, was triggered by pressing the Button0 button on the bottom of the myRIO. It used optical character recognition (OCR) in a Vision Assistant script to read a seven-character string off of a piece of paper: a pound symbol (#) followed by six hexadecimal characters. This was packaged into a data dictionary and sent to the LIFX servers and the light bulb would change to the color depicted by the hex code.


16-bit MIPS Processor

Computer Architecture and Design
January 2016 - May 2016

Computer Architecture and Design (ECE 4435) included a semester-long project that required implemented a MIPS processor in VHDL and run an assembly program on it (description below). I enjoyed this class so much, I ended up being a teaching assistant for it the following year!

The processor included five stages: Fetch, Decode, Execute, Memory, and Writeback. The Fetch stage fetches instructions from memory and processes the program counter. The Decode stage decodes each instruction and passes on the control bits and components necessary for the instruction to be executed, which is done in the Execute stage. The Memory stage interfaces with memory and reads/writes if necessary. Lastly, the Writeback stage writes to one of the 16 general-purpose registers stored in the Register File. A Register Tracker was implemented to mark registers that are being written to or read from in future cycles and mitigate data hazards. A Memory Arbiter was used to mitigate structural hazards when it comes to reading/writing from memory.


Remote Controlled Potato Gun

Introduction to Embedded Computer Systems
August 2015 - December 2015

At the end of Introduction to Embedded Computer Systems (ECE 3430), we were given a project to test our knowledge of the topics discussed in class. In a group with two others (Michael Eller and Brendon Koch), we made a remote controlled potato gun using two Texas Instruments MSP430 LaunchPads.

The goal of the final project was to create a spark-ignited launcher that used wireless communication between two Texas Instruments LaunchPads (MSP430). Pressing a debounced button on the transmitting LaunchPad sent a wireless signal to the other LaunchPad that started a countdown on the 7-segment display which was set using the rotary encoder. That is, if the rotary encoder set the display to a decimal value of 10, then a 10-second countdown was used before launch. An arming button was used on the receiving LaunchPad to act as a safety mechanism, and as an added safety feature the button on the transmitting LaunchPad could be used to pause the launch countdown.

The project utilized Serial Peripheral Interfacing (SPI), wireless communication using Manchester Phase Encoding (MPE), and timer interrupts.


Electrocardiogram (EKG)

Fundamentals of Electrical Engineering III
August 2015 - December 2015

At the end of Fundamentals of Electrical Engineering III (ECE 3750), we built EKGs in an effort to test our ability to design Sallen-Key lowpass filters with a specific cutoff frequency, design printed circuit boards in Ultiboard, and build/solder them. The EKG would take very small voltage differences between the probes on the body and amplify them to a much larger signal. Then, the noise in the signal was filtered out and the final signals were able to be measured using a VirtualBench or myRIO/Launchpad.

After finishing the boards, we tested them by connecting the probes to a test subject (below) and monitoring the signals with a Native Instruments myRIO and running digital signal processing (DSP) scripts.


LED Lighter

Fundamentals of Electrical Engineering II
January 2015 - May 2015

At the end of Fundamentals of Electrical Engineering II (ECE 2660), we were given a project to introduce us to printed circuit boards (PCBs), soldering, and designing filters. In groups of three, the goal of this assignment was to implement and build a system that would flash LEDs with the high and low frequencies of music. This assignment reinforced Sallen-Key filters and how they worked, while also reviewing the topic of operational amplifiers. A skeleton was provided for the circuit, and it was designed in National Instruments Ultiboard and then sent to be printed. Then, values of the various components (resistors and capacitors) of the skeleton were chosen after calculations and testing. The PCB was then soldered with these parts and the overall system was tested for functionability.

The system works flawlessly and is actually pretty cool! The red LED flashes with the low-frequencies (bass) and the green LED flashes with the high-frequencies (treble).


Hoo's Studying

Personal Project
January 2015 - January 2016

Hoo’s Studying is an application that allows college students at the University of Virginia to quickly and efficiently create study groups on the fly for their classes. This will help students find study partners that they normally wouldn’t work with, or know, otherwise. The goal of Hoo’s Studying is to make it easier and more convenient for UVA students to work together and do well in their courses.

The project is no longer in development; at the beginning of my third-year, engineering got pretty busy and I wasn’t able to put the finishing UX touches on it to get it to launch. I had a great time with the project and my goal is to pass it along to an underclassman before I graduate so that they can work with it and get it out there.

In addition to creating a tool for our peers to use, another goal of Hoo’s Studying is for the developers to learn new skills. So far, I’ve learned how to setup and maintain a Linux server (Ubuntu Server 15.04) on a cloud machine through Digital Ocean for web hosting and testing. Futhermore, I’ve learned the majority of my web development knowledge (PHP, Javascript/JQuery, HTML, Twitter Bootstrap, HTML, CSS) and Git skills through this project by just jumping in and learning as I go.


Ghost Hunter Game

Software Development Methods
August 2014 - December 2014

The focus of Software Development Methods (CS 2110) was to get aquainted with Android development and the process of creating software. As a final project, teams were given the opportunity to create a game that was optimized for the Nexus 7 tablet on Kit Kat (Android 4.4, API 19). Ghost Hunter is a game where the player must kill all the ghosts on the screen using various weapons. Although very simple, the app was developed from scratch by myself and three other UVA students in the Fall of 2014. We never got around to posting the game to the Android Play Store, but you can fork our GitHub repository below to check it out.