Final Project

Krypto Support

icon

ABOUT

A support brace with impact-absorbing system and IMU motion tracking, designed to help pets with spinal compression conditions.

DISCIPLINES

3D Design · Electronics · Fabrication · Programming

Presentation

Final Slide

Krypto Support — Final Project Slide

Project Video

Deliberation Process

How I arrived at this idea

This is Krypto

Krypto

1 year old Scottish Terrier diagnosed with Intervertebral Disc Disease (IVDD)

The deliberation process started from a very personal place — my own dog's diagnosis. Watching Krypto struggle with everyday movements made me ask whether fabrication could offer something that didn't yet exist commercially.

Most commercially available braces for pets are either too generic, too rigid, or don't address the specific biomechanical challenge of spinal impact during movement. That double gap — mechanical and diagnostic — became the starting point for Krypto Support.

Ideas I considered before deciding

Option A — Generic pet monitor

Discarded — already exists commercially and doesn't address the mechanical problem of spinal impact.

Option B — Rigid orthopedic brace

Discarded — rigid braces limit natural movement and can cause secondary issues.

Option C — Krypto Support ✓

Selected — addresses both mechanical and diagnostic needs simultaneously.

Inspiration & References

Looking at similar projects helped me understand what was possible and where existing solutions fell short.

Reference board

Why this project matters

IVDD affects a large percentage of certain dog breeds. Most owners manage the condition reactively. Krypto Support aims to shift that toward proactive monitoring, giving veterinarians real movement data rather than relying solely on owner descriptions of symptoms.

What is Krypto Support?

Project overview

Krypto Support is a support brace designed with an impact-absorbing system that helps reduce the stress generated during different movements such as walking, running, and jumping. This system reduces the overall impact received by pets with spinal compression conditions in the hip area.

Additionally, the design incorporates an IMU system to track the pet's daily movements and detect anomalies, allowing this information to be shared with a veterinarian to support better diagnosis and treatment. IMU sensor integration is documented in Week 9 → Input Devices.

Sketching

Initial sketches

The sketching phase was about translating the concept into form — exploring how a brace could wrap around Krypto's body without restricting natural movement, while leaving space for the electronics module. The digital design process is documented in Week 2 → Computer Aided Design.

3D Scanning & Modeling

Scanning Krypto to build the base model

To build a brace that actually fits, I needed accurate geometry. I 3D scanned Krypto to generate a mesh of his body. The full scanning workflow is documented in Week 5 → 3D Scanning & Printing.

3D printing the reference model

With the scan processed, I printed a scaled physical model of Krypto's torso as a maquette for testing form and proportions.

Printed maquette front

Printed maquette — front

Scale model used to test brace fit and pattern proportions.

Printed maquette side

Printed maquette — side

Side view showing the hip geometry used for pad placement.

Pattern Making

From 3D model to flat pattern with masking tape

Wrapping the 3D print in masking tape, then cutting and flattening the tape to get the base pattern pieces. This technique reveals the true 2D geometry of a 3D surface without guessing.

Wrapping

Wrapping the model

Masking tape applied directly over the 3D print.

Cutting tape

Cutting the tape

Pattern pieces cut on the model, then removed and laid flat.

Flat pattern

Flat pattern pieces

Each piece labeled and ready to import digitally.

Taking measurements from Krypto

Real measurements — chest circumference, torso length, hip width — taken directly from Krypto and compared against the tape pattern.

Measurements

Measuring Krypto

Key body measurements taken with a soft measuring tape.

Digitizing patterns in Shapr3D

The flattened tape patterns were traced and redrawn in Shapr3D, where measurements were verified and curves refined.

Shapr3D pattern

Pattern in Shapr3D

Tape shapes traced as closed sketches with exact dimensions.

Laser Cutting the Fabric

Cutting brace pieces on the laser cutter

Laser cutting fabric gives cleaner, sealed edges. Full workflow documented in Week 3 → Computer-Controlled Cutting.

