Monday, August 31, 2015

2015-08-30 (Su) Wrist Mounted Chording Keyboard

Printed servo lever arms were attached to ordinary servos. Coincidentally the thickness of the lever arm was very similar to the thickness of the servo horn hub thickness which made for a flush piece. A single screw was used to attach each servo horn to a lever while the old design would require two screws per servo. One servo was placed in the wrist mount piece but not screwed down. Two versions of the servo levers were printed, one attached to a servo while the other had ends meant to hinge on a bolt so they were simply open holes. Those holes needed to be drilled out in order to fit a #6 bolt.

Old style which attached to top of servo horn

New style which wraps around servo and attached to underside

Half of the levers and servo were assembled before animation and video were taken. Animations show the way the four bar linkage will move something from a forearm position to a palm position. As a simple demonstration the continuous rotation servo made on 2015-08-23 (Su) was also connected to the same servo signal to demonstrate how the two act differently despite getting the same signal. Video was shot which first demonstrated manual movement where the signal was changed according to the potentiometer which can be seen as it was turned. The second part, at 23 seconds, showed the neutral position where the continuous rotation servo is halted and the unmodified servo snaps to an odd angle. The final part of the video, at 27 seconds, shows automated movement where the shuttle moves back and forth and the continuous rotation swings around and around in both directions. This final movement was also captured as animation shown below.

Automated movement

Video showing Four Bar Linkage and the difference between servos
While watching YouTube videos it's possible to skip around by pressing numbers on the keyboard. For example, to go to the beginning press zero, 0. To go to the exact middle press five, 5.
To skip immediately to the second part of the video, where neutral position is demonstrated press six, 6. To skip right to the automated movement press seven, 7. Press zero, 0, to rewatch the whole thing.

Downloadable Files:
To do:
  • Modify two servos for continuous rotation.
  • Wrist mount
    • Build
    • Test
    • Refine
    • Repeat
    • Activation switch
    • Route wires
  • Write instructions
    • Schematic

The rest of the posts for this project have been arranged by date.

First time here?

Completed projects from year 1.
Completed projects from year 2



This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

2015-08-26 (W)

Sunday, August 30, 2015

2015-08-29 (Sa) Wrist Mounted Chording Keyboard

The modeling file from 2015-08-11 (Tu) was reopened and modified. Two different types of servo lever arms were needed to make the four bar linkage. One type of lever must attach to a servo horn and be hinged on the other side. The second type must have bolt holes on each end to act as a hinge in both places. Two of each piece should be printed for a full set. Each piece is the same length so the four bar linkage being constructed would be a parallelogram.

Rotating view of servo arms model

Full set of servo arms

Downloadable Files:
To do:
  • Modify two servos for continuous rotation.
  • Wrist mount
    • Model lever arms
    • Build
    • Test
    • Refine
    • Repeat
    • Activation switch
    • Route wires
  • Write instructions
    • Schematic

The rest of the posts for this project have been arranged by date.

First time here?

Completed projects from year 1.
Completed projects from year 2



This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

2015-08-26 (W)

Saturday, August 29, 2015

2015-08-28 (F) Weekly Summary

Bluefruit EZ-Key provides a bridge which accepts serial data, like from an Arduino, and acts like a Bluetooth keyboard on the other side. Unfortunately the keyboard presses I was sending over the USB couldn't be reused but the established structure of the program made it possible to just plug in the serial data. That was what I had planned for a couple wees ago and I suspect I saved myself some headache and heartache by approaching it that way. Once the serial data was in place the Bluetooth module was paired with my phone and typing commenced. After several program tweaks it was possible to type simultaneously on my phone and a USB connected computer. This made debugging easy because I was able to compare messages from each screen and see what was different. It went very well. Most of the problems were from non-printing characters.

After the success with Bluetooth it was time to start work on the mouse functions. Spiffchorder code was not meant to lend much focus to mice and with the popularity of touch screens this may be wise. For my build I wanted to have a mouse which responded to tilting kind of like a Wii remote. This was hinted at when I rearranged all the chords dealing with the Far thumb button. An analog output accelerometer was used which generates a voltage based on orientation. These signals are very easy to read with the analog input pins on an Arduino. The most common alternative would be to use serial data but anyone who has read this blog knows how I feel about reading serial data.



Accelerometer attached to Arduino

Chordmap

Inexpensive servos have a limited range of movement but they can be modified to spin continuously. I had only heard about the procedure but I assumed it was less functional than purchasing continuous rotation servos. I was wrong. Dismantling, modifying, and reassembling the servo took less than an hour while screwing up the innards took two more. I learned everything I wanted to about servo motors and while inside I had an idea of how to control two servos with a single wire from my Arduino. By hooking up one of the servo motors backwards the two should act as mirrors of one another but this will only work for continuous rotation servos. Soldering a standard servo's motor backwards would only render it useless unless the potentiometer leads were also reversed.

