Skip to content

Project Development

During Week 1 and Week 2, I thought about my final project idea and started getting used to the documentation process. I will update this page as the idea transforms.

Communication of an initial project proposal

Introduction:

The initial project proposal has the intent of communicating the ultimate Final Project that I will be able to make after completing the 20 weeks of learning leading up to its completion. After discovering the Fab Academy, the prospect of being able make (almost) anything enables me to think of many ideas I have only dreamed of making before this time.

The projects that I complete as I work toward the Final Project will allow me to explore the possibilities, as well as refine the vision of the Final Project.

Scenario:

The greatest attraction that guided me to the Fab Academy was the desire to build a wooden sailboat; something that has been too lofty for my skill set. While this may be too ambitious for the timeframe allotted, a cardboard boat may be a more doable project.

Although a cardboard boat would be feasible, it only produces the first 3 outcomes, without producing the fourth: “Demonstrate competence in design, fabrication and programming of my own fabbed microcontroller PCB, including an input & output device”. To produce the fourth outcome, I propose making a wearable information and navigation device; one that would keep a sailor informed while underway.

While most of the parts will be obtained from existing resources, new and reused, the goal to design and fabricate my own parts instead of buying off-the-shelf components will be accomplished in the wearable information device.

As this work progresses, the projects of each week will be explored while the results will be incorporated into this project; the refinement of the results will insure the development of the carboard boat and wearable device as well as the following deliverables:

  • Slide: 1920 x 1080 pixels with your name, project name, Fab Lab name, a photo/render/sketch of your project, a brief description of what your project is/does
  • ~1 minute (10MB/1080p/720p) video of you explaining your project
  • Separate Final Project page that briefly summarizes your project and
  • BOM (Bill of Materials) for your project
  • Links of page to any weeks that I worked on my final project
  • Links to my presentation.png and presentation.mp4
  • All original design files in the archive (2D & 3D, board files & code) No external hosting of final project files
  • The license I chose
  • Acknowledgement of work done by others

Deliverable:

  • Post the Initial Project Proposal on my Fab Academy site

  • After many iterations in Fab Academy, I have decided to focus on a single project within the original “many projects.” Returning to the challenge, “Demonstrate competence in design, fabrication and programming of my own fabbed microcontroller PCB, including an input & output device”. The Final Project has become a Smart Life Ring.

First, I need to design my own board that will accomplish the concept of this Final Project while keeping it simple ;) I will use the XIAO RP2040 on a board that provides power from an external LiPo battery, takes an input from a temperature sensor, and provide an output from a RGB LED.

Second, I need to design a sphere that will contain the electronics while keeping them safe from the water environment they will be in.

Finally, I will need to design a floatation device that keeps the sphere afloat while making it recoverable.

The following documentation consists of many spirals in Fab Academy.

  • I always wanted to be able to make a cardboard surfboard. Thanks, Mike Sheldrake! Cardboard Surfboards I will use this as a prototype for my final project. I’ll cut a 5‘10” Fish when I get back to the GOCAT Fab Lab.

  • This is a prototype of a cardboard kayak

  • Without access to a substantial laser cutter, I must use my prototype as the final project. I will be skinning the prototype and adding a propulsion pod.

  • I will be placing the propusion pod in the cardboard kayak.

  • This is the base of the propulsion pod.

  • This is the cover with a housing to mount the brushless DC motor used for propulsion.

  • This is my prototype of the distress signal board

  • This is my prototype of the temperature detection and readout

During the Fab Academy 2023 cycle, I had inspiration to further develop this final project during 3D Scanning and Printing week. I knew I would have to 3D print portions of the project, so I made a list:

  • Cardboard Kayak - Computer-Controlled Cutting and Composites

  • Cardboard Propulsion Pod - Computer-Controlled Cutting and Composites

  • Paper Tube Fairing - Elliptoid Vertical and Cylindrical Horizontal - 3D Print and Composites

  • Paper Tube Pontoons with 3D printed bow and stern fairing - Mechanical Design, 3D Print and Composites

  • Rudder Assembly - 3D Print

  • Wooden Cross Members - Computer-Controlled Machining, Composites, 3D Print

  • Brushless DC motor with ESC - 3D Print Mount and Output Devices

  • LiPO Battery - 3D Print Battery Compartment

  • Remote Control - Off the shelf

  • Temperature sensor and remote wearable display - 3D Print, Electronics Design and Production, Input Devices, Output Devices, Molding and Casting, Networking and Communications, Interface and Application Programming

  • Distress signal light - Networking and Communications

