Git Product home page Git Product logo

scroll-ring-trackball's Introduction

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 with a scroll ring.

Trackball photo

It uses the following components:

  • 57.2mm billiard ball
  • PMW3360 optical sensor
  • RP2040+PMW3360 PCB
  • button switch mount PCBs
  • 3D printed case
  • Omron D2FC switches (or similar)
  • 2x SS49E Hall effect sensors (TO-92 package)
  • 72x 2x2mm neodymium cylinder magnets (axially magnetized)
  • 60x78x10mm bearing (6812 ZZ)
  • 2.5mm zirconium oxide (or silicon nitride) bearing balls
  • M3x4 screws for mounting the main PCB and assembling the case
  • M2x4 screws for mounting the buttons and the secondary PCBs
  • USB cable (cut off the device end and solder the wires directly to the PCB)
  • some hookup wire

The main PCB uses the RP2040 chip from Raspberry Pi. The firmware supports remapping of ball, button and ring 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.

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. They don't need supports.

The bearing and the magnets are press-fit into the case, but depending on your particular printer you might want to use glue. The Hall effect sensors should be oriented "face-up" and will definitely need some glue to stay in place.

The magnets should be installed with alternating polarity (the outside-facing pole should be N-S-N-S... etc.).

The Hall sensors' + leads are connected to 3.3V. The rest of the pin numbers are defined at the top of trackball.cc.

Exploded view

Internals of the trackball

Internals of the trackball

scroll-ring-trackball's People

Contributors

jfedor2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scroll-ring-trackball's Issues

need a breakout pcb for the scroll ring encoders.

there should be kicad files for a simple pcb that carries the vcc and gnd between both hall effect sensors, the pcb would have a hole to screw it to the top stl. the pcb would prevent the legs of the hall effect sensors from shorting together. the pcb would have headers for the 4 wires, 3.3v, gnd, and the two sensor pins.

also the button switch pcb should have a location for a through hole pullup resistor (to avoid smt assembly cost), and an extra header for 3.3v. It would be better if each button switch pcb had two headers for gnd and two for 3.3v. that is so that you can daisy chain a wire from one switch to the next, rather than having a large bundle of grounds tied together that could short something out if moved.

suggested modifications to the 3d print

I've built this and you've seen the image i linked on twitter. however there's a few issues,

one is that there's no way to move the trackball without clicking the buttons. this could be remedied by raising the outer wall to 1 1/2 times the existing height on the bottom stl. this requires the buttons acute edge to be truncated so that they do not hit the wall. i have filed down the buttons on my build so that i can lift it and it works.

another idea is to allow the use of the internals from the two ball trackball. this would allow high definition scrolling. this can be accomplished by rotating each of the 4 base standoffs 45 degrees, along with the matching holes in the ring stl. the room this makes would allow the second pmw3360 sensor to be placed between the screw holes of either button closest to the usb cable entry point. there would need to be a hole made in the ring stl to accept the lens.

These modifications will work fine with the existing hall sensor, as well as the two ball pcbs, leaving the assembly up to the user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.