Senior Design Project

Smart Bike: An Automatically Shifting Bicycle with Other Embedded Features:
Fall 2013 – Spring 2014

  • Developed an electro-mechanical system which shifts a multi-speed bicycle automatically.
    • The goal of the system was to maintain, as much as possible, a user-defined cadence (pedaling rpm) by modifying the bicycle’s gear ratio accordingly.
    • The gear ratio is determined by a number of factors including cadence, speed, and acceleration.
    • Statistics such as average and instantaneous speed, cadence, gear ratio, and temperature are monitored and displayed to the user.
  • An Android application tethered via Bluetooth was used to log statistics and display them to the user throughout the ride.
  • The system consists of a microcontroller, servos and a servo controller, Hall-effect sensors, a 6-axis inertial measurement unit (IMU), a Bluetooth modem, an Android-powered smart phone, a battery, a bottle dynamo, and a printed circuit board. The MCU speaks to various peripherals over UART and I2C

Other Projects

Not Another Completely Heuristic Operating System (NACHOS):
Fall 2014

  • Semester long project which involved modifications to the existing (Java) NACHOS framework.
    • The project illustrated issues such as caching , concurrency, device drivers, interrupts , scheduling, system calls, and virtual memory.

Portable SKEY:
Fall 2014

  • Modified an early version of SKEY so that it is portable among different Unix systems (both 64 and 32 bit).
    • This was accomplished by modifying the code to eliminate system dependencies and then utilizing Bash scripts to test for various
      needed features, dependencies, and header files.
    • This project was later modified to use GNU Autotools to automatically generate makefiles, installation scripts, and configuration headers.

Xmalloc Library:
Fall 2014

  • Created a debugging library for the standard C malloc() and free() functions.
    • The library is a safety mechanism which warns the programmer of potential problems such as double free error, utilizing unallocated
      memory, memory leaks, and disastrous pointer arithmetic.

Touch Screen and Dot-Matrix Display Libraries:
Fall 2013

(Click on the above links to view library documentation and complete project overview)

  • Developed extensive embedded C libraries for use with the EarthLCD ezLCD+103 touch screen and the Electronic Assembly DOGM128 dot-matrix display as part of ESE 476 (Instructional Laboratory Development Practicum). The libraries will be used in future embedded systems classes.Both libraries were developed for educational purposes and are therefore heavily documented with Doxygen style  comments.
  • Coding standards were strictly enforced to ensure ease of use and portability.
  • Both libraries were designed in a modular fashion to ensure legible, portable, and extendable code; functions were grouped together in different files by category (i.e. lines, polygons, arcs, and buttons).
  • Intrinsic functions and other compiler and target specific directives were avoided at all costs for portability; a user configuration header file was created to allow the user to modify target-specific parameters in one place to suit their needs.

Cell-Lite Unit:
Fall 2013

  • Designed and implemented a SIMD processor with a three-stage pipeline using VHDL.
  • The design consisted of a reduced multimedia instruction set similar to those used in the Sony Cell SPU architecture.
  • SVN version control was used, voluntarily, from project start to finish; this made team collaboration and project development much easier.

Sine, Square, and Triangle Variable Waveform Generator:
Spring 2013

  • Worked with a partner to design an Atmel microcontroller based waveform generator with a keypad and LCD style user interface (UI). Wrote a complete user manual and technical description.
  • Learned embedded C programming, the SPI protocol, external peripheral interfacing, and the state design pattern (for UI). Reinforced teamwork and technical communication skills.

Direct Digital Synthesizer (DDS):
Spring 2013

  • Devised a digital system which converts data sent over SPI into square waves and digitized sine and triangle waves of varying duty cycle or frequency respectively through a phase accumulator.
  • Reinforced knowledge of serial communication, VHDL, and FPGA’s.

Ramble On!: 
Spring 2013

  • Developed a Java based geography game which requires players to match regions on a selected map to its name, capital city, leader image, or flag image.
  • Grasped knowledge in XML, graphical user interfaces (GUI), fool-proof design, library development, UML diagrams, revision control with GIT, and design patterns.

Variable Speed Iambic Telegraph Keyer: 
Fall 2012

  • Created an Atmel microcontroller based system complete with an LCD, pushbutton, and rotary encoder interface to generate Morse code at variable words-per-minute.
  • Gained experience in assembly programming, basic user interfaces, microcontrollers, and teamwork.