Prelude: Seattle Hardware Workshop
I recently attended Seattle Hardware Workshop and learned quite a bit. Thank you @marcbarros for considering our work here in Microsoft Research a 'startup' so we could benefit from the collective wisdom of the Seattle startup community.
Two thoughts I took away from the workshop are "iterate hardware rapidly, once a week if possible" and "stay in the easy prototyping space of Arduinos and 3D printing as long as you possibly can". With that in mind, we're continuing to focus on improving the wheelchair interface -- using Arduinos and 3D printing.
Third Generation Interface
- We need to improve the durability of the connectors. Our first happy customer was, within days, able to pull the connectors off our second generation design. I saw this coming -- in my days prototyping robots the first thing to break is almost always an unsupported connector like a USB port with a hanging cable.
- We moved to the Arduino Micro from the PJRC Teensy 3.1. The primary reason for this is that it's much easier to find an Arduino than the slightly less well known Teensy.
- We added 'fifth switch' support to the design to allow future expansion in how we interact with the Omni.
Here's how you create this updated interface:
Arduino Micro, USB 2.0 Micro connector cable, passthrough db9 serial cable
Step 1, Splay the Cable
Cut off one DB9 connector and splay the cable. I use a sharp pocket knife for this.
Step 2, Strip the Wires
Strip the wires, about 2 mm, so you can solder them to the Arduino ports
Step 3, Map the DB9 pins
I use a multimeter to map which color wires go to which ports. I think create a map that looks like this:
From the PG Drives Omni documentation:
Step 4, Solder the wires
Solder the wires, leaving two pins (7 & 9) disconnected.
Step 5, Create mounting board
To keep wires from coming disconnected under strain, I quickly laser cut a little mounting board so I could hold down the Arduino and use cable ties to take the strain off the connectors. I have access to a laser cutter to make this part. Laser cutters aren't very common-place but 3D printers are, so for our next revision we'll be moving over to a 3D printed part instead.
We're already at work on our fourth generation design. What will we do differently?
- Create a 3D printed 'case' that you can print yourself or order from a printing house like Shapeways.
- Add a DB9 connector to the case so you don't have to cut open a cable and strip its wires. There will still be a little soldering involved to wire up the connections from the Arduino to the DB9 connector.
- Add a few status indicator lights to help diagnose when things go wrong.
- Update the firmware (e.g. Arduino program) with more intelligence to help diagnose errors and drive the status lights.