My Senior Design project with Srinu Tapa, the collision avoidance system for the visually impaired consists of a headset and walking cane attachment capable of sensing the environment in front of the user and alerting them to oncoming obstacles. The attachments each include a custom-designed PCB, ultrasonic sensor, accelerometer, and Bluetooth transceiver tightly packed inside custom 3D-printed housings. They constantly communicate with an Android app, which alerts the user with the distance to an obstacle when one is detected. We took home second place in the annual Pelton Senior Design Competition for this project.
Demo Pitch Pelton Presentation FPR TestingA refined version of a GW Tech Collective workshop originally held by Sam March, All of the Lights: Redux is an instant music and light show in a box that I designed with Mark Tentindo. The analog-only solution relies on a custom-designed PCB and solid-state relay (SSR) that enables power to the standard electrical receptacles dependant upon the bass of the music. We ran multiple workshops explaining its operation and helping students learn to solder and assemble their own kits. Simply plug in your music and lights, plug the device into the wall, and enjoy the show.
Demo AssemblyI designed this small GW Tech Collective project after seeing similar projects online using the ubiquitous 555 timer. It is compact enough to be able to play as a small handheld instrument, with the custom PCB designed to be roughly the same size as the necessary 9V battery. This mini-synth can play a full eight note octave directly through the small onboard speaker.
GalleryAnother GW Tech Collective project that I designed with Mark Tentindo, this self-contained 3x3x3 LED cube shield plugs directly into a standard Arduino. Inspired by the many LED cubes we had seen at various Maker Faires, this project served as a visually appealing way to introduce students to the basics of soldering and multiplexed displays.
DemoThis Python project attempts to predict how a given Congressman or Senator will vote on future legislation by analyzing their voting history on previous legislation. It makes use of the Sunlight Congress API to amass the entire recorded voting history for all legislators in Congress as well as the full text of all legislation that has been voted on. The classification algorithm works by creating two mutually exclusive lists of words from bills they have previously voted Yea and Nay on and attempts to compare the wording of new bills to those lists. With that comparison in hand as well as the political party of the sponsor of the bill, a fairly accurate prediction can be made.
GitHub ReportFor "Hack GW," GW's ACM chapter's first hackathon, Mark Tentindo and I created a MIDI keyboard controlled RGB LED strip. Mark used a Raspberry Pi to parse the MIDI commands coming from the keyboard while I built a small LED driver circuit to control the RGB LEDs and wrote a simple Arduino sketch to determine the RGB values based on which key is pressed.
GitHub DemoThis is a small MATLAB project that I worked on attempting to build the start of a speech recognition system. For this specific project, I was able to get MATLAB to accurately recognize the words "one" through "ten" on a consistent basis. I train the system with multiple instances of me saying each word. With this training set, I extract the Mel frequency cepstral coefficients, create a Gaussian mixture model for each word, then use that for the comparison with the new spoken word.
GitHubI took the classic game Brickbreaker and implemented my own version of it entirely in the hardware description language Verilog on an FPGA. This game was tested and run on an Altera DE2 board. The game is broken into various Verilog modules that keep track of the bricks remaining, ball movement, paddle movement, collisions, etc. The bricks exist in a large flag register that retains which bricks have been eliminated and which bricks remain on screen. There is also a VGA controller that allows for the video to be output over the Altera DE2 board's onboard VGA connector.
GitHub DemoMicroelectricalmechanical systems (MEMS), such as accelerometers, are extremely common today. I designed and simulated my own two-axis capacitive MEMS accelerometer in CoventorWare for an Intro to MEMS course at GW. The accelerometer uses interdigitated comb fingers attached to a large proof mass in the x-axis and a single varying capacitance in the z-axis to measure accelerations up to ±2g.
ReportAs a Teaching Assistant for our Circuit Theory course, I designed this small PCB as a cost-efficient replacement for the poorer quality milled PCBs we had been using for this lab for years. The goal of the lab is to introduce students to a basic biomedical application of ECE skills, while incorporating an introduction to soldering. The PCBs previously used were milled in-house without silkscreens, often shorted, and failed to give students a realistic introduction to boards they might actually solder on. This board connects directly to the output of an ECG Bioamplifier, and the LED flashes in sync with the student's heart rate.
Lab ManualFor the final project in my VLSI Design course, I designed an elevator control unit ASIC in Cadence Virtuoso from the basic logic to the actual transistor layout. The system can independently control three elevators between a maximum of seven floors. The logic is designed to closely mimic the basic operation of real elevators such as deciding which elevator can most quickly respond to being called. The final design using the AMI 0.6µm technology consists of roughly 4000 transistors on a 0.9mm2 chip. Through GW's partnership with the MOSIS foundry, the chip was eventually fabricated, examined under the microscope, and tested with a logic analyzer.
ReportThis project combined many of the topics covered during my Embedded Systems course including serial communication and PWM. An ATmega16 microcontroller was programmed to read in the output of an ultrasonic rangefinder and output different distance-dependant tones to a speaker. While not truly a theremin, this could be played in much the same way as one.
GitHub ReportTogether with Muhammad Abdul-Rahim for our Operating Systems final project, we added filesystem attribute functionality to the Linux kernel. This project enables the user to define superfluous metadata as an "attribute" for any file or folder in the operating system. These new attributes are stored as files in hidden attribute directories linked to the file or folder they describe. System calls were added to the kernel to set, get, and delete file attributes at the user-level. Other existing system calls were also modified to accomodate this added functionality such as the rename system call now also renaming the attributes directory if one exists and the delete system call deleting the attributes directory when the original file or folder is deleted.
GitHubIn Intro to Microprocessors, students were tasked with assembling and soldering a pre-designed microcontroller board and developing a project that made use of as much of its functionality (buttons, LEDs, speaker, etc.) as possible. My project was a password-protected musicbox capable of playing four full songs, most importantly the Super Mario Bros Theme. The correct button sequence must be entered first to enable the musicbox, then the songs could be selected to play. Properly coding the notes and timing as well as efficiently storing the songs in program memory were important aspects of this project.
GitHub Report DemoMy Digital Electronics final project consisted of designing, building, and simulating a vending machine control unit in Tanner Tools. The control unit was capable of account for quarters, dimes, and nickels and outputting two separate drink options. All of the logic blocks in the project were designed and tested from the transistor level to gate level and eventually to larger elements like adders and comparators. The project was successfully simulated to ensure proper operation.
ReportThis project filters the input audio to create individually adjustable bass and treble channels, amplifies the input, and has amplitude displays for each channel. It is powered by a ±12V DC power supply that I also designed and built. This project primarily makes use of the LM741 OpAmp for both the filtering of the input signal and the level comparators for the volume display. The amplification stage uses an LM386.
Demo ReportThis is a simple Handyboard-based project incorporating various sensors and a LEGO elevator. The Handyboard is connected to an ultrasonic sensor at the base of the elevator shaft measuring the distance to the elevator car to determine where to stop it. The Handyboard simultaneously controls a motor that winds a string over a pulley to move the elevator car to the desired location. There are three different buttons to call the elevator to the three separate floors.
GitHub DemoIn our Intro to ECE course, we were tasked with designing a small Handyboard-based LEGO robot coded in Interactive C that was capable of following a black line to its end, turning around, and coming back as fast as possible. Two IR sensors positioned on either side of the black line were used to detect the light reflecting from the floor, allowing the robot to recognize when it had crossed the line. Simplicity in the structure was key to this project, as the compact design with large driving wheels in the back and smooth wheels in the front allowed our robot to go extremely fast compared to some of the others.
GitHub Demo