Giter VIP home page Giter VIP logo

samoklava's Introduction

samoklava

An autogenerated split 36 key keyboard

Disclaimer

This is an early experimental prototype. Please do not rely on the autogenerated files and double check them manually before sending them off to a PCB fab. The author and other random strangers on the internet have been able to produce working keyboard prototypes from this repo; this does not mean that everything will work every time.

The author(s) waive(s) responsibility for any damage or regulatory violations caused by using this software (see license). Please consult your local regulations around radio frequencies and what's allowed for DIY projects in your country.

left right
left right

A 5x3 split keyboard with 3 thumb keys. There is nothing unique about the keyboard layout. It's inspired by Corne and Kyria, and has the exact number of keys needed for the Miryoku layout.

The interesting thing about this keyboard is that it's a declarative design:

  • Layout is declared using Ergogen. New: no fork needed!
  • The build system uses Ergogen to translate YAML to a KiCad PCB and plate files for FR-4 fab or laser cutting
  • uses kicad-automation-scripts and FreeRouting to automatically route the traces on the PCB
  • uses KiKit to render PCB previews (see top of this file) and production-ready Gerber files

Features

  • A slider switch for battery for wireless Promicro clones (tested with nice!nano); the slider can be shorted with a jumper if CONFIG_ZMK_SLEEP is preferred.
  • Wired operation with QMK should be possible but is not tested; TRRS footprints are included and routed. The pinout is identical with a five-column Corne sans the RGBLEDs.
  • Reset switches are easily accessible. The footprints used are the same as on the Corne.

How to

If you would like to modify this:

  • fork it
  • change config.yaml to your liking
  • push your changes; the build.yml GitHub Workflow will pick it up, autoroute and generate Gerbers, all in a zip file. See https://github.com/soundmonster/samoklava/actions
  • or:
    • make sure to have Docker CLI and NodeJS installed
    • run make setup clean all
    • check the output folder for KiCad PCBs and Gerbers

See the workflow or the Makefile for more details. See my ZMK config for a suggested keymap.

samoklava's People

Contributors

cub-uanic avatar soundmonster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

samoklava's Issues

Simplify - remove diodes?

Thanks for this project - it looks amazing. I'm new to building keyboards so I have some newbie questions. I'm currently building my first (Ferris Sweep, choc soldered directly to the board). I'd like to customize this to to my finger locations and build one for use with QMK.

Questions -

  • I'd like to simplify this as much as possible. Is it possible to remove the diodes? I have tried commenting out that section in the YAML file, or commenting it out and changing the "choc_hotwsap" to: from =column_net to =row_net but neither results look right to me.

  • choc_hotswap means that I solder these and then just push in the switches, right? In that case, how do the switches stay in? Do I need a case for this too to hold it together? Can you advise how I might change this to solder the switches directly to the board?

Small modifications causing autorouting to time out

I made some relatively small changes to the yaml file (stagger, spread, shift), and now autorouting is timing out. Did I do something unexpected/wrong?

Yaml changes:
https://gist.github.com/tmelz/fcc14a363c52034a2a6e3d7aaf06551f/revisions

Autorouting timeout
https://github.com/tmelz/samoklava/runs/5532704678?check_suite_focus=true

There are lots of warnings in the output like
--FRCLI--WARN--There were only 6.0 changes in the last 20 passes, so it's very likely that autorouter can't improve the result much further. It is recommended to stop it and finish the board manually.

License of the project?

Good evening,

This is a excellent project! Thanks for sharing it and encouraging others to fork it. I noticed that this project didn't have license attached to it. I was wondering if you could add a open source License to the repo.

Thanks

Ensure pinout compatibility with Cradio shield in ZMK

Current pinout is probably workable but not compatible with Corne and similar other keyboards. This means that the prebuilt Cradio shield from ZMK can't be used without modification. Change pinout to be identical for

  • rows and columns
  • TRRS

standoff size

Hello, I really like this project.

Sorry if this is a stupid question, I'm curious if you could provide the size of standoffs and screws that you use when building the full case

My guess is:

  • 3 layers of 1.6mm, perhaps you use different?
  • thickness of hotswap sockets ~1.85mm

= 6.65mm