To convert a servo which normally travels less than 180º the potentiometer is rerouted to a different potentiometer of a greater than, or equal, resistance. That potentiometer becomes a tuning resistor. An anti-rotation tab on the top gear of the servo is removed then it's all put back together. Piece of cake.

Splayed innards of a servo

Ill conceived attempt at bypassing the potentiometer

Tuning potentiometer

Reassembled servo

When I first thought about making this keyboard I visualized it in my right hand. It seems I am in the minority though. To give anyone a chance to build this keyboard the models were mirrored and rendered as stl files.

Left hand and right hand version of the finger pieces

The first design for a wrist mount was not very good. It was flimsy and relied on unproven ideas. Gavin showed me a neat design used to put a tool into the wearer's hand at the push of a button. The design was well executed and gave me a good idea of how I should build my wrist mount. Modeling of the wrist mounts started with a convoluted design, as they often do, and was finally reduced to two simple parts which could be held together with standard #6 (3.5mm) bolts. Pieces were printed, revised then printed again with proper dimensions. The pieces were assembled with bolts that were probably too short. Servos were installed but not screwed in place. Levers will have to be designed and printed. Files from 2015-08-11 (Tu) will be used.

Spinning model of one side of the wrist mount pieces

Wrist mount assembled with short bolts

Downloadable Files:

The rest of the weekly summaries have been arranged by date.





This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

Friday, August 28, 2015

2015-08-27 (Th) Wrist Mounted Chording Keyboard

Modeling was done for a servo and hinge holder. Pieces focused on the idea of using #6 (3.5mm) bolts as cross-members. For this design consideration bolt holes had to be placed identically to ensure a bolt could pass through all the pieces. Two pieces were modeled, one which would hold the servo and act as the body and the smaller second which was meant to act as a hinge base while mounted parallel to the body. A quick model was drafted and printed but the distance between the hing and servo was approximately 9mm too long so a second model was made to correct this.

First print and shorter corrected print below

Rotating view of short model

Printed pieces were attached with 3" (75mm) bolts which were almost certainly too short. Numerous nuts were used which was time consuming and finicky but acceptable for an early prototype. Servos were laid in place but not screwed in place.

Assembly with printed parts

Focus on servo and expected clearances

Servo lever arms which attached to the underside of the servo horns should be modeled to conserve space. These levers would have a large (7mm) hole at the servo end which the servo horn would pass through while giving it a good leverage point. Designing a lever arm like this would only require one screw to hold it in place.

Downloadable Files:
To do:
  • Modify two servos for continuous rotation.
  • Wrist mount
    • Model lever arms
    • Build
    • Test
    • Refine
    • Repeat
    • Activation switch
    • Route wires
  • Write instructions
    • Schematic

The rest of the posts for this project have been arranged by date.

First time here?

Completed projects from year 1.
Completed projects from year 2



This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

2015-08-25 03 (Tu)

Thursday, August 27, 2015

2015-08-26 (W) Wrist Mounted Chording Keyboard

Progress on the wrist mount had been slow for days. Designs were weak and poorly visualized. A friend showed me a wrist-mounted tool holder which made him think of what I was trying to do. Tim, the author of the Robotic 3rd Hand used a pair of four-bar linkages, like I was planning to do, but he did so with one servo and 3D printed parts. Refinements on his project showed a lot of care and attention to detail which will not be copied in this design, not right away. First, a working model will be built to prove the design then changes can me made to make it more comfortable and functional.

Enough background.
----------

Sketches were made of a 3D design which would hold servos and allow for #6 (3.5mm) bolts to be used as cross members. Advantages of the cross-members included the ability to change the distance between servos, less plastic to print, and duplicate pieces could be printed instead of one structure.

Sketches of design for wrist mount

Footprints of small servos were drafted, specifically the SG90 and MG90, which were the same size. These servo footprints can be used to create pockets in models where a servo can fit. Modules are reusable and available in the Downloadable Files below.

OpenSCAD servo footprint module

Downloadable Files:
To do:
  • Modify servos for continuous rotation.
  • Wrist mount
    • Design
    • Model
    •  Build
    • Test
    • Refine
    • Repeat
    • Activation switch
    • Route wires
  • Write instructions
    • Schematic

The rest of the posts for this project have been arranged by date.

First time here?

Completed projects from year 1.
Completed projects from year 2



This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

