Wednesday, September 30, 2015

2015-09-29 (Tu) Wrist Mounted Chording Keyboard

Modeling was done for a five-part platform to hold the keyboard. The concept was to mount a countersunk magnet to the hole in the flat area and a similar magnet would be on the keyboard. Magnets would allow the keyboard to rotate freely and be instantly removable or kept in place while typing. Four spacers were rendered separately so their size could be adjusted individually. It may be important to make a pair shorter or longer than the other pair so the magnet would not be centered.

Model of keyboard holder with indiscriminately sized spacers

Magnets were ordered domestically. Two countersunk magnets were purchased with the intention of mating them face-to-face so one magnet was ordered with the countersunk face as the north pole while the mating magnet was ordered with the countersunk face as the south pole. Identical magnets would naturally repel.

Downloadable Files:
To do:
  • Wrist mount
    • Servo arms
      • Bend around spacers
    • Terminal board
      • Input voltage
        • USB
        • 6-15volts
    • Make base for keyboard
    • Integrate:
      • Enclosure for each controller
        • Potentiometer access
      • Activation switch
      • Power connection
    • Debug 
    • Test
    • Refine
    • Repeat
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with every part labeled 
    • Schematic for servo controller

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-09-28 (M)

Tuesday, September 29, 2015

2015-09-28 (M) Wrist Mounted Chording Keyboard

Code started on 2015-09-25 (F) was fixed. This code was previously posted and since it was updated code shown in both locations was working. Code fixing actually took place over the weekend rather than a single day but resulted in successful tests. Video and images were taken which shows the operation of the servos with a simple switch substituting for a hand operated switch.

Google has made many poor attempts at animating photo bursts but the result from 80+ pictures was a nearly perfect loop which showed the switching being used to move both servos forward and backward simultaneously. There was no need to reverse the frame sequence. A tripod was used to hold the phone steady while the switch was activated.

Loop of servos moving synchronously

Video was taken which also demonstrated the movement but also showed that the switch was not being held at any point but was instead pressed and immediately released. Holding the switch would negate any movement on the part of the servos, motion only begins with the release of the switch. This also ensures there is not erratic movement if the switch were held indefinitely. If immediate reaction is desired the debouncing code in the readHandSensor() function could be removed.

Video demonstration of servo control


Downloadable Files:
To do:
  • Wrist mount
    • Servo arms
      • Bend around spacers
    • Terminal board
      • Input voltage
        • USB
        • 6-15volts
    • Make base for keyboard
    • Integrate:
      • Enclosure for each controller
        • Potentiometer access
      • Activation switch
      • Power connection
    • Debug 
    • Test
    • Refine
    • Repeat
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with every part labeled 
    • Schematic for servo controller

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-09-27 (Su)

Monday, September 28, 2015

2015-09-27 (Su) Wrist Mounted Chording Keyboard

Programming for the new servo control started from the test program written yesterday rather than the code written specifically for the wrist mount. Only the code for toggling the position bit was kept. Bulky code, including the bit toggling code, was moved out of the main loop() and into appropriately named functions to increase readability. Comments were still sparse.

Code this time doesn't rely on limit switches so there are two fewer inputs. Inputs were also moved from pins appropriate to the Digispark to pins appropriate for a standard Arduino board. A Pro Mini board was chosen.

Servo control used the code from yesterday which used a timed pulse from 500µS to 2500µS which was double the standard range. The standard servo library used timed pulses from 1000µS to 2000µS. Additionally a new trick was added which sends a 3000µS (3000µS = 3 milliseconds = 0.003 seconds) pulse to the servo that should effectively disable it and reduce power consumption. The position is reasserted periodically in case of slippage.

An analog input variable was processed to control the speed. During demonstrations it may be better to have the servos move slowly to catch the eye and give the impression of a heavy-duty machine while fast moving servos would be more convenient when a keyboard is immediately necessary.

Downloadable Files:
To do:
  • Wrist mount
    • Servo arms
      • 40mm longer
      • Straight
      • 2 hinged
      • 2 servo ended
    • Program
      • New times for servos. 500µS to 2500µS
      • 3000µS to stop
      • Potentiometer input, A0
        • Speed. 1-100
        • Refresh once positioned
    • Terminal board
      • Short wires
      • 2 servo connections
      • Screw terminals for wrist switch
      • Potentiometer
      • Input voltage
        • USB
        • 6-15volts
    • Make base for keyboard
    • Integrate:
      • Servos
      • Enclosure for each controller
        • Potentiometer access
      • Activation switch
      • Power connection
    • Debug 
    • Test
    • Refine
    • Repeat
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with every part labeled 
    • Schematic for servo controller

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-09-25 (F)