I looked on thingiverse for inspiration and found the design by CollegeEngineeringStudent RC Retrieval Pontoon Boat that might work.

I intend to use fiberglass coated paper tubes as the pontoon with the bow and stern as 3D printed parts.

To steer the boat I intend to use a pair of rudders in the airstream mounted on the rear of the propulsion pod. They will be controlled by a servo motor.

Pictures of a mockup of the Final Project idea:

And a video for a better look:

Temperature Sensing to RGB LED Output Prototype

  • In an effort to focus my attention on the Final Project (so I can finish Fab Academy), my Remote Instructor, Pablo gave me an assignment to demonstrate the concept of giving an output (RGB LED) based on an input (temperature sensor). First, I needed to make a QuenTorres swd+uart adapter+hello board - XIAO RP2040 that I made in Electronics Production week to complete this assignment, so I ran out of time. However, I will still finish this assignment as I can.

  • I have a lot of learning material that I have wanted to use, so I will document the learning process here. My plan is to use the SunFounder Sensor Kit V2.0 to become familiar with the concept. I plan to use the RGB LED Module

And the Thermistor Module

  • The tutorial calls for an Arduino, but I plan to use the XIAO RP2040 since my Instructor recommended this. I also have a nice development board to help me do this Seeed Studio XIAO Starter Kit I will be using the development board tutorial by SeeedStudio. So here we go.

  • First, I had to download and install Arduino IDE since this is a newer computer than the one I have been developing with. Seeed Studio gave me the link in the tutorial. Next, I had to add Seeed Studio XIAO to Arduino IDE. Since I have many of their boards, I added all three links as they recommended. It took quite a while to download. All three boards were installed.

  • Next I connected the RP2040 that I used in the QuenTorres board and plugged it into the Seeed Studio XIAO Expansion Board. I followed the instructions, but still received an error as before. What appears to be the RP2040 mounting its uf2 drive showed that drive in the Port list, so I selected that drive and tried again. It worked that time and the Port then went back to COM8. This is the output:

Sketch uses 52260 bytes (2%) of program storage space. Maximum is 2093056 bytes.
Global variables use 10232 bytes (3%) of dynamic memory, leaving 251912 bytes for local variables. Maximum is 262144 bytes.
Resetting COM8
Converting to uf2, output size: 140288, start address: 0x2000
Scanning for RP2040 devices
Flashing F: (RPI-RP2)
Wrote 140288 bytes to F:/NEW.UF2
  • So what I thought was a coding error before, was a misunderstanding on my part. Another learning opportunity! Once I communicated with the board, it worked every time.

  • Now that I am on a roll, I will introduce you to the Seeed Studio XIAO Expansion Board. After I have a handle on the process and the programming, I hope to demonstrate with the QuenTorres.

  • This is the Seeed Studio XIAO Expansion Board.

  • This is the Seeed Studio XIAO Expansion Board pinout.

  • It is a very versatile board and I hope to make something similar in another spiral. For now, I will use it to detect temperature with the thermistor module.

  • As an interface between the modules, I will use a Grove Screw Terminal module

  • This enables me to adapt a 3-wire device to a 4-wire connector without fabricating the cable. I will do this later, but this is for prototyping. Here you have the setup of the Temperature Prototype.

  • This is the code I obtained from the Sensor Kit V2.0 for Arduino. It has been modified/commented out lines to exclude the use of a LCD display. I will only be using the serial monitor to see what is happening.
#include <Wire.h>
// #include <LiquidCrystal_I2C.h>
// initialize the library with the numbers of the interface pins
// LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

#define analogPin  A0 //the thermistor attach to 
#define beta 3950 //the beta of the thermistor
#define resistance 10 //the value of the pull-up resistor


void setup()
{
  // set up the LCD's number of columns and rows: 
  // lcd.init();  //initialize the lcd
  // lcd.backlight();  //open the backlight 
  Serial.begin(9600);
}

