Skip to the content
PCBKitNew board
2 layers47 × 25.4 mmDS2 Addon, the printed circuit board in 3D

Tensile testing machine

Size
47 × 25.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
35
Nets
25
Pads
86
Tracks, vias
131, 14
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
2 Apr 2021
Updated
7 Nov 2026

Overview

DS2 Addon is an open-source printed circuit board by RileyMcCarthy, from the RileyMcCarthy/MaD repository on GitHub. It is a 2-layer board of 47 × 25.4 mm with 35 parts on 25 nets, routed with 131 tracks and 14 vias.

It is built around the ADS122U04IPW. Its parts include 12 capacitors, 10 resistors, 5 connectors and 1 IC.

Main components

1

README

README.md

MaD — Low-Cost Open-Source Tensile Testing Machine

A relatively low-cost (< $4,000), portable, spray-resistant, user-modifiable, open-source uniaxial tensile testing machine designed for low-modulus elastomeric and biologic materials.

📖 Documentation: https://rileymccarthy.github.io/MaD/ · 🚀 Run the control app: https://rileymccarthy.github.io/MaD/app/ (Chrome/Edge)

The full guides — first-time setup, every UI screen with screenshots, the architecture, and developer/reference material — live on the documentation site. This README is the quick map.

Specifications

ParameterRange
Strain Rate0 – 2 m/s
Force Measurement1 – 10 N
Gauge Length10 – 150 mm
Strain Length0 – 500 mm
Data Rate1000 samples/sec

The control app runs in your browser

The control app — Control — is a frontend-only Progressive Web App. There is nothing to install: the browser talks straight to the Propeller 2 over the Web Serial API, and the protocol logic runs as WebAssembly compiled from the same Rust core used by the firmware tooling and the test rig.

Open https://rileymccarthy.github.io/MaD/app/ in Chrome or Edge, connect over USB, and run a test. See the operator quick-start.

Chromium-only: Web Serial and the File System Access API are available only in Chrome/Edge on desktop.

Repository structure