Sunday, September 27, 2015

2015-09-26 (Sa) Wrist Mounted Chording Keyboard

Servo and hinge arms will have to be refashioned for the new keyboard. Previous versions, shown below, were short and highly specialized shapes. New version will still need specialized shapes but they should be mirror images of one another.

Old model of levers

Updated levers were modeled as entirely straight and 40mm longer. The new keyboard will likely be held in place with magnets, another feature taken from the 3rd Hand project previously mentioned so the base can be simpler which should make the next update to the levers easy.

Straight levers for servo and hinges

Downloadable Files:
To do:
  • Wrist mount
    • Servo arms
      • 40mm longer
      • Straight
      • 2 hinged
      • 2 servo ended
    • Program
      • New times for servos. 500µS to 2500µS
      • 3000µS to stop
      • Potentiometer input, A0
        • Speed. 1-100
        • Refresh once positioned
    • Terminal board
      • Short wires
      • 2 servo connections
      • Screw terminals for wrist switch
      • Potentiometer
      • Input voltage
        • USB
        • 6-15volts
    • Make base for keyboard
    • Integrate:
      • Servos
      • Enclosure for each controller
        • Potentiometer access
      • Limit switches
      • Activation switch
      • Power connection
    • Debug 
    • Test
    • Refine
    • Repeat
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with every part labeled 
    • Schematic for servo controller

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-09-25 (F)

Saturday, September 26, 2015

2015-09-25 (F) Weekly Summary

Servo control. Servo control has been kicking my butt all week. On Thursday I kicked back.

Digisparks are great little boards. They're inexpensive, they can emulate a keyboard and mouse, they don't need a USB↔Serial adapter and they're tiny. But they are a stripped-down version of a full-fledged Arduino. While programming a few problems came out which I tried to remedy. The first problem was that the board did not support the pinMode INPUT_PULLUP which activates a built-in pullup resistor and the second problem was that it wouldn't support Arduino's servo library. Neither of these was detrimental. Physical pullup resistors were soldered in place but they had to be removable because one of the pins was needed for communicating with the computer. Merely annoying. Second change was to remove anything which used the servo library and replace it with code that would output the same thing as the servo code. This turned out to be difficult on a Digispark and I'm still not sure why.

Pullup resistors on the terminal board

After the Digispark failed to perform a larger Arduino Pro mini replaced it. The pullup resistors were removed from the board and replaced with software pinMode INPUT_PULLUP. Arduino Pro Minis also support serial debugging which the Digispark cannot do easily. I was expecting to need readings from through the serial port about the timers controlling the servos but the servos simply worked better on the Pro Mini which is a mystery to me. Programming for the Pro Mini was updated but still used the timing algorithms instead of the servo library. Timing algorithms are more versatile since they can cut or supply constant power to the signal pin which effectively disables it and reduces power consumption.

Arduino Pro Mini replaced the Digispark

A timegamble resulted in the best news all week. Stock servo, unlike the ones previously modified for continuous rotation, could be convinced to rotate a full 180º by using PWM values outside the normal convention. In other words, by giving the servo signals longer or shorter than normal it would rotate more than normal. The solution worked so well that two servos could be held together while they spun without slipping off each other. Anyone copying this project won't have to modify their servos because I learned the hard way.

Servos cycling synchronously

Powering the keyboard has involved opening the case and installing a 23A battery every time then opening it back up to take the battery out when I'm done. This is a pain even when I'm at my desk and there's a screwdriver within arm's reach. Connecting it to a computer is even more difficult since the USB port is inside the case and using it meant attaching directly to the fragile electronics while the top was off. A micro USB breakout board was attached to the side of the enclosure and extends the USB port to the outside. This connection can be used for power or keyboard or both.

Keyboard with accessible USB port

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, September 25, 2015

2015-09-24 (Th) Wrist Mounted Chording Keyboard

Finally! A breakthrough.

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

Limit switches were selected. Ordinary levered micro switches were stocked and a good choice due to their rugged design and light operating pressure. Placement was at the extents of the travel range just outside of the servo hub's radius. Modeling holes in the chassis of the wrist-mount would extend the front of the unit slightly. Consideration was given to attaching the switches to the mount where the outer hinges attach but that would extend the overall width which was not desirable.

 Holding a switch over the chassis

Dimensions for the switch were taken. Hole side was measured by inserting drill bits until a snug size was found. This use of drill bits meant that one measurement on the drawing was in imperial units while the rest were in metric.