void loop()
{
  long a =1023 - analogRead(analogPin);  //read thermistor value 
  Serial.print("Raw reading ");
  Serial.println(a); 
  //the calculating formula of temperature
  float tempC = beta /(log((1025.0 * 10 / a - 10) / 10) + beta / 298.0) - 273.0;
  float tempF = 1.8*tempC + 32.0;
  Serial.print("Centigrade ");
  Serial.println(tempC); 
  Serial.print("Fahrenheit ");
  Serial.println(tempF); 
  Serial.println("");
  delay(1000);

  // // Print a message of "Temp: "to the LCD.
  // lcd.setCursor(0, 0);// set the cursor to column 0, line 0
  // lcd.print("Temp: ");  // Print a message of "Temp: "to the LCD.
  // lcd.print(tempC); // Print a centigrade temperature to the LCD.
  // // Print the unit of the centigrade temperature to the LCD.
  // lcd.write(char(223));
  // lcd.print("C");//print the unit" ℃  "
  // lcd.setCursor(0, 1);// set the cursor to column 0, line 1
  // lcd.print("Fahr: ");
  // lcd.print(tempF);// Print a Fahrenheit temperature to the LCD.
  // lcd.write(char(223)); // Print the unit of the Fahrenheit temperature to the LCD.
  // lcd.print(" F");//print the unit"°F"
  // delay(200); //wait for 100 milliseconds
}
  • First I plug in the USB to the XIAO RP2040 I have mounted on the expansion board.

  • Now I communicate with the XIAO using the Arduino IDE and open the analogRes.ino file.

  • I Click Upload and the file is compiled and uploaded and you can see the output in the Serial Monitor

  • The Fahrenheit temperature is about 73 degrees in my Fab Lab and that is being displayed. When I touch the thermistor for about 30 seconds, you can see the temperature rises to almost 85 degrees.

  • This concludes the test of the thermistor, now on to the RGB module :)

  • Here you have the setup of the RGB Prototype.

  • This is the code I obtained from the Sensor Kit V2.0 for Arduino. It has been modified to use the XIAO RP2040 breakout pins on the expansion board: D7, D8, and D9. You can see the pinout in the image on the page above. I left the comments as is so you can see the difference between the pins used for the XIAO and the Arduino UNO.
/*************************************************************************
 * name:Rainbow LED
 * Function:you can see RGB LED flash red, green and blue first, and then change to red, orange, yellow, green, blue, indigo and purple.  
 * Note:because the RGB module is common anode,so when you want to turn on a color ,you need to set it as 0
 ********************************************************************/
const int redPin = D9;  // R petal on RGB LED module connected to digital pin 11 
const int greenPin = D8;  // G petal on RGB LED module connected to digital pin 10 
const int bluePin = D7;  // B petal on RGB LED module connected to digital pin 9 
/**************************************************************************/
void setup()
{ 
  pinMode(redPin, OUTPUT); // sets the redPin to be an output 
  pinMode(greenPin, OUTPUT); // sets the greenPin to be an output 
  pinMode(bluePin, OUTPUT); // sets the bluePin to be an output 
}    
/***************************************************************************/
void loop()  // run over and over again  
{    
  // Basic colors:  
  color(0,255,255); // turn the RGB LED red 
  delay(1000); // delay for 1 second  
  color(255,0,255); // turn the RGB LED green  
  delay(1000); // delay for 1 second  
  color(255,255,0); // turn the RGB LED blue  
  delay(1000); // delay for 1 second 
  // Example blended colors:  
  color(0,255,255); // turn the RGB LED red  
  delay(1000); // delay for 1 second  
  color(0,128,255); // turn the RGB LED orange  
  delay(1000); // delay for 1 second  
  color(0,0,255); // turn the RGB LED yellow  
  delay(1000); // delay for 1 second  
  color(255,0,255); // turn the RGB LED green  
  delay(1000); // delay for 1 second 
  color(255,255,0); // turn the RGB LED blue  
  delay(1000); // delay for 1 second
  color(255,0,0); // turn the RGB LED  indigo 
  delay(1000); // delay for 1 second
  color(128,255,0); // turn the RGB LED purple  
  delay(1000); // delay for 1 second
}     
/******************************************************/
void color (unsigned char red, unsigned char green, unsigned char blue)     // the color generating function  
{    
  analogWrite(redPin, red);   
  analogWrite(bluePin, blue); 
  analogWrite(greenPin, green); 
}
/******************************************************/
  • First I plug in the USB to the XIAO RP2040 I have mounted on the expansion board.

  • Now I communicate with the XIAO using the Arduino IDE and open the RGB.ino file.

  • I Click Upload and the file is compiled and uploaded and you can see the output in the Output panel.

  • Here you can see the prototype in action :) Pretty colors!
  • This concludes the test of the RGB LED, now on to the making them work together :)

  • This is an exciting time for me because I have never got this far with my Final Project. I ‘m so thankful that my Instructor pointed my in the right direction. Keep it simple and accomplish your goal in small steps. I have been told that before, but I never seem to get it and then I get overwhelmed by all the possible details and potential failures. I guess I get the proverbial Analysis Paralysis :) Well here it goes!

  • Seeing the temperature readout and the RGB LED change was the success I needed to push forward to the goal. I have some programming experience, so I have the confidence to move forward. I recently had a lesson from my Instructor during Global Open Time about programming and really needed that for this project.

  • I started with the analogRes.ino listed above, saved it as analogRes_RGB.ino and copied and pasted the parts I thought I needed to make this work. This is what I ended up with.

