Isaac Violette

Electrical and Computer Engineering

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
prototype board first revision PCB
Left: STM32L4RB dev board with all peripherals (except microSD) connected and working.
Right: First PCB revision with all hand soldered components. Measurements were not taken correctly so peripherals were hanging off board.
final version of project final version of project
Left: Fully working project with seconf PCB revison. Mounts were used for all slave devices to make a solid device. This is running on lithium ion battery for portability.
Right: This is the data that was recorded to the microSD from a test walk. The data was then input into a python script which turned it into a kml file which is easy to upload to Google Maps. This map is found here.

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
MNIST resolution examples
The original 28x28 pixel image is shown on top followed by 14x14 pixel data and subsequently the 7x7 pixel data. The first row is directly from the MNIST dataset. The following rows were manipulated using a python script to reduce resolution for different classification levels.

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
Simulated circuit
This is an image of the simulated circuit that was created by us in MicroCap.

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
Weather Station
This is the overall "station" I built. It is running off batter power and is reading the temperature.

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
Block diagram of circuit
This is the block diagram of the designed and built circuit.

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
payload
This is the payload that was attached to the balloon and collected data.

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
pong game
This is an image of a test video that shows the board and display behind it. The buttons control the paddle and the ball bounces of the three sides and paddle. Every bounce on the paddle increases the the score on the display by 1.