text
MaD/
├── Firmware/MaDCore/        Embedded C for the Propeller 2 (APP/DEV/IO/Library/HAL/HW)
├── Software/
│   └── Control/      Browser control app (Web Serial + WASM) — the app you ship
├── Protocol/                Schema + toolchain + Rust codec crate
│   ├── MaDProtocol.yaml     Single source-of-truth schema
│   ├── rust/                The `protocol` crate — generated Rust codec (SIL workspace member)
│   └── ProtoEmb/            ⎘ submodule → github.com/RileyMcCarthy/protoemb (YAML→C/TS/Rust codegen + runtime)
├── SIL/                     Software-in-the-loop test rig (Rust workspace)
│   ├── embsim/              ⎘ submodule → github.com/RileyMcCarthy/embsim (reusable SIL framework)
│   ├── models/              MaD physics models (gantry, sample, strain gauge)
│   ├── mad-catalog/         MaD's embsim kinds (carrier, add-on, ISS, machine); mad*.toml are the machine's projects
│   └── MaDSim/              The mad-emulator binary; no target runs it, and it retires (MaD #298)
├── Hardware/                KiCad PCB designs (EdgeBoard, DS2Addon)
└── docs/  +  mkdocs.yml     The documentation site

Two components are git submodules (they are standalone open-source libraries): Protocol/ProtoEmb and SIL/embsim. Clone with git clone --recurse-submodules, or run git submodule update --init --recursive in an existing checkout.

How it fits together

A single YAML schema (Protocol/MaDProtocol.yaml) generates the encode/decode code for the firmware (C), the app (TypeScript + WASM), and the test rig (Rust), so every layer agrees on the wire format byte-for-byte. The app and firmware speak this ProtoEmb binary protocol over serial; motion profiles compile to G-code that the firmware plays back from its SD card.

See How it works for the architecture with diagrams.

Quick start

Use the app

Open https://rileymccarthy.github.io/MaD/app/ in Chrome/Edge — no install.

Run the app from source

bash
cd Software/Control
npm install
npm run build:wasm        # compile the Rust protocol core → src/wasm/
npm run generate:proto    # generate the TS codec from the YAML schema
npm run app               # opens your browser; connect via Web Serial

Build the firmware

bash
cd Firmware/MaDCore
pio run -e P2Eval              # build for hardware
pio run -e P2Eval -t upload   # flash a connected board
pio run -e MaDEdge      # image the SIL emulator executes
pio test -e native_test           # unit tests
pio check -e P2Eval --fail-on-defect=medium --fail-on-defect=high  # MISRA (medium+high)

Run the full simulation (no hardware)

bash
cd SIL
make test         # build both P2 images + the workspace, run the Rust test suite
make playground   # the machine's project + the app in a Chrome window on the board's clock
make e2e          # the e2e suite on the machine's project, mad-cosim.toml (SCENARIOS=… for a subset)

Regenerate the protocol

After editing Protocol/MaDProtocol.yaml, regenerate all three targets so they stay in lock-step (the firmware also regenerates its C target on every build):

bash
# from repo root
python3 ./Protocol/ProtoEmb/core/generate.py --schema ./Protocol/MaDProtocol.yaml --target c  --output ./Firmware/MaDCore/src/Generated         --templates ./Protocol/ProtoEmb/core/templates
python3 ./Protocol/ProtoEmb/core/generate.py --schema ./Protocol/MaDProtocol.yaml --target ts --output ./Software/Control/src/protocol/generated --templates ./Protocol/ProtoEmb/core/templates
python3 ./Protocol/ProtoEmb/core/generate.py --schema ./Protocol/MaDProtocol.yaml --target rs --output ./Protocol/rust/src/generated          --templates ./Protocol/ProtoEmb/core/templates

Documentation

If you want to…Go to
Run your first testGetting started
Learn every screenUser guide
Understand the designHow it works
Build & contributeDeveloper guide
Look up the protocol / G-code / formatsReference

To work on the docs locally:

bash
pip install -r docs/requirements.txt
mkdocs serve     # http://127.0.0.1:8000

CI/CD & releases

GitHub Actions builds and tests on every push/PR (.github/workflows/ci.yml) and deploys the docs + app to GitHub Pages (.github/workflows/pages.yml). Releases are cut with version tags:

bash
Software/Control/scripts/release.sh patch --no-tag   # bump package.json, then PR
Software/Control/scripts/release.sh --publish        # tag origin/main as madcontrol-vX.Y.Z
git tag firmware-v1.0.0 && git push origin firmware-v1.0.0   # firmware binaries
git tag hardware-v1.0.0 && git push origin hardware-v1.0.0   # hardware manufacturing files

License

MIT

Parts

35
QtyValueFootprintReferences
9XCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C7, C8, C9, C10, C11, C12
6XResistor_SMD:R_0805_2012MetricR1, R2, R6, R7, R8, R9
30.1uFCapacitor_SMD:C_0805_2012MetricC4, C5, C6
347RResistor_SMD:R_0805_2012MetricR3, R4, R5
1DS2_Addon:LOGOLOGO
110kResistor_SMD:R_0805_2012MetricR10
1A0_bypassJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP1
1A1_bypassJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP2
1A2_bypassJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP3
1A3_bypassJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP4
1ADS122U04Package_SO:TSSOP-16_4.4x5mm_P0.65mmU1
1Analog1Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1Analog2Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ5
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1MCUConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ1
1ReferenceConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4

The 33 most common of 35 parts.

Questions

How big is the DS2 Addon PCB?

It measures 47 × 25.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the DS2 Addon use?

35 parts, built around the ADS122U04IPW. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the DS2 Addon KiCad files?

From the RileyMcCarthy/MaD repository on GitHub, at the commit this page was made from: the board is Hardware/DS2Addon/KICAD/DS2_Addon.kicad_pcb and its schematic Hardware/DS2Addon/KICAD/DS2_Addon.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the DS2 Addon design in my own project?

Its repository states no licence, so its author keeps all rights: ask RileyMcCarthy before reusing the design.

More from RileyMcCarthy/MaD

2
  • 4 layers144.1 × 93.3 mmMaD Edge, the printed circuit board in 3D

    MaD Edge

    RileyMcCarthy/MaD

    Tensile testing machine

    289 parts3
  • 2 layers47 × 25.4 mm00 fanout, the printed circuit board in 3D

    00 fanout

    RileyMcCarthy/MaD

    Tensile testing machine

    31 parts3

Similar boards

  • 2 layers107.3 × 24 mmDualPressure RS422, the printed circuit board in 3D

    DualPressure RS422

    LSDRM/DualPressure-Thermocouple_forVMCGUI

    A customized DAQ board through UART protocol, embeding two pressure sensors and one thermocouple. Has been developed to be used with VMCGUI.

    46 parts
  • 2 layers53 × 24 mmCyclingPowerMeter 2023, the printed circuit board in 3D

    CyclingPowerMeter 2023

    takuhoTech/LagopusSystem-2023

    Avionics for Human-Powered Aircraft, Including Bike Power Meter project.

    35 parts3MIT
  • 2 layers97.2 × 59.1 mmArmLEDsPrototype, the printed circuit board in 3D

    ArmLEDsPrototype

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    35 parts915
  • 2 layers62 × 42 mmMod cell 0 02, the printed circuit board in 3D

    Mod cell 0 02

    Green-bms/SmartBMS

    Open source Smart Battery Management System

    35 parts756
  • 2 layers75 × 26 mmDIY detector electron variant, the printed circuit board in 3D

    DIY detector electron variant

    ozel/DIY_particle_detector

    A mobile low-cost spectrometer for measuring radioactivity and the energy of ionising radiation like alpha particles and electrons

    35 parts558BSD-2-Clause
  • 2 layers45 × 25 mmReCamera Basically Board, the printed circuit board in 3D

    ReCamera Basically Board

    Seeed-Studio/OSHW-reCamera-Series

    reCamera is a series of open-source AI cameras.

    35 parts495Apache-2.0
  • 2 layers160.8 × 24.4 mmHUD VID RCD PANEL, the printed circuit board in 3D

    HUD VID RCD PANEL

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    35 parts431
  • 2 layers75 × 50 mmBackplane tester, the printed circuit board in 3D

    Backplane tester

    dennisss/dacha

    Monorepo for awesome tools/projects/libraries

    35 parts397Apache-2.0