Home

Awesome

RejsaRubberTrac - A wireless thermal camera for tires

Log and view tire temperature zones on race- and trackday cars

For around $100 per wheel you can build your own wireless sensors to log your driving. You'll then easily see if you are overheating the shoulder on one wheel in some particular corner, if one of the rear tires stays a bit too cold or if you need to adjust camber. And many more things about how you attack a course and how your car is set up.

The two major track loggers for mobile phones <a href=http://www.gps-laptimer.de>__Harry's Laptimer__</a> and <a href=http://www.racechrono.com>__Racechrono__</a> support RejsaRubberTrac!

Racechrono Youtube:

<a href="https://www.youtube.com/watch?v=dpaOF7OZ8Pg">Screenshot 2022-10-11 191902</a>

Harry's Laptimer Youtube:

<a href="http://www.youtube.com/watch?v=Yuy62oPXugs"><img src=images/earlyharrysbetayoutube.jpg></a>

Racechrono temps in video, temp and suspension movement logg graph:

<img src=images/Racechrono%20wheel%20temp%20graph.jpg>

<img src=images/Racechrono%20wheel%20distance%20log.png>

Easy to build

<img align="right" width="231" src="images/partsizes.jpg">

To build it you need to purchase two small boards (three if you also add distance measuring). Then just connect a few wires between the boards and then finally upload the done and dusted code you find here to the main board using a USB cable. Detailed step by step instructions further below. Then you're up and running! You probably want to get a small enclosure for it though before you mount it to your car!

What you need for a basic working kit

Tips on where to order is further down on this page, keep reading :-)

EDIT: October 2021: There is a WIP version of the RejsaRubberTrac code that you can run on any ESP32 based board instead of the nRF52 based one above. That version also supports the cheaper IR arraysensor AMG8833 (which only has 60 degree FOV) and the newer MLX90640. Find the code at this branch: https://github.com/MagnusThome/RejsaRubberTrac/tree/develop

Power supply

The CPU board and the two sensor boards are all powered by connecting power to the CPU board's USB micro connector. The CPU board also has a connector for a Lipo battery - which is automatically charged via the USB connector - so the whole system can run completey wireless with it's own power source for roughly 24 hours with a 500mAh 3,7V Lipo battery. The system can also be run directly from the car's power, not using any Lipo battery, but then a 12V to USB 5V converter must be added.

Positioning the sensors

Click to view a larger version!
Display

The wider the tire the further away you need to position the sensor to get the full tire width within the sensors field of view (FOV). There are two versions of the temperature sensor, one with 60 degrees of FOV and one wide version with 120 degrees FOV. The latter can be a better choice if you have very wide tires and need to mount the sensors pretty close. Here below is a table with mounting distances at different tire widths.

NOTE: You do not have to mount the sensor at exactly the necessary distance!! The distance is simply fine tuned by changing the angle of the sensor, se picture above!

Tire widthDistance from tire to sensor<br>with 60 degree narrow sensorDistance from tire to sensor<br>with 120 degree wide sensor
135 mm12 cm4 cm
145 mm13 cm4 cm
155 mm13 cm4 cm
165 mm14 cm5 cm
175 mm15 cm5 cm
185 mm16 cm5 cm
195 mm17 cm6 cm
205 mm18 cm6 cm
215 mm19 cm6 cm
225 mm19 cm6 cm
235 mm20 cm7 cm
245 mm21 cm7 cm
255 mm22 cm7 cm
265 mm23 cm8 cm
275 mm24 cm8 cm
285 mm25 cm8 cm
295 mm26 cm9 cm
305 mm26 cm9 cm
315 mm27 cm9 cm
325 mm28 cm9 cm
335 mm29 cm10 cm
345 mm30 cm10 cm
355 mm31 cm10 cm
365 mm32 cm11 cm
375 mm32 cm11 cm
385 mm33 cm11 cm

Connecting the three boards

Four wires in a bus configuration connects the two sensors and the cpu board.
One extra fifth wire connects to the distance sensor's XSHUT pin.

Adafruit Bluefruit nRF52832VL53L0XV2MLX90621
3.3VVINVIN
GNDGNDGND
SCLSCLSCL
SDASDASDA
-GPIO1-
SCKXSHUT-

Display

The two sensorboards can easily be connected together electrically and mechanically by "sandwiching" them together with a pin header as in the picture below.

Display

This is the COMPLETE wiring needed.

Display

Display

Compiling and uploading the code - Arduino IDE

Easy to do, just follow the <a href=/installArduino.md>complete step by step instruction here</a> to install the IDE and compile and upload the code.

Here's info on the Adafruit Bluefruit nRF52 board if you're curious and want to dig deeper:
https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide

How often can I get measurements?

Depends. Measuring distance takes time, same with temperatures. And on top of that, with the current library used for Bluetooth communication, depending on how much data you're transmitting some delay is added too. So, if you don't connect a distance sensor the temperatures are updated faster. And if the application in the other end limits itself to subscribe to only eight temperature zones instead of all sixteen it will also all be faster. Compromises...