Do I need the standoffs to go through the 3 layers, or do the screw threads go through the outer layers?

Perhaps this could be added to the README

Thanks

pcbdraw fails when running Docker locally

I'm on OSX, running the repo from a clean checkout of what's currently main HEAD d5f78f6

When I get to this step of make setup clean all

 docker run -w /board -v /Users/readwl/workspace/keyboards/magellan:/board --rm yaqwsx/kikit:v0.7 pcbdraw --style builtin:oshpark-afterdark.json output/routed_pcbs/board.kicad_pcb output/routed_pcbs/board-front.png

I get this output/error:

Traceback (most recent call last):
  File "/usr/local/bin/pcbdraw", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/dist-packages/pcbdraw/pcbdraw.py", line 793, in main
    board_cont.append(get_board_substrate(board, style, not args.no_drillholes, args.back))
  File "/usr/local/lib/python3.8/dist-packages/pcbdraw/pcbdraw.py", line 445, in get_board_substrate
    process(container, f, os.path.join(tmp, svg_file), colors, boardsize)
  File "/usr/local/lib/python3.8/dist-packages/pcbdraw/pcbdraw.py", line 329, in process_board_substrate_base
    clipPath.append(get_board_polygon(extract_svg_content(read_svg_unique(source))))
  File "/usr/local/lib/python3.8/dist-packages/pcbdraw/pcbdraw.py", line 277, in get_board_polygon
    elements.append(SvgPathItem(svg_element.attrib["d"]))
  File "/usr/local/lib/python3.8/dist-packages/pcbdraw/pcbdraw.py", line 52, in __init__
    raise SyntaxError("Only paths with absolute position are supported")
SyntaxError: Only paths with absolute position are supported

Researching this error seems to point to an old version of kikit, but upgrading the image from 0.7 to 1.x seems to do away with the pcbdraw command, so I'm at a loss for what to do. I see that the Github action passed pretty recently so I assume this is something about my environment. Any help would be appreciated!

Error: Unexpected key "include_keys" within field "pcbs.top_plate"!

