RC Lap time using RF links

Hi everybody.

As the title suggests, I'm figuring out a way to build a RC lap time system with the following features:

a). Cheap
b). Simple (rocket science not allowed :slight_smile: )
c). Robust (as much as possible, of course...)

After reading a bunch of other related threads, I've concluded that most solutions converge to the following directions:

-- Infrared
-- RFID
-- Hall sensors

all of them have drawbacks in some sense. Thus, I thought: what about combining some alternatives. Here goes what I'm thinking:

Garage remote transmitters sending their signal to a universal receiver attached to an Arduino.

Here are some (cheap) options (found after googling the subject):

http://www.seeedstudio.com/depot/315mhz-rf-link-kits-with-encoder-and-decoder-p-151.html?cPath=139_140

http://www.seeedstudio.com/depot/315mhz-rf-link-kit-p-76.html

To complete this idea, I'd have to create a trigger. For this purpose, I guess I could use hall sensors.

Thus, we'd have:

-- A magnetic line in the track
-- Hall sensors wired to (remote garage) transmitters in the cars
-- A universal receiver wired to a Arduino port sniffing the signals sent by the transmitters

When the car (or cars) crosses the line, the hall sensor would activate the transmitter and it would send its code (like a driver pressing the button to open his garage door). The receiver would get this signal and interpret that car X crossed the line and register its time.

Note that we could have "n" cars passing the line at the same time since each of them have its own code (that code built in garage remote keys).

I'm not familiar with electronic issues and RF limitations, thus, I'm asking here if this project has any chance of success or, at least, discuss what could be improved.

Thanks for any help

Renato N. Elias
Rio de Janeiro / Brazil

Garage door IR sensor pairs are expensive (around $50 USD), and they use a proprietary communication protocol to prevent people from finding ways to disable them. It would be very difficult to use them.

wizdum:
Garage door IR sensor pairs are expensive (around $50 USD), and they use a proprietary communication protocol to prevent people from finding ways to disable them. It would be very difficult to use them.

Hi wizdum. This project will not be based on IR. It'll use those RF garage door remote controls. They're pretty cheap . There are chinese RF links for 3.59 usd shipped to worldwide available on eBay (http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=270969994428&ssPageName=ADME:L:OC:US:3160#ht_4133wt_986)

I've figured out that I'd have to have 2 arduinos for the TX/RX sides of my project work :frowning:

Is it possible to set up a fixed message that the TX would send to the RX without another Arduino?

In this sense, each car would have its own fixed message to be identified by the receiver every time it crosses the triggering line.

I'd try to make a example

car_1: ID00001
car_2: ID00002
car_3: ID00003

when car_i senses the trigger line (it would be done with the hall sensor), it sends its ID0000i code to the receiver which would mark its time

From the cars side, I'd have:

A hall sensor to detect the trigger line
A TX to send the message (the ID of the car)
An Arduino to write to the TX's output port (I'd like to remove this need!!!)

From the "time measuring station", I'd have:

A RX receiving the signals from the track
An Arduino to interpret what the RX is sniffing
A PC to record the lap times

Any hint?

Hi there,

I'm back with my first prototype. Quite naive until now...

It's just an arduino nano monitoring a reed swith. When a magnet gets close, a message is sent through the transmitter module to a "station base" (the Arduino Uno wired to a receiver) that should interpret who sent the message.

Here's a small movie showing the test I did:

here are the codes that I used:

Transmitter

#include <VirtualWire.h>

int reed=2;

void setup()
{
    // setting up the reed switch as INPUT
    pinMode(reed, INPUT);
  
    Serial.begin(9600);	  // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec
}

void loop()
{
  const char *msg = "SENSOR 01 DETECTED";
  
  if (digitalRead(reed)==HIGH) {
    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);
  }
  
}

Receiver

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("Station base start up");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec

    vw_rx_start();       // Start the receiver PLL running
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
	int i;

        digitalWrite(13, true); // Flash a light to show received good message
	// Message with a good checksum received, dump it.
	Serial.print("Got: ");
	
	for (i = 0; i < buflen; i++)
	{
	    Serial.write(buf[i]);
	    //Serial.print(" ");
	}
	Serial.println("");
        digitalWrite(13, false);
    }
}

The idea itself seems that would do the job, however, hall sensors and reed switches are not sensible enough for this application. The sensor will be embedded in a RC car 2-3 inches away from the floor and behind aluminum or plastic plates (the car's chassis). I'll not find any magnet strong enough to activate the hall sensor or reed switch. To make it short. I have two possible scenarios:

1). The car sensing the triggering line

OR

2). The triggering line sensing the cars passing through it

What could I use? Note that in the prototype I've built, I'm considering the first scenario.

Thanks for any help

Renato.

Here are a few videos of mine in action at our track in Dubai, its infra red based as are the timing systems at many commercial automobile race tracks - don't under estimate infra red, its a good cheap and effective solution. I originally got the idea for using infra red for my system when I went to watch the Dubai 24 hour race and a friend asked me what the leds flash in the screens of the cars were - I thought about it and it seemed to be a module which was communicating with the pits using infra red each lap - the visible lights were of course just indicators but after looking into it, infra red is commonly used in commercial motor sport.

Newly added external Audio option -

Here is how to add it -

and here it is in action -

Before the external audio - showing the boxed and build along timers working side by side -

One or more things you might find useful searching around my blog -

