Introduction: Proximity Sensing Mouse Wheel Scroller

About: hacker, designer, all around fun-timer. yuhno?
List of tools:

1. Exacto
2. Arduino Nano / USB chord (Mini-B)
3. Dremel / Drill
4. Paper & Pencil
5. Sharp IR Sensor (2Y0A21 F)
6. Hot glue gun
7. Solder gun / Solder
8. A small mirror

Ok so you might ask, why the heck are you doing this to a trackball?! aren't those for people from the 80s?? the one with keytars?? My response is two fold. No. 1 I have a keytar and they are MAGICAL. 2. I hated trackballs until I was forced to use one in a recording studio a few years ago, and I will never ever ever ever use a regular mouse again. These suck to get used to, but are amazingly efficient especially from a designer perspective. Not to mention they are very ergonomic. You can hate all you want, I love magical things. But if you do not like magical things, I guess you could just put it somewhere else, maybe the side of a chair? inside a normal mouse (might need a arduino mini for this or attiny)?

Here is a prototype of the sensor, I was trying to figure out where I could put it. You need to pick a good spot where the nano will fit as well as a place that you wont constantly be bumping it, this was the best place I could find. Feel free to move it wherever though. This area happen to have the least amount of electronics too, so it was a no duh spot.

Ignore that its a Arduino Uno in the prototype, I was doing just that-- making sure I could get it to work first. we will be using the Nano or Mini, depending on preference. this tutorial uses the Nano.


Arduino nano is really easy to use if you have never used it. This was my first project using one and I had no problem making the switch from an Uno to the Nano, just a little more soldering.

Step 1:

Prep-a-roo-skis

Ok, lets get some stuff ready.
1. Soldering Iron, Solder.
2. Arduino Nano
3. USB chord
4. Sharp IR sensor. 

current awesome meter reading:  [ ===--------------]  not looking too good...

Go ahead and heat up your solding iron.

While that is heating lets make a stencil for where your sensor will go. What I did was first traced the outside of the IR sensor, then you find where the LEDs are and make the most amazing circles you have ever made in all of everdom. I eyeballed this but you could do some measuring or check out the datasheet to get exact measurements. I'm a pro circle drawer though so... don't feel bad if yours aren't as good as mine.

Connect it up!

make sure you have the correct length by putting the arduino inside the mouse and see if it reaches where you would like to put the sensor.

Now solder the RED wire of the IR sensor to the 5v pin,
BLACK to ground,
White to A3 (analog in 3)
(check diagram above if you aren't sure what ones these are)

Now, get your mirror out.

Look at how smart and amazing you are. d'awwwe.
Ok, your IR sensor is now connected to your arduino board, 10 points. Plug that USB in and lets get programming.

disclaimer: I know this code is nasty and hacked together. I was tired and me and "for loops" were getting in a fight, soooooo. yeah. if you want to suggest improvements--have at it.

https://gist.github.com/4493574

awesome meter: [ ====----------] getting better!

Step 2:

Ok get that mouse out.

First remove the plastic rubber stoppers from the bottom and unscrew all 4 screws. easy peasy.

Once they are unscrewed it should come apart relatively easily, just pull it apart like you're checking to see if you forget butter on your sandwich. Shuttup, my analogies are amazing. Ok, moving on.

awesome meter: [ =======-------]

Step 3:

Time to do some damage, but first heat up the hot glue gun.

Go ahead and put the paper down on the mouse and make some markings, I made little X's where the center was so I knew where to start drilling. Try taping it, if it moves on you too much. Now make some holes, doooo ittt. 

Before you glue the IR sensor fully in, it might be a good idea to tape it down and test the readings, they should be the same or close to what it is when they are not going through the holes. If the readings are good, go ahead and put some molten plastic of doooom on there and by doom I mean thermoplastic adhesive.

ok close her up, you're done with the hardware!

now we need to make the arduino communicate with the computer, lucky we have amazing people like Ben Fry and Casey Reas that make groovy things like Processing. If you don't know a lot about it, fret not! I will give you a pile of code to compile. No assembly required. But you really should learn processing, its amazing and a great stepping stone into more fun things like C++

https://gist.github.com/4507774

make sure on line 41 you set the correct serial number, 4 happens to be mine, but will likely be different for yours. When you run the code it lists all serial ports run this code in processing: https://gist.github.com/4238638. and if all else fails just go from 0-10 (or however high it goes for you) until you get readings.

FINITO! 
good hunting.

your awesome meter: [ ============== ]
MIRROR, GET YOUR MIRROR!! SEEE YOUR AWESOMENESS. sorry caps lock cruise control... it happens.

don't forget to check out my twitter: hilukasz
or my blog: hellowoo.com/blog
for more fun projects and all of my shenanigans. 

and don't forget to let me know if you do any fun derivatives of this project. I would love to hear about them!