I ran the build.sh script locally (with ergogen locally). Unfortunately it failed too (#22) with

> ergogen samoklava.yaml

Ergogen v3.1.2 CLI

Interpreting format: YAML
Preprocessing input...
Calculating variables...
Parsing points...
Generating outlines...
Extruding cases...
Scaffolding PCBs...
Error: Unexpected key "include_keys" within field "pcbs.top_plate"!
    at exports.assert (C:\Users\Thomas\AppData\Roaming\npm\node_modules\ergogen\src\as
sert.js:12:15)
    at Object.exports.unexpected (C:\Users\Thomas\AppData\Roaming\npm\node_modules\erg
ogen\src\assert.js:35:9)
    at Object.exports.parse (C:\Users\Thomas\AppData\Roaming\npm\node_modules\ergogen\
src\pcbs.js:243:11)
    at Object.process (C:\Users\Thomas\AppData\Roaming\npm\node_modules\ergogen\src\er
gogen.js:84:27)
    at C:\Users\Thomas\AppData\Roaming\npm\node_modules\ergogen\src\cli.js:58:29
    at Object.<anonymous> (C:\Users\Thomas\AppData\Roaming\npm\node_modules\ergogen\sr
c\cli.js:126:3)

This is also evident when pasting the yaml into webversion of ergogen.

Perhaps this is what's causing #21 but we're not seeing the ergogen error. The build script finished with the same XIO error...

XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":601282374" after 11 requests (8 known processed) with 0 events remaining.

i'm constantly hitting his error whenever I try to use the github action to autobuild the kicad file. I'm using the yaml file generated from https://ergogen.cache.works/ . As a test I tried using the sweep-like(minimal) yaml file as well as my own design and it all ends up with the below issue.

Please let me know if the stack below is useful

Run ./.github/actions/export-dsn
/usr/bin/docker run --name soundmonsterkicadautomationscriptslatest_9a3df0 --label 72882e --workdir /github/workspace --rm -e INPUT_PCB_FILE -e INPUT_DSN_FILE -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e GITHUB_STEP_SUMMARY -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true --entrypoint "/bin/sh" -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/samoklava/samoklava":"/github/workspace" soundmonster/kicad-automation-scripts:latest  "-c" "mkdir -p $HOME/.config/kicad ;
cp /root/.config/kicad/* $HOME/.config/kicad ;
/usr/lib/python2.7/dist-packages/kicad-automation/pcbnew_automation/export_dsn.py output/pcbs/board.kicad_pcb output/pcbs/board.dsn
"
Unable to find image 'soundmonster/kicad-automation-scripts:latest' locally
latest: Pulling from soundmonster/kicad-automation-scripts
124c757242f8: Pulling fs layer
9d866f8bde2a: Pulling fs layer
fa3f2f277e67: Pulling fs layer
398d32b153e8: Pulling fs layer
afde35469481: Pulling fs layer
84c890a4c945: Pulling fs layer
c2d270e31686: Pulling fs layer
44b62cfa4727: Pulling fs layer
ee39436fdbef: Pulling fs layer
cd840ecddeb7: Pulling fs layer
ae65f875717a: Pulling fs layer
398d32b153e8: Waiting
afde35469481: Waiting
84c890a4c945: Waiting
c2d270e31686: Waiting
44b62cfa4727: Waiting
ee39436fdbef: Waiting
cd840ecddeb7: Waiting
ae65f875717a: Waiting
9d866f8bde2a: Verifying Checksum
9d866f8bde2a: Download complete
124c757242f8: Verifying Checksum
124c757242f8: Download complete
fa3f2f277e67: Verifying Checksum
fa3f2f277e67: Download complete
398d32b153e8: Verifying Checksum
398d32b153e8: Download complete
84c890a4c945: Download complete
afde35469481: Verifying Checksum
afde35469481: Download complete
44b62cfa4727: Verifying Checksum
44b62cfa4727: Download complete
cd840ecddeb7: Verifying Checksum
cd840ecddeb7: Download complete
124c757242f8: Pull complete
ae65f875717a: Verifying Checksum
ae65f875717a: Download complete
9d866f8bde2a: Pull complete
fa3f2f277e67: Pull complete
398d32b153e8: Pull complete
afde35469481: Pull complete
84c890a4c945: Pull complete
c2d270e31686: Verifying Checksum
c2d270e31686: Download complete
ee39436fdbef: Verifying Checksum
ee39436fdbef: Download complete
c2d270e31686: Pull complete
44b62cfa4727: Pull complete
ee39436fdbef: Pull complete
cd840ecddeb7: Pull complete
ae65f875717a: Pull complete
Digest: sha256:6aef0d06c62b0e9859b1f3c869f329bf7b156fc360e0076c687827ca62e57d27
Status: Downloaded newer image for soundmonster/kicad-automation-scripts:latest
INFO:util.ui_automation:Waiting for pcbnew window...
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":601282374"
      after 11 requests (8 known processed) with 0 events remaining.
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/kicad-automation/pcbnew_automation/export_dsn.py", line 100, in <module>
    export_result = run_export(args.kicad_pcb_file, args.output_file, args.record)
  File "/usr/lib/python2.7/dist-packages/kicad-automation/pcbnew_automation/export_dsn.py", line 64, in run_export
    window = wait_for_window('pcbnew', 'Pcbnew', 10, False)
  File "/usr/lib/python2.7/dist-packages/kicad-automation/util/ui_automation.py", line 99, in wait_for_window
    raise RuntimeError('Timed out waiting for %s window' % name)
RuntimeError: Timed out waiting for pcbnew window

Diodeless version

Maybe "issue" is bit of a strong term here.
But since this is a purely wireless focussed build. Would it not be better to generate it as a wireless version. With 36 keys and no trrs connection you have exactly the right number of pins to use a diodeless layout.

Repository not found

$ make setup clean all
npm ERR! code 128
npm ERR! An unknown git error occurred
npm ERR! command git --no-replace-objects ls-remote ssh://[email protected]/mrzealot/maker.js-dist.git
npm ERR! ERROR: Repository not found.
npm ERR! fatal: Could not read from remote repository.

Update mounting hole locations

Mounting holes are off since the update to Ergogen 3.1.0.

  • Update mounting hole locations
  • Update mounting hole radii
  • Remove warnings from the README

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.