#include <Wire.h>
// #include <LiquidCrystal_I2C.h>
// initialize the library with the numbers of the interface pins
// LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

#define analogPin  A0 //the thermistor attach to 
#define beta 3950 //the beta of the thermistor
#define resistance 10 //the value of the pull-up resistor

const int redPin = D9;  // R petal on RGB LED module connected to digital pin 9 
const int greenPin = D8;  // G petal on RGB LED module connected to digital pin 8 
const int bluePin = D7;  // B petal on RGB LED module connected to digital pin 7


void setup()
{
  // set up the LCD's number of columns and rows: 
  // lcd.init();  //initialize the lcd
  // lcd.backlight();  //open the backlight 
  Serial.begin(9600);
  pinMode(redPin, OUTPUT); // sets the redPin to be an output 
  pinMode(greenPin, OUTPUT); // sets the greenPin to be an output 
  pinMode(bluePin, OUTPUT); // sets the bluePin to be an output 
}

void loop()
{
  long a =1023 - analogRead(analogPin);  //read thermistor value 
  Serial.print("Raw reading ");
  Serial.println(a); 
  //the calculating formula of temperature
  float tempC = beta /(log((1025.0 * 10 / a - 10) / 10) + beta / 298.0) - 273.0;
  float tempF = 1.8*tempC + 32.0;
  Serial.print("Centigrade ");
  Serial.println(tempC); 
  Serial.print("Fahrenheit ");
  Serial.println(tempF); 
  Serial.println("");
  delay(1000); //I put this in the loop because it was going too fast to observe
  if (tempF < 79) { //I selected this temperature since the ambient temperature is about 73 degrees
    color(255,255,0); // turn the RGB LED blue  
    delay(1000); // delay for 1 second  
  }
  else if (tempF > 79 && tempF < 83) { //I selected these temperatures since they are in the middle
    color(255,0,255); // turn the RGB LED green  
    delay(1000); // delay for 1 second
  }
  else if (tempF > 83) { //I selected this temperature since it is below the temperature of my maximum 85 degrees
    color(0,255,255); // turn the RGB LED red 
    delay(1000); // delay for 1 second
  }

 color(255,255,0); // turn the RGB LED blue  
 delay(1000); // delay for 1 second 


  //   // Basic colors:  I left this in the program as a reference
  // color(0,255,255); // turn the RGB LED red 
  // delay(1000); // delay for 1 second  
  // color(255,0,255); // turn the RGB LED green  
  // delay(1000); // delay for 1 second  
  // color(255,255,0); // turn the RGB LED blue  
  // delay(1000); // delay for 1 second 

  // // Print a message of "Temp: "to the LCD. I left this here in case I wanted an LCD output
  // lcd.setCursor(0, 0);// set the cursor to column 0, line 0
  // lcd.print("Temp: ");  // Print a message of "Temp: "to the LCD.
  // lcd.print(tempC); // Print a centigrade temperature to the LCD.
  // // Print the unit of the centigrade temperature to the LCD.
  // lcd.write(char(223));
  // lcd.print("C");//print the unit" ℃  "
  // lcd.setCursor(0, 1);// set the cursor to column 0, line 1
  // lcd.print("Fahr: ");
  // lcd.print(tempF);// Print a Fahrenheit temperature to the LCD.
  // lcd.write(char(223)); // Print the unit of the Fahrenheit temperature to the LCD.
  // lcd.print(" F");//print the unit"°F"
  // delay(200); //wait for 100 milliseconds
}

