├── docs ├── .nojekyll ├── CNAME ├── favicon.ico ├── _images │ ├── nice.png │ ├── pinout.png │ ├── nicenano.jpg │ └── schematic.png ├── _navbar.md ├── assets │ └── nice_nano_bootloader-_s140_6.1.1.zip ├── README.md ├── _sidebar.md ├── nice!nano │ ├── pinout_schematic.md │ ├── faq.md │ ├── README.md │ ├── troubleshooting.md │ └── getting_started.md ├── wireless_firmware │ ├── zmk.md │ ├── bluemicro.md │ └── README.md └── index.html ├── README.md └── LICENSE /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | docs.nicekeyboards.com -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nice-Keyboards/nice-keyboards-docs/HEAD/docs/favicon.ico -------------------------------------------------------------------------------- /docs/_images/nice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nice-Keyboards/nice-keyboards-docs/HEAD/docs/_images/nice.png -------------------------------------------------------------------------------- /docs/_navbar.md: -------------------------------------------------------------------------------- 1 | - [Home](/) 2 | - [nice!nano](/nice!nano/) 3 | - [Wireless Firmware](/wireless_firmware/) 4 | -------------------------------------------------------------------------------- /docs/_images/pinout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nice-Keyboards/nice-keyboards-docs/HEAD/docs/_images/pinout.png -------------------------------------------------------------------------------- /docs/_images/nicenano.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nice-Keyboards/nice-keyboards-docs/HEAD/docs/_images/nicenano.jpg -------------------------------------------------------------------------------- /docs/_images/schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nice-Keyboards/nice-keyboards-docs/HEAD/docs/_images/schematic.png -------------------------------------------------------------------------------- /docs/assets/nice_nano_bootloader-_s140_6.1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Nice-Keyboards/nice-keyboards-docs/HEAD/docs/assets/nice_nano_bootloader-_s140_6.1.1.zip -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Notice 2 | 3 | New documentation can be found at https://nicekeyboards.com/docs. This repo can still be used to report issues or offer recommendations, however, the content will not be updated here. 4 | 5 | ## Nice Keyboards Docs 6 | 7 | This repository is the home of the documentation for all Nice Keyboards products and software. 8 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # ![Nice Keyboards](_images/nice.png) 2 | 3 | Welcome to the documentation for all of Nice Keyboards' products. 4 | 5 | [Join the Discord](https://discord.gg/CHd6hUy) for more immediate support, but please read the documentation first. 6 | 7 | ## Pages 8 | 9 | - ### [nice!nano](/nice!nano/) 10 | - ### [Wireless Keyboard Firmware](/wireless_firmware/) 11 | -------------------------------------------------------------------------------- /docs/_sidebar.md: -------------------------------------------------------------------------------- 1 | - [Home](/) 2 | - nice!nano 3 | - [Overview](/nice!nano/) 4 | - [Getting Started](/nice!nano/getting_started) 5 | - [Pinout & Schematic](/nice!nano/pinout_schematic) 6 | - [Troubleshooting](/nice!nano/troubleshooting) 7 | - [FAQ](/nice!nano/faq) 8 | - Wireless Keyboard Firmware 9 | - [Summary](/wireless_firmware/) 10 | - [ZMK](/wireless_firmware/zmk) 11 | - [BlueMicro](/wireless_firmware/bluemicro) 12 | -------------------------------------------------------------------------------- /docs/nice!nano/pinout_schematic.md: -------------------------------------------------------------------------------- 1 | # Pinout 2 | 3 | ![Pinout](../_images/pinout.png) 4 | 5 | ### To further clarify: 6 | 7 | - P0.04 (AIN2) is used to read the voltage of the battery via ADC. It can't be used for any other function. 8 | - P0.13 on VCC shuts off the power to VCC when you set it to high 9 | - This saves on battery immensely for LEDs of all kinds that eat power even when off 10 | 11 | # Schematic 12 | 13 | ![Schematic](../_images/schematic.png) 14 | -------------------------------------------------------------------------------- /docs/wireless_firmware/zmk.md: -------------------------------------------------------------------------------- 1 | # ZMK Firmware 2 | 3 | ## Overview 4 | ZMK is a new, MIT-licensed firmware built on top of the [Zephyr RTOS](https://www.zephyrproject.org/) that is "wireless first". It is still in the early stages, but has working functionality for a large portion of use cases. 5 | 6 | ### [Website](https://zmkfirmware.dev/) 7 | ### [FAQ](https://zmkfirmware.dev/docs/faq/) 8 | ### [Getting Started](https://zmkfirmware.dev/docs/user-setup) 9 | ### [Discord](https://zmkfirmware.dev/community/discord/invite) 10 | -------------------------------------------------------------------------------- /docs/wireless_firmware/bluemicro.md: -------------------------------------------------------------------------------- 1 | # BlueMicro Firmware 2 | 3 | ## Overview 4 | BlueMicro firmware is the recommended firmware for the nice!nano. It's built specifically for wireless boards using the same chip as the nice!nano. 5 | 6 | ## Get Started 7 | Out of the sake of not having outdated docs, I will instead point towards the official BlueMicro firmware docs. 8 | 9 | ### [Documentation](http://bluemicro.jpconstantineau.com/#) 10 | 11 | ### [GitHub](https://github.com/jpconstantineau/BlueMicro_BLE) 12 | 13 | ## Notes 14 | - The BlueMicro firmware supports much more than just the nice!nano, so you must remember to specify the breakoutboard type in the board definition. Details for this will be in the BlueMicro documentation. 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Nick Winans 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/wireless_firmware/README.md: -------------------------------------------------------------------------------- 1 | # Wireless Keyboard Firmware 2 | 3 | Firmware is an extremely important part of a keyboard. Custom wireless keyboards are still in infancy, so firmwares (while very much usable!) are still heavily being worked on. You may be wondering "why isn't it supported in QMK?". You can read why [here](/nice!nano/faq?id=qmk-firmware-support). 4 | 5 | 6 | ## Options 7 | 8 | - ### [ZMK](/wireless_firmware/zmk) - Recommended 9 | - ZMK is an extremely promising firmware with a wireless first approach and permissive licensing 10 | - Pros: 11 | - Well designed board system leveraging Zephyr RTOS 12 | - Best-in-class power usage 13 | - Extremely easy to set up with no local build environment required 14 | - Supports much more than just the nRF52 including many ARM wired keyboards 15 | - USB support 16 | - Cons 17 | - Understanding the board system may take some time for those used to other firmwares 18 | - ### [BlueMicro](/wireless_firmware/bluemicro) - Recommended 19 | - BlueMicro is an easy to set up firmware for nRF52 chips utilizing Arduino 20 | - Pros: 21 | - Based on Arduino, which some may be familiar with 22 | - Reliable wireless connection between halves 23 | - Cons: 24 | - No USB support 25 | - Higher power usage 26 | - Locked into the nRF52 ecosystem 27 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Nice Keyboards Documentation 6 | 7 | 11 | 15 | 19 | 20 | 21 |
See the updated documentation pages: https://nicekeyboards.com/docs
22 |
23 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/nice!nano/faq.md: -------------------------------------------------------------------------------- 1 | # FAQ 2 | 3 | ### Will the nice!nano work on x keyboard? 4 | 5 | Probably. Almost every Pro Micro based keyboard should work with the nice!nano. Limitations would be around height of the board (fitting a battery underneath will make the entire module + battery 6mm tall when hotswapped for example) and running at 3.3V rather than 5V, which shouldn't be much of an issue. Tested on the Lily58, Semaphore, and Kyria so far. 6 | 7 | !> The nice!nano will *NOT* work with the Gherkin or Helix unless you don't connect the RAW pin to the board. 8 | 9 | ### How is the nice!nano powered/how do the split boards power each other? 10 | 11 | They don't charge each other, each has an individual Li-Po battery connected to it via 2 extra pins at the top of the board (called B+ and B-). 12 | 13 | ### How do you charge the nice!nano? 14 | 15 | The nice!nano has a Li-Po charger built in that uses the USB-C port to charge the Li-Po at a rate of 100mA. 16 | 17 | ### How long does the nice!nano last on battery? 18 | 19 | This is highly dependent on the battery size and features of the keyboard. With no extra OLEDs or LEDs, my Lily58 lasts a couple weeks on a 110mAh battery. It charges back up in an hour and can be used while charging. 20 | 21 | ### Does the nice!nano work over USB? 22 | 23 | Yes, but not every firmware supports it. 24 | 25 | ### QMK firmware support? 26 | 27 | This is complicated. Nordic's nRF52 line has some licensing issues with its SDK making it not possible to be upstreamed to the main QMK repo. Instead, we rely on other firmwares like [ZMK or BlueMicro](/wireless_firmware/) that offer a great deal of functionality with full legality and wireless focus. 28 | 29 | ### Can I get more information on nRF52840 hardware? 30 | 31 | Joric's nRFmicro wiki is an amazing resource to get some basic and advanced information on the nRF52 line in terms of keyboards: https://github.com/joric/nrfmicro/wiki 32 | 33 | ### How is this different from the nRFMicro or BlueMicro? 34 | 35 | The nRFmicro is extremely similar to the nice!nano. The main difference is depending on the version of the nRFMicro, the power system would be slightly different from the nice!nano. From a usability standpoint, very little is different. The nice!nano exposes more pins and is thinner than older versions of the nRFMicro. The biggest difference is that the nice!nano is assembly ready, so they can be mass produced more easily than the nRFMicro (hence the GB). The BlueMicro is basically the same story except for the nRF52832 versions don't support USB. 36 | 37 | ### Do you still need a TRRS jack? 38 | 39 | No, there's a connection via BLE between the two boards. The master reports back the keystrokes of both sides. 40 | -------------------------------------------------------------------------------- /docs/nice!nano/README.md: -------------------------------------------------------------------------------- 1 | # nice!nano 2 | 3 | ![nice!nano](../_images/nicenano.jpg) 4 | 5 | The nice!nano is a Pro Micro replacement development board offering BLE using the nRF52840 chip. It has the same pinout as the Pro Micro meaning it will work with almost any Pro Micro keyboard. The nice!nano also has a 3.7V lithium battery charger on board as well as a software level switch to cut off power to LEDs, which can eat 1mA each even when off! 6 | 7 | Check out [**FAQs**](/nice!nano/faq) if you have more questions. To get your nice!nano up and running check out [**Getting Started**](nice!nano/getting_started). 8 | 9 | If you're a hardware designer interested to learn more about the pinout and schematic check out the [**Pinout and Schematic**](nice!nano/pinout_schematic). 10 | 11 | ## Recommended batteries and sockets 12 | 13 | To run your nice!nano wirelessly, you need a battery. In specific, you need a 3.7v rechargeable lithium battery that is at least 100mAh large (you can probably get away with 80mAh). Note when choosing a battery, the recharge rate is 100mA, so a 2,000mAh battery will take 20 hours to charge. **The overall recommended battery for most low power (no LEDs or extra power sinks) is the 301230 battery**. This battery is 3mm thick and fits underneath a socketed nice!nano very nicely. These can be found on some vendors' stores as well as on AliExpress. 14 | 15 | It's also highly recommended that you socket your nice!nano. It offers ease of access to the battery and makes debugging your keyboard so much easier. In short, it's a small investment to save you lots of time and possibly money in the future. **Standard female machine pin sockets are recommended to go along with the 301230 battery**. In most cases the battery should fit underneath the socketed nice!nano. Be weary o flipped nice!nanos _with_ pins and other parts underneath (you don't want to puncture your battery!). You can find these on AliExpress all over the place. 16 | 17 | ## Bootloader 18 | 19 | The nice!nano uses the [Adafruit nRF52 Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader). Currently it doesn't have a release of the nice!nano bootloader yet, so please use this one I've generated and put on every nice!nano thus far. [Click here to download](//docs.nicekeyboards.com/assets/nicenano_bootloader_v1.hex). 20 | 21 | ## Specifications 22 | 23 | - Mid mount USB-C port making the board a 3.2mm total thickness (thinner than a Pro Micro) 24 | - nRF52840 chip on board with 1MB of Flash and 256KB of RAM 25 | - Adafruit Bootloader loaded offering DFU flashing as well as flashing via UF2 storage (similar to dragging a file to a flash drive!) 26 | - Programmable indicator (blue) LED as well as a charging indicator (orange) LED 27 | - Battery voltage reader to report battery percentage to main device 28 | - External power can be cut off using an on board MOSFET saving power from LEDs (each can draw 1mA when off!) 29 | - 5 extra GPIO pins (3 thru holes and 2 pads on the back) offering a total of 23 GPIO pins 30 | - 3.3V out of the VCC pin to power external features 31 | - 32.768 kHz oscillator on board for real-time clock capabilities 32 | - Clean design with matte black solder mask, immersion gold plating, and Tg 170 FR4 for durability (picture coming soon) 33 | -------------------------------------------------------------------------------- /docs/nice!nano/troubleshooting.md: -------------------------------------------------------------------------------- 1 | # Troubleshooting 2 | 3 | Troubleshooting your nice!nano often falls on to the firmware of choice, but a few directly hardware related items can be addressed. 4 | 5 | ## My nice!nano seems to be acting up and I want to re-flash the bootloader 6 | 7 | ### I can still get into the existing bootloader over USB 8 | 9 | In this case you can most likely re-flash the bootloader using [`adafruit-nrfutil`](https://github.com/adafruit/Adafruit_nRF52_nrfutil). Here are the steps you'll want to follow: 10 | 11 | 1. Follow the installation section [here](https://github.com/adafruit/Adafruit_nRF52_nrfutil#installation). Most likely you'll just need to run `pip3 install --user adafruit-nrfutil`. 12 | 2. Download the [DFU pkg of the nice!nano bootloader](//docs.nicekeyboards.com/assets/nice_nano_bootloader-_s140_6.1.1.zip). 13 | 3. Connect your nice!nano and put it into the bootloader using a double-tap reset. 14 | 4. Run the following command in your terminal: 15 | 16 | ```shell 17 | adafruit-nrfutil --verbose dfu serial --package nice_nano_bootloader-_s140_6.1.1.zip -p SERIALPORT -b 115200 --singlebank --touch 1200 18 | ``` 19 | 20 | However, replace `SERIALPORT` with your respective serial port name on your OS. 21 | 22 | - On Windows it will be in the format of `COM8`, but the number 8 will depend on what it is in your device manager under serial. 23 | - On MacOS and Linux it will look something like `/dev/ttyS0`, but you'll of course need to double check the exact path name. 24 | 25 | After this runs, you should have your bootloader all re-flashed and fresh. 26 | 27 | ### I can't get into the bootloader at all anymore 28 | 29 | If you can't get into the bootloader anymore, this will mean you'll need a device programmer. You can select one of the two below and use the steps listed. 30 | 31 | #### [J-Link (~\$30)](https://www.amazon.com/Segger-J-Link-EDU-mini-Debugger/dp/B0758XRMTF) 32 | 33 | 1. Plug in your nice!nano over USB 34 | 2. Connect these 4 pins to the nice!nano (use the [pinout](/nice!nano/pinout_schematic) as reference) 35 | 1. VCC/VTref will connect to the VCC pin on the nice!nano 36 | 2. GND will connect to any of the GND pins on the nice!nano 37 | 3. SWDIO will connect to the SWD pin on the back of the nice!nano 38 | 4. SWCLK will connect to the SWC pin on the back of the nice!nano 39 | 3. Download the [bootloader hex](//docs.nicekeyboards.com/assets/nicenano_bootloader_v1.hex) 40 | 4. Download [`nrfjprog`](https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Command-Line-Tools/Download#infotabs) 41 | 5. Run this command in your terminal 42 | 43 | ```shell 44 | nrfjprog -f NRF52 --program nicenano_bootloader_v1.hex --chiperase 45 | ``` 46 | 47 | #### [ST-Link v2 (~\$4)](https://www.aliexpress.com/wholesale?trafficChannel=main&d=y&CatId=0&SearchText=st+link+v2<ype=wholesale&SortType=total_tranpro_desc&groupsort=1&page=1) 48 | 49 | 1. Plug in your nice!nano over USB 50 | 2. Connect these 2 pins to the nice!nano (use the [pinout](/nice!nano/pinout_schematic) as reference) 51 | 1. SWDIO will connect to the SWD pin on the back of the nice!nano 52 | 2. SWCLK will connect to the SWC pin on the back of the nice!nano 53 | 3. Download the [bootloader hex](//docs.nicekeyboards.com/assets/nicenano_bootloader_v1.hex) 54 | 4. Download [`openocd`](https://github.com/xpack-dev-tools/openocd-xpack/releases) 55 | 5. Run this command in your terminal 56 | 57 | ```shell 58 | openocd -f interface/stlink.cfg -f target/nrf52.cfg -c "gdb_flash_program enable" -c "gdb_breakpoint_override hard" -c "init" -c "reset halt" -c "flash write_image erase ./nicenano_bootloader_v1.hex" 59 | ``` 60 | 61 | ## My nice!nano won't connect to my host device over BLE 62 | 63 | Unfortunately there's likely not much you can do from a hardware perspective if you're running into this. This will mostly likely come down to two factors: the firmware you're using and how nicely the host BLE stack works with said firmware. 64 | 65 | Because there's no simple way for me to offer advice on how to fix this, I would instead ask you to reach out to the respective firmware communities to ask for assistance. In general though, I would first test to see if you can connect to your phone over BLE. This will show whether it's a hardware issue or not. In my experience it's never truly been the nice!nano that has hardware issues, so continued work on the firmware side and OS stack side need to occur. 66 | -------------------------------------------------------------------------------- /docs/nice!nano/getting_started.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | This document will guide you through installing your nice!nano and flashing. After following this document, you can move on to the Wireless Firmware page to pick out your software. 4 | 5 | ## Before you start 6 | 7 | Before you install your nice!nano please note these tips/warnings: 8 | 9 | - Do not install sockets or post headers to the B+ or B- pins (top pin on each side) 10 | - If you need to use these pins with your PCB, RAW and GND are the respective equivalents to B+ and B- 11 | - The square post headers that come with the nice!nano cannot be used with the machine sockets 12 | - Use Mill-Max pin legs or diode legs and follow the directions in [installing your nice!nano](#installing-your-nicenano) 13 | - Only use 3.7V rechargeable lithium batteries with the nice!nano. Connecting non-rechargeable batteries is unsafe 14 | - If you choose to solder your battery, use the B+ and B- pins. B+ is for the positive, red wire, and the B- pin is for the negative, black wire. Minimize how long you are holding the soldering iron to the battery. High amounts of heat are dangerous to connect the battery to. 15 | - If you are using a JST connector on the PCB to connect the battery, double or even quadruple check the polarity of the JST connector before plugging it in. Some batteries come with positive on the first pin and some come with negative on the first pin. 16 | 17 | ## Installing your nice!nano 18 | 19 | Installing your nice!nano is almost the same as any other Pro Micro like board. The only difference is related to ignore the B+ and B- pins when adding sockets or headers and **the battery**. It's highly recommended to get your firmware on and functioning before adding the battery. 20 | 21 | If you aren't socketing, you probably want to get the firmware up and running before you even attach the square post headers. You'll want to install the firmware, confirm everything is working, and install your square post headers and battery. 22 | 23 | If you are socketing, you can socket your nice!nano, install the firmware, confirm everything is working, and finally add the battery. 24 | 25 | ### Socketing the nice!nano 26 | 27 | Socketing the nice!nano is *extremely* recommended. It offers ease of access to the battery, helps you if you need to debug your keyboard, and lets you move the board to another keyboard if ever needed. 28 | 29 | For a great guide with pictures check out [40percentclub's guide](http://www.40percent.club/p/socketing-pro-micro.html). 30 | 31 | Socketing steps: 32 | 1. First install the socket into the PCB trying to keep it as straight as possible. 33 | 2. Once the sockets are in, place tape over the top of each side. 34 | 3. Poke holes where each socket hole is into the tape 35 | 4. Place down the nice!nano (to assure alignment, **make sure the B+ and B- pins are not being put into the socket**) 36 | 5. Put MillMax pin legs (or diode legs) into each hole and push all the way down 37 | 6. Solder the legs to the nice!nano (this is where the tape helps, solder wont seep down into the socket and fuse the socket and legs) 38 | 7. Take the nice!nano out by using a pry tool of some sort. Slowly pry back and forth on all sides. 39 | 8. Take away the tape and put the nice!nano back in. 40 | 9. Done! 41 | 42 | ## Flashing, Firmware, and Bootloaders 43 | 44 | One of the great things about the nice!nano is how easy it is to flash the device. To jump into the bootloader all you need to do is double tap reset. You can do this by either double tapping your reset button on your keyboard, or you can double tap RST and GND pins on the nice!nano quickly with tweezers. 45 | 46 | Once you are into the bootloader, connect your nice!nano via USB to your computer if you haven't already. Your nice!nano should now show up in your OS as a USB storage device named "NICENANO". 47 | 48 | Flashing is now as easy as copying a .uf2 firmware file to the storage device. You can do this by copying in the terminal, dragging and dropping it in your file explorer, or however else you copy files to a storage device in your OS. 49 | 50 | Now you may be wondering how to get one of these mystical .uf2 files. You get them by building one of the firmwares available. Checkout the [**Wireless Firmware**](/wireless_firmware/) page to get information on how to configure and build a few different types of firmwares along with some recommendations. 51 | 52 | The bootloader the nice!nano uses is the Adafruit nRF52 Bootloader. You can read more about its features, updating the bootloader, and using DFU to flash firmware on [its GitHub](https://github.com/adafruit/Adafruit_nRF52_Bootloader). 53 | --------------------------------------------------------------------------------