Duane B

rcarduino.blogspot.com

Nice job Duane!

My main concern about using IR is that, in principle, they're not able to distinguish two cars crossing the IR beam at the same time.

Have you tested your system for this case?

In the idea I'm trying to develop here, each car would "sense" the triggering line and launch a message to a station base notifying that it has crossed the line. My main problem is: how do I build an efficient sensor, embedded in the car, to sense the triggering line.

Duanes project is really neat solution .

The way that professional racing systems work, like the old AMB (now known as My-Laps and is used for timing in almost every form of motorsport today), and the long gone Cronit, is that you install a low power transmitter in each car (Few meter range, transmitting power in milli-watts) each transmitting a unique signal that is read when they drive over a antenna wire. In the newest systems the transmitters are constantly transmitting at random intervals, thereby effectively preventing them from drowning out close transmitters. Since they have such a short range they are only read when they are straight over the antenna wire.

Some years ago few companies were designing RC timing system, one that used RFID cards or chips (IMO the most interesting solution) and another that read the signal/noise that the cars receiver put out. There is a system on the market that installs infrared LED in each car (pointing up) and a receiver "bridge" that the cars drive under (works with multiple cars).
Team-Orion sold a practice timing system for about 100 dollars that used infrared LED in the car (pointing sideways) and small receiver box at the side of the track (each system only works with one car).

Your system certainly sounds possible, if a little complicated, and it should work well. My concerns would be power consumption of the whole circuit, unnecessary transmitting power/range and that some of those remote garage door openers use rolling signals, meaning that the signal they produce is different each time they transmit. There is also question of what to do if 2 cars transmit at the same time, drowning out each others signals. At last there is speed. These cars can go pretty fast (at 100Km/hr (>60 miles) they cover 28 meters (>90 feet) each second). Therefore, if we give us half meter (1.5 feet) effective range of the signal, you have 2 milliseconds (2/100) to read the signal and process it. These numbers are very rough calculations. Of course you would never place the receiver in the fastest part of the track so the Arduino should be much more than fast enough. :slight_smile:

I would check RFID solution, put card or chip into a car and drive over an RFID sensor. the problem is that in the past it didn't really work because it was not fast enough. :~

Thanks for you nice inputs andsetinn! I'll try to address some of the points you raised.

andsetinn:
Your system certainly sounds possible, if a little complicated, and it should work well. My concerns would be power consumption of the whole circuit, unnecessary transmitting power/range and that some of those remote garage door openers use rolling signals, meaning that the signal they produce is different each time they transmit.

My guess is that the system would not have a big consumption since the transmitter would send the signal/message only when cars cross the triggering line. Thus, the transponder would be consuming only the power necessary to keep an arduino nano on. Regarding the rolling signals, I'm not intending to use any kind of encription thus, I'd have at least 8 transmitters sending a signal through the same frequency but in different channels. It should also answer your question about 2 cars crossing the line at the same time. Since they are sending their messages in different channels, I'm assuming they will not interfere with each other. Well, if it doesn't work, the worst scenario would be use several receiver/transmitter pairs.

andsetinn:
I would check RFID solution, put card or chip into a car and drive over an RFID sensor. the problem is that in the past it didn't really work because it was not fast enough. :~

(Ative) RFID seems to be the best, but not the cheapest way, to implement such system. I've been searching informations about an affordable and reliable RFID solution. Last week I was driving my car across a toll station and looked at the device I have to automatically charge me. It must be a kind of active RFID system. The device itself was pretty cheap (8 USD) but I have no idea about the reader they use in the toll station to read the signal.

p.s.: the idea I'm trying to build is a home made and poor RFID system in its essence. Note that what I'm trying to do is sending a ID through a radiofrequency way, thus, it's a RFID also :wink:

The times change.
If you or someone else are interested in a similar project today. I would recommend running timing system from your smartphone. With low power bluetooth Arduino shield in the car. That would be triggered by proximity to your phone. Depending on where you stand at the track, you could be measuring the time with the phone in your pocket. :slight_smile:

I realize this thread is somewhat aged, but I've been trying to come up with a similar system. I'd like to use my smartphone. Bluetooth LE is an interesting idea. I wonder if it would connect fast enough while the cars are whipping by. Anyone know how long it would take to establish a connection? I haven't played with bluetooth nearly enough. Great thread though. I enjoyed reading this!

Hi, can I put my 10cents worth in.
If you use RF and each unit has an ID, and they all work on the same frequency, what is to stop blocking of the signals when two or more cars hit the timing line at the same time?

Tom...... :slight_smile:

Yeah, that was my same dilemma with IR. I was starting down the path of using an IR bridge, but then realized that if two cars were within range of the receiver the signals would be mixed and the result would be junk data. So the same problem you mentioned Tom. Someone mentioned staggering the signals with space so that if two cars were under the bridge there is a chance they wouldn't overlap. That is quite clever. If I had 8 cars on the track, I'd need to have them spaced at least 8 time the message length.

The typical solutions on the market today, use a RF loop. When the cars drive over it, the loop receives the signal that is continuously being broadcast from the cars. I have no idea how this works though. It's like some sort of short range antenna that lays under the track.

Any idea how that works?

I love this thread!!

This thread is on the design of a RF solution

You will find schematic from user howardcano.

I am also interested by a way to do this. My laptimer use a sonar to detect my flying 250 mini quad.
Super simple but for single player.