Skip to content

Latest commit

 

History

History
149 lines (117 loc) · 6.59 KB

intro.md

File metadata and controls

149 lines (117 loc) · 6.59 KB

Introduction

The DMOTE application is a CAD application. It grew out of a single keyboard design (the DMOTE keyboard) and now comes bundled with several different designs and room for your own innovation.

Scope

This file, and all other documentation in this Git repository, concerns the DMOTE application as such, not its individual bundled designs or any firmware. Concrete build guides and other peripheral documents can be found elsewhere:

As for microcontroller firmware, QMK works great and has good documentation. In that project, the DMOTE is filed as a version of the Dactyl-ManuForm here. The Concertina is filed as a stand-alone project here.

From code to print

This repository is source code for a Clojure application. Clojure runs on the JVM. The application produces an OpenSCAD program which, in turn, can be rendered to a portable geometric description like STL. STL can be sliced to G-code and the G-code can steer a 3D printer.

flowchart TD
    Start((Start))
    A["Edit settings<br>(.yaml)"]
    B["Run DMOTE appplication<br>(.clj or .jar)"]
    subgraph OpenSCAD
        C["Preview<br>(.scad)"]
        D["Render<br>(.stl)"]
    end
    E["Slice<br>(.gcode)"]
    F[Print]
    End((End))

    Start --> A
    A --> B --> C
    B -->|"Extra CLI flag<br>(--render)"| D
    D --> E --> F --> End
    C -->|Manual control| D
    C -->|Redesign| A
Loading

OpenSCAD can represent the model visually, but there is no step in this process where you point and click with a mouse to change the design. The shape of the keyboard is determined by your written parameters to the Clojure application. It’s programmatic CAD, without the drafting-table skeuomorph of construction lines.

If this repository includes STL files you will find them in the things/stl directory. Otherwise, here’s how to make your own.

Setting up the build environment

On Debian GNU+Linux, all four are accomplished with apt install clojure leiningen openscad make. The necessary Clojure libraries will be pulled in by Leiningen.

Designing a keyboard

The Clojure application combines configuration details from zero or more YAML files like the ones under config. The process is documented here. Together, the files you select define the shape of your keyboard.

Even if you go with a bundled design, you might want to customize it for your own hands. You won’t need to touch the source code for such a personal fit. Just edit the YAML or add your own file to the configuration.

To start learning how to configure the application one feature at a time, go to the Butty tutorial, here. It starts from scratch and covers a lot of the basics.

Producing OpenSCAD and STL files

There is more than one way to run the application. The easiest and most automated is to call make from your command line, but this will not use any original YAML you have created. Refer to the execution guide for details and alternatives.

After running the application, start OpenSCAD. Open one of the things/scad/*.scad files for a preview. To render a complex model in OpenSCAD, you may need to go to Edit → Preferences → Advanced and raise the ceiling for when to “Turn off rendering”. When you are satisfied with the preview, you can render to STL from OpenSCAD.

Deep changes

If you find that you cannot get what you want just by changing the parameters, you need to edit the source code. If you are not familiar with OpenSCAD, start by experimenting with its native format, writing .scad files from scratch. Then consider starting in src/dactyl_keyboard/sandbox.clj to get familiar with scad-clj. It writes OpenSCAD code for you with helpful abstractions.

If you want your changes to the source code to be merged upstream, please do not remove or break existing features. There are already several include and style parameters designed to support a variety of mutually incompatible styles in the code base. Add yours instead of simply repurposing functions, and test to make sure you have not damaged other styles.

General printing tips

The DMOTE application places each of its outputs in the same coordinate space. If you want to print two parts physically joined together, you can usually achieve this by concatenating the contents of multiple SCAD files.

Accuracy

If you are printing holes for threaded fasteners as part of your design, please note that common FDM printers won’t print threaded holes smaller than M3 with useful accuracy. M4 is a safer bet, but even that may require some manual cleanup, particularly in orientations other than the vertical.

For accuracy problems in general, and especially for problems with threaded holes, consider tweaking the DFM settings documented here, particularly the error-general parameter.

You may prefer tapping threads yourself to work around problems with accuracy. Each of the bolt-properties parameters to the application can take a value for include-threading. If you set this to false, a hole cut for that bolt will be a plain cylinder with the inner diameter (a.k.a. minor diameter) of standard ISO threading. If you have enough plastic in the perimeter of that hole, you can drill it to clean up the print and then tap it.

Wrist rests

If you are including wrist rests, consider printing the plinths without a bottom plate and with sparse or gradual infill. This makes it easy to pour plaster or some other dense material into the plinths to add mass.