Convert Figma logo to code with AI

joric logonrfmicro

A Pro Micro alternative for wireless keyboards

1,422
125
1,422
0

Top Related Projects

5,355

Corne keyboard, a split keyboard with 3x6 column staggered keys and 3 thumb keys.

2,615

ZMK Firmware Repository

Open-source keyboard firmware for Atmel AVR and Arm USB families

4,836

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:

  1. Clone the repository:

    git clone https://github.com/joric/nrfmicro.git
    
  2. Review the documentation in the docs folder for assembly instructions and pinout information.

  3. Install the necessary development environment (Arduino IDE or CircuitPython).

  4. For Arduino, install the nRF52 board support package and select "Generic nRF52840" as the board type.

  5. For CircuitPython, download the latest firmware from the CircuitPython website and flash it to the board.

  6. 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

5,355

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.

2,615

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.

4,836

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

nRFMicro

frontback
frontback