Skip to the content
PCBKitNew board
2 layers284.2 × 131 mmArch 40, the printed circuit board in 3D

An open source 40% columnar stagger keyboard project

Size
284.2 × 131 mm
Copper layers
2
Thickness
1.6 mm
Parts
104
Nets
71
Pads
720
Tracks, vias
1,195, 21
Routed
Yes
KiCad
KiCad 5 (file 20191123)
Created
12 Dec 2019
Updated
20 Mar 2020

Overview

Arch 40 is an open-source printed circuit board by babo, from the babo/arch_40 repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 284.2 × 131 mm with 104 parts on 71 nets, routed with 1,195 tracks and 21 vias.

Its parts include 49 diodes, 49 switches and 1 IC. It belongs with the AVR (ATmega, ATtiny) boards of this library.

README

README.md

Arch 40

assembled_keyboard_1 assembled_keyboard_2

Case Renders:

case_render_1 case_render_2

Switch Plate:

switch_plate_render

40% Ortholinear + Columnar Stagger Keyboard

  • Inspired by the Ergodox, Atreus, Iris, Corne, and probably others

  • Design goals:

    • Efficiency and minimalism of a 40% form factor
    • Ergo benefits of tilted columnar stagger layout
    • Ease of use coming from ANSI style layouts
    • Simplicity of a non-split keyboard
    • Compatability with Ergodox style keysets
    • Compatible with Cherry MX, Alps, and Kailh Choc switches

Assembly:

  • Stacked acrylic layer case, acrylic/metal switch plate
    • Layer dimensions and path lengths are outlined in path_length.md
    • Alternatively, there is a 2-part case in ./cad_files/stl_files/3d_print_case designed to be 3D printed and fastened together with machine screws
  • Can be built with a PCB and microcontroller, or can be handwired with a microcontroller
  • Files for laser cutting by Ponoko/other services in ./illustrator_files and ./inkscape_files
    • ./illustrator_files includes case layer DXF files imported into Adobe Illustrator at 1:1 scale with units in millimeters

      • final_cut_layout.eps is Ponoko's P3 size template with case layers, without plate
        • Use this if you choose to go with a metal plate
      • final_cut_layout_plate.eps is Ponoko's P3 size template with case layers, with plate
        • Use this if you choose to go with an acrylic plate
    • ./inkscape_files includes pdf-compatible Adobe .ai files as well as .SVG files of the case layers and plate


Component list:
  • Acrylic case layers + plate
  • PCB (optional, can be handwired as well)
    • Pro Micro (PCB is designed to use this microcontroller)
    • Teensy2.0 (if handwiring and not using PCB)
  • (49) Cherry MX style switches
  • (1) 2u Cherry style stabilizer
    • Plate-mounted works perfectly with 1.5mm metal switch plate
    • Requires some modification to work properly with 3.0mm acrylic plate
  • Adafruit USB-mini breakout board (or a simple female USB-mini)
  • WS2812B LED strips (optional)
  • (49) 1N4184 diodes
  • M2 Standoffs and screws
    • 5mm screw length
    • 10mm standoff length for use with a 1.5mm metal plate
    • 12mm standoff length for use with a 3.0mm acrylic plate

Case Stack Order:
  1. arch_40_case_layer0
  2. arch_40_plate
  3. arch_40_case_layer2-3
  4. arch_40_case_layer2-3 (repeated)
  5. arch_40_case_layer4
  6. arch_40_case_layer5
  • Note: arch_40_case_layer2-3 is intended to be used twice, it contains the cutout for the USB connection

PCB:
Revision history:
  • rev 0: prototype, designed by ibnuda
  • rev 1: better case fitment, functionally same as rev 0
  • rev 1.1: added support for MX, Alps, Kailh Choc switches

  • QMK files for PCB firmware in ./firmware/qmk_files
  • PCB can be made by sending the zipped gerber files in ./pcb/gerbers/arch_40_rev1.1_gerber.zip to a PCB prototyping service such as JLCPCB
  • Note: The Pro Micro controller needs to be soldered onto the PCB as close as possible, need to remove the spacers on the headers of the Pro Micro

pcb_image

Pro Micro Pinout:
  • Diode direction: row to column
  • Column 0 = ESC key column
  • Row 0 = QWERTY row
text
Rows:              Columns:                            LED:
-----------------------------------------------------------------
r0 : D3            c0 : F4         c6 : B2             vcc : VCC
r1 : D1            c1 : F5         c7 : B6             gnd : GND
r2 : D0            c2 : F6         c8 : B5            data : D2
r3 : D4            c3 : F7         c9 : B4
                   c4 : B1        c10 : E6
                   c5 : B3        c11 : D7
                                  c12 : C6

Handwiring:
Matrix:

matrix

Teensy2.0 Pinout:
  • Diode direction: column to row
  • Column 0 = ESC key column
  • Row 0 = QWERTY row
text
Rows:               Columns:                            LED:
-----------------------------------------------------------------
r0 : F0             c0 : F7         c6 : C6             vcc : VCC
r1 : F1             c1 : B6         c7 : D3             gnd : GND
r2 : F4             c2 : B5         c8 : D2            data : B1 
r3 : F5             c3 : B4         c9 : D1
r4 : F6             c4 : D7        c10 : D0
                    c5 : C7        c11 : B7
