Introduction: IR 2.4GHZ Multi Client Lap Timer for RC Cars


16-07-25: super small size (50x20x20mm) Transponder photos uploaded

16-07-21: Master box code updated: Practise mode is now working, further: Race mode: Now there is a "beep" for every lap and a longer high beep for the last lap.

16-07-21: First test as video added. The toy RC car is only for demonstration :) It's build for at least 1:10 "real" RC cars.

16-07-20: got lost in translation!: Please read "pillar" instead of "pillow" (I changed it in the text, but not on the photos, will do it later)

16-07-20: Please read the Arduino forum thread: Arduino Forum


I'm a RC-car driver and often use temporary race tracks for bashing with my friend. So this project was born:IR 2.4GHZ multi client Lap timer for Arduino


Highly transportable IR-tracking lap timer for up to 6 different RC-cars.

This not a step by step manual only the essential steps are included (no drawn circuits…) A moderate knowledge of electronics is being expected, so please do not ask/mail questions like „How can I connect a transistor?“ or „Can I take xyz value for the resistor?“.
The IR generator/receiver code is based on

The complete code+photos+description can be downloaded here:


Function description:

You need at least 3 devices:

IR-generator pillar: This device contains an Arduino mini generating a very short IR code. Via 3 IR-LED's the code is beamed permanently.

Transponder box within car: Arduino Nano/mini + IR receiver + NRF24L01 module. If a IR signal code is recognised (car is passing the IR pillar) a short unique code will be send via the NRF2401 module to the master box. Up to 6 different transponder can be used (Currently only 2 are implemented)

Master Box: Arduino Nano + NRF24L01 module + Encoder + Display. Collecting the transponder data for generating lap times,…

Step 1: Devices/modules Description

1. IR-Pillar
Parts needed:
Arduino mini/nano (even a ATtiny would do the job!)
3 IR-LED’s (or more)
1 PNP transistor (you need about 60mA for 3 IR LED’s)
resistors (1k for transistor, 220R for LED, value for IR LED’s depends on their consumption I used 20R to be on the safe side)
little breadboard circuit board
battery holder (I use 4x AA for getting 6V)
little power switch
housing for the pillar (I did my one with my 3D-printer)
Power LED: D10

2. Transponder Box

Arduino mini/nano (clone)
NRF24L01 module (maybe with additional base module; see > )
IR receiver (38khz) like: TL1838 VS1838B 1838 38Khz J1838 Universal IR Infrared Receiver
some pin rows
Getting Power: I use the standard 3 pins connector using one unused channel of the RF-receiver so I can use the power of the ESC.
The IR receiver is connected with a longer cable and should be fixed on the highest place of you car (rear wing). Important: The IR should be on the RIGHT side so collecting the data from right. So the IR pillar is on the inside of the track and beams to the outside otherwise you may cross the track with the signal.
Pinout: NRF24L01 module to SPI + CS Pin 10, CE Pin 8
IR receiver to pin 2

3. Master box

Arduino mini/nano
NRF24L01 module (maybe with additional base module; see > )
LCD: standard HD44780 20x4, with I2C module.
Encoder with push button function
power switch
battery holder (I use 4x AA for getting 6V)
housing (I did my one with my 3D-printer)
Buzzer (maybe with additional transistor (loudness!)
D7=Buzzer (my buzzer is amplified via 2N2222 PNP transistor
D2=Encoder A
D3=Encoder b
D4=encoderButton -
NRF24L01 module:
standard SPI +
D10=CS Pin
D08=CE Pin

Step 2: Code / Software

The complete Code can be downloaded here: CODE

There are detailed description within each sketch, so here only the basics and limitations of the master box:


I’ve only implemented 2 cars at the moment. Most of the code is ready for more than 2, but you have to rewrite the display function, especially in race mode. Edit 16-07-21: "Practise mode" is now working!


Race setup:

Laps: Number of laps

Lap Offset: IMPORTANT! Here you enter the the time (in seconds) a incoming trigger wouldn’t be counted (false positive). Set it as high as possible. Example: Your lap time is about 90 seconds as fasted possible lap, so set this value to about 85 (seconds). Within this time no trigger from a specific car would be counted to avoid false triggers. Technical info: The transponder is sending 10 signals (with different delays ) within 15 milliseconds and repeat it every second IF a IR signal is recognised.

Both values are stored in EEPROM


Starting the race


Just counting up incoming signals. Good for testing the connections.


Buzzer on/off: temporary disable the buzzer

Start Delay: (stored in EEPROM): delay between the start signals. Set it to a convenient level.

Step 3: Some Ideas for the Future

Some ideas for the future:

  • collecting/sending race stats via Serial port or Bluetooth for a android APP SD Card
  • Presets for different race tracks
  • adding more cars (with NRF24L01 you have 6 node, but you can do a star network)
  • transponder can send more data than the IR signal, like voltage of the LIPO of each car,….
  • more IR pillars for getting interim results
  • using the ACK of the NRF24l01 for automatic repeat the code if transmission failed. (Maybe problems with some of the fake NRF modules on ali&ebay)

Feel free to modify it and post your results here!