⚡ ParameterValueNotes
MachineCAMFive CO₂60W CO₂ laser cutter
MaterialNeoprene / fabric3mm thickness
Power35–25%
Speed50 mm/s
Passes1Single pass full cut
Air assistONPrevents flare-up on fabric
FocusMaterial surfaceSet Z to top of fabric
File formatSVG / DXFExported from Shapr3D
Setup

Setup

Fabric pinned flat to the cutting bed.

Cutting

Cutting in progress

Laser tracing the pattern outline.

Cut pieces

Cut pieces

Clean edges, no fraying.

PCB Design & Fabrication

Designing the schematic in KiCad 9

XIAO ESP32-C6 + MPU-6050 on a 60×40mm single-layer board. Schematic defines all connections: power rails, I²C lines, TP4056 battery management, decoupling capacitors, and power switch. The full electronics design process is documented in Week 6 → Electronics Design.

Schematic

Schematic

Full schematic showing all component connections.

PCB Layout

PCB Layout

60×40mm single-layer routed board.

Milling the PCB on the xTool F1 Ultra

KiCad Export FlatCAM xTool F1 Ultra Inspect Done
  • 1
    Export Gerbers from KiCad
    Copper layer, board outline, drill file. DRC cleared before export.
  • 2
    Convert with FlatCAM
    Isolation routing toolpaths for copper traces and cutout path for the outline.
  • 3
    Set up the xTool F1 Ultra
    Copper-clad fixed with double-sided tape. Origin set to board corner.
  • 4
    Mill traces & cut outline
    Isolation pass first, then board outline. Inspected with loupe.
  • 5
    Inspect & clean
    Continuity checked with multimeter. Problem areas marked for rework.
⚡ ParameterValueNotes
MachinexTool F1 UltraDiode + IR dual laser
MaterialFR1 copper-clad, 1ozSingle-layer board
Power — trace100%
Speed — trace750mm/s
Passes — trace6
Speed — trace 2450mm/s
Passes — trace 210
Power — outline100%
Speed — outline100mm/s
Passes — cut21
FileG-code via FlatCAMIsolation routing export
Board setup

Board on the xTool bed

Copper-clad fixed and origin set.

Milling

Milling in progress

Isolation pass carving copper traces.

Finished board

Finished board

Cleaned PCB inspected for defects.

Soldering components

Started with smallest SMD parts (capacitors, resistors) and worked up to XIAO ESP32-C6 and MPU-6050. TP4056 module checked for damage before installation — one module found suspect and replaced. The full electronics production process is documented in Week 8 → Electronics Production.

Soldering

SMD soldering

Passive components soldered first under magnification.

Assembled PCB

Fully assembled PCB

All components placed and soldered.

Firmware & Programming

Programming the board in Arduino

Firmware on XIAO ESP32-C6: MPU-6050 data acquisition, complementary filter for pitch/roll, activity/rest detection, spinal angle tracking, lateral asymmetry, restlessness scoring. Hosts a Wi-Fi web app with /datos, /reset, /calibrar from LittleFS. Embedded programming foundations are documented in Week 4 → Embedded Programming. The web interface was developed in Week 14 → Interface & Application Programming.

C++ / Arduinokrypto_support.ino
// ── Krypto Support — Main Firmware ──────────────────────────
// XIAO ESP32-C6 + MPU-6050  |  Fab Academy 2026

#include <Wire.h>
#include <WiFi.h>
#include <WebServer.h>
#include <LittleFS.h>
#include <MPU6050.h>

const char* SSID     = "KryptoSupport";
const char* PASSWORD = "krypto2026";
MPU6050 imu;
WebServer server(80);

float ax_off=0,ay_off=0,az_off=0,gx_off=0,gy_off=0,gz_off=0;
float pitch=0,roll=0,spinalAngle=0;
bool  isActive=false;
unsigned long lastMotionTime=0;
int   postureChanges=0;

void setup(){
  Serial.begin(115200); Wire.begin(); imu.initialize(); LittleFS.begin();
  calibrate();
  WiFi.softAP(SSID,PASSWORD);
  server.on("/datos",handleDatos); server.on("/reset",handleReset);
  server.on("/calibrar",handleCalibrar); server.onNotFound(serveFile);
  server.begin();
}

