Introduction: Eye Controlled Wheelchair!
People who have totally lost the use of their muscles cannot operate their own wheelchairs.
The Eyedrivomatic system takes advantage of existing eye tracking technology to allow users to drive their chairs again - using only their eyes. It's a low cost, open source way to give mobility back to people who thought they had lost it forever.
It is intended for electric wheelchair users who have a wheelchair mounted pc which they operate using eyegaze equipment. Currently the system only works in conjunction with the grid2 aac package. However we are writing a stand alone pc application which should be ready before christmas.
This instructable is about building the hardware needed for an eyedrivomatic system. Software installation and getting started will be covered in a separate instructable.
Eyedrivomatic is an open project. Open source software and hardware. For more information, and links to the 3d design files and software, visit
Step 1: What You Will Need.
For one complete
Eyedrivomatic System (one brain box, electronic hand, and adjustable locator)
1 x Arduino Uno R3
1 x 3d printed parts for brain box (base plate, lid, and two cable retaining pieces)
1 x 3d printed parts for Electronic hand (base piece, X servo carrier, lower ring, Y servo carrier,
upper ring, transmission arm)
1 x 3d printed joystick sleeve (the correct internal diameter to snugly fit your joystick shaft)
1 x 3d printed parts for adjustable locator plate (lower ring, upper ring, retaining ring)
2 x Turnigy 380Max Micro servo (or similar high torque micro servo)
2 x metal 25t servo arms (the design calls for a specific model, see illustration)
1 x relay shield (the design calls for a specific model. Please see illustration below)
1 x servo/sensor shield (the design calls for a specific model. Please see illustration below)
1 x USB A to USB B cable (length required depends on where your brain box will be located)
1 x USB A to DC plug (the particular type of DC plug isn't important, as it will be removed)
2 x servo extension cables, male to female (again length required depends on location)
20 x No6 Pan head, Pozi self tapping screws 13mm
10 x No6 Pan head, Pozi self tapping screws 16mm
10 x M3 bolt, countersunk, pozi
10 x M3 nyloc nut
10 x M3 flat washers
1 x self adhesive hook and loop tape. 20mm wide. 60cm of hook and the same of loop
1 x Super Glue
1 x double sided foam tape (5 or 10mm wide, or cut down from a wider roll)
Step 2: Building the Locator.
The adjustable locator is permanently fixed to the wheelchair's joystick unit with double sided foam tape. It provides a reliable and accurate mounting point for the electronic hand. Should it no longer be required, it can be easily removed without damaging the chair.
Clean and sand the 3d printed parts where necessary, until they fit together comfortably, and the upper ring (the one with the four knobs sticking up) is able to rotate easily.
When assembled they should look like the bottom photo. The retaining ring goes on top, to sandwich the upper ring.
Then remove the retaining ring, and put some glue around the inner face of the bottom ring. Then replace the retaining ring. This will glue the retaining ring to the bottom ring, while still allowing the upper ring to rotate freely.
When the glue has set, insert a self tapping screw into one of the locking screw holes (where it will be accessible when on the chair) and tighten it up until the upper ring will no longer move.
Locator wedges (optional)
The locator needs to be installed on the joystick unit, perpendicular to the joystick shaft. Many joystick units have the joystick shaft perpendicular to the unit's upper surface. If you have one such unit, then you will not require a wedge. If however your joystick leans forward relative to the joystick unit, then you will need a wedge to level the locator relative to the shaft.
Select the appropriate wedge and super glue it to the bottom of the locator.
Then fix the locator to the unit with double sided foam tape.Whether or not you used a wedge.
Step 4: Building the Brain Box.
first, assemble the four 3d printed parts needed and sand and clean up where necessary.
Set the lid and the two cable retaining plates aside.
There are three printed circuit boards needed for the brain box, which must be the models in the photo.
From left to right they are; Arduino uno, relay shield, and servo/sensor shield.
Fit the arduino on to the base plate. There are four holes in the arduino, which correspond to two pegs, and two holes in the base plate. Locate the arduino on the pegs and secure it with two self tapping screws.
Then insert the usb cable into the arduino. Next we have to fit the relay shield. It has rows of pins underneath it which fit into the rows of sockets on the arduino.
The pins don't go all the way in, but they go in pretty far – see illustration. Careful not to bend them. Also, make sure that the underneath of the relay shield doesn't touch the top of the usb socket housing on the arduino.
Next is fitting the output sockets. The output sockets are 3.5mm mono headphone sockets, with 17cm of cable attached. Cut them down from mono extension cables, or headphone splitter cables. Just make sure they're mono, not stereo. You will need three. Now, prepare the ends of the cables. Strip them, and twist the ends. Most cables like this will be coaxial, meaning that there will be an inner core which has its own insulation. Around that is a multi strand conductor. Twist that together and that is your second core. Each core needs to be about 8mm long before it disappears into the insulation. And the inner core insulation needs to stick out beyond the outer sheath by about 8mm as well. Bend your 8mm twisted ends in half, so you now have 4mm ends.
Now fit the three output sockets to the green terminal blocks on the relay shield.
The terminal blocks are numbered on the relay shield, one to four. Connect the three output sockets to number one, three and four. Each block has three connection holes, marked NO, COM, and NC. Connect each socket into NO and COM. It doesn't matter which wire goes in COM, and which goes in NO. In the above photo Ben is fitting an output socket to terminal block number four. It is important that there is very little bare wire outside the terminal block, and no insulation inside the terminal block.
In the above photo, the socket attached to terminal block number four is attached correctly. The ones attached to blocks one (at the top of the photo) and three are not. There is excessive bare wire outside the terminal block, which could lead to a unintentional short circuit. Which would be bad.
Next we need to prepare the usb power cable. This looks like the above photo, or similar. We have to cut off the DC plug, and depending on where you want to site your power source, maybe some of the cable as well. Then strip and twist the end.
If you're lucky, as I was, you will have one core with red insulation, and one with black. Red is positive, and black is ground. If you're not lucky, you'll have to find out the cable polarity with a multimeter. You will also need a short piece of of cable with stripped ends, as in the photo – say 6cm long. Now connect the red (positive) wire from the usb power cable to NO on terminal block number two. Then attach the short piece of wire to COM. As in the third photo.
Then it's time to fit the servo/sensor shield. This goes on in the same fashion as the relay shield. Make sure it's well seated.
Now. VERY IMPORTANT. Next to the blue terminal block on the servo/sensor shield is a small green thing, called a jumper. Remove it. By pulling it upwards. And throw it away
Then connect the black wire to GND on the terminal block on the servo/sensor shield. And the end of the short wire to VCC. As in the last photo.
Now gently tug each wire, one by one, to ensure they are well gripped by the terminal blocks.
Next we will attach the two servo extension cables. On the servo/sensor shield is three rows of pins. The three rows are labelled G, V, and S. In the other direction they are labelled 0 – 13. The two plugs need to go into rows eight and nine. It is essential that the yellow or white wire is in the row marked S. The black or brown wire must be in the G row.
The next stage is securing the cables in the two storey cable retainer.
The lower storey is for all the wires except the servo cables. First put a little super glue in each of the little cable channels printed in the base plate. Then lay one cable in each channel. There is one spare channel. Ignore it. Then sit the lower retaining plate on top. The lower plate has channels printed in it too. Place it flat side up. Then screw it in place with self tapping screws. It should look like the third photo.
Now leave it to dry for ten minutes or so.
Then carefully remove the screws, and put a drop of glue in two places, between screw holes.
Then carefully lay one servo cable on each blob of glue. Lay the upper retaining plate on top and screw in place. Nice and tight!
At this point it's well worth labelling your output cables. The servo cable in number eight is called X, and the other Y. The three output sockets are labelled 1, 2, and 3. N'umber one is in terminal block number one, number two is in terminal block number three, and number three is in terminal block number four. The usb cable going in to the arduino should be labelled 'To PC'. The other, thinner usb cable, label 'servo power only'.
Then whack the lid on, secure it with four screws, lean back, relax, and have a cup of tea. The brain box is finished, and ready for firmware.
Step 9: The Electronic Hand.
First, clean the 3d printed parts and sand where necessary.
Check that the base plate fits over the locator easily and snugly.
Two of the parts need glueing together. Check that they fit together well before applying super glue.
Apply glue to the area indicated in the illustration. And slide them tight together.
While those parts are drying, insert an m3 bolt into one side of the upper ring cradle. When it's nearly all the way in, add a drop of glue to the thread, then screw it all the way in. Then set aside.
Then put a bolt in the side hole of the lower ring, facing outwards. Glue it in, in the same fashion.
When everything is dry, fit the side of the upper ring cradle to the lower ring. Make sure the cradle is the right way round. Then glue another bolt into the other side of the cradle, securing it in place.
It should move freely from side to side, but not forwards and backwards. Allow everything to dry.
Now screw one servo to the servo carrier, and one to the lower ring assembly. Make sure both servos are the right way round.
Now we have to centre the servos. This requires you to upload the firmware to the Brain Box, and the software to your PC. This process is covered in a separate instructable. Then you run the software, with the servo cables and a servo power source attached. Navigate to 'trim' and both servos to ninety degrees. Then go to the driving controls and check both servos are moving when you play with the direction buttons.
Now bolt both servo arms to their places on the lower ring assembly.
Each arm has two small allen bolts to tighten the arm onto the servo. When both servos are attached to their respective arms, tighten the allen bolts.
Try not to move the servo spindles during this process. Also, try and install the lower servo in it's carrier as level as possible relative to the lower ring.
Now prepare the transmission arm. Insert a bolt into either end of the arm, washers on both sides of the arm, and secure in place with a nyloc nut.
The nut should be snug, but allow the arm to rotate freely on the bolt. Then fix it to the servo arm upper hole, and the other end to the upper ring cradle, with a nyloc nut.
Now it's time to fit the velcro straps to the base plate. You need a 30cm piece of 20mm velcro for each corner. Hook for the two on the servo end of the base plate, loop for the two on the other end. Feed the strap through the base plate and back around the strap bar, with the backing paper still attached. Half way exactly.
Then peel off the backing paper, and stick the two sides of the strap together.
Then repeat the process till you've done all four.
Finally, insert the protruding bolt on the lower ring into the corresponding hole on the base plate. Slot the servo carrier into place on the base plate, and screw in with two self tapping screws.
And then you're done!
Participated in the
First Time Author Contest
3 years ago
hi i am jazer espinas from the Philippines and i am interested with your device i want to ask your permission if i can base my research from your device but i can't see proper code for this because as you can see i have no proper knowledge about programming can you send the code of your device in my facebook account email@example.com thank you hoping for your kind response
4 years ago
How can i get the stl files of the 3D printed parts?
6 years ago
Can you please upload a video showing demo of it please ?
7 years ago
This is awesome.
7 years ago
amazing work! congratulations
7 years ago
This is excellent, thank you for sharing your work here on instructables.