Sunday, January 1, 2012

Arrival of the Pentabutton

I designed a new "pentabutton" before Christmas and finally got around to milling it out yesterday.  I'll be working on the metal contacts to complete it sometime today.  It should allow me to fully map out all 11 capacitive touch buttons.  Buttons will include:  3 mouse, 2 scroll (up & down), 1 resolution selection, 5 user programmable keystrokes.

The new pentabutton is intended to be placed for your first finger and first mouse button.  The mouse button being in the middle area with four optional programmable button pads around the sides.



On a side note, I'm awaiting the arrival of some neoprene material to make yet another hand support prototype.  Making this thing work from an electrical and programming point of view was the easy part.  Designing the look and feel seems to be the harder part of this project.  I'll be contracting my wife to sew up the neoprene and help me out with the pattern making with her mad sewing skills. 

Friday, December 23, 2011

Screenshot of Triple Button

Since I have not posted any pictures lately, here is a screenshot from Alibre Design showing the "triple button" that is used for the middle mouse button.  This was milled out using my Zenbot CNC router.  The low areas with holes in them are where I have 22 gauge nickel metal contacts with wires soldered to their backs located.  The holes are there to allow the wire to exit the back.  At this point, the wire is the only thing that holds the metal contact inside the shell, but eventually that will be secured with an adhesive.  For a size reference, the square area in the middle is 11.5 mm wide.  Each smaller touch pad area is 5.5 mm tall.  The dividers between the buttons provide tactile position feedback of your finger and are 1.5 mm tall.

You may also notice that my screenshot is looks different as I have now upgraded to Alibre Design 2012.  They had one of those killer end-of-year upgrade offers I just couldn't pass up :p.

Moving to millisecond polling and added keyboard strokes

In the past few days, I have almost completely re-coded the majority of the capacitive touch buttons detection code.  Instead of counting CPU cycles, it is now based upon timetamps.  Each button's polling rate can now be specified in milliseconds.  This greatly helps manage CPU resources to ensure that each button gets the attention it needs without hogging up resources to do it.  In addition, I added a key-to-pin mapping array that allows the pins to be remapped easily to whatever you want that particular button tied to a pin to be doing.  These changes have added ease of use and increased overall performance to put CPU resources to use where it is most needed and stopped wasting CPU cycles on less important things.

Now, when I say whatever I want that button to do, I also made vast improvements here as well.  Teensyduino allows the Teensy board to interface as a keyboard+mouse composite device to the computer.  That being the case, I can now send both normal mouse clicks and keyboard strokes.  I took extra care to be sure that I can send multiple keyboard keys pressed at the same time too, so now up to six buttons can be sent at the same time.  As a test, I put a new fourth button on the trackball for my pinky finger to use and played WoW for three hours.  I was able to map this to the F4 key and it works perfectly.  I was able to ressurect fallen players while in combat with my pinky!

In addition to these changes, I have stopped development on the scroll wheel.  The scroll wheel with it's opto-interrupters was working perfectly, however it was a bit on the large and bulky size.  In place of where it would be, I simply designed a new middle mouse button that has smaller half-sized touch pads above and below the middle mouse button that allow for scrolling.  Now that I can control the polling rate, I can control the scroll speed up and down the page which is awesome.  A nice, neat and elegant solution to scrolling that has no moving parts and is ultra compact. 

Monday, December 12, 2011

Many small updates and fine tuning

It has been a while since my last update.  In the last few weeks, I have tried an alternative hand support material made from sand and clay that I'm prototyping.  I filled a regular balloon with the material and it is meeting the right requisites of being firm but moldable.  It took me quite a few tries to get to this point with several failed attempts along they way including a cast silicone mat with copper wire running through it and even mini beach balls filled with air.  I even tried using metal wire mesh, but none of those approaches yield an acceptable end product.  The new sand and clay mixture is just right.  The old sand and water prototype was slowly growing mold and needed to be replaced ASAP, especially since the prototype unit is my every day use trackball now.  Even though it isn't complete, it is much more desireable to use verses the 20-year-old Logitech trackman I was using.

I have been working toward the goal of eliminating the outboard breadboard by migrating the components (processor, LED and scroll wheel) to the trackball area to create a self contained unit that only requires the USB cable.  Currently, I have some stretchy Velcro (Velstretch it is called) on order that has promise to allow it to be attached to the hand support that can be molded into any shape.  The Velcro will provide an attachment method for the various peripherials such as buttons, scroll wheel and the ball socket itself. 

I'm also coming to the conclusion that I'll need a Velcro covered base plate that is about the size and shape of a mouse pad to mount all this onto.  The ball socket and scroll wheel are kinda big and will need support from below to be stable.  Currently, the prototype is making heavy use of double stick carpet tape to hold the parts together in place of where Velcro will eventually be. 

