Projects
These are my top projects that I have completed, both independently and with classmates. Each of them has been instrumental is my growth as an engineer and have shaped my interests. The significance of these projects is not only their educational value but also the diversity that each project exhibits. This reflects the comprehensive knowledge I have acquired while at the University of Maine.
Data Logger for Hiking
Senior Capstone
January 2023 - May 2024
Overview
A microprocessor based device was designed and constructed to record data such as distance traveled, elevation gained, and steps taken. It operates on low power, and is battery powered to survive at least 48 hours. The data logger tracks location, movement, and displays locally stored recorded data as desired by the user. The locally stored data is transferable to a computer in order to visualize the taken path on Google Maps. A PCB was designed for an all in one device.
Skills Needed
- C
- Electrical Design
- Power Management
- STM32 Arm Cortex M4 Architecture
- I2C/SPI/USART
- Embedded Systems Knowledge
- PCB Design
- Project Management
MNIST Classification
Neural Networks Computer Focused Elective
May 2023 - July 2023
Overview
This project utilized an application called NeuroModeler to classify handwritten digits. Using 70,000 assorted handwritten digits from the MNIST database, the data was split into 60,000 training datasets and 10,000 testing datasets. Characterizing the 28x28 pixel, black and white images in a few ways lead to increasing correlation between the actual images written and the guesses that NeuroModeler provided. Matlab functions were then created from the tool in order to better visualize the model’s precision. It was proved that the NeuroModeler was more accurate when training on higher resolution images. Using the 7x7 images, the NeuroModeler was accurately able to classify 84.24% of the 10,000 images that were used to test on. The model was trained over the course of a few days, moving from the backpropagation algorithm, to conjugate gradient, to the quasi-newton algorithm. I was part of a group of four students who completed this project and a short five page paper was written. The code can be found here.
Skills Needed
- Python
- Neural Network Modeling
- MNIST Data Configuration
- Image Processing
Operational Amplifier Design and Build
Full Semester Lab in Electronics II
January 2023 - May 2023
Overview
Through the semster, we had six labs which built on one another to create a working operational amplifier with a lab partner. A cascode current mirror was designed using ALD1106 and ALD1107 transistors to create an active load amplifier. An active load differential pair was designed as the input stage. A gain stage was created by combining an emitter follower with a common emitter with degeneration. During this process, there were specifications that had to be met such as the differential gain, common mode gain, and common mode rejection ratio. Lastly, amplifier stability and frequency compensation were considered to make sure the specifications for gain and frequency was met. This was a very intensive process and each lab required a report. All labs had to have working simulations using MicroCap, and all circuits used oscilliscopes for testing.
Skills Needed
- Multi Stage Amplifier Design
- Current Mirrors
- Differential Pairs
- Frequency Compensation
- Output Stages
- Oscilliscope
- MicroCap Circuit Simulation
Context Switcher and Shell
Operating Systems Class
January 2023 - March 2023
Overview
The first project in our operating systems class was to create a working shell and context switcher using a STM32H7A3 Nucleo-144 discovery board. The overall steps of how the context switcher works was given by the professor. This proved to be a very complicated task which required low level programming and very challenging C code. Once the context switcher was working, an LED was able to blink while the shell ran. The shell only included the "echo" command but it could have been developed further. This was developed using a Raspberry Pi 4B and was all completed using the command line. STM32 CubeMX, Minicom, ARM GNU Toolchain, OpenOCD and GDB were used during development. The code can be found here.
Skills Needed
- STM32 Arm Cortex M7 Architecture
- In-Line Assembly
- C
- Linux Command Line
- Time Management
- Vim
Weather Station
Embedded Systems
November 2022 - December 2022
Overview
This project was my first embedded systems project and was a huge learning experience. A Raspberry Pi Zero was used with a LCD screen, temperature/humidity sensor and air quality sensor. I was able to run it on battery power and display all current information on the LCD screen. The code was not well organized and could have been improved upon. I got a lot of experience reading from a datasheet and understanding how to interface with a sensor using different protocols. I wrote a report which covered the development process.
Skills Needed
- C
- I2C
- SPI
- Linux
- Memory Management
RISC-V 5 Stage Pipelined Processor
Computer Architecture
September 2022 - December 2022
Overview
This has to be, hands down, one of the hardest but rewarding projects I have been a part of. A partner and I had to design a RISC-V processor in Quartus on an FPGA at the end of the semester. The instruction set architecture had to be followed and most instructions were implemented. A VGA display was used in conjunction to help keep track of the data memory, instruction memory and registers. Out of 9 assembly test programs, we had to pass 5. Our CPU successfully ran 8. The code to the major modules can be found here.
Skills Needed
- Verilog
- Pipelined Architecture
- RISC-V Architecture
- CPU Design
- Time Management
- Team Work
Microcomputer Architecture Labs
January 2022 - May 2022
Overview
Throughout the semester, Keil uVision5 IDE was used to program a STM32L476 discovery board. Different sensors and motors were programmed using both C and assembly. Since this was my first experience with assembly, the code wasn't very clean. The debugger was used heavily and I gained a lot of knowledge completing these labs. The code can be found on my github.
Skills Needed
- Arm Cortex-M4 Architecture
- C
- Thumb-2 Assembly
- Debugging Tools
12 V to 24 V DC Power Supply
Electrical Circuits Lab
January 2022 - May 2022
Overview
This was my first large circuit project which was completed with a partner. The device was required to convert a 12 V DC source to a 24 ± 0.25 V DC output with an AC ripple of less than 2 mVpp. The three major parts of this circuit were a boost converter, an astable multivibrater, and an RC low pass filter. These parts were assembled and built according to calculated, simulated, and experimental results, in order to create a power supply which met the specifications. The final output was 23.95 V DC with an AC ripple of 1.2 mVpp at a frequency of 38.9 kHz. A very large technical report was written at the end of the course.
Skills Needed
- SPICE Circuit Modeling
- MATLAB
- Circuit Analysis
- Oscilliscope
- Technical Writing
Air Density vs. Altitude
Scientific Ballooning
January 2022 - May 2022
Overview
I was in a high altitude ballooning class which entailed constructing a payload for balloon launches. A partner and I decided to measure air density versus altitude. It was not challenging to predict the outcome as it is common knowledge but was really neat to send the payload up over 20 miles and it was a cool proof of concept. A program written in Python on a Raspberry Pi Zero was used to collect the data from a BME280 atmospheric sensor and MTK3329 GPS. The program read the data once per second and then saved it to a file. MATLAB was used to make plots of the data
Skills Needed
- I2C
- Serial
- SPI
- Atmospheric Science
- Python
- C
Pong Game
Sequential Logic Systems
November 2021 - December 2021
Overview
The final project in this class was to create a pong game. My partner and I turned it into a one player, keep the ball alive game. An FPGA board was used as the controller and display. Graphics were a major part and math was used to calculate projection of the ball and the speed on the screen. The major module code can be found here.
Skills Needed
- Verilog
- Quartus
- Modular Design
- VGA Graphics