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.