Hi, I'm Jonathan de Laine

Recent Mechanical Engineering Graduate

AusLogo

Australian citizen and U.S. Permanent Resident (20+yrs)

WorkIcon

Previous Construction and Warehouse Laborer
and Returning Student

Diploma

B.S. Mechanical Engineering | UC Berkeley 2020 | 3.72
A.S. Engineering; Physics; Mathematics | Chaffey College 2018 | 4.0

Looking for Internship/Co-Op and Full Time Positions!
Special Interest in Automotive Industry

Solidworks Icon
Fusion 360 Icon
MATLAB Icon
C++ Icon
Python Logo
Arduino Icon
HTML CSS JS Icon
GitHub Icon
CNC Icon
3D Printer Icon
Website Rough Draft

About this Website

Welcome!
This page was created for two purposes:

  • To serve as a portoflio to market my talents
  • My first venture into version control and Github!

I created this website from scratch in Visual Studio so all functionality, design choices (or lack thereof!), and code written is my own. Feel free to right click anywhere on the page and select "inspect element" if you're curious!
Please bear in mind that this project is continually adapting as I get more familiar with HTML, CSS, and Javascript.

Thanks for visiting!

Portfolio

Click on an image below to expand.

Summary

A full writeup of this project will be completed soon. Below is a link to the presentation I recently gave on this project. This project involves designing a 3Lb. Combat robot completely from scratch and with no prior knowledge. This project highlights my creativity in going about solving tricky design constraints - in this case, the significantly smaller-than-average height of the chassis.

Click through presentation above.

Video

Summary

This project was directly related to a Control of Unmanned Aerial Vehicles class (ME136) at UC Berkeley. The course taught dynamics of aerial vehicles to allow for modeling of control algorithms in laboratory settings. This projet gave experience in working with programming complex control algorithms on a memory-limited microcontroller in C++.

Description of Challenge

The goal for the course was to be able to program our drone to complete a final obstacle course. In our iteration fo the course, our drone was to aotuonmously take off, translate over a hurdle approximately 12cm tall and then land as closely as possible to a final landing target, 1m from the take off location.

Controller Design

The final portion of the laboratory in this course was a challenge of all previous systems implemented into our drone. In order to complete the objective, a height estimator, horizontal position, and horizontal velocity estimater were already implemented onto the drone using an IMU, and a distance light sensor. Throughout testing, our drone proved to be capable of holding angles programmed.

To complete the challenge, additional state estimators had to be implemented to allow for translation and successful completion of the final goal.
In previous testing, we found drift of the drone off course to be a challenge.

This was fixed using the following steps:

  • Balancing of the drone to eliminate center of mass error. In addition to adding mass through tape, careful center placement of the battery was ensured to keep the drone as close to the model produced in C++.

  • Horizontal Position Estimator Implementation.
    Tweaks to the horziontal position estimator formula and matrix allowed us to improve drifting behavior. This estimator, although allowing for position control, did not allow us to have any control over the velocity of the drone. Therefore, feedback was done in the controller to allow us to estimate velocity to improve behavior of the flight.

    Block Diagram of Control Scheme. Pink box highlights controller additions.

  • Horizontal Velocity Estimator.
    By implementing a velocity estimator through feedback, we could effectively set a constraint on the travel speed of the drone. For the sake of the challenge, the drone was programmed to travel at 1m/s, as it was found the drone could complete the challenge effectively before sensor noise became a damaging factor.

Important to implementing the control scheme shown above was experimenting with Feedback constants. Process described below:

The time constant for roll rate = 0.03: This number was chosen after experiments with the given value (Constant = 0.04) was found to be detrimental. By changing to 0.03, we found the behavior of the drone to drift less with faster roll response. Values below 0.03 were tested and found to be detrimental as the roll was too erratic.

The time constant for roll angle control: 0.3: This change was also done after experimenting with different values than the default values provided by the laboratory course material. By changing from the default (Value = 0.12) to 0.3, we found the vehicle to track the target speed of 1m/s more effectively. Further, this change was also made to control drift. We found this change provided more stable and consistent travel behavior in experiments.

Final Result

Initial test of the vehicle on competition day were shaky. Small changes to the balance of the drone and alignment had large effects on the distance of the drone from the final landing area. The drone's control schemes were subject to drift due to sensor noise. We also experienced changing behavior due to battery charge. Shown below is the final result of our best trial on competition day. Our best result was among the closest in the course with the drone landing roughly 12cm away from the final target.

Obstacle Roughly 12cm Tall

Final distance: 12cm

Summary

Utilizing Message Query Telemtery Transport (MQTT) connectivity and an ESP32 microcontroller, this cat feeder was designed to allow the user to remotely dispense food and check food level remaining in a cat food bowl. This project was created as a final project for my "Internet of Things" course at UC Berkeley. See the video below to see the product in action!

Description