Average speedData
6Hz16 temperatures + distance
8Hz16 temperatures
10Hz8 temperatures + distance
16Hz8 temperatures
16Hzdistance

A main board to mount it all on

Basically you don't need anything more than the five wires connecting the boards together as described above. But if you want to run it from 12 volts from the car's power or if you want a power switch or if you buy the temperature sensor separately without it's daughter board or maybe you want jumper pin headers for easy change of the Bluetooth device name for each sensor or if you simply don't want cables and want it all pcb mounted, there's a board you can use, check out all info about it here:

<a href="pcb/">The PCB web page

<img src="pcb/images/daughterboards/06.jpg"> </a>

If you only want the bare minimum

Without the extras using the main board above, here are some tips on where to buy the basic pieces:

Beware: There is now a version of the VL53L0XV2 board that looks exactly the same but has changed what is connected to the different board pins. The order of pins (look carefully at the product picture on the page where you order) must be: VIN - GND - SCL - SDA - GPIO - XSHUT

Enclosures

You can of course just create your own casing. Or you can 3D print one of the versions I've put together. There are some different options, either one box for the whole kit including battery. Or a separate smaller enclosure for the sensor components only, easier to place in the wheel well but necessitates a cable between the sensor and cpu/bluetooth units. There are also some different snap-in holders so it's easy to detach the sensor from the car to recharge it.

All 3D print designs are available for download. If you or a friend have a 3D printer you can print them all yourself, otherwise there are numerous online print shops that will print and ship you the parts pretty cheap. I haven't used them myself but I got recommended Craftcloud All3DP as an example.

<a href="3Dprint/">The 3D print enclosures page >></a>

If you design your own case or make an updated variant of any of the 3D print downloads here please tell me! Mail me at magnust@gmail.com! Pretty sure there will be interest for your version too!

Bluetooth device name

The default Bluetooth name of each device is "RejsaRubber" plus the last four bytes in the Bluetooth address, here's an example of what it can look like:

"RejsaRubber6412051B" - for a device with MAC address CC:C9:64:12:05:1B

For Harry's laptimer this above will suffice but for Racechrono you must assign each board a tire position by including two letters in the name, designating a sensor for Front/Rear and Left/Right. Like FL, RL and so on. This is done either by strapping pins on the boards or by choosing the tire position in the code.

Default: "RejsaRubber" + four adress bytes
Optionally: "RejsaRubber" + one of "FL", "FR", "RL", "RR" + three adress bytes
Optionally for motorbikes: "RejsaRubber" + one of "F" or "R" + one blank space + three adress bytes

Examples for a device with MAC address CC:C9:64:12:05:1B:

"RejsaRubber6412051B" - non positional
"RejsaRubberFL12051B" - Front Left
"RejsaRubberFR12051B" - Front Right
"RejsaRubberRL12051B" - Rear Left
"RejsaRubberRR12051B" - Rear Right
"RejsaRubberF 12051B" - Front (motorbikes)
"RejsaRubberL 12051B" - Rear  (motorbikes)

To set a specific device name you connect pins on the main board to ground. Preferably using jumper headers so you can move the jumpers easily to set the prefered name. Lets call the three jumpers CAR, FRONT and LEFT.

CARFRONTLEFTPosition
XXXFLFront Left
XXFRFront Right
XXRLRear Left
XRRRear Right
XXFFront (Motorcycle)
XRRear (Motorcycle)
--Default auto names

CAR is the connection marked "A4" on the main board
FRONT is the connection marked "A5" on the main board
LEFT is the connection marked "MOSI" on the main board
Connect them to the pin marked "GND".

Another option is to set the tire position in the source code you use for each board.

Mirror temperature zones, reverse outside and inside of tire

If you happen to get the tire's outside shoulder temperature showing as the tire's inside temperature in your app you can reverse the out- and inside. By connecting one pin on the main board to ground you reverse the tire's temperature zones. The pin to connect to ground is marked "MISO" on the main board, connect it to the pin marked "GND".

Testing

To check that your sensor is transmitting you can run this Bluetooth test app. It shows all the temperatures as hex values though so the values are slightly obfuscated. But good for testing that everything is up and running.

https://play.google.com/store/apps/details?id=no.nordicsemi.android.mcp

With the Arduino IDE (or other serial terminal software) you can view the printed output from the board over USB. Temperatures are shown as degrees in celsius times ten.

<img src="images/usbterminal.PNG">

Work in progress...

The software is finished and is stable. But keep an eye out for updates to 3D print enclosures and maybe minor changes.

<img src="images/3Dprint-testsensor.png">

Questions and more info

Support forum: www.rejsa.nu/rejsarubbertrac

Credits

The code for the IR temperature array sensor MLX90621 is 100% untouched from longjos https://github.com/longjos/MLX90621_Arduino_Camera which in turn is an adaption from robinvanemden https://github.com/robinvanemden/MLX90621_Arduino_Processing