Adding dactyl manuform
This commit is contained in:
parent
fadb508671
commit
029a7eb9fc
7 changed files with 237 additions and 0 deletions
36
app/boards/shields/dactyl_manuform/Kconfig.defconfig
Normal file
36
app/boards/shields/dactyl_manuform/Kconfig.defconfig
Normal file
|
@ -0,0 +1,36 @@
|
|||
# Copyright (c) 2020 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
if SHIELD_DACTYLMANUFORM
|
||||
|
||||
config ZMK_KEYBOARD_NAME
|
||||
default "dactyl_manuform"
|
||||
|
||||
# TODO: MOVE TO PARTICLE BOARD
|
||||
config BUILD_OUTPUT_UF2
|
||||
default y
|
||||
|
||||
# TODO: MOVE TO PARTICLE BOARD
|
||||
config FLASH_LOAD_OFFSET
|
||||
default 0x26000
|
||||
|
||||
config BT_CTLR
|
||||
default BT
|
||||
|
||||
config ZMK_BLE
|
||||
default y
|
||||
|
||||
config ZMK_USB
|
||||
default y
|
||||
|
||||
config USB_NRFX
|
||||
default y
|
||||
|
||||
config USB_DEVICE_STACK
|
||||
default y
|
||||
|
||||
# TODO: ADD SUPPORT FOR ZMK
|
||||
# config ZMK_BATTERY_VOLTAGE_DIVIDER
|
||||
# default y
|
||||
|
||||
endif # SHIELD_DACTYLMANUFORM
|
6
app/boards/shields/dactyl_manuform/Kconfig.shield
Normal file
6
app/boards/shields/dactyl_manuform/Kconfig.shield
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Copyright (c) 2020 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
config SHIELD_DACTYLMANUFORM
|
||||
def_bool $(shields_list_contains,dactyl_manuform)
|
||||
|
51
app/boards/shields/dactyl_manuform/README.rst
Normal file
51
app/boards/shields/dactyl_manuform/README.rst
Normal file
|
@ -0,0 +1,51 @@
|
|||
=================
|
||||
Dactyl Manuform
|
||||
=================
|
||||
|
||||
This shield is basing on this project:
|
||||
https://github.com/abstracthat/dactyl-manuform
|
||||
|
||||
-------------------
|
||||
Board
|
||||
-------------------
|
||||
|
||||
I ported the Dactyl Manuform, where instead of using Pro Pico board I picked Particle Xenon.
|
||||
This board is quite cheap and easy to find in many stores.
|
||||
Other supported boards was too pricy or unavailable in my country.
|
||||
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
Bootloader
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
To make it works you need to flash your Particle with:
|
||||
https://github.com/adafruit/Adafruit_nRF52_Bootloader
|
||||
|
||||
Why Adafruit bootloader you may ask?
|
||||
|
||||
* MCUBOOT:
|
||||
This bootloader is hard to use and require installation of quite big amount of tools.
|
||||
* Particle:
|
||||
Default bootloader in other hands, require special version of nrftool and you need to use more then one button to trigger boot mode.
|
||||
It should support binary generated here.
|
||||
* Adafruit:
|
||||
It has all MCUBOOT functionality and also support UF2 binary format.
|
||||
|
||||
Here you can find the step by step tutorial how to flash it.
|
||||
https://docs.particle.io/tutorials/learn-more/xenon-circuit-python/
|
||||
https://learn.adafruit.com/circuitpython-on-the-nrf52/nrf52840-bootloader
|
||||
|
||||
-------------------
|
||||
Building
|
||||
-------------------
|
||||
|
||||
west build -p auto -b particle_xenon -- -DSHIELD='dactyl_manuform'
|
||||
|
||||
-----------------------
|
||||
Flashing with Adafruit
|
||||
-----------------------
|
||||
|
||||
To flash device you need to trigger dfu mode on this bootloader. To do, so double click reset button.
|
||||
|
||||
adafruit-nrfutil dfu genpkg --dev-type 0x0052 --application build/zephyr/zmk.hex dfu-package.zip
|
||||
|
||||
adafruit-nrfutil dfu serial --package dfu-package.zip -p /dev/ttyACM0 -b 115200
|
|
@ -0,0 +1,50 @@
|
|||
/delete-node/ &storage_partition;
|
||||
/delete-node/ &boot_partition;
|
||||
|
||||
adafriut_flash: &flash0 {
|
||||
/*
|
||||
* For more information, see:
|
||||
* http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
|
||||
*/
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
sd_partition: partition@0 {
|
||||
label = "softdevice";
|
||||
reg = <0x00000000 0x00026000>;
|
||||
};
|
||||
code_partition: partition@26000 {
|
||||
label = "code_partition";
|
||||
reg = <0x00026000 0x000c6000>;
|
||||
};
|
||||
|
||||
/*
|
||||
* The flash starting at 0x000ec000 and ending at
|
||||
* 0x000f3fff is reserved for use by the application.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Storage partition will be used by FCB/LittleFS/NVS
|
||||
* if enabled.
|
||||
*/
|
||||
storage_partition: partition@ec000 {
|
||||
label = "storage";
|
||||
reg = <0x000ec000 0x00008000>;
|
||||
};
|
||||
|
||||
boot_partition: partition@f4000 {
|
||||
label = "adafruit_boot";
|
||||
reg = <0x000f4000 0x0000c000>;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
zephyr,flash = &adafriut_flash;
|
||||
zephyr,code-partition = &code_partition;
|
||||
};
|
||||
};
|
|
@ -0,0 +1,16 @@
|
|||
# SPDX-License-Identifier: MIT
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
# enable GPIO
|
||||
CONFIG_GPIO=y
|
||||
|
||||
CONFIG_USE_DT_CODE_PARTITION=y
|
||||
|
||||
CONFIG_MPU_ALLOW_FLASH_WRITE=y
|
||||
CONFIG_NVS=y
|
||||
CONFIG_SETTINGS_NVS=y
|
||||
CONFIG_FLASH=y
|
||||
CONFIG_FLASH_PAGE_LAYOUT=y
|
||||
CONFIG_FLASH_MAP=y
|
27
app/boards/shields/dactyl_manuform/dactyl_manuform.keymap
Normal file
27
app/boards/shields/dactyl_manuform/dactyl_manuform.keymap
Normal file
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Copyright (c) 2020 The ZMK Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include <behaviors.dtsi>
|
||||
#include <dt-bindings/zmk/keys.h>
|
||||
#include <dt-bindings/zmk/bt.h>
|
||||
#include <dt-bindings/zmk/outputs.h>
|
||||
|
||||
/ {
|
||||
keymap {
|
||||
compatible = "zmk,keymap";
|
||||
|
||||
default_layer {
|
||||
bindings = <
|
||||
&kp W &kp E &kp R &kp T
|
||||
&kp Q &kp S &kp D &kp F &kp G
|
||||
&kp A &kp X &kp C &kp V &kp B
|
||||
&kp Z &kp EQUAL &kp MINUS &kp SPACE &kp ESC
|
||||
&kp LGUI &kp BSPC
|
||||
&kp LCTRL &kp LALT
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
51
app/boards/shields/dactyl_manuform/dactyl_manuform.overlay
Normal file
51
app/boards/shields/dactyl_manuform/dactyl_manuform.overlay
Normal file
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Bartosz Nowak
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include <dt-bindings/zmk/matrix_transform.h>
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
zmk,kscan = &kscan0;
|
||||
zmk,matrix_transform = &default_transform;
|
||||
};
|
||||
|
||||
default_transform: keymap_transform_0 {
|
||||
compatible = "zmk,matrix-transform";
|
||||
columns = <5>;
|
||||
rows = <5>;
|
||||
map = <
|
||||
RC(0,1) RC(0,2) RC(0,3) RC(0,4)
|
||||
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4)
|
||||
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4)
|
||||
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4)
|
||||
RC(4,3) RC(4,4)
|
||||
RC(4,1) RC(4,2)
|
||||
|
||||
>;
|
||||
};
|
||||
|
||||
// TODO: Switch form mesh_header to arduino header think of better way
|
||||
kscan0: kscan_0 {
|
||||
compatible = "zmk,kscan-gpio-matrix";
|
||||
label = "KSCAN";
|
||||
diode-direction = "row2col";
|
||||
row-gpios
|
||||
= <&mesh_header 18 (GPIO_ACTIVE_HIGH)>
|
||||
, <&mesh_header 17 (GPIO_ACTIVE_HIGH)>
|
||||
, <&mesh_header 16 (GPIO_ACTIVE_HIGH)>
|
||||
, <&mesh_header 15 (GPIO_ACTIVE_HIGH)>
|
||||
, <&mesh_header 14 (GPIO_ACTIVE_HIGH)>
|
||||
;
|
||||
|
||||
col-gpios
|
||||
= <&mesh_header 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
|
||||
, <&mesh_header 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
|
||||
, <&mesh_header 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
|
||||
, <&mesh_header 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
|
||||
, <&mesh_header 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
|
||||
;
|
||||
};
|
||||
};
|
Loading…
Add table
Reference in a new issue