Projects

In my four years at Iowa State University I've had the opportunity to participate in a variety of in-class and extracurricular projects. Below, I've listed a couple of my favorites.

ISU MAVRIC: Competition-based Mars Rover Team

MAVRIC Rover

I served as the Electrical Team Lead on MAVRIC for two semesters, after working as an Electrical Team member for the two semesters prior.

We designed a completely new control system for our rover. We began by looking at prior work, other rovers that we had admired from competition. From there, we analyzed what resources we would have at our disposal and how to best optimize them for the competition rules.

We decided on a modular solution that involved a significant amount of printed circuit board design. We did not have this experience but there were tutorials online, books to read, and alumni to contact. We used all three resources to learn not only how to design boards, but how to do them right.

We iterated on the design for months until we were happy to send the boards off to the fabricators. Once they arrived, we used more online resources and resources in the lab (lab monitors, members of other teams) to learn how to hand solder 64-pin QFP packages.

In the end, we developed a very advanced rover control system. However, our biggest achievement was in ourselves. Through learning and experimentation, we had taken ourselves from novice Electrical Engineering Students to ones who actually had a pretty decent grasp on the world we were about to enter.

CPRE 288 Mars Rover

Mars Rover

CPRE 288 prepared us for embedded development by taking us through simple, and increasingly complex lab projects in C programming that all culminated into a system that could read obstacles on a course, read them back to an operator, and navigate to a goal.

I worked with a team of four. We all had different sensors that we specialized in. This allowed us all to become experts in an area. We heavily utilized online C reference material, the Atmel datasheets, and lecture material from class. I had already done some embedded development from a personal project where I automated my bedroom back in high school. I was able to use my familiarity with embedded development to make quick progress while I learned of best practices through lecture.

Our TAs were also an excellent resource. Since they had seen many students complete these projects before, we were able to ask them architectural questions to ensure we wouldn't code ourselves into a corner later in lab.

We were able to successfully navigate the course by the end of the course. We only used the sensors on the robot to tell where we were and navigated through a text-based prompt.

Hardware Stack Implementation

Cyclone II FPGA

In CPRE 281, we learned the fundamentals of digital logic. Throughout our coursework and lab assignments, we built up an understanding of how logic is implemented and how to use computers to implement it using Verilog synthesis.

In our labs, we programmed on the Altera Cyclone II Dev board. For our final project, I chose to implement a stack, a data structure where the first items stored in the "stack" are the first ones out when retrieved. For this project, I used our textbook, online Verilog references, and computer science references online (as well as my prior knowledge of data structures from a previous computer science course).

What I was most proud of in this project was that I accomplished the objective according to the specification while adhering to Verilog best practices. Because of this, my design was easy to understand, easy to change, and easy to extend in the future.