/******************************************************/
void color (unsigned char red, unsigned char green, unsigned char blue)     // the color generating function  
{    
  analogWrite(redPin, red);   
  analogWrite(bluePin, blue); 
  analogWrite(greenPin, green); 
}
/******************************************************/
  • When I first ran the program, I had errors because I didn’t include “the color generating function”. At first I was confused because I thought it was a built-in function, but I was wrong. I looked at the RGB code again and found the function at the bottom. I also need to build intelligence into the code to make decisions (Just like Pablo said!) about the temperature and LEDs. At first, I thought the Case Stucture was the way to go, so I tried the structure and had a lot of trouble due to the floating point, so I used the IF/THEN/ELSE to keep it simple and easier to understand. The result is what you see above.

  • Now I will give it a try. Here you have the setup of the analogRES_RGB Prototype.

  • First I plug in the USB to the XIAO RP2040 I have mounted on the expansion board.

  • Now I communicate with the XIAO using the Arduino IDE and open the RGB.ino file.

  • I Click Upload and the file is compiled and uploaded and you can see the output in the Output panel.

  • Here you can see the output in the Serial Monitor.

  • Here you can see the prototype in action. I just stays red!

  • This concludes the initial test of the analogRes_RGB Prototype, now on to the troubleshooting :)

  • To troubleshoot, I will need a greater difference in temperature. I have 3 cups, too hot, just right, and too cold; left to right, respectively.

  • To troubleshoot, I have placed a bit of code to change color to blue for one second to see what was going on. That was only confusing because the blue LED would come on momentarily and switch back to red.

  • When I touch “too hot” temperature goes to 93-94 degrees, “just right” 79-80 degrees, and “too cold” is 56-55 degrees. I adjusted the setpoints as follows:

  if (tempF < 65) { //I selected this temperature since the coldest temperature was 56-55 degrees
    color(255,255,0); // turn the RGB LED blue  
    delay(1000); // delay for 1 second  
  }
  else if (tempF > 75 && tempF < 85) { //I selected these temperatures since they are in the middle
    color(255,0,255); // turn the RGB LED green  
    delay(1000); // delay for 1 second
  }
  else if (tempF > 85) { //I selected this temperature since it is below the temperature of hottest 93-94 degrees
    color(0,255,255); // turn the RGB LED red 
    delay(1000); // delay for 1 second
  • I expect the light to be blue when it is “too cold”, but it stays red. Further investigation shows that the Red LED wire should be plugged into the D9 pin and the Blue LED wire should be plugged into the D7 pin; they were backwards! I switched them and all was well :)

  • This shows the Serial Monitor when the LED turns Blue for “Too Cold”.

  • This shows the Serial Monitor when the LED turns Green for “Just Right”.

  • This shows the Serial Monitor when the LED turns Red for “Too Hot”.

  • This is the video showing the above results with the long waits in between cut out. Changed the video from 58 seconds to 27 seconds to reduce the size.
  • This concludes the troubleshooting and repairing of the analogRes_RGB Prototype, now on to making the PCB to house this concept :)

W7 Define the Scope and Target Audience

  • Bring your ideas back to earth, what is reachable?

  • This will help you guide them on what is possible based on the time they have to complete the project.

  • Study your context and target audience - For who are you designing?

Deliverables

Final Project

  • Reachable Idea

Since I have accomplished the assignment from my Instructors, this makes the idea reachable. We have dialed in (focused) on an attainable goal; sense temperature of water and light a RGB LED with a board I have designed.

  • Study Context and Audience

I studied the Smart Buoy and there is a lot packed into that little project. I plan to keep this simple ;) I will make a floating device that senses temperature and lights a RGB LED. My audience will have a need for safety while in the water. This Final Project will inform the swimmer and their audience about the safety of the swimmer.

W8 Problem Solving

  • Back to the 5 months left, What problem are you solving?It doesn’t have to solve worldwide problems. Innovativeideas usually solve a problem.

  • Will you be able to complete in 5 months? Phases!

