

Nrfmicro
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
4E73-2G4M08S1C
SMD,18x13mm-103dBm、-95dBm -40℃~+85℃ 120m 17.05mA 3.3V 8.27mA 8dBm Bluetooth 5.0、Bluetooth 4.2 PWM、SPI、ADC、USB、I2C、ISP、JTAG、DMA nRF52840 Chip SMD,18x13mm Bluetooth Modules ROHSChengdu Ebyte Elec TechBluetooth ModulesAP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedTP4054
SOT-23-5L-40℃~+85℃ 1 25uA 4.2V 4.2V~6.5V 500mA Charging IC Lithium Battery Not supported 恒流充电、恒压充电、涓流充电、自动再充电、充电终止、可编程充电电流、软启动、欠压锁定 SOT-23-5L Battery Management ROHSUMWBattery ManagementAO3407
SOT-23-55℃~+150℃ 1 P-Channel 1.4W 1V 260pF 30V 37pF 4.1A 75mΩ@4.5V P-Channel ±20V SOT-23 MOSFETs ROHSBORNMOSFETs
README
README.mdCustom 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
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
└── ...Documentscontains datasheets, reference layouts, and documentation for the nRF Connect SDK and Zephyr project.Guidecontains the new machine setup guide (Guide/README.md) and dated snapshots of known-good board/config files.KiCadcontains the KiCad project files for the PCB design (schematics, PCB layout, Gerber files).Softwarecontains firmware source, board definitions, and configuration files. SeeSoftware/PROJECT_GUIDE.mdfor 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
| Full | Front | Back |
|---|---|---|
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| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 1K | Resistor_SMD:R_0603_1608Metric | R4, R8 |
| 2 | 2M | Resistor_SMD:R_0603_1608Metric | R7, R9 |
| 2 | 5.1K | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 2 | AO3407 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 1 | 100K | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 10K | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | 1N5819 | Diode_SMD:D_SOD-323F | D1 |
| 1 | 32768kHz | Crystal:Crystal_SMD_MicroCrystal_CM9V-T1A-2Pin_1.6x1.0mm | X1 |
| 1 | 820K | Resistor_SMD:R_0603_1608Metric | R6 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | BLUE | LED_SMD:LED_0603_1608Metric | D2 |
| 1 | Conn_01x02 | nrfmicro:connector_bat | J3 |
| 1 | Conn_01x04 | nrfmicro:connector_usb | J4 |
| 1 | Conn_01x04 | nrfmicro:connector_swd | J2 |
| 1 | E73-2G4M08S1C | nrfmicro:E73-2G4M08S1C-52840 | U1 |
| 1 | LOGO | Custom Parts:Catmelon_Small | G*** |
| 1 | ProMicro | nrfmicro:pro_micro | U4 |
| 1 | RED | LED_SMD:LED_0603_1608Metric | D3 |
| 1 | SolderJumper_2_Open | nrfmicro:Jumper_SMD | JP1 |
| 1 | TP4054 | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | USB-C USB 2.0 MC-372 | nrfmicro:USB-C_C168688 | J1 |
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 mm

- 2 layers16 × 13.5 mm

Similar boards
- 2 layers305.8 × 120.2 mm

- 2 layers76.3 × 125 mm

- 2 layers133 × 114.7 mm

- 2 layers226 × 94.2 mm

Calcite60
siderakb/calcite
60/52 keys Kailh Choc V1 low profile switches ortho keyboard
196 parts12CERN-OHL-P-2.0 - 2 layers215.1 × 85 mm

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 mm

- 2 layers219.4 × 78 mm

- 2 layers53.3 × 24.1 mm

NumDisciplineBLE
ericrlau/NumDisciplineBLE
BLE Breakout Board To Replace ATMega Used In NumDiscipline
20 partsGPL-3.0