Skip to the content
PCBKitNew board
2 layers18.1 × 33.3 mmNrfmicro, the printed circuit board in 3D

Custom mouse using PMW3389 sensor and nRF52840 microcontroller

Size
18.1 × 33.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
50
Pads
137
Tracks, vias
397, 25
Pours
3
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
2 Dec 2024
Updated
30 Apr 2026

Overview

Nrfmicro is an open-source printed circuit board by cotty52, from the cotty52/Mouse repository on GitHub. It is a 2-layer board of 18.1 × 33.3 mm with 25 parts on 50 nets, routed with 397 tracks and 25 vias.

It is built around the E73-2G4M08S1C, AP2112K-3.3 and TP4054, with the AO3407 among its other parts. Its parts include 9 resistors, 4 ICs, 4 connectors, 3 diodes and 2 transistors. It belongs with the AVR (ATmega, ATtiny) and nRF52 and nRF5x boards of this library.

Main components

4

README

README.md

Custom Wireless Mouse

This project contains software and hardware designs for a custom wireless mouse. This is an initial prototype intended for me to learn about hardware design and embedded software development. I combined hardware and software files into one repository for easier management. As of 2026-04-21, the design supports basic mouse functionality, including movement, button presses, and scrolling, and is powered by a 3.7V Li-ion battery, rechargeable via USB-C.

File Structure

text
Mouse/
├── Documents/        # Datasheets, bootloader UF2, 3D models
├── Guide/
│   └── README.md     # New machine setup guide
├── KiCad/            # PCB schematics and layout
└── Software/
    ├── PROJECT_GUIDE.md  # Architecture, task tracking, module reference
    └── ...
  • Documents contains datasheets, reference layouts, and documentation for the nRF Connect SDK and Zephyr project.
  • Guide contains the new machine setup guide (Guide/README.md) and dated snapshots of known-good board/config files.
  • KiCad contains the KiCad project files for the PCB design (schematics, PCB layout, Gerber files).
  • Software contains firmware source, board definitions, and configuration files. See Software/PROJECT_GUIDE.md for details.

Hardware Design

The hardware design is based on the nRF52840 because of its popularity/availability, built in Bluetooth, low power consumption, and integration with the nRF SDK for software development. The PCB was designed using KiCad and currently relies on a nRF52840 nice!nano microcontroller for higher level development in the early stages. The microcontroller includes a USB-C port for charging and firmware flashing, a charging protection circuit, and enough GPIO for this project. The design also includes a PMW3389 optical sensor for mouse movement, which is supported by the nRF SDK and Zephyr.

PCB Images

FullFrontBack

Software Design

The software is developed using the nRF Connect SDK, which is based on the Zephyr RTOS. The nRF Connect VS Code extension is used for development, which provides a convenient interface for firmware development. The base structure is copied directly from the nRF Desktop sample project, which provides a good starting point for developing a Bluetooth mouse. The sample provides support for Bluetooth connectivity, mouse movement, button presses, and scrolling out of the box, with additional features available to be toggled on/off using the Kconfig GUI. The sample also provides sample mouse configurations as well as a PMW3360 driver, which is similar to the PMW3389. These files serve as a reference for the development of custom hardware and application files for the custom mouse.

Current Problems

As of 2026-04-27 there are a couple major issues. The primary issue is the nice!nano board itself. While it was a good microcontroller to get started with this project and to learn about the basics, it was sometimes difficult to work with. Even though there are SWD pads on the back of the board, I could not get it to work with my nRF52840-DK. I also could not get bluetooth to work on the nice!nano, which is why I switched to the nRF52840-dongle for the most recent development. The dongle is meant to be a receiver, but it has enough gpio to connect everything; and since it is a nordic product, development was much easier.

The second problem was with the pmw3389 sensor. I have not figured out why it was not working with my PCB, but I was able to get it working with a breakout board. A multimeter showed that the voltage at the VDD pin was not stable and would start below 1.9V, then rise to above 1.9V. This leads me to believe my step-down circuit is wrong; either I got the calculations for the resistors and capacitors wrong, or the buck converter was not soldered properly. I used a microscope and the connections looked good, but it is very small so it's possible there is a cold solder joint or something else I missed.

Future Improvements

The next step is to design the PCB without the nice!nano which will require using the nRF52840 SoC directly. This will involve further researching the nRF52840 for proper implementation as well as designing power management and charging circuits. I will also need to decide on whether to use an SoC with an included antenna or design one myself.

Becasue of the problems with the pmw3389, I will not use the TPS62821DLCR buck converter. I will probably use a linear step-down regulator instead, which will be less efficient but much simpler to implement.

