Skip to the content
2 layers27.5 × 23.2 mmRollino sensor, the printed circuit board in 3D

Rollino sensor

tompi/rollino

Low-profile DIY finger trackball: ball floats 1 mm above the table, two PMW3610 sensors, nice!nano/ZMK

Size
27.5 × 23.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
14
Nets
15
Pads
50
Tracks, vias
154, 10
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
27 Sep 2026
Updated
11 Oct 2026

Overview

Rollino sensor is an open-source printed circuit board by tompi, from the tompi/rollino repository on GitHub. It is a 2-layer board of 27.5 × 23.2 mm with 14 parts on 15 nets, routed with 154 tracks and 10 vias.

It is built around the PMW3610DM-SUDU and FH12-6S-0.5SH(55). Its parts include 9 capacitors, 2 ICs, 1 resistor and 1 connector. It belongs with the keyboards and input and sensors and measurement boards of this library.

Main components

2

README

readme.md

Rollino

An attempt to make a cheap, solid and low profile DIY finger trackball.

The ball floats just 1 mm above the table on three ceramic support balls. Two PMW3610 sensors look up at the ball from below its equator, placed so their lines of sight are orthogonal (X, Y and twist are all observable). A Seeed XIAO nRF52840 running ZMK and a 602020 LiPo lie flat in a squashed dome in front of the ball. The XIAO is soldered upside down onto a base PCB that sits in a groove in the underside and reaches round under both sensors, each wired up with a short FPC ribbon; a cover over the whole underside hides it, held by the same screws.

Exploded view

  • case/rollino.scad - parametric OpenSCAD model (ball size, sensor/MCU placement, battery, ...). Set part to assembly, exploded, hardware, section, or body / base_cover for printable parts.
  • case/renders/ - preview renders: case/render_previews.sh (OpenSCAD) and case/render_exploded.sh (Blender, with KiCad's 3D models of the boards).
  • pcb/ - KiCad projects for the sensor boards and the base board: schematics and routed boards, generated from the case model (see pcb/readme.md).

The PCBs, top and bottom

  • parts.md - everything to order for one Rollino.
  • datasheets/ - component datasheets. The PMW3610 datasheet is available here.

Firmware

ZMK, built by GitHub Actions on every push (download firmware.zip from the run, then double-tap the XIAO's reset and copy the .uf2 onto it). It's a standalone Bluetooth/USB mouse.

  • zmk/boards/shields/rollino/ - the shield: pins, the two PMW3610 sensors (Zephyr's driver), three optional buttons.
  • zmk/src/ball_fusion.c - combines the two sensors: each one only sees the ball's surface sliding past in its own tilted plane; together they give the ball's whole rotation. Rolling moves the pointer (as if the finger on top dragged it), twisting about the vertical axis scrolls.
  • config/rollino.keymap - the buttons: left, right, middle click.
XIAO pinUse
D8SCLK, both sensors
D10SDIO, both sensors (SPI MOSI and MISO on the same pin)
D7NCS, right sensor
D6NCS, left sensor
D3MOTION, right sensor
D2MOTION, left sensor
D0, D1, D9optional buttons to GND: left, right, middle click
D4, D5free

Calibrating the sensors' orientation. The fusion needs to know which way each sensor's X axis points (rotation in the shield's ball_fusion node, plus the sensor's invert-x / invert-y), which depends on how the chip sits on the sensor PCB. Roll the ball right: the pointer should go right; towards you: down; twist it: scroll, with no drift. If one direction is off, try one sensor at a time (cover the other's lens) and fix its rotation / inversion until rolling right moves the pointer mostly right.

Parts

14
QtyValueFootprintReferences
2100nFCapacitor_SMD:C_0603_1608MetricC2, C3
21uFCapacitor_SMD:C_0603_1608MetricC8, C9
1100nF X7RCapacitor_SMD:C_0603_1608MetricC4
110kResistor_SMD:R_0603_1608MetricR1
110nFCapacitor_SMD:C_0603_1608MetricC5
110nF X7RCapacitor_SMD:C_0603_1608MetricC7
110uF X7RCapacitor_SMD:C_0603_1608MetricC6
13.3uFCapacitor_SMD:C_0603_1608MetricC1
1FH12-6S-0.5SHConnector_FFC-FPC:Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_HorizontalJ1
1M2MountingHole:MountingHole_2.2mm_M2H1
1PMW3610DM-SUDUrollino:PMW3610DM-SUDUU1
1TPS7A0518PDBVRPackage_TO_SOT_SMD:SOT-23-5U2

More from tompi/rollino

1
  • 2 layers65.5 × 63.4 mmRollino base, the printed circuit board in 3D

    Rollino base

    tompi/rollino

    Low-profile DIY finger trackball: ball floats 1 mm above the table, two PMW3610 sensors, nice!nano/ZMK

    11 parts

Similar boards

  • 2 layers58.3 × 98.2 mmSandKrux, the printed circuit board in 3D

    SandKrux

    sandman21vs/SandKrux

    Placa de desenvolvimento baseada no chip K210, com entradas para touch, câmera e LCD grande, criada especificamente para rodar o firmware Krux.

    176 parts21
  • 2 layers30 × 20 mmBOB PMW3610-SEIBOKU, the printed circuit board in 3D

    BOB PMW3610-SEIBOKU

    snize/BOB-PMW3610-SEIBOKU

    This project is licensed under the CERN OHL-P v2. You may use, distribute, and modify this design under the terms of the CERN OHL-P v2. Original design by snize.

    17 parts20CERN-OHL-P-2.0
  • 2 layers26 × 26 mmChase, the printed circuit board in 3D

    Chase

    krk/chase-badge

    60 LED 3.3V chaser with ATtiny85, USB-C and LiPo

    179 parts
  • 2 layers48 × 60 mmCustom wireless mouse, the printed circuit board in 3D

    Custom wireless mouse

    limmjacc/custom-wireless-mouse

    Project to track the hardware and firmware for a custom made computer mouse.

    33 parts
  • 2 layers105.5 × 53.3 mmTrackpad IQS9150, the printed circuit board in 3D

    Trackpad IQS9150

    cetola/reform-next-mirror

    The original Open Hardware laptop, reloaded.

    44 parts
  • 2 layers235.5 × 200 mmRKD07 Assemble BUILD, the printed circuit board in 3D

    RKD07 Assemble BUILD

    rikkodo/Rikkodo_PCB

    This project is licensed under the CERN OHL-P v2. You may use, distribute, and modify this design under the terms of the CERN OHL-P v2. Original design by snize.

    248 parts
  • 2 layers48.6 × 119.8 mmSkjold hovedkort, the printed circuit board in 3D

    Skjold hovedkort

    SebastianKristo/pult-forsterker

    Ett kort (180 × 100 mm, 2 lag) som erstatter alle modulene, og som i tillegg har USB-delingsswitch, to AUX-innganger som digitaliseres (så alt kan mikses), «smart relé» for strømmen til forsterkerdelen…

    119 partsMIT

Questions

How big is the Rollino sensor PCB?

It measures 27.5 × 23.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Rollino sensor use?

14 parts, built around the PMW3610DM-SUDU and FH12-6S-0.5SH(55). 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 Rollino sensor KiCad files?

From the tompi/rollino repository on GitHub, at the commit this page was made from: the board is pcb/sensor/rollino-sensor.kicad_pcb and its schematic pcb/base/rollino-base.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Rollino sensor design in my own project?

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