Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
101d83b
Update README.md
jakemcivor Apr 10, 2025
8765edf
Copying over pages files from test repo
bradleywell Oct 28, 2025
6a6f390
Update pages.yml
bradleywell Oct 28, 2025
dd54a49
Update _config.yml
bradleywell Oct 28, 2025
f02dd5f
updated links
bradleywell Oct 29, 2025
866235f
Adding images to screw post and shadow line
bradleywell Oct 29, 2025
d3ed51c
Added snap fit section.
stephandobri Nov 25, 2025
957951f
Update README.md
bradleywell Dec 5, 2025
a016eb9
Adding licensing info to footer
bradleywell Dec 5, 2025
d38edff
Adding more information about how to contribute guide
bradleywell Dec 5, 2025
34d6ec0
Added intro
bradleywell Dec 5, 2025
1713fad
Intro for 3D printing design tips
bradleywell Dec 5, 2025
481098b
minor clarification
bradleywell Dec 5, 2025
00093c4
Fixed capitalization
bradleywell Dec 5, 2025
b1d9e2d
Added info about markdown syntax
bradleywell Dec 5, 2025
015dc67
Update license info
jakemcivor Dec 8, 2025
03e9554
Update README.md
jakemcivor Dec 8, 2025
77f5c47
Create footer_content.md
bradleywell Dec 8, 2025
a1c85ed
trying to add custom footer
bradleywell Dec 8, 2025
6bd7dc5
Update _config.yml
bradleywell Dec 8, 2025
039db87
Update _config.yml
bradleywell Dec 8, 2025
d800a7b
Added footer
bradleywell Dec 8, 2025
0f3e092
Removing hardcoded footer
bradleywell Dec 8, 2025
8adb209
created file to adjust sidebar size
bradleywell Dec 8, 2025
e679081
expanded footer
bradleywell Dec 9, 2025
20b74ea
Update aux_links in _config.yml
jakemcivor Dec 9, 2025
d89dc1b
Revise contribution guide for clarity and inclusivity
jakemcivor Dec 9, 2025
ccb1eed
Revise and expand OpenAT Design Guide introduction
jakemcivor Dec 9, 2025
4ddbbcd
Update _config.yml
bradleywell Dec 9, 2025
a54667f
Removing links
bradleywell Dec 9, 2025
9fce553
Fixed formatting on links
bradleywell Dec 9, 2025
a80ae47
Update _config.yml
bradleywell Dec 9, 2025
8b2d313
Update section links to use markdown and relative URLs
jakemcivor Dec 9, 2025
2963500
Update site title, description, and footer content
jakemcivor Dec 9, 2025
202c58d
Change section headers to use H2 formatting
jakemcivor Dec 9, 2025
889ab73
Update heading levels in contribution guide
jakemcivor Dec 9, 2025
138323f
Testing stl download link
bradleywell Dec 10, 2025
fa980e9
Adding duplicate CAD files
bradleywell Dec 10, 2025
22178d3
updating stl link
bradleywell Dec 10, 2025
f25da35
removed duplicate CAD files
bradleywell Dec 10, 2025
8a78831
Merge remote-tracking branch 'origin/main' into Github-Pages-Version
jakemcivor Dec 16, 2025
fe21e04
Fix title in 12-mm Tactile Switch documentation
jakemcivor Dec 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: 2
updates:
- package-ecosystem: bundler
directory: /
schedule:
interval: daily
allow:
- dependency-type: direct
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: daily
time: "10:00"
open-pull-requests-limit: 10
22 changes: 22 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: CI

on:
push:
branches: ["main"]
pull_request:

jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3' # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
cache-version: 0 # Increment this number if you need to re-download cached gems
- name: Build with Jekyll
run: bundle exec jekyll build
62 changes: 62 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

# Sample workflow for building and deploying a Jekyll site to GitHub Pages
name: Deploy Jekyll site to Pages

on:
push:
branches: ["Github-Pages-Version"]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true

jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3' # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
cache-version: 0 # Increment this number if you need to re-download cached gems
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with Jekyll
# Outputs to the './_site' directory by default
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: production
- name: Upload artifact
# Automatically uploads an artifact from the './_site' directory by default
uses: actions/upload-pages-artifact@v4

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Not sure what a .gitignore is?
# See: https://git-scm.com/docs/gitignore

# These are directly copied from Jekyll's first-party docs on `.gitignore` files:
# https://jekyllrb.com/tutorials/using-jekyll-with-bundler/#commit-to-source-control

# Ignore the default location of the built site, and caches and metadata generated by Jekyll
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata

# Ignore folders generated by Bundler
.bundle/
vendor/
25 changes: 25 additions & 0 deletions 3D_Printing_Design_Tips/3D-Printing-Design-Tips.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: 3D Printing Design Tips
layout: default
nav_order: 2
parent: Home
---

In this section, we have compiled other existing design guides, and provided information on the printers used in determining the tolerances used in this guide, as well as looser tolerances that can be used on older printers.

## Hydra Research Design Rules

Hydra Research has compiled a list of general-purpose design rules for use while 3D printing. These rules are more general than the ones in the Design Elements section of this report, and covers topics such as wall thickness, bridging, overhangs, and filets.

A section that is particularly worth reading is the section on unsupported holes, found [here](https://www.hydraresearch3d.com/design-rules#unsupported-holes). This section covers how to design a hole in an overhanging part. Adding an unsupported circular hole in an overhang typically leads to a poor-quality printed hole, but the design features in this section allow for the holes to be printed without supports and without a drop in print quality.
The full design rules can be found [here](https://www.hydraresearch3d.com/design-rules).

## Rahix Design for 3D-Printing

Rahix has put together a blog post going into detail about design rules for 3D printing. The post covers part orientation, infill and strength, optimizing for print time and material usage, and much more.
The full blog post can be found [here](https://blog.rahix.de/design-for-3d-printing/)

## 3D Printers and Clearances

The printers used in the design of the devices linked in this guide were the Bambu P1S and the Prusa MK4. At the time that this guide was written, these were some of the better 3D printers on the market, capable of repeatedly printing accurate parts.
The standard clearance between parts used in MMC devices is 0.1 mm. This clearance allows parts to fit together easily, without binding or being too loose. For some older printers however, this may be too tight of a fit to reliably assemble well. If that is the case, increasing the clearance between parts to 0.2 or even 0.3 mm may allow the parts to assemble easier.
74 changes: 74 additions & 0 deletions Commercial_Components/12-mm-Tactile-Switch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title: 12 mm Tactile Switch
layout: default
nav_order: 3
parent: Commercial Components
---

# 12 mm Tactile Switch

This is the most common switch used at MMC and is found in most of our assistive switches, as well as several devices with integrated buttons.

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG1.jpg" width="300" style="display: block; margin: 0 auto" alt="A photo of the 12mm tactile switch on a white background">

The tactile switch can be mounted in three different ways, the base mount, the panel mount, and the PCB mount. The PCB mount is done in the PCB design software, and is typically a standard footprint, and is beyond the scope of this report. The base mount is how it is mounted in the assistive switches, while the panel mount is how it was used in the Open Playback Recorder before it was redesigned to use a PCB.

## Purchasing

| **Tactile Switches can be found at these links:** | |
| :--------------------- | -----: |
| Digikey | [12 mm Tactile Switch DigiKey Link](https://www.digikey.ca/en/products/detail/omron-electronics-inc-emc-div/B3F-5050/368377)|
| Mouser | [12 mm Tactile Switch Mouser Link](https://www.mouser.ca/ProductDetail/Omron-Electronics/B3F-5050?qs=dOLq8QE0Pqqk%2FO9x2OpTQw%3D%3D) |

## Base Mount

The base mount switch is currently mounted with an extruded rim around the switch, and a dab of hot glue in the extrusion to hold the switch in place. A better way of mounting it is being searched for, and this section will be updated once it is found. For the switch to fit in this profile, two of the legs on one side, as well as the protrusions on the bottom must be trimmed off. Some devices, like the [Solderless Unibody Switch](https://github.com/makersmakingchange/Solderless-Unibody-Switch/tree/main), keep these second set of legs on and tuck them under a plastic ridge.

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG2.jpg" width="300" style="margin: 0 auto" alt="A photo of a green 3D printed retaining slot for a switch with a dab of hot glue ">
<img src="Photos/Tactile_Switch/Tactile_Switch_IMG3.jpg" width="300" style="margin: 0 auto" alt="A switch with one set of legs snipped off and a cable soldered to the other set of legs">

For this part, there are several primary dimensions. The primary dimensions are:

- **Interior Width:** The width of the square that forms the majority of the rim.
- **Wall Thickness:** The thickness of the walls of the rim.
- **Bottom Opening Width:** The width of the opening on the rim for the switch leads and cable to pass through.
- **Maximum Height:** The maximum height that the rim can be extruded before it gets taller than the switch and interferes with the operation of the switch.
- **Interior Filet Radius:** The maximum radius that can be put on the interior of the square that holds the switch. The radius for the exterior is equal to the interior filet radius plus the wall thickness

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG4.jpg" width="300" style="margin: 0 auto" alt="A sketch of the base mount measurements">

| Tactile Switch Base Mount Measurements | |
| :--------------------- | -----: |
| Interior Width | 13 mm |
| Wall Thickness | 1.6 mm |
| Bottom Opening Width | 8 mm |
| Maximum Height | 3.5 mm |
| Maximum Interior Filet Radius | 1.6 mm |

### Panel Mount

The panel mount method allows a device to mount a button on the device wall. The button typically has a topper of some sort glued onto it, as found on the [Raindrop Switch](https://github.com/makersmakingchange/Raindrop-Switch) or earlier versions of the [Open Playback Recorder](https://github.com/makersmakingchange/Open-Playback-Recorder).

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG5.png" height="300" style="margin: 0 auto" alt="A CAD render of a switch in a panel mount, with the retaining plate in place">
<img src="Photos/Tactile_Switch/Tactile_Switch_IMG6.png" height="300" style="margin: 0 auto" alt="A switch panel mount with the switch removed">
<img src="Photos/Tactile_Switch/Tactile_Switch_IMG7.png" height="300" style="margin: 0 auto" alt="The front of a panel mounted switch">


This mount consists of two separate parts, one far more complicated than the other. The first part is the actual wall of the enclosure with the slot for the button. The button is trimmed like it is in the base mount, with 2 legs and the bottom protrusions removed, then it is pressed into the slot in the wall, with the button itself passing through the hole in the wall. Once the button is in place, the retaining panel is slid into the slot behind it to keep it from coming out, and the pressure of the button holds the panel in place.

The panel is a rectangle 19x15.8 mm in size, with an 8 mm diameter half circle cut out of the middle of the edge of one of the 19 mm sides, with the corners on the other side being rounded with a 4 mm filet. All other corners are rounded with a 1 mm fillet. The profile is extruded to 1.6 mm thickness, and a 0.4 mm chamfer is applied to the edges.

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG8.png" width="300" style="margin: 0 auto" alt="The front of a panel mounted switch">

The panel mount section is made in several steps. Starting with the enclosure wall, create an 8 mm diameter hole, and apply a 1 mm radius filet to the outside to smooth the edges. On the inside surface of the wall, create a 12.6 mm square centered on the hole, with a 1.2 mm chamfer on the corners. Around this square, create a rectangle 22.6 mm wide, and 15.8 mm tall. The rectangle should be centered horizontally, and the top of the rectangle should be 7.9 mm from the center of the circle. It can optionally extend further down past the 15.8 mm mark, down to the bottom of the enclosure if desired, but 21 mm is the minimum to work with the panel created above. Finally, add another rectangle between the top of the center square and the outer rectangle, centered horizontally, and 8 mm wide. Extrude the selected sections 3.5 mm from the enclosure wall.

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG9.png" height="300" style="margin: 0 auto" alt="The first CAD sketch used to create the button slot">
<img src="Photos/Tactile_Switch/Tactile_Switch_IMG10.png" height="300" style="margin: 0 auto" alt="An extrusion showing what parts of the previous sketch get extruded">

After extruding the base, create a sketch on the top face. This sketch will consist of four rectangles, with two on each side, mirrored across the center of the circle. For each side, one rectangle will start at the corner and go 1.6 mm towards the center, then 2.2 mm out away from the base. The second rectangle will start at the outer corner of the first rectangle, and extend 1.6 mm out, and 3.6 mm towards the center. Extrude these two sides down to the bottom of the base.

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG11.png" height="200" style="margin: 0 auto" alt="A second CAD sketch showing what will become the panel rails.">

Finally, at the bottom of the base create a sketch that covers the entire rail and base area (22.6 mm x 7.3 mm) and extrude it down 1.6 mm to cap off the bottom of the rail section. From here, it can be extended to the bottom of the enclosure, or the bottom can be chamfered for printability as normal.

<img src="Photos/Tactile_Switch/Tactile_Switch_IMG12.png" width="300" style="margin: 0 auto" alt="An extrusion that caps the bottom of the rails">
41 changes: 41 additions & 0 deletions Commercial_Components/3.5mm-Audio-Jack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
title: 3.5 mm Audio Jack
layout: default
nav_order: 3
parent: Commercial Components
---

## 3.5 mm Audio Jack

3.5 mm audio jacks are used to allow assistive switches to connect to a device and provide input. There are two different styles of jack commonly used in MMC projects, the PCB mount jack and the panel mount jack. Some projects alternatively use a low mount PCB jack, but the considerations would be the same as the regular PCB mount

<img src="Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG1.png" width="300" alt="A photo of a panel mount 3.5mm jack">
<img src="Photos/3_5_Audio_Jack/3_5_Audio_Jack_IMG2.png" width="300" alt="A photo of a panel mount 3.5mm jack">

For this part, there are several primary dimensions, as well as some design considerations. The primary dimensions are:

- **Panel Mount Passthrough:** The diameter of the hole in the wall of the device to allow the panel mount jack to pass through to the outside of the device. This can also be done using a ¼ inch drill bit.
- **PCB Passthrough:** The diameter of the hole in the wall of the device to allow the PCB mount jack to pass through to the outside of the device.
- **Minimum Cable Spacing:** The diameter of a circle centered on the jack on the outside of the wall that should be kept clear of any other features, including other jacks. This allows enough spacing for any 3.5mm audio cables to plug into the jack without interfering with them. These circles should not overlap, meaning the minimum distance between any two jacks should be equal to this spacing.
- **Maximum Wall Thickness:** The maximum thickness of a wall for the panel mount jack. This is the thickest a wall can be and still allow enough of the threaded part of the jack to stick through for the nut to thread onto and secure the jack.

| 3.5 mm Jack Measurements | |
| :--------------------- | -----: |
| Panel Mount Passthrough | 6 mm |
| PCB Passthrough | 7 mm |
| Minimum Cable Spacing | 12 mm |
| Maximum Wall Thickness | 2.4 mm |

When designing parts that use this component, you need to keep in mind the following design considerations

- **Horizontally printed holes:** Holes in the wall of a print can sag when printed, while this isn't an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle.


## Purchasing

| **3.5 mm Audio Jacks can be found at these links:** | |
| :--------------------- | -----: |
| Panel Mount Digikey | [Panel Mount Jack DigiKey Link](https://www.digikey.ca/en/products/detail/switchcraft-inc/35RAPC2AV/772080)|
| Panel Mount Mouser | [Panel Mount Jack Mouser Link](https://www.mouser.ca/ProductDetail/Switchcraft/35RAPC2AV?qs=I3kMT7EEIOWP5G1fR6CxcA%3D%3D) |
| PCB Mount Digikey | [PCB Mount Jack DigiKey Link](https://www.digikey.ca/en/products/detail/same-sky-formerly-cui-devices/SJ1-3535NG/738699)|
| PCB Mount Mouser | [PCB Mount Jack Mouser Link](https://www.mouser.ca/ProductDetail/Same-Sky/SJ1-3535NG?qs=WyjlAZoYn50jUmKVsqeRJw%3D%3D)|
48 changes: 48 additions & 0 deletions Commercial_Components/5mm-LED.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
title: 5 mm LED
layout: default
nav_order: 3
parent: Commercial Components
---

## 5 mm LEDs

5mm LEDs are the most common method of providing visual feedback in MMC devices.

<img src="Photos/LED/LED_IMG1.png" width="300" style="display: block; margin: 0 auto" alt="A picture of a red 5mm LED">

When adding LEDs to a design, the shape of the opening will change depending on if the LED comes out of a surface that is parallel to the print bed or perpendicular to it. If the surface is parallel to the bed, a circular hole can be used, but if the surface is perpendicular to the print bed, a circumscribed octagon should be used to prevent the top of the printed opening from sagging like a circle would.

<img src="Photos/LED/LED_IMG2.png" height="200" alt="A render of the LipSync Hub with 3 LEDs visible">
<img src="Photos/LED/LED_IMG3.png" height="200" alt="A render of the Open Playback Recorder with 3 LEDs visible">

Spacers have been used in projects such as the [Open Playback Recorder](https://github.com/makersmakingchange/Open-Playback-Recorder) and the [LipSync](https://github.com/makersmakingchange/LipSync) to both hold the LEDs in place while they are soldered and space the LEDs the correct distance from the PCB so that they are flush with the exterior of the device. The spacer in the LipSync has the LED pressed directly against the spacer, facing the same direction as the PCB, while the spacer in the [Open Playback Recorder](https://github.com/makersmakingchange/Open-Playback-Recorder) is a two-tiered, stepped design to allow it to be soldered in place at a certain spacing, then bent 90 degrees to face the side of the device.

<img src="Photos/LED/LED_IMG4.png" height="200" alt="A view of the LipSync PCB with the 3 LEDs held in place with a spacer">
<img src="Photos/LED/LED_IMG5.png" height="200" alt="A view of the Open Playback Recorder top PCB with the 3 LEDs held in place with a spacer and bent 90 degrees">

When designing a spacer, it is important to add a feature to indicate the orientation of the LED. This is normally done with a flat surface to match the flat surface on the cathode (negative) side of the LED. On some spacers, the LED is recessed with the flat on the spacer so that it can only fit in on the correct orientation.

The following are the key dimensions to use when designing for a 5mm LED.

- **Passthrough Diameter:** The diameter of the hole that the LED passes through. If the hole is in the top of the enclosure or prints parallel to the print bed, make this hole a circle. If the hole is in the side of the enclosure or prints perpendicular to the print bed, make the hole a circumscribed octagon.
- **Leg Diameter:** The diameter of the hole in the spacer for the LED legs to pass through.
- **Leg Spacing:** The leg spacing is the space between the centers of each leg of the LED.

| LED Measurements | |
| :--------------------- | -----: |
| Passthrough Diameter | 5.4 mm |
| Leg Diameter | 2 mm |
| Leg Spacing | 2.54 mm (0.1in) |

When designing parts that use this component, you need to keep in mind the following design considerations

- **Overhanging holes**: holes in unsupported overhanging material can print poorly and lead to parts not fitting. Refer to the Hydra Research Design Rules [section on overhanging holes](https://www.hydraresearch3d.com/design-rules#unsupported-holes) for how to design an overhanging hole that can print without support
- **Horizontally printed holes:** Holes in the wall of a print can sag when printed, while this isn't an issue for the threaded part of the hole, this can cause the passthrough hole to not pass through wall. When designing a hole meant to print horizontally, use a circumscribed octagon instead to eliminate the steep overhangs at the top of the circle.

## Purchasing

| **5 mm LEDs can be found at these links:** | |
| :--------------------- | -----: |
| Digikey | Coming Soon|
| Mouser | Coming Soon|
Loading