Wiring Example:

wiring_example_no_led

Wiring Example With Underglow LED's:

wiring_example_with_led

Firmware Flashing:

PCB Builds:
Linux:
  • The Pro Micro controller can be flashed with avrdude

    • Navigate to the ./firmware directory to flash the arch40firmware_pcb.hex file:

    $ avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 flash:w:arch40firmware_pcb.hex

    • Or to the ./firmware/qmk_files to flash the arch40_promicro_default.hex file

    $ avrdude -p atmega32u4 -P /dev/ttyACM0 -c avr109 flash:w:arch40_promicro_default.hex

  • They are the same keymap, the former was created with Keyboard Firmware Builder, and the latter with QMK

Windows/MacOS:
LED Backlighting:
  • Default firmware arch40firmware_pcb.hex and arch40_promicro_default.hex includes configuration for WS2812B LED backlighting strips
    • The data pin for the LED's is set to pin D2 on the Pro Micro
    • Default 12 LED quantity, 10 backlight brightness levels, variable color hue
    • To change the LED configuration:
      1. The arch40firmware_pcb.json file can be uploaded to Keyboard Firmware Builder and edited/recompiled as desired
      2. The QMK source files can be edited manually in a text editor

Handwired Builds:
text
$ teensy-loader-cli --mcu=atmega32u4 -w -v ./firmware/arch40firmware_hw.hex
LED Backlighting:
  • Default firmware arch40firmware_hw.hex includes configuration for WS2812B LED backlighting strips
    • The data pin for the LED's is set to pin B1 on the Teensy2.0

Note:

  • Kerf of plate and case layers is set to 0.15mm (typical for Ponoko/ Laserboost/ Lasergist)

To-do:

  • Add image of default keymap
Model was created in Solidworks, then exported as STL/DXF. Feel free to use/modify/redistribute.

Parts

104
QtyValueFootprintReferences
49DIODEKeebio-Parts.pretty:DiodeD0-1, D0-2, D0-3, D0-4, D1-1, D1-2, D1-3, D10-1, D10-2, D10-3, D10-4, D11-1, D11-2, D11-3, D12-1, D12-2 +33
48SWITCH_PUSHkeebio_footprints:MX-Alps-Choc-1U-NoLEDSW0-1, SW0-2, SW0-3, SW0-4, SW1-1, SW1-2, SW1-3, SW10-1, SW10-2, SW10-3, SW10-4, SW11-1, SW11-2, SW11-3, SW12-1, SW12-2 +32
4MountingHole_4.3mm_M4_ISO7380MountingHole:MountingHole_4.3mm_M4_ISO7380, , ,
1ARDUINO_PRO_MICROKeebio-Parts.pretty:ArduinoProMicroU1
1SWITCH_PUSHKeebio-Parts.pretty:DiodeSW-RST1
1SWITCH_PUSHkeebio_footprints:MX-Alps-Choc-2U-StabNormal-noled-altSW6-3

Questions

How big is the Arch 40 PCB?

It measures 284.2 × 131 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Arch 40 use?

104 parts. 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 Arch 40 KiCad files?

From the babo/arch_40 repository on GitHub, at the commit this page was made from: the board is pcb/arch_40.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Arch 40 design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers247.7 × 97.7 mmWoagboard, the printed circuit board in 3D

    Woagboard

    hackclub/OnBoard

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

    104 parts915
  • 2 layers141 × 90 mmChirp v2.4-pannel, the printed circuit board in 3D

    Chirp v2.4-pannel

    Miceuz/PlantWateringAlarm

    A soil humidity level sensor based on ATTINY44. Uses capacitive sensing.

    104 parts367
  • 2 layers25.7 × 25.7 mmFPCbreakout2, the printed circuit board in 3D

    FPCbreakout2

    Architeuthis-Flux/JumperlessV5

    The next generation jumperless breadboard

    104 parts332
  • 2 layers147 × 116 mmChrumm, the printed circuit board in 3D

    Chrumm

    sevmeyer/chrumm-keyboard

    Ergonomic monoblock keyboard

    104 parts300
  • 2 layers60.5 × 110 mmBrain core, the printed circuit board in 3D

    Brain core

    shmoergh/moduleur

    Fully analog DIY-friendly modular synth

    104 parts222
  • 2 layers37 × 113.9 mmVCO, the printed circuit board in 3D

    VCO

    nickajeglin/Eurorack-pcbs

    A collection of easy to solder DIY eurorack PCB's

    104 parts208
  • 2 layers127 × 221 mmTs2, the printed circuit board in 3D

    Ts2

    jefftranter/68000

    Code related to the Motorola 68000 microprocessor.

    104 parts133
  • 2 layers74 × 36 mmCh32v305-currentmonitor, the printed circuit board in 3D

    Ch32v305-currentmonitor

    cnlohr/cnhardware

    My dumping grounds for all my kicad projects and random hardware bringup.

    104 parts114