2015-08-25 02 (Tu)

Wednesday, August 26, 2015

2015-08-25 (Tu) Wrist Mounted Chording Keyboard

Mouse movement functions had been avoided to this point. Programming was written for the built-in USB mouse emulation. Mouse code was easy to implement once reasonable numbers were passed to it. Movement was essentially done by first taking a reading from the accelerometer (ADXL335) when the Far thumb button was pressed by itself then basing all movement off that initial location. In this way if the accelerometer was started at 35º on the X axis when the user moves the X axis to 36º (+1º) there is a small mouse movement to the right but if the user moves the X axis to 5º (-30º) there is a large movement to the left. Mouse movement would not be necessary for a desk mounted keyboard unless a joystick was attached. Due to the way to code has been written attaching a joystick should function without any modifications.

Macro shot of accelerometer

Once the USB mouse was functional programming was researched on Adafruit's tutorial on how to command the mouse. The tutorial was straight forward and easy to understand. Mouse movement was simultaneously working on a mobile phone (via Blutooth) and a laptop (via USB) after a few attempts. Variables were tuned to get usable mouse movement but user preferences will likely mean that users will changes these further.


Recent code for wireless keyboard with mouse movement

Downloadable Files:
To do:
  • Add mouse functionality.
  • Program changes:
    • Add mouse movement
    • Change mouse clicks to press and release according to buttons
    • Add random number generator
      • 0-1
      • 0-1000
      • Random equation followed by enter
  • Modify servos for continuous rotation.
  • Automate wrist mount.
  • Write instructions
    • Schematic

The rest of the posts for this project have been arranged by date.

First time here?

Completed projects from year 1.
Completed projects from year 2



This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

2015-08-24 (m)

Tuesday, August 25, 2015

2015-08-24 (M) Wrist Mounted Chording Keyboard

Gavin brought up the point that the current models would not work for a left-handed keyboard. Some people would prefer to have a keyboard in their non-dominant hand whereas I would like it in my dominant hand. It should be possible to print it left or right so the models were updated since both need to be equally viable options. In the downloadable files, shown below, links have been provided to print the left-handed version as well. The OpenSCAD files were updated with instructions on how to mirror the model.

Left-handed and right-handed pieces for the index, middle and ring fingers

Left-handed and right-handed pieces for the pinky finger

Left-handed and right-handed version of the thumboard

Macros were programmed into an unused keyboard chord. Case 13, which had nothing, was programmed to print pseudo-random numbers and equations. They are not truly random numbers nor are truly random numbers necessary for this application. A pseudo-random number between 0 and 255 can be printed by simply pressing the chord pinky+middle+index. A pseudo-random number between 0 and 1, four decimal places, is typed by prefixing the above chord with the Far thumb key, like typing a capital. If the function key prefix is used three pseudo-random numbers are typed as a mathematical statement which is followed by a return.
Examples using the keyboard:




0-255
0-1
Equation



30
0.5582
209+968+3735



228
0.0748
180+625+3534



131
0.0622
67+11+2679



158
0.211
192+244+1295



57
0.6009
68+396+3692



122
0.8594
175+272+3544



87
0.5636
68+923+1709



Recent code for Wirless Keyboard with No Mouse functions

Downloadable Files:
To do:
  • Add mouse functionality.
  • Program changes:
    • Add mouse movement
    • Change mouse clicks to press and release according to buttons
    • Add random number generator
      • 0-1
      • 0-1000
      • Random equation followed by enter
  • Modify servos for continuous rotation.
  • Automate wrist mount.
  • Write instructions
    • Schematic

The rest of the posts for this project have been arranged by date.

First time here?

Completed projects from year 1.
Completed projects from year 2



This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

2015-08-24 (M)

Monday, August 24, 2015

2015-08-23 (Su) Wrist Mounted Chording Keyboard

Moving the keypad from a forearm position to a typing position in the palm will require movement. As mentioned on 2015-08-09 (Su) the motion was going to be linear but the troubles with that were too much. A four-bar linkage with servo actuation should be easier but inexpensive servos don't rotate enough.

A small servo was dissected to try to convert it to a continuous rotation servo. Continuous rotation servos have a market but they are expensive. Internet sources suggested they could be made from standard servos by removing a tab from the top gear and rewiring the internal potentiometer. This proved to be the case but there were problems.

One servo was disassembled by removing four long bolts from the bottom. The stack of gears was photographed to make reassembly possible later. The pattern on the gears was the gear teeth became finer the closer they were to the motor.

Cover removed from servo