In the last week, I also located some nifty nickle silver buttons that allow me to solder wires to.  They make a nice finish on the capacitive touch buttons.  To further dress them up, I milled out some plastic finger guides to go around the buttons to provide some tactile feedback regarding where the buttons are and guide the finger to the center of the buttons. 

Yesterday, I put the finishing touches on a lighted capacitive touch button.  It incorporates a tri-color LED under a nickel silver button.  As you touch the silver button, the light changes, with an indirect reflection of light appearing around the edges of the silver button through some recesses.  The prototype is milled from translucent polycarbonate, so the light is actually shining through the walls of the case, somewhat like a glass brick.  It gives a nice low intensity glow from the LED.  I may look for a translucent casting resin to reproduce this for copies.  It looks really nice.

Also on order are various sizes of surgical tubing to act as conduits to route the wires.  I plan to split them down the side and make a sort of rubberized wire loom out of them. 

Lastly, I'm awaiting a delivery of liquid rubber coating I can use on the hand support and the base plate.  Hopefully this will bring the search for a proper hand support module to a close if I can successfully encase the clay and sand mixture inside this rubber coating.  It boasts the ability to simply dip the item to be covered into the mixture, slowly withdraw it and let it air dry.  We'll see.

Lots of progress on several fronts, but not a lot fully completed.  I'm still working on this about every day from making new CAD designs to milling the smaller detail items and circuit boards.  Tonight was milling out the outter case for the scroll wheel.  Tomorrow will be milling out an updated version of the scroll wheel supports with smaller screw holes and a few cosmetic updates.

Saturday, November 19, 2011

Avago ADNS-9500 Up and Running

I spent most of yesterday designing, milling and building the new circuit board for the Avago ADNS-9500 chip.  It took most of today to work through all the software changes required to make it work.  It certainly has a much higher DPI capability that is pretty insane.  Moving the ball just a little jumps from the edge of one screen all they way over to the edge of the other screen (using two computer monitors).  I'm not sure I'll have much use for that in 5670 DPI mode, but it is there should I find a need for it.

From an electrical design standpoint, the ADNS-9500 is very similar to the ADNS-7550.  Changes included a new physical package layout, grounding one pin to select between 5V and 3.3V and bumping up the size of one of the capacitors.  Other than that, the two chips use exactly the same design.

From a software perspective, I had to make arrangements to download the SROM to the chip every time it boots up.  My attempts at this were pretty bad and just crashed my Teensy board.  After doing some Google searches, I found a sketch pre-made that worked like a champ.  I was able to combine it into my current software to make a working version.  I just updated the firmware software to the current version and all is working well.  There were a few minor additional changes required to make this chip do all that I had ADNS-7550 doing, but the firmware download was the biggest hurdle.  The key ended up being the need to store the SROM image in flash memory on the Teensy instead of the default SRAM since the flash has a much larger capacity. 

In addition, I'm using the taller version of the ball support on this new circuit board with a wider set of metal ball support contacts.  It is nice and silky smooth.  The three metal supports contact the ball just below the equator line.  It seems that the further I spread these out, the better the ball movement feels. 

Tuesday, November 8, 2011

Scroll Wheel Update w/Pics

Posting has been a little slow, but I have been busy every day working on this.  Going into this, I knew that the scroll wheel would be the most mechanically complex portion of this project.  All of the parts need to be made and fit together.  I have the wheel itself and the supports on either side milled out so far.  I'm working on the circuit board at this point and need to mill out the outer case.

The theory of operation is that there will be two photo transistors that will be picking up a reflected light pattern from a rotating code wheel.  I found a nice little component (GP2S60) that incorporates both the phototransistor and emitter in a tiny surface mount package.  It is called a photointerrupter, made by Sharp.  A pair of these will be used to generate a quadrature signal that will indicate how fast the wheel is turning and in what direction.  Being optical, they won't create any drag.  I'm looking for this scroll wheel to be easy to move and have no detents, like all other scroll wheels do. 

Below are some pictures from my CAD system showing the assembly of the scroll wheel:


The photointerrupters are shown in red and yellow.  The circuit board will fit in the recess window on the right.  Those photointerrupters will be surface mounted to it:

The codewheel is highlighted below.  It will be a white piece of paper with a black set of stripes printed on it.  Simply, it will be glued/stuck to the side of the wheel. 

Tuesday, November 1, 2011

Better Optical Chips Arrived from Avago

Ask and you shall receive.  I'd like to extend a big thanks to Avago Technologies for sending me samples via Fed-Ex of their ADNK-9500 kit.  I only asked for the raw chips, but they sent the lenses and a CD too!  Awesome!  I can now start doing some designs based upon this new better chip.