void loop(){ server.handleClient(); readAndFilter(); detectActivity(); delay(20); }

void readAndFilter(){
  int16_t ax,ay,az,gx,gy,gz;
  imu.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);
  float axF=ax/16384.0-ax_off, ayF=ay/16384.0-ay_off, azF=az/16384.0-az_off;
  float gxF=gx/131.0-gx_off,   gyF=gy/131.0-gy_off;
  float accelPitch=atan2(ayF,azF)*180.0/PI;
  float accelRoll =atan2(-axF,azF)*180.0/PI;
  const float dt=0.02,alpha=0.98;
  pitch=alpha*(pitch+gxF*dt)+(1-alpha)*accelPitch;
  roll =alpha*(roll +gyF*dt)+(1-alpha)*accelRoll;
  spinalAngle=abs(pitch);
}

void detectActivity(){
  bool motion=(spinalAngle>5.0||abs(roll)>5.0);
  if(motion){ if(!isActive){isActive=true;postureChanges++;} lastMotionTime=millis(); }
  else if(millis()-lastMotionTime>3000){ isActive=false; }
}

void calibrate()     { /* average 500 samples at rest */ }
void handleDatos()   { /* JSON: pitch, roll, angle, active, changes */ }
void handleReset()   { /* reset postureChanges */ }
void handleCalibrar(){ /* trigger recalibration */ }
void serveFile()     { /* serve LittleFS files */ }
          

Enclosure & Hardware Design

Designing the PCB enclosure and hip supports

Electronics housing snaps onto the fabric strap, protects the PCB, and allows access to USB-C. Hip supports are anatomical pads to distribute pressure evenly.

PCB enclosure

PCB enclosure design

Press-fit lid with USB-C and switch cutouts.

Hip supports

Hip support pads

Anatomical geometry following Krypto's hip contour.

3D Printing: buckles, enclosure, and hip supports

Buckles

Quick-Release Buckles — ABS

First designed in Week 2 → Computer-Controlled Cutting, refined for final build.

Enclosure

PCB Enclosure — TPU

Press-fit lid with USB-C and switch ports.

Hip supports

Hip Supports — TPU

Flexible pads, 95A shore hardness.

Logo Design

Two versions of the Krypto Support identity

Two logo variants developed at different points for the packaging and web dashboard.

Logo v2

Version 2 — final version for packaging

Logo design timelapse:

Packaging

Box design in Illustrator & visualization in Packdora

Designed in Illustrator, visualized in Packdora, then cut on the laser cutter. Tab-and-slot construction — no glue required.

Packdora

Packdora visualization

3D preview before cutting any material.

Assembled box

Assembled box

Final box from the laser-cut pieces.

Laser cutting the packaging box

⚡ ParameterValueNotes
MachineCAMFive CO₂60W CO₂ laser cutter
MaterialKraft board2mm thickness
Power — cut35%
Speed — cut400 mm/s
Passes1Adjust per board thickness
Air assistONPrevents scorching edges
File formatAI / SVGExported from Illustrator

Vinyl logo cut & application

The final logo was cut in vinyl and applied to the assembled box.

Vinyl cut

Vinyl cut

Logo cut on the vinyl cutter and weeded.

Vinyl applied

Logo applied

Transfer tape used to place the vinyl on the box face.

Photoshoot Model

Stereotomy model for product photography

Physical display model using stereotomy. Geometry prepared in Fusion 360, sliced with Slicer 360 for Fusion into stackable flat sections, assembled into a rigid sculptural form. 3D printing process and settings are documented in Week 5 → 3D Scanning & Printing.

Slicer 360

Slicer 360 sections

Fusion model sliced into flat interlocking layers.

Assembly

Assembly

Sections stacked and glued.

Finished model

Finished model

Used as stand-in for product photography.

Testing

Brace fit test

First fit test on Krypto — buckles, hip pad alignment, gait check. Adjustments made to strap length and pad positioning.

