Top Related Projects
Corne keyboard, a split keyboard with 3x6 column staggered keys and 3 thumb keys.
ZMK Firmware Repository
Open-source keyboard firmware for Atmel AVR and Arm USB families
An open source cross-platform USB stack for embedded system
Quick Overview
nRFMicro is an open-source hardware project for creating a compact, low-power Bluetooth-enabled microcontroller board based on the nRF52840 chip. It's designed for use in custom keyboards, wearables, and other IoT projects, offering a small form factor with USB-C connectivity and LiPo battery support.
Pros
- Extremely compact size, suitable for space-constrained projects
- Built-in USB-C connector and LiPo charging circuit
- Compatible with Arduino and CircuitPython environments
- Open-source design, allowing for customization and community contributions
Cons
- Limited availability of pre-assembled boards
- Requires advanced soldering skills for assembly
- Documentation may be challenging for beginners
- Some features (like battery monitoring) require additional components
Getting Started
To get started with nRFMicro:
-
Clone the repository:
git clone https://github.com/joric/nrfmicro.git
-
Review the documentation in the
docs
folder for assembly instructions and pinout information. -
Install the necessary development environment (Arduino IDE or CircuitPython).
-
For Arduino, install the nRF52 board support package and select "Generic nRF52840" as the board type.
-
For CircuitPython, download the latest firmware from the CircuitPython website and flash it to the board.
-
Connect the board via USB and start developing your project using the nRF52840's capabilities.
Note: Detailed instructions for assembly, flashing, and programming can be found in the repository's documentation.
Competitor Comparisons
Corne keyboard, a split keyboard with 3x6 column staggered keys and 3 thumb keys.
Pros of crkbd
- Established and widely adopted split keyboard design
- Extensive documentation and community support
- Versatile PCB design with various switch and LED options
Cons of crkbd
- Wired connection only, limiting portability
- Requires more components and assembly compared to nrfmicro-based designs
Code Comparison
crkbd (QMK firmware):
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G
),
};
nrfmicro (ZMK firmware):
/ {
keymap {
compatible = "zmk,keymap";
default_layer {
bindings = <
&kp TAB &kp Q &kp W &kp E &kp R &kp T
&kp LCTRL &kp A &kp S &kp D &kp F &kp G
>;
};
};
};
The code comparison shows the different firmware and configuration approaches between the two projects. crkbd uses QMK firmware with C-based keymap definitions, while nrfmicro typically uses ZMK firmware with devicetree syntax for keymap configuration.
ZMK Firmware Repository
Pros of ZMK
- More comprehensive firmware ecosystem with broader device support
- Active community development and frequent updates
- Better documentation and user guides
Cons of ZMK
- Steeper learning curve for beginners
- Requires more setup and configuration
Code Comparison
nrfmicro:
#define MATRIX_ROW_PINS { 8, 9, 10, 11 }
#define MATRIX_COL_PINS { 21, 23, 2, 3, 4, 5, 6 }
ZMK:
&kscan0 {
col-gpios
= <&gpio0 8 GPIO_ACTIVE_HIGH>
, <&gpio0 6 GPIO_ACTIVE_HIGH>
, <&gpio0 15 GPIO_ACTIVE_HIGH>
, <&gpio0 17 GPIO_ACTIVE_HIGH>
, <&gpio0 20 GPIO_ACTIVE_HIGH>
, <&gpio0 22 GPIO_ACTIVE_HIGH>
, <&gpio0 24 GPIO_ACTIVE_HIGH>
;
};
nrfmicro is a specific firmware project for nRF52-based custom keyboards, while ZMK is a more comprehensive firmware ecosystem for various wireless keyboards. ZMK offers broader device support and more active community development, but it may be more complex for beginners. nrfmicro is simpler and more focused on specific hardware, making it potentially easier for newcomers to get started with custom keyboard firmware development.
Open-source keyboard firmware for Atmel AVR and Arm USB families
Pros of qmk_firmware
- Extensive support for a wide range of keyboard layouts and hardware
- Large community with frequent updates and contributions
- Comprehensive documentation and tutorials
Cons of qmk_firmware
- Steeper learning curve for beginners
- Requires more setup and configuration for custom keyboards
Code Comparison
nrfmicro:
#define MATRIX_ROW_PINS { 8, 9, 10, 11 }
#define MATRIX_COL_PINS { 2, 3, 4, 5, 6, 7 }
#define DIODE_DIRECTION COL2ROW
qmk_firmware:
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7 }
#define DIODE_DIRECTION COL2ROW
Both repositories use similar pin definitions for keyboard matrix setup, but nrfmicro uses numeric pin identifiers, while qmk_firmware uses port-specific identifiers. This reflects the different hardware focus of each project, with nrfmicro targeting specific nRF52 microcontrollers and qmk_firmware supporting a broader range of hardware platforms.
An open source cross-platform USB stack for embedded system
Pros of TinyUSB
- Broader device support, including multiple microcontroller families
- More comprehensive USB stack implementation
- Active development and larger community support
Cons of TinyUSB
- Steeper learning curve for beginners
- May require more configuration for specific use cases
Code Comparison
nrfmicro:
#include "nrf_gpio.h"
#include "nrf_drv_usbd.h"
void usb_init(void) {
nrf_drv_usbd_init(NULL);
}
TinyUSB:
#include "tusb.h"
void usb_init(void) {
tusb_init();
}
Key Differences
nrfmicro is specifically designed for nRF52 microcontrollers, offering a streamlined approach for these devices. It provides a simpler setup process for users familiar with nRF52 chips.
TinyUSB, on the other hand, is a more versatile and comprehensive USB stack that supports various microcontroller families. It offers a wider range of USB functionalities and device classes, making it suitable for diverse projects.
While nrfmicro may be easier to get started with for nRF52-based projects, TinyUSB provides greater flexibility and long-term scalability for USB implementations across different platforms.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
nRFMicro
- Project wiki: https://github.com/joric/nrfmicro/wiki
- Latest gerbers: nrfmicro-main-gerbers.zip
- iBOM: https://htmlpreview.github.io/?https://github.com/joric/nrfmicro/blob/main/hardware/ibom/ibom.html
- Note kikit-1.0.0 I use is not compatible with newest Kicad 7. Use Kicad 6.0.11 for pull requests.
front | back |
---|---|
Top Related Projects
Corne keyboard, a split keyboard with 3x6 column staggered keys and 3 thumb keys.
ZMK Firmware Repository
Open-source keyboard firmware for Atmel AVR and Arm USB families
An open source cross-platform USB stack for embedded system
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot