Squishy Robotics – Electrical Engineering Intern
I was tasked with designing a sensor pod and an active system to gather sensor data, stream video, and actuate a tensegrity utilizing an optimized control stack. The two boards below are the two final products of the Summer.
A small low power countdown display. Hardware CAD files and firmware can be found here.
Frog vs Cilantro
A small bullet-hell game made by learning pygame. Inspired by my dislike of cilantro and like of frogs. Find it here!
Binary Clock + Photo Booth Bot
Arcade Fight stick controlled using an Arduino Uno reflashed to be a USB Controller for GNU/Linux and Windows. More details here.
Bluetooth Enabled Printed Electrode ECG Wearable
I was tasked with getting the communication between the nRF52 and ADAS1000 to properly collect and send BLE packets to a phone to visualize and analyze data.
Fully Printed N-Type Organic Thin Film Transistors
The group was interested in being able to print Top Gate Bottom Contact Organic Thin Film Transistors (OTFTs) and possibly design simple digital circuits by integrating our already well characterized P-Type OTFTs.
Pressure Sensor Device Characterization
I helped a post doc characterize their pressure sensor by putting together a GUI to control a stepper motor to repeatedly apply a set amount of pressure to their device. Find a demo and the code here.
Bringing STEM education to under privileged high school students through mentorship and an 8 week robotics competition
Oversaw the development of the electrical system, coordinate the supply chain for parts, and integrate adjacent software and hardware projects for the field and robot electronics. It was a pleasure to be a part of a larger cause, and the work we put in along with the friends I made will always be a part of me.
Smart Sensors Project Manager
Recruit and train new staff in Eagle and Electrical Engineering / PCB design basics to design the latest electrical system on the robot\
Deploy Beagle Bone Blacks with custom software, and send out secure updates + develop a continuous integration system for the club’s central code repo
Design the PCB and revamp the RFID activated door opening robot. Leaky Demo
EECS249A – Embedded System
As a capstone final project, my team built a fully hardware implemented, Hasbro Bop It driven rhythm game: Bop It Revolution. Bop It Revolution is a discrete note, single dimension rhythm game similar to Guitar Hero or Tap Tap Revenge that requires the player to actuate inputs on beat from a predefined pool of buttons. We took this style of gameplay and translated it into something no one has ever seen before – a bare metal processor, LED strip beatmap, and Hasbro Bop It as the controller. This project involves both hardware and software level of integration in various topics the team learned in the course – low level interface programming in C, asynchronous FSMs with timers and interrupts, and digital communication protocols. Find a demo here and the Github repository here.
EE230B – Solid State Devices
We were tasked with designing 20nm channel length Bulk MOSFET and a 20nm channel length FDSOI MOSFET. The performance metrics were 0.86V for Vdd, 900uA of On current, 150nA of Off current, SS of 100mV/dec, and DIBL of 100mV/V. We optimized a lot of performance parameters including doping species, concentration, and energy for LDD, Body, and Contacts. To tune the performance and extract metrics, we wrote parts of scripts to obtain IdVg and IdVd plots and played with the gate work function.
EECS151 – Introduction to Digital Design
Our task was to create a three stage pipelined RISC-V architecture CPU on an FPGA running above 50 MHz capable of interfacing with memory mapped LEDs, switches, UART, I2S, and VGA by utilizing FIFOs and memory IP blocks. See the full project report here.
EE143 – Micro-fabrication Technology
We spent 10 weeks fabricating devices on the 10 micron range in an undergraduate clean room. Afterwards, we spend 3 weeks taking measurements on a 4 probe device to characterize the devices we made.
CS162 – Operating Systems and System Programming
Implement key features in the educational operating system PintOS including the scheduler, argument parsing, user program syscalls, filesystem syscalls, buffer cache, extensible filesystem, and recursive directories.
Test a real op amp’s ability to amplify signals while observing non-ideal effects such as slew rate limited growth and input resistance while observing the gain-bandwidth product effect.
Diodes and Photodetectors
Transmit bits by sending out a blinking signal, where the receiver picks up the light and amplifies it to be read at the receiver side LED. Bit rate was limited with an opamp that could not keep up with a high bit rate due to its slew rate limiting.
By adjusting gate-source voltage against a stable drain-source voltage on an NMOS Transistor, we could observe the three different regions of operation by measuring the capacitance of the MOS. Then used the transistor to make a touch detector.
Single Stage Amplifier
Design a single stage common source amplifier with source degeneration to fit specific parameters such as middle band gain, hi and low cut off frequencies, and output swing. Learned how to approximate poles and zeros to fit specific parameters and use decoupling techniques to fit parameters.
Multi Stage Amplifier
Design a multi stage amplifier using a common source with source degeneration, a common gate, and common drain structures to further increase the bandwidth of the amplifier. Used two port models to simplify the circuit to then calculate the RC constants and set bandwidths without loss of gain.
CS61C – Great Ideas in Computer Architecture
Implementing a flight map simulation using linked lists
Helped learning C, pointers, memory, and debugging skills
Implement basic Assembler and Linker in C and MIPS
Create a basic processor in Logisim
Thread Level Parallelism
Used pragma OMP, loop unrolling, and x86 intrinsics to speed up a slow algorithm
Utilized Spark’s MapReduce to compress videos frame by frame.
EE16B – Designing Information Devices and Systems II
Categorizing different neuron firings from a simulated BMI using Discrete Fourier Transform to view the energy of different states of a subject and Principal Component Analysis to sort different signals from neurons.
CS61B Data Structures and Algorithms
Planetary orbit simulation.
Array / Linked List Double Ended Queue
Implemented the Array and Linked List Double Ended Queue. API included addFirst, addLast, isEmpty, size, printDeque, removeFirst, removeLast, and get.
A graphical text editor.
Google Maps-like mapping using OSM. Has zoom, refocusing, and shortest path implemented.
EE16A – Designing Information Devices and Systems I
Use single pixel photodiode to try and image a playing card
Resistive Touch Screen
Create a resistive touch screen with 9 spots
Capacitive Touch Screen
Made a single pixel capacitive touch screen
Acoustic Positioning System
2-D Sound Based positioning
CS61A – Structure and Interpretation of Computer Programs
A mathematical, dice rolling based game
Webapp that cuts a map into sections based off of food preference. Uses k-means to determine cluster centers for restaurants that the user likes.
Game similar to Plants vs Zombies, where there are ants that use food to fight against an onslaught of Stanford bees.
Scheme interpreter implemented in Python