Deliverables

Final Project

  • Problem Final Project Solves

There are many problems to be solved, but the key is to finish Fab Academy so I can get on with helping others succeed. To do this I must keep it simple and accomplish my goals one step at a time without being overwhelmed by the prospect of future steps. My Instructors brilliantly enforced this by making me focus on each step/goal on the way to completion.

Ultimately, I want to teach others to succeed in Fab Academy while accomplishing their dreams for the future, while incorporating boat-centered thinking and designing. Rather than starting with the boat, we should start with surviving in the water. If you can’t swim, you will drown. If you can swim, but you get tired, you will drown. We need a floatation device when we are sinking; whether we can swim or not. This Final Project solves that problem. Just like Global Open Time solved that problem during the COVID crisis.

  • Can you complete in 5 months. Or 2

My Instructors want me to make something that satisfies the requirements of the Final Project in 2 months so I will have time to improve it before I run out of time. That is such a wonderful idea; I give credit to my wise Instructors. Yes, I can complete in 5 months; especially if I complete in 2 months.

  • List Phases

Design thinking is a non-linear, iterative process that consists of 5 phases: 1. Empathize - what do your customers want when in and near the water? 2. Define - safety and enjoyment. 3. Ideate - how do we accomplish this? by providing safety while informing about the environment. 4. Prototype - sense the environment (temperature of water) and inform others (light a RGB LED) 5. Test - Make it and test it till it works.

You can carry out the stages in parallel, repeat them and circle back to a previous stage at any point in the process—you don’t have to follow them in order.

So far, I have been doing this with the guidance of my Instructors. Now I know I can do this!

W9 Define Project and Sketching

  • Last chance to change aspects of your project.

  • Time Management

  • Create a solid structure to develop and create your final project idea.

Deliverables

Final Project

  • Possible Changes

The thought forming after consulting with my Instructors was to make a ball to through in the water, sense temperature, and light a RGB LED based on temperature.

The problem was how to recover the device from the water. I decided on using a life ring with a safety lanyard to hold the device, so it could be recovered after use. This makes the project both informative and useful for water safety.

  • Time Management

I really want to understand and apply Supply Side Time Management. What better time to learn and use this principle of time management!? I have been using Trello for project management, but I need to tweak it so it demonstrates supply side time management.

  • Design Solid Structure of Idea

First, I need to design my own board that will accomplish the concept of this Final Project while keeping it simple ;) I will use the XIAO RP2040 on a board that provides power from an external LiPo battery, takes an input from a temperature sensor, and provide an output from a RGB LED.

Second, I need to design a sphere that will contain the electronics while keeping them safe from the water environment they will be in.

Finally, I will need to design a floatation device that keeps the sphere afloat while making it recoverable.

At the end of this iteration, I protoyped an Output Device for the Final Project. This allowed me to Ideate about the Final Project board design and the connectors I should use.

This pushed me forward to prototyping for the Input Device for the Final Project.

In order to make this happen, I will need to design a board to host the microcontroller and the connections necessary to receive the input and provide the appropriate output. Using the above list of materials, I have made a sketch of the initial concept of the board design.

In parallel with the conceptualizing of the board, I have also been thinking about the global structure of this project. I searched for an example of the globe I envisioned while I ordered a life ring to hold it in the center…I’m sure you noticed the life ring in the W6 User Empathy section ;) The life ring was in my mind’s eye, but making/designing the globe was a challenge. So I used the internet to search in Thingiverse.com for “sphere clear pla” because that was what I wanted and the material I intended to use. I got some really cool results, but the best was the Phillips Hue Globe Diffuser. THAT IS IT! I can work with that! So I researched a little bit. Turns out the author, ApatheticEnthusiasts (Robert Barton), did some research too. He summarized as, “This is a remix using parts from two things: Bottom and Top” Eventually, I ended up with Fusion 360 design files and the method of designing exactly what I need.

This is the image of the design process, complete with the steps in Fusion 360.

This is the internal design that really fits for what I am trying to do.

So I brought the file into Fusion 360, isolated the parts I was interested in, added a torus to represent the life ring, and I am well on my way to saving this Final Project :) More to follow!

At this point in the cycle, rather than duplicating information, documentation of the Final Project will only be on the Final Project page.