Distance between two rf module

I am New to Arduino so if i do some mistakes then sorry.

So I want to find the distance between rf transmitter and receiver by measuring the time between data sending and receiving (time of flight)
But the problem is the rf signal is an electromagnetic wave and it's speed is 2.9 x 10^8.
And I want the accuracy of 0.5 cm, to do that i need to calculate time in pico-second (10^-12 Second).

As I read lots of discussion here , I find that Arduino is not able to calculate that small time(may be i am wrong) .
But there is a sensor "TOF10120" that use light to calculate distance and also in accuracy mm and it's use it's own ic/microprocessor that is very less powerful then Arduino's .

I try to find the code in tof10120 sensor's microprocessor but couldn't find it on internet.
I don't know how that sensor calculate the distance with that high accuracy.

Any idea and comment will be very appreciated.


  1. SETUP IN 3X3 meter room.
  2. Use 433 mhz rf module.
  3. Accuracy should be 0.5 cm.
  4. ofcourse , should be cheap .

Sorry for bad English

If it were possible, and it was cheap, you would expect to be be able to buy one already.

Yes it's cheap
It's only $13

But it use laser sensor and i want to use rf sensor
(Laser can be block by opsticals )
that's why I am not using it .

If you have a NASA size budget, it might be possible.

The key to doing what you propose is you need a COMMON clock signal controlling both the transmitter and the receiver so the receiver knows the exact instant the transmitted pulse is sent.

Can't be done with 433MHz. Just one wave at that frequency is 693mm long.

The reason it works with light is because it has an extremely short wavelength less than 1 nanometre.

Thanks for replying paul

But can you told me how I am able to send these clock signal.
I mean what kind of hardware , can i use Arduino for sending that small part of second of time to both .


Can you explain me more about your opinion.
I mean what happened to short wavelength and why not works in case of large wavelength

And thanks for replying

This question gets asked every week or so, and to my knowledge, no one on this forum has ever reported the slightest success.

I also unable to find on internet

There is already a 'sensor' that measures distance by time of flight of radio waves, invented by Semtech around 4 years back, it operates at 2.4Ghz.

However your asking for a level of accuracy some 1000 times what Semtech developers managed to achieve, you would think if they could have achieved an accuracy of 5mm, they would have done so, especailly if it was 'cheap', as the potential of such a device would be enormous.

Thanks for replying
This information is appreciated

The quickest way that does not require a coaxial cable connecting the two devices is to add a GPS receiver to each device and use it's time signals to synchronize the transmit and receive processes.

How about bouncing a laser off the distant device, and measure the time from rising edge going out to the rising edge coming back?
1/299,800,000meter/sec = ~3nS/meter.

Arduino can't measure that, need something with much faster clock speed.

I suppose there and back would 6 nS.

My knowledge of radio wave propagation is sketchy, but 0.5cm is a tiny fraction of one wavelength, so you would need to be able to distinguish between two very similar voltages on less than one wave of the carrier. It seems inconceivable to me. Antennas are resonant devices - can it possibly respond to a small fraction of one wavelength?

Anyway, let's step back a bit. Please clarify how you see it working. Is the signal one-way? In that case, you need both Arduinos to be clocked from the same source, with no more than a few picoseconds discrepancy between them. There is no chance of that ever working. Just one clock cycle on an Arduino takes orders of magnitude more than that, so how could it possibly distinguish between events so close together?

Or is the signal two-way? That is, you transmit it to a receiver, which then retransmits it back again. Once again, you are talking about nanosecond transit times, and picosecond variations in transit time. It's all over and finished before either Arduino has even completed one clock cycle.

And as I say, in both cases you want to distinguish distances of much less than one wavelength, which I don't think you can do with a resonant antenna.

I don't know if it's possible to achieve what you want with dedicated electronics. Maybe. But with Arduinos? And a carrier wavelength approaching 700mm? No chance, I reckon.

But hey, see if you can prove us wrong!

I don't think that can work. I don't think the time signals would be synchronised to within a few picoseconds. There's a fair bit of processing takes place in the GPS receivers, and the output is serial at a slow clock rate. What would you do - time off the leading edge of the first bit in the serial packet? Surely there could easily be jitter amounting to much more than picoseconds.

Can't see it working myself.

There have been many hams that use the GPS 1 second tick to phase lock a 10mHz oscillator to the tick. The op can use the same 1 second tick to trigger the tx and the receiver can correlate it's tick to receiving the pulse from the transmitter. Of course the electronics of each end must be characterized for each ones internal delays.

But the magic isn't in the microprocessor, it's in the electronics: "TOF10120's time-of-flight sensing technology is realized by Sharp's original SPAD (Single Photon Avalanche Diodes ) ".

So you need to find an RF equivalent of the Single Photon Avalanche Diode. Those SPADs work with light at less than one micron wavelength. You need to invent an equivalent that works with wavelengths a million times longer.

The physics is beyond me, and (I suspect) beyond both of us. All of us.

Phase-locking isn't really the same as picosecond (or nano-second) level synchronisation. Phase-locking uses a closed control loop, and the slave (the 10MHz oscillator) can still move around within certain limits as the 1 second pulse applies its correction.

Anyway, assuming you are correct, and you can somehow trigger the transmitter and the receiver at exactly the same moment, how do you propose measuring the transit time with picosecond accuracy? Or even nanosecond accuracy? Nothing in an Arduino moves that fast.

Ok ok

Now I think it's impossible to get that kind of accuracy.

Now i will try to find some other way to find distance between two sensor ( any kind of sansor (not optics bcz it block when something arrive it's way))
And try accuracy between 1-2 cm .

thanks for all replies