For makers, engineers, and DIY enthusiasts, Shenzhen, China is a bit of a dream world. Once you get past the shoddy internet and questionable origin of the components you buy in the markets, you realize just how quickly and easily you can get almost anything done. For about $100 you can get a couple dozen 4-layer PCBs and a stainless steel stencil. For another $50 you can get it in 2 days. That’s seriously cheap, and the game changes when you have such ready access to fast, cheap manufacturing. The electronics market puts Wal-Mart to shame, and you can’t walk 20 feet without bumping into someone carrying a reel of components or pushing a cart full of capacitors. I was there with Lavie Sak, my co-founder for Shot Stats, makers of Challenger, a tennis swing tracking device. We were excited and overwhelmed by this new place and it seemed like anything was possible.
One of the phrases I heard repeatedly from our mentors while attending HAXLR8R in Shenzen was “Oh … yeah, that’s gonna be a Challenge.” That and the Mandarin phrase “One of these!” whenever the gang went out to a restaurant, instantly turning any place into the international point-at-the-menu championship. As much as I feared restaurants without picture menus, I was much more afraid of the unknowns involved with prototyping a new and ambitious product. Our mentors were wonderful but quite often they re-iterated just how tough this whole process would be. They were right of course; we’d picked a very challenging product to build.
We had brought our first prototype, a clunky little thing with a 3D-printed SLA housing, which only showed two metrics. That one contained an Atmel xMega MCU (which I grew to dislike rather quickly), an Invensense MPU-9150 IMU, and not much else. I realized pretty soon that we were going to need a lot more power since much of our data crunching is done onboard. I knew what we wanted: audible feedback, Bluetooth, an OLED display, multiple motion sensors, and a powerful processor. Making lists is easy, but turning that list into a product is not.
I spent a couple nights perusing datasheets with a mouse in one hand and an old fashioned in the other, as one does on the weekend. I soon settled on the ARM architecture. At this point, except for the most basic or low-cost projects, it just didn’t make sense to use anything else. They’re fast, cheap, plentiful, and incredibly well supported. I was wary of using the Arduino platform as a base for our first fully-functional prototype. The Arduino is great and I’ve used it plenty, but I still see it as firmly situated in the “hobbyist” category and not really a good option when your end-game is manufacturing a finished consumer product. There are shields for everything but they are a bit too clunky to attach to a tennis racket for testing, which meant our best option was a custom PCB.
I had used the mbed before and began looking seriously at the NXP LPC1768 kit from mbed. It uses an NXP ARM Cortex M3 microcontroller and is quite powerful. It checked a lot of the boxes for serious prototyping: Speed, low cost, ease of use. The IDE in particular is much more pleasant to use than the Arduino IDE if you have a lot of libraries and files to manage. Best of all, there was an HDK available which made it relatively simple to implement into our own custom boards while keeping the mbed interface. I saw this as a good solution that would allow us to iterate quickly and then easily port our code to the next prototype where we would switch to a full-featured ARM toolchain.
After a couple of months with Altium, our second prototype was born. This was our powerhouse board, the one containing all of the sensors we would need and all of the functionality we envisioned at the time. I tend to err on the side of caution and flexibility, so I wanted to have a board we could use to test firmware, to develop the user interface, and to gather data. Not only that but it had to be reasonably small so it could fit easily onto a tennis racket. To accomplish those things the second prototype was mbed-compatible, and a huge improvement over the first. Packed inside was a Cortex M3, a USB interface, drag-and-drop programming, microSD, 4 accelerometers, a Bluetooth 4.0 radio, audio output, FLASH memory, an OLED display, a battery charger, and several buttons. Over 170 components crammed into a relatively small board.
I am often asked, “Why four accelerometers?” It does seem like a silly number, as if we’re just trying to be a high-tech analogue to the 50-bladed razor. There is a good reason for this though, and it goes back to my appreciation of flexibility. The 4 accelerometers are all different — one is designed for high frequency data gathering, one is designed for high accelerations (up to 400g), and one is a very high resolution sensor incorporating a gyroscope and magnetometer. We were undecided about the fourth, but it never hurts to have more options. When designing a prototype PCB, assuming you have the space, it’s pretty cheap and simple to add more sensors until you nail down exactly what you need for the next revision. Better to have it and not need it, after all.
This is where I’d like to tell you that everything worked great on the first try. Unfortunately, I can’t. As any hardware developer knows, that’s rarely the case. The first problem was the poor temperature control of the reflow oven I used to solder the boards. My guess is that its intended use was broiling racks of lamb, and it simply got mislabeled at the factory. Either way, six boards and roughly $600 of components were seriously overheated and potentially destroyed. Debugging hardware can be a nightmare, especially when you can’t be sure which of your components are good and which ones did their best impression of a roasted marshmallow.
On the second attempt I took a bit more care and ended up with good boards. Here, another problem appeared: Everything seemed to work fine, but the display refused to turn on. After some probing I noticed that there was no power to the display, so I went down the list. Components? Check. Schematic? Check. Control signals? Check. Everything seemed to be doing what it was supposed to, but there was no power coming from the 9.5V boost regulator.
After another day of checking every board and finding the same problem, I pulled out the oscilloscope and checked the input and output of the regulator, but saw nothing. At this point I remembered one of the common problems with manufacturing in China: Counterfeit components. I took an unused boost regulator, superglued it to a piece of plastic, and began sanding it down from top to bottom. After a few minutes, I had sanded all the way down to the metal pads and realized that it was nothing but a chunk of black plastic with no silicon inside!
Almost all of my components had been sourced from the local market in Shenzhen. Normally, you take it on faith that things will work as they should, especially from major distributors like Mouser or Digi-key. In our case, being so near the market, it was trivial to walk to a booth with cash in hand and a list of components and order everything you needed on the spot. A few hours later you came back and picked up a bag containing your order. There is no other place on Earth with that level of speed and convenience. The downside, of course, is that you can’t always be sure of what you’re getting.
From that point on I only ordered important components from Digi-key. Despite the 2-3 day wait, $30 shipping, and 30 percent import fees it is still far better than wasting days to troubleshoot components which may be counterfeit, grey-market, or just plain empty. When you’re prototyping there are already so many things that may go wrong that it’s best not to add any more. I was lucky in a way because that boost regulator was simply empty. Far worse would have been one that worked but was out-of-spec, leading to intermittent problems.
Almost as soon as those boards were fixed – around the beginning of April – we had to shift gears in order to manufacture the third prototype. This new prototype would be less functional but would be the first to resemble our vision for the final product. We were pretty tight on time at this point, gearing up for our Kickstarter campaign, so I elected to use the common Atmega32u4, running code written in the Arduino IDE. It also contained an accelerometer to be used for collecting data, and a screen.
We would have loved to cram all of the functionality of our workhorse prototype into the nice, compact form factor of our final product. Unfortunately that would have required an 8+ layer board with chip-scale components and machine placement. All of that translates to “expensive” and “slow,” two words that no startup founder likes to hear. However, despite the severely reduced functionality, the third prototype went a long way to making the product real both in our minds and in the minds of those who held one. Schematics and drawings are all well and good but there’s nothing like holding a piece of hardware to really bring an idea home.
We’ve just ended our Kickstarter after exceeding our funding goal, and are excited to develop more advanced prototypes and refine Challenger until we gear up for manufacturing. We’ve definitely learned some difficult lessons throughout this process and there will undoubtedly be many more. Going through the prototyping stage when the end-goal is a consumer product can be nerve-wracking and frustrating, but it’s also exciting to see something come into the world that was only an idea in your mind. That’s why we do it, after all.
It is high summer, and this week we are celebrating with five days of outdoor sports-themed articles, pictures, videos, reviews and projects. We’ll be here all week, so check back often and get out there.