This project was the final portion of my "Electronics for the Internet of Things (IOT)" course at UC Berkeley for the Fall 2019 Semester. The goal of the project was to combine what you had learned in the class to create an exciting IoT application which we were to build, and demonstrate as a group. The project had to meet four (4) functionality criteria:

  1. Sensing - acquire information from the "real world" such as environmental parameters, motion, location, etc.
  2. Actuation - acting on the environment with motors, switches, light, sound, etc.
  3. Computing - Using data gathered from sensors to control actuation and send and get data from the cloud.
  4. Communication - Communicate wirelessly

Electromechanical Detail

Tools Used

  • Laser Cutter
  • 3D Printer

Parts List

Mechanical
  1. Plywood Panels
  2. 3D Printed Impeller
  3. 3D Printed Funnel
Electrical
  1. ESP32 - Used in "computing" and "communication"
  2. Nema 17 Stepper Motor - Used in "actuation"
  3. L298N Stepper Motor Driver
  4. Ultrasonic Distance Sensor - Used in "sensing"
  5. 5V Speaker (Unused)

Prototype and Assembly

All pieces of the structure were made of plywood cut on laser cutter designed to slot together like puzzle pieces.
Time lapse shown below of front engraving.

CAD Prototype CAD 3D Funnel CAD Impeller

Impellor (Right image) resides inside funnel assembly (images below) and attaches to the stepper motor with a shaft coupler.

Images

Outside of Feeder
Back of Feeder
Feeder Electronics
Feeder Impeller

(Top-Left): Front of Cat Feeder and ultrasonic sensor
(Top-Right): Backside of Cat Feeder and Nema17 Stepper Motor
(Bottom-Left): Inside of Cat Feeder showing L298N Motor Driver and ESP32
(Bottom-Right): Inside of Cat Feeder Funnel showing Impellor loaded with Apple Jacks Cereal

Software

  • Telegram Icon Telegram
  • Arduiino Icon Arduino
  • SOLIDWORKS Icon SOLIDWORKS

To handle the communication criteria of the project, I chose to use the popular messaging app Telegram. I chose Telegram as the platform as native support for "Telegram Bots" which survey the Telegram API and execute actions based on input. A Telegram bot was set up to interact with the user and give notifcations when food was dispensed or to notify the user of food level in the bowl.
As both the ESP32 and the Bot were subscribed to the same messaging app, we were able to communicate wirelessly to our ESP32 to issue commands, acting as an MQTT.

All code was written in the Arduino environment. A special library "UniversalTelegramBot.h" was utilized to connect the ESP32 to Telegram.

Prototypes for the structure of the project and STL files used for 3D printing were all produced in SOLIDWORKS.

Image of UI
UI Image

Note: In the code above we also included the ability for our feeder to play music! Unfortunately we did not have enough memory storage on the ESP32 to support this natively. Eventually the music playing capability was abandoned.

Results and Lessons

The final grade received on this project was a 95/100 resulting in a solid A. 5 points were deducted due to a jam of "cat food" during the final demonstration of our project.
This project helped to solidify some of the shortcomings of additive manufacturing. The shaft used to attach our 3D Printed impeller faced large cantilevered forces that were not adequately handled and thus eventually led to failure of the part.
In the future, a bearing will be used to held support the impeller's shaft and prevent excessive stress on the part.

Summary

This project was one of the first I was involved in at UC Berkeley. Presented in our Three-Dimensional-Modeling course, the goal of this project was to produce a fully 3D printed wind turbine to compete against other groups in the following categories:

  1. Maximum power produced using customized turbine profile
  2. Deflection of the structure under 1kg loading
  3. Total weight of structure
  4. Cost of material

Scoring Breakdown

Final results for this project were based on the following scoring rubric:

  1. Power - Total power (in Watts) produced by the turbine when connected to a potentiometer. (35%)
  2. Deflection - Total deflection (in mm) with 1kg of mass applied to top of tower. (30%)
  3. Weight - Total mass of the tower and motor. (20%)
  4. Meeting specs and Creativity (15%)

Bonus points (5% each) were awarded to teams with:
a) highest power generation
b) highest stiffness to weight

Mandatory Criteria

  • Distance from top of platform to bottom of motor shaft: 16.00±1/16 in.
  • Volume of ABS printed should not exceed 18.0in³
  • Minimum of two parts in tower assembly
  • Diameter of area swept by blade must not exceed 6.0in
  • Radial symmetry with respect to center of the lower platform
  • Minimum three contact points

Turbine Blade General Turbine Cross Sections

I took charge of designing the turbine blade sketch profiles.
Using scientific journal articles I discovered that the most effective airfoil pattern used in wind turbines was the NACA 4412 airfoil. Using an Excel sheet, I scaled the profile to follow a logarithmic change in cross-section area along the blade as recommended by several academic papers.
Images
(Top): Final Blade Model and Cross-sectional sketch profiles of blade segments.
(Bottom) NACA4412 Airfoil.

NACA4412 Airfoil Upper Tower Lower Tower

