-
Boards on Tindie, (Rudimentary) Build Instructions added!
08/23/2018 at 17:01 • 0 commentsHello, you beautiful people, you. It's obviously been a long time since I've shared any news on this project, and even more obvious is the fact that I've sinned letting such a great project sit for so long without any love or updates.
I'm posting today, to tell you that the boards will (very) soon be up for sale on Tindie! I must apologize, my own quest for perfection on this project prevented me from putting them in the shop until a fully detailed build log was published, but while trying to finish that, I ended up on other work projects, switching jobs and most recently becoming a homeowner (WOO HOO!).
But after settling into this new job, I've become enchanted with the freedom I had to build cool projects, and I want to get back into the scene. I've had discussions with people lately about the cool projects they want to build and control using a power Glove, and I've had a few requests asking when the boards would finally be for sale.
With all this in mind, I've decided that I would finally put together at least a quick and dirty step-by-step guide so that I can allow myself to let loose the boards upon the world. Also I've decided that I will get my Power Glove up and running again and fly a drone by the 23rd of September (one month from now). A longer goal is to create a version 2.0 of the board, and though I won't be setting a timeframe for it, I'd like to implement BLE and Wi-Fi, allowing for more communication options.
I've submitted the product page for approval and will post it as soon as it is available.
Thank you all for your support and interest in the 2 years since the project was created. I can't wait to see what you build with your Gloves!
Nolan
-
Boards Are In! Let's Put It All Together!
05/01/2016 at 19:48 • 0 commentsThis is the big one! After a few weeks, both boards are finally here! Small disclaimer though: the control board actually arrived a couple weeks prior to the sensor board, but since I found myself still trying to catch up on logs, I ended up waiting to write this one until both boards had arrived and been tested. As you can see in the photo below, they came from two different board houses. The sensor board on the left was produced by Seeed Studio, and the control board on the right (dubbed the Main Board on the silkscreen) was made by Accutrace (a.k.a. PCB4U.com).
Both boards are of good quality, but due to a much sharper silkscreen and a deeper color (and better quality) soldermask, the control board totally took the cake. I'd ordered boards from both houses previously for work projects, so I knew what sort of quality I would getting on these ones. Perhaps I'll do a separate post elsewhere one of these days on differences between various board houses...
But anyway, let's get these boards installed!
The Control Board
To install this board, I'll be replacing the modified board in the old glove (not the new one covered in the previous log), but first I've gotta get the board assembled. There are relatively few components, making this a fairly quick procedure. This is fortunate as there were barely any photos taken during the assembly and testing of the new board (I mean, there's not too much going on just yet). I do have this mini collage though:
Not shown in the photos above, the back half of the enclosure was modified to fit the various components that proved to be a bit too tall to fit within the case. Using a Dremel, a hole for the Pololu voltage regulator and serial header was made along the top (narrower long side) of the case. The ESP-01 was also a bit too high, but in the interests of not cutting too many holes, was left alone (the final testing unit may have had more tape holding it together than was envisioned). To put it bluntly, besides the planned ESP-12E and the top-side LED, nothing would've properly fit into the case without modification. Achieving a slimmer profile will require future boards to use more SMD components and preferably no through-hole modules.
A few other expected issues arose during testing. I'll list them out here with the lessons learned in bold.
- Don't forget your required components. As mentioned in a previous log, I had forgotten to add reset and bootloader buttons to the ESP sub circuit. After soldering a jumper wire to the ESP's GPIO0 pin directly to be able to set bootloader mode during a hard reset, programming the ESP became only a slight PITA.
- Plan ahead. Though not necessarily a design issue, the voltage dividers needed for the glove's flex sensors still had no designated footprints. Those resistors would be found on the sensor board. I ended up soldering the resistors to the incoming wires from the sensor board directly. Ugly, but sufficient.
- You get what you pay for. A final issue presented itself in the actual components. As the first picture in the collage shows, I originally used an ESP-12 WiFi module. Unfortunately, this module, as well as another I replaced it with soon after, were sourced from what I believed to be a somewhat respectable international distributor on Aliexpress. After getting them soldered to the board, I found them to be DOA as they refused to respond to firmware upload attempts. In the end, I replaced both of them with a working ESP-01 module (not exactly less sketchy, got it on eBay from China, but thank goodness I put that extra footprint in there!).
Board issues out of the way, there were a couple necessary changes to make to the Teensy's firmware. A new configuration was set for the board's new keypad layout, and pin definitions were updated to match the new pinout.
With the glove finally ready for use, a single cell Li-Po was connected to the control board and hidden in the gauntlet underneath the enclosure. With the USB battery pack and previous mess of wires gone, the glove was finally properly wireless! And due to minimal changes in the firmware, everything functioned as expected. Ready for the next step!
The Sensor Board
As mentioned in the intro, the sensor board arrived a few weeks after the control board, meaning that everything so far had been tested and was working properly. Thanks to the small number of components, this board would be much quicker to implement.
And... we're done. Easy, right? This one's been installed in the brand new glove I logged about previously!
One thing though, see those voltage dividers right there? The ones with the 33k ohm resistors? I made a bit of a mistake; I meant to go with 330k resistors.
Utilizing the wires I'd soldered to the new (original) sensor board, I found the values of the sensors to hover around 200k when relaxed and 450k with fist closed. With that range, 330k ohm resistors would have given a range of to 1.396V to 2.055V, a 0.659V range or about 205 values. Using 33k ohms gave a usable voltage range of about 0.225V to 0.467V, a 0.242V range or only 75 values at 3.3V. Not to worry though, I went back and swapped them out later, after realizing my mistake during testing.
Also, though the IMU was rotated counterclockwise, there was no need yet to update the Teensy firmware. At this point, the "protocol specs" still were and are not defined, and I would be correcting for the change on the ESP end.
Because the top half of the enclosure still had the speaker/piezo attached, I chose to instead use the enclosure from the old glove, the first sign of it becoming a Frankestein's-monster-like monster.
Assembling Another Control Board
Assuming testing went well, the boards used would essentially be the final prototypes. I decided to assemble a new control board that would be cleaner and fit properly in the enclosure (to the best of its ability).
I attempted to desolder the switching regulator from the old board but accidentally chipped a tiny piece off of the module's inductor, rendering it useless. After acquiring a new one, I made sure it worked and got it installed. To keep things on the short side, I picked up an ESP-07 module from the Hackaday Store (quality assured!) to replace the tall ESP-01, and the Teensy was soldered directly this time.
Eschewing the JST PH header (for the single cell Li-Po) in favor of a JST RCY wired connector, allowed more flexibility in the battery situation and let me use a 2 cell Li-Po with that connector already attached. I also attached a bootloader switch (and created a custom FTDI adapter) to make programming the ESP easier.
I didn't want to have to deal with the original crimped wire bundle this time around, so I twisted 8 wires together to create the board-to-board link and sheathed them with flexible braided wrap. Yes, I would be diverging from the mantra about maintaining the original look that I'd mildly stuck with up to this point, but the result actual looked quite good. As the wires were all black, a fair amount of continuity testing was in order.
The new board was installed in the front panel of the new glove, but I'd be using the old back panel to avoid making cuts in the untouched new one.
All in all, this iteration was shaping up nicely. With the two boards now connected, both were properly tested and found to work perfectly. It was time to reassemble everything.
The Finale
Yeah, I know this one's an earlier picture and missing the bootloader switch, shh!!
Enclosure and arm buffer thing back in place, Li-Po battery ready to go !
Those soulless eyes... It truly is a monster. For now...Time to play.
And there you have it. The revamped Power Glove UHID, Mk I.
With the glove finally complete, I'll be putting more time into the actual HID component. The glove only utilizes WiFi at this time, but my goal is to find a control standard that I can follow (good) or create my own (bad) that works across as many communication mediums as possible. In the meantime, I'll probably start with setting the Teensy up as USB game pad. Even better, configuring the glove as a MIDI controller (a la Imogen Heap's Mi.Mu Glove)!
The next version of the board will likely feature Bluetooth as well as a cleaner board design with fewer through-hole parts and modules as mentioned earlier. SMD parts will leave me with much more room for components, a boon on a board with essentially a single usable side. Hopefully I'll even be able to add in that "expansion port" as well for future connectivity.
Stay tuned! Wicked awesome video coming soon!
-
Unboxing a BRAND NEW Power Glove
05/01/2016 at 07:07 • 0 commentsFantastic News!
After weeks of scouring eBay for the perfect deal, I managed to acquire a brand new Famicom Power Glove which I will be using for this project from now on! Marvel in the glory that is a recently opened 1989 video game accessory!
Having a brand new glove nets me these important features:
- Brand new, very clean unit: The original one I started with had been in use and storage for some 27 odd years before finally being used once again. With this new glove, I'll have a beautiful, new (it's matte so still no shiny) glove to show off. This also allows me to use the old glove as a testing platform which I won't be afraid to get dirty or further mutilate for the cause!
- Untouched flex sensors: I hope to find the new glove's flex sensors in pristine condition, allowing me to NOT completely decimate the aesthetic value of the glove by ripping its fingers open to install new sensors.
- A sub-par gaming experience: Should I ever acquire a Famicom and at least one Power Glove specific game, I can finally live the awesome, yet wholly disappointing experience that thousands of kids in the late 80's went through after unwrapping a Power Glove on their birthdays or Christmas. The reason I did not test the Glove on an NES sooner was because I never received the required sensor bar unit with my previous eBay find.
The Unboxing
There are some 20 odd photos in the unboxing, so I'll spare us both the trouble of posting all those here. Instead, here's a convenient Google Photos album:
https://goo.gl/photos/Tco4qDA3z9MXLcUo6
A couple neat details to note about the glove after the unboxing:
- Besides the branding, logos, language and connector on the sensor unit, the glove appears to be essentially the same as the American Mattel version. Not too surprising, but we'll see if there are any differences under the hood.
- As you can see in the last photo, the instruction manual/programming guide features some pretty cool cartoon illustrations of proper use of the glove. It would be nice to see more graphics like that now-a-days.
- It's just too freakin' cool.
Mini Teardown
From the teardown of the previous glove, I didn't expect to find anything really different about this glove, but regardless since it was going to be gutted soon anyway, I figured I might as well share the details with you lovely people right now. There are only a few pics, but if anyone would like any specific detailed shots, please feel free to leave a comment. As Dave Jones would say, "don't plug it in, take it apart!"
Four screws hold the foam arm guard plate, rubber, and control board enclosure together
The control board. This one is rev F, whereas the Mattel glove has a rev E board.
Four screws later...
Other than the color of the ultrasonic sensor housings, pretty much identical to the Mattel version under the hood
Wires to the flex sensor connections for testing
Freshly (but gently) ripped guts
The good news is, the flex sensors seem to work well. There are still some fluctuations in the values, but compared the previous glove's sensors, these are fairly solid and will be useful. Thank goodness, I was REALLY hoping I wouldn't have to cut the fingers open again (though now I can freely mess with the other glove to perhaps find a less intrusive means of replacing the sensors).
Other than that, not too much to note about the components. Next time, we'll hopefully get some boards installed so that some real testing can finally begin!
But, before I go... obligatory awesome shots:
-
Log Catch Up, Part Two
04/26/2016 at 23:45 • 0 commentsYes, the wait is over! Part 2 has finally arrived!
In this log, I’ll summarize the design process I went through with Eagle and later KiCad with the control and sensor board replacements for the Power Glove. To be honest, this information is a bit outdated as I have already received the boards mentioned herein, but I feel obligated to catch up and put out a full build log. If you’re not interested in the design process and want to see some results NOW, hang tight! I’ll be posting a log with the boards and current prototype soon. Otherwise, have a sit in your favorite chair (or other accommodating local seating), relax and read on!
Getting Started in Eagle
The initial design was very simple, yet perhaps slightly over engineered. It featured a standard ATmega328P-based Arduino as the brains for ease of design. FTDI and ICSP headers would be provided for programming and debugging. SPI GPIO expanders (MCP23S08 and MCP23S17) would be used to collect the button inputs, taking advantage of the chips' interrupt features to eliminate the need for polling. 5V from the FTDI cable would power the Arduino as well as a 3.3V LDO for the external sensors. Any sort of expansion port to provide additional features or extra prototyping capabilities was absent.
After taking initial measurements of the Power Glove's main control board, I drew up the board outline, placed mounting holes, created the spiral button pad footprints and marked said button pad positions on the board, attempting to stay as true to the original as possible. Unfortunately these measurements were made hastily in anticipation of getting the board fabbed quickly, and their inaccuracies showed when printing out the board layout for physical design checks. Still, I went ahead and began adding my previously chosen set of components to the board. The button footprints were initially on the top layer but were flipped to the bottom to follow the standard of placing components on the top layer. The ATmega, GPIO expanders and voltage regulator were added as SMD components, while through hole headers were used for a reset button and ICSP, FTDI and sensor board connectors. I started routing traced and made decent progress, but ultimately the board was left unfinished. The project was temporarily dropped when a project at work pulled me away and kept me constantly busy.
The unfinished Control Board, version 1
A Minor Detour
During the time away from the project, I had been looking into button pads on other controllers and remote controls and wanted to try some different styles. New octagonal button footprints were created, and a test board with various types of pads was hastily cobbled together with the idea of comparing the designs.
The board was manufactured by OSH Park but was ultimately unused due to a lack of time and perceived usefulness. Still, finally seeing the little gold button pads on a board of my own making was pretty neat.
The Button Tester Widget
Fly Like an Eagle: Round 2
When the project was picked up again sometime later, attempts to make new, more accurate measurements were made, resulting in a new board outline and adjustments of the button pads and mounting holes. The new measurements proved to be only slightly more accurate, but I was able to tune out my OCD and decided to continue with a vow to come back later and improve them. This version ended up retaining the button pads on the top layer
In the interests of getting a board on which I could actually begin protoptyping, a need for more through hole components was recognized. The ATmega-based Arduino was replaced with a Teensy 3 in anticipation of needing more computing power, and DIP versions of the GPIO expanders were used. An LED finally found it's way onto the board, occupying the same position as the original. Unfortunately I found difficulty trying to find convenient places for the components as the numerous button pads took up a large amount of space, and the thin enclosure of the board left little room for anything remotely tall. Due to having even less time, routing was never started, and the project was eventually put on hiatus once again.
The highly unfinished Control Board, version 2
In KiCad We Trust
A lot of time passed before the project was picked up again, but with more free time made available, iit finally would become an active project. In the time between, I had made a permanent jump from Eagle (and from Diptrace at my work) to Kicad. Learning the ropes of Kicad was fairly easy thanks to prior ECAD experience and various video tutorials by Chris Gammell. Many knock Kicad for it’s steep learning curve, and I’ll admit it does have its quirks (the library system mainly). Once you spend some time working with the software though, you come to understand how everything works, and Kicad reveals its true power and flexibility. I found the whole experience very rewarding, especially since it’s a free and open source. Eagle may be known as the average maker’s software of choice, but I highly, highly recommend giving Kicad a try, even for first timers.
Along the way, I picked up a valuable bit of wisdom when it came to designing boards: don’t worry about perfecting your design on the first pass and definitely don’t let OCD get the best of you. Statistically speaking, your first design is likely to have issues (my boards are no exception), so instead of spending time obsessing over the minute details of your design, use that time ensuring your design’s functional requirements have been met. For example, while taking my final set of measurements, instead of trying to match the original board’s size and shape perfectly, I made sure to accurately measure the mounting holes on the board as they were the most critical component of the physical design. From there, I drew the board outline more freely than I had in previous attempts and ended up with a useful design.
The same advice was used to create the button pad footprints. KiCad’s footprint creation tools leave much to be desired, but instead of worrying about perfect recreations of the pads, I used the tools given to create footprints that were functional and still visually appealing (they ended up being pretty similar to the originals anyway). Like the previous version in Eagle, the board was designed with the buttons face up, components on the bottom.
Finally satisfied with the physical design, I began to place my revised set of components, consisting of the Teensy 3, ESP-01/ESP-12E WI-Fi module, Pololu step up/down regulator and LiPo battery header. After a closer look at how the original board functioned, the GPIO expanders were replaced with the original keypad matrix, albeit with a custom layout designed for my setup. This allowed me to reduce parts count while paying tribute to the original design.
Being able to program the ESP module required me to break the device’s serial line away from its connection to the Teensy. This was accomplished by using a board edge header with pins that could be jumped to reconnect the serial lines during normal operation. Not an ideal solution, especially as the data rate increases, but quite functional.
The much improved Control Board design
Laying out the PCB proved to be interesting, but not too much of a challenge. The Teensy could only be placed within a specific area where I had cut out a portion of the back of the enclosure (true sacrifices finally had to be made). The ESP modules were to be placed towards the edge of the board with no ground plane beneath the antenna for best reception. The ESP-12E has a simple solution, but the ESP-01 footprint, which was placed within that of the ESP-12E to better utilize the space, failed to fully realize this and did have a ground plane beneath its antenna (though tests have shown no issues as of yet). The serial breakout header was placed in the best remaining position at the top, but the header, as well as the regulator beneath it, forced me to make further cuts in the enclosure.
With all the components in place, the routing began, and it wasn't long before the board was completed! I plotted the Gerbers and sent the design off to board manufacturer Accutrace (a.k.a. PCB4U.com) for prototyping.
The finished Control Board, version 3 (v0.1 in Kicad)
Designing the Sensor Board
It was a huge relief when I was able to finally began designing the sensor board replacement. The sensor board was very simple, consisting of a Pololu 10-axis IMU module, voltage dividers for the flex sensors and a header for connecting to the control board.
I began designing the board with the idea of replicating the original as had been done with the main board, but after seeing a manufacturing special at Seeed Studios on 5x5cm boards, I decided to shrink the design down to a minimal size to fit my prototyping requirements. Following in the design footsteps of the control board, the mounting holes were measured and placed before drawing the board outline.
The Original Power Glove Sensor Board
The PCB was quickly laid out and tested for proper fit in the glove enclosure, and with that, the board was finished, making it one of the quickest and most simple designs of mine to date. I quickly sent it out to the manufacturer and settled in for the long wait.
Sensor Board v0.1
Hindsight And It's Perfect Vision...
Not long after submitting both boards, the inevitable issues began popping up, though most it seemed would be a matter of inconvenience rather than true problems.
On the control board, the ESP modules were found to be missing both a reset button and bootloader button, meaning that programming required opening the enclosure to pull the ESP's GPIO0 pin low while hard resetting the power rail. And as mentioned previously, the ground plane beneath the 01 should have been removed (alternatively, it could potentially be rotated to match the orientation of the 12E module).
The sensor board had but one issue: at least one of the mounting holes was to be an actual hole through which a screw could be fastened in the bottom of the enclosure. These could be ignored for testing, but would be necessary for the final working model.
It was unlikely that these would be all the issues I would encounter, but with boards in manufacturing, I could only give myself a pat on the back and be thankful none of the issues were critically bad.
Next time, real boards!
-
Prototype Project: Flying a Quadcopter
03/27/2016 at 01:33 • 0 commentsBefore I finally get to the log detailing the new board design, allow me to take you on the quick detour that is the build log of the initial protoype.
It was the middle of February 2016. I had been working on the project on and off up to that point, making plenty of conceptual prgress but only minor physical hacking. The advent of the Las Vegas Mini Maker Faire spurred me to get the project up and running. A co-worker suggested using the glove to fly a Parrot AR.Drone, and I set to work, re-purposing the existing boards using new electronics.
Unfortunately, I found that I had started too late: I was able to get the drone in the air, but only AFTER the Faire was over. Still, the prototype was a success, and I felt I finally had enough content to bring the project here. What follows is a description of the work that went into the prototype, starting with...
Testing the Components
The Power Glove electronics were removed, and the flex sensor wires were desoldered and lengthened for testing. Having previously decided on the main components, a piece of protoboard was loaded up with headers for the microcontroller (a Teensy 3), a WiFi module (an ESP-01) and the IMU (an AltIMU-10 v4). A 3.3V LDO was added to supply the power-hungry ESP, and voltage dividers were setup for testing the flex sensors. A USB cable with its wires broken out supplied power from an available USB port.
Using a Pololu Arduino library for the IMU, motion data was easily captured by the Teensy, Gestures for the different finger positions had been designed previously, but for the time being, they would be eschewed in favor of simple open or closed states.
Much to my dissatisfaction, the original flex sensors proved to be useless as they gave inconsistent readings. In comparison, the new flex sensors were spot on. The glove's index and middle fingers were cut open in order to replace the sensors. This was rather distressing as the work really took away from the look of the glove and would be difficult to repair. The next attempt (if any) to replace the sensors would have to be thoroughly thought through to prevent such damage. Here, you can see just how much degradation the old sensors had suffered over time.
Interfacing the Main Board
With the IMU and flex sensor situations under control, the next task was to interface the Power Glove's keypad to the Teensy. After probing around the board, I found that the buttons were arranged as a 3 x 8 keypad matrix. Oddly enough the 0 and Center buttons were wired in parallel, literally making them the same button!
With the board already depopulated (details in previous log), the through hole resistor footprints in the center of the board made for convenient wiring of the “columns,” and a few other points on the board were used for the “rows.” Using a popular Keypad Arduino library, I had the keypad working in no time at all.
An LED was placed in the original's location and attached to the Teensy to provide some visual feedback, something the glove was clearly lacking in.
The wires from the flex tube that originally connected the main board and the sensor board were stripped, extended and tinned for reuse.
Reusing the Sensor Board
Turning my attention to the sensor board, I disconnected the wires coming from the flex tube and cleaned off copious amounts of hot glue, taking stock of what could be reused. There traces connecting to the flex sensors would be useful, but as I would be using a brand new IMU board instead of the ultrasonic sensors, there wasn’t much else that would be of use. I got to work connecting the IMU's I2C and ground lines to 3 of the flex tube wires, and the 3.3V line was connected to a 3.3V rail on the board to be shared with the flex sensors.After reattaching the bottom half of the sensor board enclosure back on the glove, I routed the flex sensor wires up to the board and used the original pads to connect the new flex sensors. Thanks to the original design, the positive lines were already wired in parallel, and a wire from the tube was connected. The 4 sensor lines were each soldered to an external wire as well. The flex sensors were tied down to the glove's fingers in multiple locations with rubber bands, but we experienced intermittent problems afterwards when they bent due to finger movements.
All sensor connections made, the wires on the main board end were connected to the Teensy for a final test. Everything was found to work correctly, and the IMU was covered with Kapton tape before being taped to the board in an unsightly manner with scotch tape. The enclosure was fully reassembled and ready for action.
The ESP And the AR.Drone
I learned from a friend that the AR.Drone could be easily (far too easily) controlled through it’s WiFi access point and UDP packets and set off to use an ESP8266 for that very purpose. I started by grabbing the AR.Drone SDK documentation and checking out the Node.JS implementation my friend recommended. There was a lot of potential for dynamic communication between the drone and the glove system, but I chose to keep it simple and just get the drone off the ground.
I understood the basic principles of UDP from previous networking experience, but I had never actually used it to communicate on a custom application. I looked into the UDP examples in the standard Arduino Wifi library, and tested them on the ESP (I had ditched the ESP-01 in favor of the Adafruit Huzzah with its built-in bootloader and reset buttons) with its Wifi library.
In order to save time and not reinvent the wheel, I did some Googling and searched Github, and I found a sketch by jorisplusplus that performed the drone communications part of my goals. It was a sketch for the ESP8266 that was designed to receive RC signals from a Spektrum DSMX receiver and relay them to the AR.Drone. Borrowing from that sketch, I put together some code that would serially receive sensor and keypad data from the Teensy and send the drone commands based on the “gestures” received.
It took a bit of time to debug everything (reverse controls, serial communication issues, WiFi problems, broken optical flow sensors, etc.), but everything eventually seemed to be working properly. It was time to clean it all up and take it out for a proper test run.
Cobbling It All Together
Knowing that I wouldn’t be able to house a Teensy and an ESP module inside the controls enclosure and considering the sacrilege I’d already performed by hacking the glove up to this point, I ended up using a Dremel rotary tool to cut a nice big hole in the back panel to route the keypad and sensor board wires to an external protoboard.
A Teensy LC was slapped on, and all wires were soldered to their appropriate pins. With no place left to go, the Huzzah dangled from the serial lines. A big USB battery pack was used to power the whole thing. Strapping the glove on, the It was time for the final test. The results?
As test pilot Rakitha demonstrates, it was quite successful. Some tuning was necessary to get the proper dance moves out of the drone, but overall the response time was very fast. The gestures would have to be reworked for a smoother experience, and much to the displeasure of the wearers' fingers, those dang flex sensors needed more rubber bands to stop them from retracting. Still, it was an awesome feeling, being able to fly a drone around with motion controls. With the next iteration hopefully losing all the wires, it was sure to become even more of an enjoyable experience.
-
Log Catch Up, Part One
03/12/2016 at 06:01 • 0 commentsWelcome!
This project was brewing in my mind, making small progresses here and there for months before I finally got the initial prototyping started and posted this project here on Hackaday.io. Having had so much time to review what's been done and figure out where I want to go, I hope to present to you, dear reader, full and concise accounts of said progress. For this initial log, I’ll be covering some of the ideas, planning and preparation that went into the project. It all started with...
Crazy Ideas And Delusions of Grandeur
If you’ve read the details in the project intro, you might know that I have some mad ideas for the Power Glove. Controlling anything and everything in order to rule the world might be a tad unrealistic for such a project, but mainly I've been working on it as a way to take my mind off of work and potentially transition onto something even greater.
I knew that I wanted to modify the glove in such a way that the original aesthetic would be maintained. Sure it was a novelty project, but I wanted something clean I could show off, no hacked togetherness, no wires hanging out (excluding the prototypes of course). After opening it up and getting a good look at the boards and the limited spacing, I knew I would have to create something original to fit everything in. Preserving the boards was not an option.
I spent a large amount of time doing conceptual work for the project, putting together feature wishlists, drawing up ideas for gesture controls, creating state flow charts for the code... Much of this was lost after moving last winter, but some sketches remain.
Plenty of features were planned for the glove, and though many were scrapped for the initial prototype, they yet may be realized down the line. Some ideas just didn't make the cut due to design restrictions. One idea involved putting a Nokia phone display (later an OLED screen) in the sensor enclosure to give the user a menu for setting up the glove and monitoring data. Due to the glove's lack of visual feedback, this would have been quite nice, but the idea was put on hiatus in favor of retaining an unmodified look. Eventually, concepts gave way to requirements, and I started to put together what I would need to make the project a reality.
Choosing the Main Components
Main board
For the microcontroller in the main board, I wanted to use the Arduino Zero design because it was the hip new dev board in town and it would give me some practice designing an ARM Cortex-M0+ device. As my programming had become a bit rusty, I hoped to forgo Arduino altogether and do some embedded programming instead. For prototyping purposes though, I decided to use what I had on hand, a Teensy 3, and a Teensyduino setup for ease of testing.
Stemming from my work in quadcopters, the earliest idea for wireless communications was to use a DIY RC transmitter to control RC devices. The idea transformed into using interchangeable expansion cards to provide RC, Wi-Fi, Xbee, Bluetooth and other protocols by simply switching out the cards and configuration profile for the new device. This could be accomplished through something as simple as Xbee style boards. For now, the initial prototyping project (controlling a Parrot AR.Drone)would use an ESP8266 module, specifically an Adafruit Huzzah, for Wi-Fi communication.
In order to keep the glove wire-free, a single cell LiPo battery and on-board charger would be used to power the system. A step-down/up converter would be used to provide 3.3V to the system. Pololu offers a wide range of switching regulators, making prototyping fairly convenient.
Sensor board
As many gamers now know, the Power Glove didn’t quite live up to the massive hype generated by commercials and a certain infamous movie. The TV receiver frame and the glove’s ultrasonic emitters would have to go. In their place, a 6 degree of freedom (6DoF) IMU would provide motion measurements. I had a couple 10DoF (a bit overkill really) AltIMU-10 boards from Pololu around for prototyping, but the final board would implement the sensors directly.
Unfortunately, ditching the ultrasonic emitters in the glove would leave gaping holes in the enclosure. This could be remedied by replacing the emitters with RGB LEDs or speakers for some cool effects. Another option would be to continue using those areas for sensing purposes.Specifically, an IR transmitter (LEDs) and receiver could be used to control devices or allow the glove to act as a pointing device, similar to the Wii remote. These will be heavily considered in future prototypes.
The flex sensors in the glove were a bit of a gamble. After some testing, I found that 27 years takes a toll on such components, and their readings certainly didn’t get better age. I would have to replace them with new sensors from Spectra Symbol (supposedly the same company that made the originals, but I haven’t found any concrete proof yet).
With the components for prototyping chosen and acquired, I was ready to begin creating my replacement board. In hindsight, I should have actually modified the glove and created my initial prototype before I sat down to design a new board from scratch, but at the time I was too excited by theose ideas of grandeur. So, with the board completely accessible, I began taking measurements.
Taking Board Measurements
Main Board
I used calipers to capture the easier measurements, such as edges and mounting holes, but I found locating the exact dimensions of the conductive button pads to be something of a challenge. I started desoldering parts from the board in an attempt to get a flat scan of the button side, but with each scan the board was always slightly tilted, giving bad measurements.
After multiple annoying attempts to get a clean flat scan, I had the so-simple-it's-genius idea to scan the button pads instead. Numerous digital measurements in Paint.net later and the board dimensions were done.
Scanning the main board itself did have its benefits though. I used the flattest scan I had to create footprints in Eagle (and later KiCad) for the PCB button pads.
Sensor board
Replicating the sensor board would be a little more challenging, and I decided to forgo measuring it until I finished the main board. Instead, a small board utilizing the central mounting holes was created to hold an IMU and the necessary connections to the flex sensors and the main board.
Next Steps
With the measurements ready to go, I was finally ready to start on the board design. In the next log, I'll detail the events leading up to the initial designs of both the main board and the sensor board. See you then!