Switch sketch with relevant dimensions

A device claimed it could make ordinary servos rotate 180º without any modifications to the servo. It was not a common device and it wasn't cheap. But this sort of thing would eliminate the need for limit switches and would servo modification. On this speculation a simple program was written which would send pulses to the servo that were outside the established time frame.

A couple times this blog has mentioned the PWM which controls servo movement. Every 20 milliseconds a pulse is sent that is 1000 microseconds to 2000 microseconds. The length of that pulse determines what the servo does. The program was written to test times outside of those limits. Arduino supplies a servo library and example which causes a stock servo to turn all the way in one direction, 1000 microseconds, spin all the way the other directions, 2000 microseconds, then repeat. Instead of relying on the servo library and convention of these times new times were input which did permit 180º of rotation with a stock servo.

The program went a step further by simultaneously making a second servo rotate in the exact opposite way so they were mirrored of each other. Their movement was so synchronous they could be held together by the servo horns and not slip off each other. With this type of range the continuous rotation servo was not necessary.


Stock servos rotating 180º


Changes to the operating program will be necessary to rely on servo positioning instead of limit switches. The terminal board can also be replaced with a smaller version since two inputs will not be necessary. A potentiometer will be added so adjustments to speed can be made "on the fly" which can also help with debugging.


----------

Servos have been a focus for a while on this project which has been good and bad. I learned a lot working with them this time around. For the most part I've relied on Arduino's servo library and the conventional wisdom around the internet. Struggling with the Digispark paved the way for getting away from the servo library and surfing eBay revealed a product which claimed to exceed the bounds of ordinary servo movement.

It has been frustrating so hit so many road blocks but this has also taught me a lot about the electronics I work with. Experimenting with the servos was a timegamble that paid off. I try a lot things which don't pan out so I leave them out of the blog because it would be boring. In this case the it paid off in a big way. This discovery saved me several days of work.

Timegambles don't often get published here but my failures sure do. The first two paragraphs of this post are about a limit switch even though I won't be using them. It's important to me to show the path I took even if it's not the path I want people to follow. There's more than one right way to do this but there's not point in taking the harder path.

Now I can use these modified servos in another project. Dunno what yet.

Downloadable Files:
To do:
  • Wrist mount
    • Servo arms
      • 40mm longer
      • Straight
      • 2 hinged
      • 2 servo ended
    • Program
      • New times for servos. 500µS to 2500µS
      • 3000µS to stop
      • Potentiometer input, A0
        • Speed. 1-100
        • Refresh once positioned
    • Terminal board
      • Short wires
      • 2 servo connections
      • Screw terminals for wrist switch
      • Potentiometer
      • Input voltage
        • USB
        • 6-15volts
    • Make base for keyboard
    • Integrate:
      • Servos
      • Enclosure for each controller
        • Potentiometer access
      • Limit switches
      • Activation switch
      • Power connection
    • Debug 
    • Test
    • Refine
    • Repeat
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with every part labeled 
    • Schematic for servo controller

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-09-24 (Th)

Thursday, September 24, 2015

2015-09-23 (W) Wrist Mounted Chording Keyboard

Servo control was finally solved with the Arduino Pro Mini. Significant changes to the program weren't made so the Digispark was not an appropriate choice. This may have been due to the lack of built-in pull-up resistors or a populated communication pin. Size and cost differences were negligible so the decision to change controllers was not difficult. Code for the Arduino Pro Mini was also able to be written, monitored, and uploaded through codebender.cc and that code is provided here.



Operation of the servo motors went well. A wire was bridged between the switch terminals to simulate position changes and limit switches. When the position switch is pressed, momentarily, the direction of the servos should change to extend or retract. When the appropriate limit switch is pressed it tells the controller that the device is in location and it the servo can be turned off.  A video was made to demonstrate the function of each of the inputs.

Tangle of wires and programming hardware

Video demonstration of servo controller

Downloadable Files:
To do:
  • Wrist mount
    • Make longer straight servo arms
    • Make base for keyboard
    • Integrate:
      • Controller
      • Servos
      • Enclosure for each controller
      • Limit switches
      • Activation switch
      • Power connection
    • Debug 
    • Test
    • Refine
    • Repeat
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with everything labeled 
    • Schematic for servo controller

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-09-23 (W)

Wednesday, September 23, 2015

2015-09-22 (Tu) Wrist Mounted Chording Keyboard

