Front wheel speed sensor retrofit ideas?

The one thing that is potentially a drawback with my Raspberry setup is the really low signaling voltage. I'm not sure if the Pico has the same limits, though it does have some built in analog I/O, so I'm a bit more optimistic. The standard Pis only tolerate 3.3v for I/O, which is really pretty low for the electrically noisy environment of a vehicle. A lot of sensors don't even like to read or output that low, though the Honeywell 1GT sensor is open collector I believe, so I think it can basically run on whatever you want to feed it. You can get around that some with level shifters and whatnot, but the Arduino does at least bump that up to 5v I believe, which is more common.

The epiphany I finally had with the stepper motor idea was realizing how the stock cable drive works. The cable directly connects the odometer to the tailshaft and the speedo is magnetically coupled from there. In the case of the speedos I have at least, 1000 rotations of a cable translates to 1 mile traveled. So the only thing I need to do is make sure that whatever is connected to the speedo rotates 1000 revolutions every time I travel a mile. A stepper motor makes that really easy. Say it takes 128 steps for a full rotation of the motor. I just have to make sure the motor takes 128,000 steps in a mile. If my wheel speed sensor is 5 pulses per mile and my tires are something like 700 revs per mile, that's 3500 pulses per mile, or roughly 36.5 steps per pulse of the speed sensor. The main concern I would have at that point though is how jumpy or jittery it might be. It would be like turning the shaft 1/4 turn at a time, so it could be less than smooth. I'd still be interested to try it though.

The speedometer is actually adjustable as well. The coil spring on the needle is attached to a small lever that can be rotated to increase or decrease spring preload. I tuned my speedo by telling my motor to run 1000 rpm and then adjusting that spring until the speedo read 60 mph.

I have been thinking about trying in implement cruise control on my car as well. I have a carb style manifold and throttle body though, so it would be a different setup. Sounds like you're running the stock drive by wire if you're using the stock controller? That would probably makes things easier in a way, assuming you can get the messages figured out. I actually built a cruise control system for my 71 Vette years ago as a college project. It was highly simplified and just read a magnet attached to one of the rear half shafts, but it was a novel proof of concept. I had a high torque servo mounted under the hood connected to the carb linkage with a beaded chain (like a pull chain for a lamp). That let me operate the throttle normally and the chain would just go slack when the system wasn't engaged. It was pretty crude code the just monitored the speed and either added or removed throttle one step at a time. It was horrible about lagging behind and overshooting speed when it tried to catch up, but that was because it was a super simplified control system with no real feedback control. Once it settled though it was actually pretty good at holding speed.

If I did it again I think I could keep the same servo setup to drive things (though it's maybe questionable whether the servo is rated for the temp/environment), but the control system would need an overhaul. I think the biggest missing piece I have right now is monitoring throttle position. It's annoying because it's sort of right there since the tuning software reads it from the Megasquirt, but the problem is that I don't know how to get the value out of that software and into any other program. The two options I was looking at right now were either broadcasting it over CAN and setting up the Pi to read CAN, or just putting a duplicate (or maybe tee off the existing) TPS sensor for just cruise. The problem with that is the Pi has no analog I/O capability out of the box.

My design intent would be having a chart that maps the servo position to a matching throttle position, then when the cruise is first engaged it would be able to "pull up the slack" in the chain based on the current throttle position. That was the problem with my original Vette system. When you let off the throttle after setting a speed it would fully close, then the cruise would only open it a few steps at a time, but the whole time you're slowing down while it's doing that. The alternative would be designing a PID style control system that watches the change in speed and adjusts throttle in larger or smaller steps based on how quickly you are accelerating/decelerating, but I would have to do some reading on that one and tuning. Takes less input to get there, but I'd still prefer having actual throttle position monitoring as I think that can offer more utility to the system.