Gears fell onto the desk but the inexpensive servos used plastic gears which had no messy lubrication. Servos with metal gears may require a covering to protect work surfaces. Two of the gears used the potentiometer shaft as an axle. Only the top gear was affixed to the shaft and meant for turning it. Pressure from behind removed the potentiometer from the servo housing. Most potentiometers are enclosed to keep contaminants out but the potentiometer contained in the servo was protected by the servo's case so a second encasement was not necessary. Rotational stops were clearly visible in the potentiometer. Two options seemed possible, the first option was to remove the silver part attached to the potentiometer hub, the second option was to remove the plastic limits from the rim. A pair of flush cutting pliers was used to remove the plastic limits from the rim. Brittle plastic was used so wear eye protection when cutting.

Black potentiometer with brass shaft

Movement limits of potentiometer
 
Closeup of potentiometer
 
Closeup of rim which has been cut to remove limits

[The next two paragraphs, bracketed off, aren't vital to the project but they give some background on how these servos work. Cool stuff in my opinion but not vital to someone who just wants to build this project.]

[Potentiometers inside inexpensive servos give feedback to the control circuit by acting as a voltage divider. Essentially, the potentiometer delivered 0 volts when fully turned one direction and maximum voltage when turned to the other end. In between the voltage was infinitely variable therefore capable of telling exactly where it was supposed to be.

To make a continuous rotation servo the ideal situation is to convince the servo's internal controller that the shaft is at exactly the halfway mark. This way when then the servo gets a command to move to the halfway mark it remains stationary. Subsequently, when the servo is told to move to 0º it will run quickly in one direction and when it is told to turn to 180º it will turn quickly in the other direction. Telling the servo to move to an angle close to the halfway mark, 92º for example, will cause slow rotation. From this it become evident the servo's controller is at least a proportional integral controller and maybe a PID controller. Knowing what those are isn't important to this project. The simpler explanation is that instead of controlling position the servo now controls speed.]

Resistors were soldered to the two wires going to the outer potentiometer terminals. 910Ω resistors were used since they were handy. Both resistors had their loose ends soldered together and the wire going to the center of the potentiometer was soldered at that junction. In a perfect world this would act as a voltage divider where 50% of the voltage is delivered back to the controller. In reality this did not work for at least two reasons. The potentiometer in the servo was 5KΩ (5000Ω) and my fixed resistors were less than 2KΩ total which always isn't a problem but it was here. The second problem was the resistors may have not been perfectly equal so even if they had been sized properly it wouldn't have meant that the servo controller would assume the knob was centered.

[These problems with the tuning was likely due to the internal resistance of the controller. If that resistance is significantly higher than the voltage divider the return voltage is inconsequentially altered. Using a resistance substantially higher than the internal resistance is a viable option.]

 Resistors soldered to potentiometer wires

Resistor junction

Commercially produced continuous rotation servos had a potentiometer accessible which wasn't found on standard servos. This accessible potentiometer was for tuning the servo to acknowledge the halfway point accurately. Using a similar potentiometer should have been done from the beginning. A 1/4" (6mm) hole was drilled in the bottom of the servo case to make room for a potentiometer. A 1KΩ potentiometer was used which had to be scrapped after it was confirmed that the 5KΩ potentiometer had to be matched or exceeded. A 50KΩ potentiometer, 10 times the resistance of the factory potentiometer, was installed and this functioned well.

Hole drilled in the servo case

1KΩ potentiometer mounted in hole

50KΩ potentiometer wired through case hole

Top gears on standard servos have tabs which are meant to keep the servo from rotating too far. These tabs were cut away using flush cutting pliers before the servo was reassembled. The tuning potentiometer was glued in place with a liberal amount of clear glue. This procedure will have to be repeated for at least one other servo. It would be possible to wire the next motor backwards so the servo will turn opposite and the two servos could be signaled with a single controller pin. In addition to conserving pins it would ensure simultaneous movement.

Top gear with limit tabs

Flush cutting pliers trimming limit tabs

Potentiometer glued to bottom of servo

Downloadable Files:
To do:
  • Add mouse functionality.
  • Program changes:
    • Add mouse movement
    • Change mouse clicks to press and release according to buttons
    • Add random number generator
      • 0-1
      • 0-1000
      • Random equation followed by enter
  • Modify servos for continuous rotation.
  • Automate wrist mount.
  • Write instructions
    • Schematic

The rest of the posts for this project have been arranged by date.

First time here?

Completed projects from year 1.
Completed projects from year 2



This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.

All information in this blog, or linked by this blog, are not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property or similar, is the responsibility of those involved in the replication.

All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.

Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim claim property or assets based on their post.

This blog, including pictures and text, is copyright to Brian McEvoy.

2015-08-23 (Su)