Servo programming was written for an Arduino Pro Mini by lifting the code previously used for the Digispark. Without the ability to get serial feedback data it was unnecessarily difficult to debug. Servo control relies on precise PWM timing and using numeric feedback from the controller allows easy confirmation that the correcting timing is being used. Digispark required the data pins for this project so feedback was not possible with every I/O attached plus it required another library and unique terminal-style program.

This is another perfect example of a time when breadboarding would have me saved time.

Desoldering was done on the terminal board so it could be reattached to an Arduino Pro Mini. Pull-up resistors were no longer necessary so they were removed and discarded. Programming was changed to reflect this; Digispark, with an Attiny85, did not support the pull-up resistor function while the Arduino Pro Mini, with an ATmega328, supported it. This reduced the hardware necessary and would make rebuilding or copying the hardware simpler.

Arduino Pro Mini to replace Digispark

Pro Mini soldered to terminal board

After the necessary soldering work the device was powered and programmed. Testing for the device was powered from a USB battery through a programming board. Servo control was not perfect but debugging should be substantially easier. A video was taken of the first try. Some of the problems include jerky movement and unreliable switch reactions. A power connector will have to be attached.

First attempt at servo movement with Arduini Pro Mini

Downloadable Files:
To do:
  • Wrist mount
    • Make longer straight servo arms
    • Make base for keyboard
    • Integrate:
      • Controller
      • Servos
      • Enclosure for each controller
      • Limit switches
      • Activation switch
      • Power connection
    • Debug 
    • Test
    • Refine
    • Repeat
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with everything labeled 
    • Schematic for servo controller

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-09-22 (Tu)

Tuesday, September 22, 2015

2015-09-21 (M) Wrist Mounted Chording Keyboard

I'm going to take a long time to get to the point today so skip to the project photos if you just want the project work.

I was in a traffic accident this morning. I'm not entirely blameless. This is what happens when you don't leave enough space between yourself and the vehicle in front of you. No big deal for me. No more damage than a perfect "stamp" of the leading car's trailer hitch. She was fine. Her vehicle was fine.

"Stamp" of a trailer hitch

Now the lesson. There was a motorcycle behind me and he wasn't paying enough attention or leaving enough space either. He hit the back of my car and left in an ambulance. I feel awful for this guy because he was in a bad state when he left. Not life threatening but definitely in shock. No helmet.


 Tipped Harley. I waited until the injured guy was gone to take any pictures.



Keep a safe distance from the car in front of you or you'll end up being the dick bag who holds up rush hour traffic. Don't do that.

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


Project work started with disappointing but inevitable news. The controllers being used for servo control were a poor choice. The biggest problem is that they do not support Arduino's servo library. An alternative was found but it was difficult to understand. Instead the timing routine used to control servos was built into the program. This turned out to be very difficult to debug so it could not be perfected despite being a simple algorithm. This hardware will change to an Arduino Mini Pro which are stocked.

After spending a good portion of project time with nearly fruitless efforts the only gain was finding that servo motors will disengage if they are not given a signal. Standard Arduino servo library continually sends the servo timing cycle to constantly encourage the position. With ordinary servos this makes sense but the finicky home-made continuous rotation servos were difficult to tune so disengaging them would be preferable.

Instead of immediately writing a program for an Arduino Mini Pro it was decided to add an external USB port. This port was nothing more than a micro USB extension cable which could be fastened with screws. One end of the cable was a micro USB male salvaged from a damaged data cable and the female port was a micro USB breakout board.

 USB extension cable

Flush cutting pliers were used to cut a few layers of the case at one end to allow wires to pass through. Ideally the board would be fastened from the inside and only the receptacle would be visible but exposed electronics will be acceptable for the project at this phase. The board was given a plastic spacer to go between the board and the enclosure so there was clearance to plug a cable. The lid was able to be reattached and sit flush with the enclosure.

Layers trimmed on the top edge of the enclosure

Board mounted to side of keyboard

Lid attached to keyboard

Downloadable Files:
To do:
  • Wrist mount
    • Add limit switch mounts
    • Lengthen servo arms
    • Integrate:
      • Controller
      • High precision potentiometers for tuning servos
      • Servos
      • Enclosure for each controller
      • Limit switches
      • Activation switch
    • Debug 
    • Test
    • Refine
    • Repeat
    • Activation switch
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with everything labeled 
    • Schematic for servo controller

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-09-21 (M)

Monday, September 21, 2015

2015-09-20 (Su) Wrist Mounted Chording Keyboard

