DIY trackball with two balls

Overview

DIY two-ball trackball

This repository contains design files and code that can be used to make a fully programmable two-ball, three-button USB trackball that looks like this:

Trackball photo

It uses the following components:

  • two 38mm billiard balls
  • two PMW3360 optical sensors
  • main PCB
  • second sensor PCB
  • button switch mount PCBs
  • 3D printed case
  • Omron D2FC switches (or any switches with the same footprint)
  • 2.5mm zirconium oxide (or silicon nitride) bearing balls
  • M3x4 screws for mounting the main PCB
  • M2x4 screws for mounting the buttons and the secondary PCBs
  • 3x10mm wood screws for assembling the case
  • USB cable (cut off the device end and solder the wires directly to the PCB)

The main PCB uses the RP2040 chip from Raspberry Pi. The firmware supports remapping of ball and button functions using a configuration tool without the need to recompile the source code. All the configuration is stored on device, so the configuration tool is only needed to change the settings, not during normal use.

Each ball can be configured to control the cursor or to scroll, with independent CPI setting. High resolution scroll is supported (at least on Windows).

Configuration tool UI screenshot

So far I only tested the configuration tool on Linux, but it should in theory run on Windows and Mac as well. I will try to provide ready-to-use packages in the future.

The provided UF2 file can be used to flash the firmware onto the device. When first connected, a "RPI-RP2" drive will show up and you flash the chip by copying the UF2 file to that drive. If you want to flash it again, hold the BOOT button and press the RESET button on the board.

I printed the case parts with 0.2mm layer height and no supports, though you might want to enable supports for the top part if you're having trouble printing it without them.

Exploded view

The pin numbers are defined at the top of trackball.cc.

Insides of the case

Owner
Jacek Fedoryński
Jacek Fedoryński
DIY trackball with scroll ring

DIY trackball with scroll ring This repository contains design files and code that can be used to make a fully programmable four-button USB trackball

Jacek Fedoryński 73 Jul 28, 2022
The ball is the trackball

The ball is the trackball This is Arduino code and 3D-printable models for a Bluetooth trackball in which all the electronics are inside the ball.

Jacek Fedoryński 125 Aug 3, 2022
Devterm keyboard & trackball firmware

DevTerm Keyboard Firmware How to install Install Arduino STM32 hardware package on your Arduino IDE https://github.com/rogerclarkmelbourne/Arduino_STM

SeongChan Lee 21 Apr 17, 2022
imGuIZMO.quat is a ImGui widget: like a trackball it provides a way to rotate models, lights, or objects with mouse, and graphically visualize their position in space, also around any single axis (Shift/Ctrl/Alt/Super)

imGuIZMO.quat v3.0 imGuIZMO.quat is a ImGui widget: like a trackball it provides a way to rotate models, lights, or objects with mouse, and graphicall

Michele Morrone 257 Jul 10, 2022
Two programs to find the LCM of two positive integers.

LCM-finders LCM-finders? LCM-finders is the repo for my LCM finder projects. I made this program in two similar languages. ?? Note: Two languages mean

Chandula Janith 1 Apr 15, 2022
Two mice, two cursors

Mouse multiplexer This is Arduino code that makes it possible to have two mouse cursors when connecting two USB mice to the same machine. It works on

Jacek Fedoryński 11 Jun 20, 2022
Import of the DIY Dynamic Template v2, retrieved from the Internet Archive

Dynamic Templates This is a copy of the D*I*Y Planner Dynamic Template application that was posted to diyplanner.com/node/6210 back in 2009,

Trammell Hudson 20 Jun 16, 2022
ESP32 based DIY word clock project

Wordclock ESP32 based DIY wordclock project TL;DR: check out this ✨ demo video ✨ Another take on the classic DIY word clock. This one requires a laser

null 35 Feb 14, 2022
DIY LCD touchscreen for Home Automation

HA SwitchPlate HASPone The HASPone is a DIY touchscreen controller you can mount into a standard North American work box. It connects to your home aut

null 263 Jul 29, 2022
Arduino firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

lucidgloves-firmware This repo contains the arduino firmware as well as the STL files for Prototype 3 of the LucidVR glove prototype. This is a finger

null 1.4k Aug 3, 2022
Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

null 1.4k Aug 8, 2022
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

Sergey Koptyakov 5 Feb 13, 2022
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9/2.13/1.54 inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

Sergey Koptyakov 28 Jul 27, 2022
DIY Smart Blinds controller for ESP8266

Window blinds to home assistant DIY window blinds controller software for ESP8266 (Wemos D1) to control existing window blinds using servos. The full

Toni Korhonen 15 Apr 12, 2022
A simple DIY project that will make oldschool POCSAG pagers/beepers work again

Arduino POCSAG Transcoder Features Message types: Tone, Numeric, Alphanumeric 4 encodings: Latin, 2xLatin/Cyrillic, Cyrillic Data rates: 512, 1200, 24

SinuX 6 May 5, 2022
My DIY 3 Axis Camera Slider Project

3Axis Camera Slider My DIY 3 Axis Camera Slider Project Authors NEWTech-Creative * Myles Newton GitHub YouTube Original project inspiration from * Raj

NEWTech Creative 8 Jul 4, 2022
DIY Word Clock ver. 1.01

DIY Word Clock ver. 1.01

Vladislav 55 Feb 22, 2022
Bau Bau is a DIY 4 legged quadruped robot inspired for construction robotics course.

Bau-Bau-Robot Bau Bau is a DIY 4 legged quadruped robot inspired for construction robotics course. In this course, we are looking forward to solve a p

Adithya Chinnakkonda 1 Nov 19, 2021
YUIOP60Pi DIY Keyboard Firmware

YUIOP60Pi - DIY keyboard with PGA2040 firmware Requirements PICO SDK (v1.2.0) cmake compiler or so How to build $ make Output: build\yuiop60pi.uf2 Har

MURAOKA Taro 4 Feb 7, 2022