With a RaspberryPi installed in my Jeep, expanding the project's capabilities was quite tempting. What other data could I capture? Fuel level? Speed or wheel spin? Tire pressure?
As mentioned previously, tire pressure is definitely an important aspect of off-roading. And while mandated on all vehicles in the US since 2008, it was definitely not an option when my MJ was manufactured in 1988.
When power is discussed relating to wheels, the focus is on the engine and drive line. So I long wondered how TPMS sensors got their electrical power. I had guessed a self-winding watch mechanism using the tire's rotational energy but, as it turns out, the sensors simply run on a self-contained battery.
But this is still a pretty amazing engineering challenge. A sensor has to have wireless communication capabilities (something that is notorious for its power consumption). And be durable as it is subject to rotation and vibration. And light-weight enough not to significantly change a tire's balance when rotating. And be able to operate without requiring replacement as inside a tire isn't the easiest place to service on a regular basis.
By reducing the frequency of sending data, the solution is a compact device that runs for 10+ years. Data is only transmitted when the tire is rotating and, even then, on an infrequent basis of about every ~90 seconds. In addition, the data packet is very minimal -- only 22 bytes -- which also reduces the time needed for each transmission. Most have just a 4-bit microcontroller.
One can certainly buy an aftermarket TPMS system. And some that replace the valve stem cap instead of a sensor inside the tire (although those are just waiting to be lost in the mud some where).
But where's the fun in that?
TPMS sensors operate on 433MHz which is a frequency band specifically allocated for low-power devices. And with the advent of software defined radios, receivers for this frequency range are readily available (and cheap); the RTL SDR seems to be the go-to for hackers but others with the same RTL2832U chipset work too. But with no published standard for low-power devices, decoding is a bit of a forensic exercise. Luckily, the open-source project rtl_433 has a community which has worked on collecting a database of devices over the past 6+ years. Including many TPMS sensors.
These sensors are readily available and range in price. But in light of no standard, there is a proliferation of devices which are not interchangeable between systems. Combining device manufactures, car manufactures and model years creates almost endless variations so picking one that works with rtl_433 is a bit of a challenge. After trying (and returning) several sensors, I decided to splurge on MaxSensors which can be programmed to mimic an impressive list of cars - from a Ford Escort to a Ferrari. It does require a special programming device, but seems that are always 1 or 2 listings for used ones on ebay or mercari at any one time. And the Gen2 version claims signal strength sufficient for use in 12-ply, 40" tires.