The tower used followed closely the design our group created in sketches at the beginning of the assignment. We took inspiration from classical trussed structures such as a farm windmill to produce a strong foundation with minimal material.

Slight modification of the models shown to the left were made to remove the necessity of support material. This change involved printing a single face 4 times to glue together in final assembly.
Images
(Left): Top half of tower where motor sits. (Right): Bottom half of tower. Supports top.

Deflection Test

The testing rig shows a depth gauge being used to measure deflection of the tower when successive 100g weights being hung off the tower.

1st Place

Results
Our tower ended up with a deflection of 1.02mm of deflection under a 1kg lateral loading. Due to the low volume of our tower, this result meant that we received a bonus 5% points to our final score as our tower had the highest stiffness to weight ratio.

Power Test

The testing rig shows a depth gauge being used to measure deflection of the tower when successive 100g weights being hung off the tower.

The blade attached to our tower produced the highest max rpm at 8020RPM with 25 MPH wind speed.

Summary

This project was the final portion of the Mechanical Engineering curriculum under COVID-19 style restrictions. All UC Berkeley Mechanical Engineering students must take "Mechatronics Design" - a capstone course wherein the knowledge gained over the entire undergraduate curriculum is intended to be used. Under COVID restrictions, this course's typical semester-long project was condensed into a "mini-project" to be more equitable to students without machine shop access at home.

As a big-time electronic music fan, I wanted to take this opportunity to make a "wow!" inspiring light show.

Requirements and Writeup

For this project I chose to follow the first or two prompts given to us: "Rough Physical Prototype at Home"

For this prompt I was asked to create a product for my own use that could be for learning and entertainment or a useful widget.
This prompt had two specific requirements:

  1. A Mechanical Part (e.g., housing and/or mechanisms)
  2. A circuit with sensors and actuators

To achieve this, I designed and 3D printed a housing to satisfy the mechanical portion and included an ESP32, a MOSFET and LED strip to serve as an actuator, and a microphone and temperature sensor to act as sensors. Additionally, I also included a cooling fan as another actuator.
Below is the full writeup for the project, containing all details of the project including photos, a circuit diagram, finite state machine diagram, descriptions, and all code written.

Summary

One of the more light-hearted and well received projects I have been a part of. This project was an end-of-semester showcase project with the prompt "adding an extra functionality to an iPhone." This special iPhone case has an integrated squirt gun functionality with easily removable water tank for refilling. Under this project I was the head CAD modeling designer responsible for designing the iPhone case, water tanks, and sliding-to-snap fit mechanism for the tank.

Design

As I was in charge of all CAD for this project, I will focus here primarily on the design process and challenges faced.

List of Components

In total, this project consists of 5 3D printed parts:

  1. Phone Case
  2. Water Tank
  3. Squirt Nozzle
  4. Nozzle Cover
  5. Trigger for nozzle
exploded view

Design Process

iphone X case schematic

Case

The natural first step for the design of this project was to construct a CAD model of an iPhone X case. Shown to the left is the engineering drawing for the final product that became the foundation for the remaining more difficult portions of the project. The drawing seen results from a combination of digital calipers to measure my iPhone, Apple's online documentation, and trial-and-error. The variance between 3D prints meant that this portion of the project was particularly tricky and required many prints.

many printed cases

Case Prototypes

The image on the left highlights the difficulty in producing tight fits using 3D printed technology. Although all cases on a macro scale appear similar, millimeter changes to important dimensions like width, height, fillet radius, chamfers, and modifications to the "arms" holding to the front of the phone were made until adequate fit was achieved.

The "Calculator Cover" Slide/Snap Fit

Of particular importance to this project was what I called the "calculator cover" fit between the refillable water tank and the case. This part of the project was by far the most challenging part of this project. With 3D printed tolerances, many iterations were required to produce both a case and tank that would allow for this motion to function as intended.

Steps to Reproduce the Fit

Tank Rails

1. Rails

As I wanted to reproduce the motion seen in my graphing calculator, I spent a significant amount of time measuring and inspecting the rails from my calculator cover. By reproducing this design I could implement it onto the back of the case where the tank was expected to fit.

Water Tank

2. Water Tank

After the rails were designed, I moved to designing the water tank. Initially printed as a hollow container, I later changed the design to have a separately printed lid such that the 3D printer would not need any support material. As this part would need to interface with the rails on the case, I used SOLIDWORKS' mold function and imprinted the negative of the rails into the sides of the tank.

Rails on Case

3. Attach Rails to Tank

This portion was quick and just required joining bodies in SOLIDWORKS.

Iterate, iterate, iterate!

Case Iterations
Tank Iterations

A majority of my time spent on this project was spent making millimeter-scale changes to the width of the tank design to produce the desired behavior. As the timeline progressed, this part of the project became increasingly stressful as the deadline approached. As each print took several hours (3+) to complete, I was frustratingly reminded of the limitations of additive manufacturing in its present state.

Success!