Intro
MiniHelmetTracker - A real-time standings table robot
MiniHelmetTracker retrieves standings data - close to real-time - via WiFi and sorts mini helmets by league, conference, division and playoffs. A physical representation of its own kind of the well known standings tables from NFL or ESPN.
Checkout https://github.com/kiu/MiniHelmetTracker for STL files, schematics, PCB layouts, firmware, server, etc.
Inception
After building quite a few projects mostly centered around LEDs or PCBs-in-a-standard-enclosure, I wanted to open my horizon and tackle mechanical motion.
Sometime ago I bought a Creality Ender 3 V2 and was excited about the possibilities of rapid prototyping. Taking a closer look, it dawned on me. With off the shelf components (stepper, v-rails, belt, pulley, gantry, spanner) it is dead simple to build something with precise linear motion. Let's do that.
Even though I am watching the Superbowl for 20+ years now and visited lots of home games of Frankfurt Galaxy back in the day, I am actually not that big of an american football fan regarding the regular season. But my brother is and I gifted him a mini helmet set some years back. As expected it is a nuisance keeping it up-to-date manually on a per game basis and therefore was catching dust. Somehow - probably while watching Superbowl - it grew on me that this really needs a solution urgently in the form of a standings robot.
Just two years later MiniHelmetTracker is ready to see the light of day :)
Making Of
In this section I want to provide some insight on the quite lengthy prototyping process MiniHelmetTracker went through.
It all started with obtaining vrails. Since 3D printers are well established, vrails are commodity items on chinese retail sites. Well, almost. It was rather difficult to find long >=800mm vrails. Even on german amazon I got confirmed orders cancelled due to suddenly being "out-of-stock". It took way longer than expected, but at some point a fine selection of rails finally arrived at my desk.
Learning: Just because you order something, it doesn't mean it can't be cancelled a week later. Chip crisis / supply chain says hi.
Once having rails at hand, the initial prototype went swiftly. Arduino nano, some stepper controller, prototype assembly of rails, gantry, belt, pully, motor, spanner and off we go. Within hours horizontal motion was achieved including homing functionality for repeatable results. Op success.
Then the challenges started.
How do I actually grab those helmets? They don't have mounting points and they are round! This took quite a few iterations to land where the final product is today. It all started with the idea of using ... magnets. Of course. I fired up the 3D printer and built lots of different contraptions.
Two arms are being lowered from the gantry, one has a permanent magnet for lifting and the other arm separates the magnets at the end. Awesome. This also allows me to additionally tinker with gears and even more motors. But in the end way to fragile and bulky, I can do better than this.
How about lowering an electromagnet from the gantry to pick up the helmets? That sounds right. Well, it does, but the helmets start to spin like crazy. Obvious solution are two electromagnets, one to hold the helmet while lifting and lowering and another to prevent spinning. How brilliant.
Lets print 32 inserts, glue two magnets in each and pressfit them into the helmets. After days of printing and glueing, setup was complete. Project almost done. Or that's what I thought. Turns out, I actually tested this mechanism. But only that the lifting and lowering part works. I didn't try how this reacts to the expected horizontal motion. Well, turns out, that's not a good combination. Helmets fell off (didn't have smooth ramp down on the stepper yet) or due to tolerances still providing room to wiggle the end result didn't look as orderly aligned as I wanted it to.
Learning: Always test end-to-end. Never assume that a partial solution will fit the overall requrirements.
A year later or so I gave it another try. Lets forget magnets and rather think more in the direction of a forklift. After some back and forth prototyping the currently used solution was born within two days. And it was end-to-end tested including horizontal motion. Printing 32 base plates rather than inserts this time and iterating multiple times over the clamping and servo mechanism.
Learning: Without a 3D printer at hand, this would have been impossible to achieve. Fast turn around is sooo important.
All done? Not exactly. A high risk issue was still open while the hardware was more or less complete. Where do I actually get data from?
I was pretty sure that I can scrape it from some website, but parsing html on a potentially changing website isn't what I was looking for. There are tons of APIs, packages and providers offering data on the web. Partially undocumented, unofficial or just very expensive. By sheer luck I stumbled upon MySportsFeeds.com, a crowd sourced feed provider. Free of charge for private use and with excellent API documentation. Sweet. I upgraded to the "Live with 10 minute delay" feed for 16$ per year.
Learning: Ensure upfront that access to data is actually feasible and exists in a consumable form.
With a working data source and hardware in place the last bit was to write some firmware and server code, but that was business as usual.
Overall Learning: My process was very iterative for this project and a lot of parameters changed over time. Probably too many and too late into the project. Horizontal or vertical motion? 2000mm or 2200mm length? Flat wall mount or wall with standoffs or are legs better? Do I wanto a button to manually shutdown the lights at night? How do I visualize teams with same winning pct? Back illumination or front? One shelf or two? Should I drop league display so that AFC and NFC helmets can always face each other? ...