We’ve got a Tahoe that doesn’t get driven a lot. I usually drive my pickup, my wife drives her car, and both of the older kids have their own cars, so the Tahoe mostly just gets used when all five of us need to go somewhere together. Which doesn’t happen often now that two of the five are teenagers. Or when I need to go into Seattle or to Downtown Bellevue for a meeting (my pickup won’t fit in a parking garage). I drove it to Bellevue for work yesterday, and was once again reminded that the speedometer has given up the ghost. GM uses little stepper motors for all of their instrument displays these days, rather than traditional gauges (what the pilot in me would refer to as “steam gauges”). I really need to take it to the dealer, but I’m sure the answer will cost around $1000. Because a trip to the dealer always costs $1000. Or more. Or I could see if I could find the little stepper motors online somewhere, pull the dash apart, and replace it myself. Which is what I’ll probably do some time this summer. And I’ll replace the oil pressure one while I’m at it. In the mean time, I need to know how fast I’m driving. Because from time to time (at 3am, for example, assuming the road in question isn’t under construction), it’s actually possible to get up to the speed limit on a Seattle area freeway, and it’s important to avoid The Man. I’ve been using my cell phone as a GPS speedometer, but that’s annoying. Both Apple Maps and Google Maps fail to show you your speed, so if you want both directions and speed, you have to constantly switch back and forth between two apps. What to do? Well, I had a boring 90 minute conference call for work this morning, so I started digging in my junk boxes. Lo and behold, I came up with an old Arduino board, a GPS module, and a seven-segment LED board. Sixty minutes of coding later, I have a speedometer. It also shows the number of visible satellites using the row of LEDs underneath the seven segment displays, and you can push a button to switch to altitude or heading mode, if you care more about those than your speed. It’s hard-coded in feet and mph because America. Here’s the code if you want to steal it. Keep in mind that it was written in a hurry while ostensibly participating in a work-related conference call, so it may not be the cleanest C++ you’ve ever seen. I also had to code around two bugs in the seven segment library (or they could also be bugs in the hardware itself). I could clean it up, but probably won’t. Because by the time I get around to that, I (hopefully) will have fixed the speedometer, and these parts will be back in my junk box.
Update: Well that was easy. And cheap. I bought a set of six servos (plus some random other goodies) off of Amazon for about $40, and it took just over thirty minutes to pull the dash, remove the instrument cluster, remove the two old broken servos, solder in two replacements, and replace the cluster and the dash. Much better than the massive bill from the local dealer.