Show HN: I replaced a $120k bowling center system with $1,600 in ESP32s
My family and I bought an abandoned 8-lane bowling center in the rural mid-west. In our small town there weren't many recreation options for families. You've heard of a food desert? This is an R&R desert.
It had been abandoned for a good reason. The roof leaks, the electrical system was constantly surging, and my 70-year-old bowling equipment (still) doesn't work perfectly. The system that keeps your score is particularly interesting to me. It's the thing you watch during your game, but it fades into the background beyond that. Turns out these things are really cool, but absurdly expensive.
Ours was installed in 2008 and cost six figures. It's calculating ball speed and trajectory, camera-based pin detection (object detection and trig, on ICs!), runs the fouling, the animations, the pinsetting machine and ball return. Very cool stuff for its age.
From the business perspective, my facility only cost me $105k. To forklift-replace the score keeping system runs anywhere between $80-$120k, depending on features, vendor, and unit age. No upgrades or service contracts, mind you, and every feature and customization is a new line item. That's for a 1:1 replacement on a system installed in 2008. Incredible, given how fast the tech world moves.
Replacement parts cost a shocking $4000 per pair of lanes. But wait, the bowling machines themselves are 70 years old, so what's this "advanced" system actually doing back there? Actuating a single relay to trigger that big old machine. Everything else is strictly mechanical. Meanwhile I've got a six-figure invoice in my hand. I'm upset.
Given the state of open hardware, computer vision, real-time event streaming, and open source running megascale products worldwide, there had to be a way to do this myself.
So far I've built an equivalent prototype for about $200 per lane-pair, $400 if you're fancy. ESP32 and ESPNow with an RS485 fallback, reporting to a raspberry pi lane computer that's really just redis and a state machine bolted to an ESP32 gateway for the mesh.
Since it's all ESP32, I've got a fistful of spare controllers in a drawer, pre-flashed or waiting to be. All common off-the-shelf hardware: microcontrollers wired to relays, optocouplers, and IR-break-beam sensors, each running slightly different firmware. Writing the firmware and protocol is the actual hard part.
It's an ESPNow star-topology mesh: each node emits events from its sensors and accepts commands for its controls, reporting to a gateway node connected to the raspi over UART. From there it's event streaming: RX packets get translated and tossed into redis, commands relay back out to the mesh as needed. RS485 sits underneath as a wired fallback for noisy RF environments.
Once the data's in redis, it's familiar middleware/React/websocket/pub-sub stuff. Any React dev can build their own UI and bowling animations. Since it all runs on commodity hardware, I can do legit anything I want as the proprietor, and I own all my data. Repairs take five minutes; I can swap the rig on a lane pair in under 10. I'd bet a house like mine could go from zero to running in an hour or two.
We're calling it OpenLaneLink, and I plan to open source the hardware, firmware, and software stack when it's ready. Bowling is fun, and I want to help keep it affordable for alleys like mine. I hate vendor lock-in. I'm not a fan of closed systems, calling support for every hiccup, or paying to "white label" my own equipment. Want to go Tron-themed for a night? Good luck finding a neon neumorphic theme in something bought at the turn of the century.
All that bugged me. Sure, bowling equipment is niche, but the open hardware and software landscape is amazing.
Thanks for reading! Let me know if anyone's interested in more posts about this bowling nonsense.
158 comments
[ 0.23 ms ] story [ 84.5 ms ] threadEventually, I want to allow a customer walk up to the lane, tap to pay and start bowling immediately, too. Kiosk-ize bowling alleys, yknow?
I'm pumped. So much room for activities!
1: maybe make the ball look like it isn't rolling - or even backspinning
2: perhaps it could you make the amount of side-spin or other spin more obvious to help learning
Maybe hard to read the ball rotation accurately: even if the ball was marked with dots or bands that help?
Your beginners have to come for shoes anyway, and the pointer to which lanes to take (you don't want them taking a lane at 6:30 that's reserved at 7)
- DMX kinda sucks but it's manageable. Cabling isn't cheap, it really wants shielded 120 ohm cable. If you do go that route, don't cheap out and use Mic cable or Cat-5, you'll be chasing ghosts forever.
- However... Art-net is an absolutely brain dead simple protocol that you can run over WiFi or ESP-Now if you don't care about it being perfect, or over Ethernet with an ESP32 with an Ethernet PHY or a Teensy or similar. I'm serious, you can implement it in an afternoon. Lots of COTS lighting controllers can talk Art-net, and you'll be amazed at how trivial it is to make a Python script to blast out the appropriate UDP packets.
- sACN is the new kid on the block for this stuff though and it's a little more complex. Not to shill LLMs... I hadn't actually heard of it before, Claude mentioned it and then one-shotted both a server (ESP32-side) and a test client (Python). There were a couple little bugs, but about two hours from never having heard of the protocol to having existing COTS lighting design software talking to it was pretty dope.
The other annoy bit with DMX: it's 250kbaud RS485, so it's not always trivial to just make a USB-serial-RS485 adapter that will actually run at that baud rate. With the Art-net/sACN approach, it is trivial to get an ESP32 or similar to run at that baudrate and drive the RS485 DE pin correctly as well.
Enjoy!
2. Something about preventing people from rubbing the bowling balls on your precious lanes.
3. Laser light shows + Liquor license = Bowling Alley Wine Mixer
Sorry, I got overly excited by your reference. I say that so GD much, at least once a month, for nearly 20 years now haha. SOOO much room for activities!
What you accomplished here sounds interesting, both from an entrepreneurial point of view and also from the engineering side.
A good, nice, detailed technical write-up of what you achieved here would be very interesting. Maybe a Hackaday.com blog entry, too? Put it on GitHub?
Have fun :)
For those not familiar it uses WiFi packets to send short messages without any WiFi log on.
https://youtube.com/@yohnmav
As a side note, I do enjoy the bizarre bowling animations that the screens come up with.
I bought a really old fully mechanical (and automated!) mini bowling lane. It works without a CPU, except for the score display, which originally used a 1970 Intel D8749H (MCS-48)!
Just like yours, the only thing that turns this machine on is a single relay :D On my model, I also get feedback on the pin status and a "ball received" signal, so I can trigger the scoring.
I dumped the firmware and replaced the display PCB with a more recent DIY PCB with an Arduino that speaks a modern, documented protocol. It's now compatible with ScoreMore software, and I can do a lot more with it.
Here are some pictures and more info on the Bowltech forum (you should post your stuff here too!):
* https://www.bowltech.com/forum/small-scale-bowling/small-sca...
@vik8 on discord if you need :)
Definitely will post on bowl-tech as well. I'm just new enough to have a lot of that new-guy anxiety around posting OpenLaneLink there yknow? Those guys know -everything- about this stuff.
Kind of funny that factory is in a small town next to Zaragoza...
(This is the kind of retiring from IT tale that I love to read and follow the trials and tribulations of over the years - good luck, thanks for open-sourcing your work!)
My dailies continue to be; Antipope (Charlie Stross), Whatever (John Scalzi), Contrapositive Diary (Jeff Duntemann) and the aforementioned jwz...
Sounds like a great project to work on given how cheap both hard- and software is becoming. Wishing you all the best!
N.b. The forces in the machines can easily break hardware so be sure to move it away from the machine if possible, and otherwise protect it appropriately.
The way the machines detect the pins is still fairly simple. The assembly that puts the pins into place moves down after the ball is thrown, and has sense switches above each pin that detect which pins are still standing.
We so desperately need more 'third spaces' and Bowling Alleys are great for this
- R3F and Drei for React-based 3D Three.js animations; but it might be best to pre-render at high FPS and encode with ffmpeg
- ProjectM, MilkDrop3, limit
- TIL about shuffle skating aka jam skating
- OpenNext NextJS
- Serwist for a PWA so that you can access your stats when not connected
- IndexedDb, sqlite-wasm, duckdb-wasm
- To run lights, projectors, etc. (with low enough hertz to avoid PSE Photosensitive Epilepsy risk) I have heard about: OSC (BespokeSynth, Resolume,), SMPTE LTC, Resolume projection mapping, mapmapteam/mapmap projection mapping,
Open Lighting Architecture has a list of Ethernet Protocols including OSC, and a list of USB/Serial/Network devices.
HyperHDR does ambient lightning to match displayed video.
Sometimes the glare from all of the lights is too much for visually impaired persons and animals FWIU; no varying lights hour might win too.
- If the machines are so old that all you need is a relay, there's possibly not as much need to model the whole system with TLA+ and check the proof.
Could ask the model about an "SIL" (Safety Integrity Level) controller or similar for a bowling alley. Rust RTIC and Rust embassy have RTOS features.
How to write unit and integration tests for the system without hardware simulators that can randomly fault.
- Soft-white backlit multicolor(?) ePaper displays would save energy and cut glare.
Most flying insects cannot see red, orange or yellow light;
Red preserves night vision. Blue keeps operators awake. Blue and white cause the worst glare. Jet instrument gauges are reddish/orange-ish.
- UV Blacklight paint, UV LED Black light.
Blue light glasses are great for reducing UV blacklight glare.
- Best LED projector 2026
- Gogs/Gitea/Forgejo host Issues, repos and can run Actions with nektos/act.
Cool project. Integrate an issue tracker with mobile notifications?
I would totally be a patron with my family at your bowling center, and would love to read a blog or something about your journey.