10KΩ resistors were soldered to Vcc and the input terminals for the switches. These pull-up resistors provide a means of telling when a switch is open or closed by supplying a high signal to an input pin while nothing is connected and a ground signal when a switch is closed. As mentioned yesterday the pins which were also used for USB communication had to have resistors which could be removed for programming to take place. After reading some documentation it may have been unnecessary to attach a pull-up resistor to pin 3 where there was already a 1K5 resistor used for communication.




Program was simplified since there will be no need for another servo which deploys key levers. Before the program would understand it was in rear position and hold that position by observing a limit switch. If the rig fell out of that position the motors would kick in until the position was reacquired. If the hand switch was triggered the rig would move forward until the other limit switch was reached at which point the servos would stop and the deployment servo would activate for a moment. There was no need for some of that so the program was reduced. The hand switch toggles between two states. If the machine is in one state the servos activate one direction until they see a limit switch. If the machine is in the other state they run in reverse until they see the other limit switch. This routine was simpler to comprehend and simple to code.

Code will be posted when it works properly.

Resistors pulled out of terminals for programming

Downloadable Files:
To do:
  • Wrist mount
    • Add limit switch mounts
    • Lengthen servo arms
    • Integrate:
      • Controller
      • High precision potentiometers for tuning servos
      • Servos
      • Enclosure for each controller
      • Limit switches
      • Activation switch
    • Debug 
    • Test
    • Refine
    • Repeat
    • Activation switch
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with everything labeled 
    • Schematic for servo controller

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-09-18 (F)

Sunday, September 20, 2015

2015-09-19 (Sa) Wrist Mounted Chording Keyboard

Servo library code was stripped from the program and new code was written to command the servos. Instead of writing a neat integer, 0 to 180, to a library function this code sets the servo communication pins high, waits for 1000 to 2000 microseconds then sets the pins low again.

Uploading from codebender.cc to a Digispark may work but I haven't tested it. Copying the code into Arduino Integrated Development Enviroment, Arduino IDE, has worked.


Downloadable Files:
To do:
  • Wrist mount
    • Add limit switch mounts
    • Lengthen servo arms
    • Integrate:
      • Controller
      • High precision potentiometers for tuning servos
      • Servos
      • Enclosure for each controller
      • Limit switches
      • Activation switch
    • Debug 
    • Test
    • Refine
    • Repeat
    • Activation switch
  • Write instructions
    • Compress and link to all files
      • OpenSCAD files
      • STL models
      • Arduino code 
    • Make diagram with everything labeled 
    • Schematic for servo controller

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-09-17 (Th)

Saturday, September 19, 2015

2015-09-18 (F) Weekly Summary

The week started with a sad realization that the keyboard design with the fancy folding key levers simply wouldn't work. A fresh design was conceptualized which had finger keys and thumb keys opposite each other so pressure wouldn't push the keyboard away. A soft prototype was just switches jammed into an eraser with four on one side for the fingers and three on the other side for the thumb.

Eraser soft prototype

A more detailed drawing was made which outlined the idea of how to make the enclosure. At that point it seemed logical to add a small battery and rely on the wireless. Having the battery in hand also meant that the keyboard could be removed and used independently of the wrist harness. This approach should have been used from the beginning.

Drawing of keyboard enclosure

After sketching the enclosure with key mounting sockets it was modeled using the custom enclosure from a week ago. Spacing for the finger keys was kept standard but the three thumb switches were put right next to each other. Once it was printed all the switches were given wires and placed in the enclosure. Tension on the finger switches was enough to keep them in place but the thumb switches had to be glued.

Rotating model of keyboard enclosure

3D Print of enclosure

Electronics were added. A small piece of stripboard was included to provide enough terminals for ground wires. There was plenty of room in the enclosure so wires were left unnecessarily long. 23A batteries were chosen because they are small and provide more than 5 volts. USB connection was ignored for the meantime but may be added later. USB connectivity would just mean extending the micro USB port on the Arduino to a USB micro connector on the outside of the box. A test text was sent to Gavin using the keyboard entirely wirelessly/

Wired up keyboard

Test text to Gavin

Programming for the servo controlling had been done a week ago but never put in a controller and tested. Thankfully the servo controller and keyboard controller were separated early on. A terminal board was given servo terminals and screw terminals to make it easy to attach two servo motors and three switches. The terminal board was then connected to the controller with salvaged wires. The program was put in but had a lot of bugs, some of which were due to the controller. These issues could have been avoided by using a larger Arduino Mini Pro but the difference in size, about half, may be worth the extra work.

Digispark (Arduino) connected to a terminal board

Programming the Digispark over USB

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.