First fitting

First fitting

Brace placed on Krypto to verify fit and buckle alignment.

Gait check

Gait check

Walking test to confirm no gait restriction.

PCB & web app testing

Board powered up with MPU-6050 connected, serial output monitored to verify calibration and filter output. Dashboard accessed from a phone over the ESP32's Wi-Fi AP, confirming real-time updates on /datos and responsive controls. Networking and communication setup is documented in Week 11 → Networks & Communications.

Web dashboard

Web dashboard

Dashboard loaded on a phone over the ESP32's Wi-Fi AP.

Live demo

Real-time data updates and recalibration trigger tested on device.

From sensor data to veterinary report

The web app translates raw MPU-6050 readings into a structured PDF report that a veterinarian can read without interpreting sensor data. Activity level, impact events, spinal angle deviations, and postural asymmetry are converted into clinical language with actionable recommendations.

Krypto Support — Veterinary Report
Patient: Krypto · Scottish Terrier · 1 yr · Owner: Ana
Generated from app · Session date: June 16, 2026
Movement62%
Rest38%
Impacts4
Max angle18°
✓ Physical activity level within expected range for mild IVDD
⚠ 4 high-intensity impacts detected — review play surface
⚠ Left-side postural compensation — follow-up recommended
Maintain jump restriction. Next review in 2 weeks. Adjust NSAID dosage if postural compensation persists.

How the report is generated

The ESP32-C6 firmware accumulates MPU-6050 readings throughout the session — pitch, roll, spinal angle, impact events, and time spent in movement vs. rest. When the user taps "Generate PDF" in the app, those values are sent to the /datos endpoint, interpreted against predefined clinical thresholds, and formatted into a downloadable PDF.

The document converts raw numbers into clinical language: an acceleration peak > 2g is logged as "high-intensity impact", a sustained lateral deviation > 8° is reported as "postural compensation". The veterinarian receives actionable context, not raw sensor output.

Results

🐕

Fit

Fits Krypto's anatomy without limiting gait. Quick-release buckles allow one-handed on/off.

📡

Data

MPU-6050 captures pitch, roll, and spinal angle. Dashboard updates in real time over Wi-Fi.

🔋

Battery

TP4056 allows USB-C charging without removing the electronics module.

Final photos

Final product

Final product

Assembled brace with all components integrated.

On Krypto

On Krypto

Brace worn by Krypto during final testing session.

Packaging

Packaging shot

Complete kit: brace, PCB module, packaging box.

Gallery

A full look at the project photoshoot.

What I would improve

Waterproofing the PCB enclosure — gasket seal on the lid and conformal coating on the PCB. On the firmware side, integrating Firebase Realtime Database for a persistent cloud dashboard accessible by the vet.

Bill of Materials

Components & materials

Everything used to build Krypto Support — electronics, hardware, and fabrication materials.

#ComponentQtyRoleNotes
01XIAO ESP32-C61Main microcontrollerWi-Fi AP + firmware host
02MPU-60501IMU — pitch, roll, accelI²C connection
03TP4056 module1Li-Po battery chargerUSB-C input, 1A charge
04Li-Po battery 3.7V1Power supplySpecify capacity (mAh)
05100nF capacitor (1206)4DecouplingSMD, near power pins
0610kΩ resistor (1206)2I²C pull-upsSDA / SCL lines
07Slide switch1Power on/offMounted on enclosure wall
08FR1 copper-clad board1PCB substrate60×40mm, 1oz copper
09Neoprene fabric~0.5m²Brace body3mm thickness
10ABS filament~50gBuckles only1.75mm
11TPU filament~120gHip support pads + PCB enclosure95A shore, 1.75mm
12Vinyl sheet~A4Logo on packagingAdhesive vinyl
13Kraft board1 sheetPackaging box2mm thickness
14Hook & loop tape (Velcro)~30cmBrace closure25mm wide

Project Files

Download everything

All design files, firmware, and fabrication outputs packed in a single ZIP.

↓   krypto_support_all.zip