On the software side, the next step is to develop custom application code for the mouse which will allow users to customize the behavior of the mouse, such as button mapping and sensitivity settings.

Parts

25
QtyValueFootprintReferences
21KResistor_SMD:R_0603_1608MetricR4, R8
22MResistor_SMD:R_0603_1608MetricR7, R9
25.1KResistor_SMD:R_0603_1608MetricR2, R3
2AO3407Package_TO_SOT_SMD:SOT-23Q1, Q2
1100KResistor_SMD:R_0603_1608MetricR1
110KResistor_SMD:R_0603_1608MetricR5
11N5819Diode_SMD:D_SOD-323FD1
132768kHzCrystal:Crystal_SMD_MicroCrystal_CM9V-T1A-2Pin_1.6x1.0mmX1
1820KResistor_SMD:R_0603_1608MetricR6
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U2
1BLUELED_SMD:LED_0603_1608MetricD2
1Conn_01x02nrfmicro:connector_batJ3
1Conn_01x04nrfmicro:connector_usbJ4
1Conn_01x04nrfmicro:connector_swdJ2
1E73-2G4M08S1Cnrfmicro:E73-2G4M08S1C-52840U1
1LOGOCustom Parts:Catmelon_SmallG***
1ProMicronrfmicro:pro_microU4
1REDLED_SMD:LED_0603_1608MetricD3
1SolderJumper_2_Opennrfmicro:Jumper_SMDJP1
1TP4054Package_TO_SOT_SMD:SOT-23-5U3
1USB-C USB 2.0 MC-372nrfmicro:USB-C_C168688J1

Questions

How big is the Nrfmicro PCB?

It measures 18.1 × 33.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Nrfmicro use?

25 parts, built around the E73-2G4M08S1C, AP2112K-3.3, TP4054 and AO3407. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Nrfmicro KiCad files?

From the cotty52/Mouse repository on GitHub, at the commit this page was made from: the board is KiCad/nrf52840/nrfmicro.kicad_pcb and its schematic KiCad/Mouse_Project.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Nrfmicro design in my own project?

Its repository states no licence, so its author keeps all rights: ask cotty52 before reusing the design.

More from cotty52/Mouse

2
  • 2 layers50 × 73 mmMouse Project, the printed circuit board in 3D

    Mouse Project

    cotty52/Mouse

    Custom mouse using PMW3389 sensor and nRF52840 microcontroller

    28 parts1
  • 2 layers16 × 13.5 mmNrf52840 qfaa, the printed circuit board in 3D

    Nrf52840 qfaa

    cotty52/Mouse

    Custom mouse using PMW3389 sensor and nRF52840 microcontroller

    23 parts1

Similar boards

  • 2 layers305.8 × 120.2 mmNrfmicro, the printed circuit board in 3D

    Nrfmicro

    hashim-cpro/ultimate-keyboard

    The best keyboard!

    279 parts
  • 2 layers76.3 × 125 mmWIRELESS, the printed circuit board in 3D

    WIRELESS

    samalsubrat/arion-aryabhatta

    78 parts
  • 2 layers133 × 114.7 mmBlade right, the printed circuit board in 3D

    Blade right

    ufan/mykeyboard

    A collection of pcb boards designed by me

    106 parts23
  • 2 layers226 × 94.2 mmCalcite60, the printed circuit board in 3D

    Calcite60

    siderakb/calcite

    60/52 keys Kailh Choc V1 low profile switches ortho keyboard

    196 parts12CERN-OHL-P-2.0
  • 2 layers215.1 × 85 mmLe oeuf, the printed circuit board in 3D

    Le oeuf

    eggsworks/le-oeuf-v2

    An ultra-low profile (Kailh PG1316S) keyboard inspired by Le Chiffre.

    110 parts8CERN-OHL-S-2.0
  • 2 layers225 × 74.8 mmTinyBlue42, the printed circuit board in 3D

    TinyBlue42

    FrancisUsher/TinyBlue42

    42 key staggered bluetooth choc keyboard

    107 parts6MIT
  • 2 layers219.4 × 78 mmKeyvas, the printed circuit board in 3D

    Keyvas

    efremovich/keyvas

    Проект клавиатуры для Василисы

    137 parts
  • 2 layers53.3 × 24.1 mmNumDisciplineBLE, the printed circuit board in 3D

    NumDisciplineBLE

    ericrlau/NumDisciplineBLE

    BLE Breakout Board To Replace ATMega Used In NumDiscipline

    20 partsGPL-3.0