has anyone of you ever tried to build an own positioning system like gps with arduino? I would like to know whether or not arduino is fast enogh for doing such things.
I would like to build some kind of reverse gps, where a small beacon is sending a time-stamp signal and 4 stations will receive that signal and where you can triangulate the position of the beacon, because you know the exact position and reception time of the receiver-antennas.
but because the signal is travaling sat such high speeds the resolution of the receiver hardware has to be very high and thus the frequency/tackting of the analog-to-digital-converter.
do you think such a project can be done with arduino? because at the end, I want to have receiving antennas ata distance of 10m and the beacon should be detectable in between with a decent resolution in between.
Are the receivers all talking to each other to indicate what time they got a common signal?
They need to be in sync with a common time source also.
How far is the signal, transmitted at 299,792,458 metres per second, 186,282 miles/Sec,
going to travel in the arduino's 62.5nS per clock cycle?
18.73m.
Say you just recorded the time a simple pulse occured - how accurately can you tell when that pulse occurred?
Every clock pulse that your time is off increases the circle of error in your triangulation calculation.
So in my mind you need a few things to test this out:
transmitter
min 3 receivers, all able to communicate with each other, and spaced far enough apart to have a meanigful result that won't envelop your receivers.
Time synching of the receiver stations do I want to do with gps time itself or with the radio signal for radio controlled clocks. Both need the antennas as well but the sender still doesn't need more then a clock and radio.
I just wanted to know how accurate arduino and a shield can be with this task and a minimum distance of 18m sounds allmost okay but should be better.
Processing of the data of all 4 receiver stations can be done with the math that you can find in the gps article in wikipedia. Realtime processing would be nice but when the single arduinos at the receiver antenna will strore the data for later processing, that is fine. I just want to track the beacon.
I would think you'd want all devices used to be sync'ed to the same time source.
I am thinking like phase-lock-loop synced, so when they get the 1Hz GPS time pulse they are all dead-on.
If the receivers are 1 or 2 clock pulses different, then you kiss your accuracy goodbye.
CrossRoads:
I would think you'd want all devices used to be sync'ed to the same time source.
I am thinking like phase-lock-loop synced, so when they get the 1Hz GPS time pulse they are all dead-on.
If the receivers are 1 or 2 clock pulses different, then you kiss your accuracy goodbye.
hi,
the linking of 4 antennas, that will be deployed at distances where I can't connect them via cable or even radio will be dificult at the end.
so the time-synching via gps-time will be one of the few ways left.
and a 1hz time pulse isn't that much, but perhaps interpolation in betwwen 2 of them will solve that.
You have no idea of how fast EM waves propagates despite CrossRoads pointed out. The time is in nano-seconds as indicated. So sync needs to be as good as nano-seconds as well. On GPS satellites, there are atomic clocks doing this type of work. What do you have? Even different length of wiring to the say 3 transmitters will result in delay too big. Your 1Hz gps time is no match with this and higher gps timing accuracy can be obtained if you have a friend very high up in the military rank. I think the problem with sync will break the project.
we all have friends in high places ;).
and you are right about gps time and that is what I want to use. this signal can be received at the receiver-points that will set and correct their timesources. that is allready done in each and every handheld navigation device.
so there is no need to wire all 4 receiver-points to synch them by their own and keep them synched.
it's still hard enough to do it with gps-time as a "synch" source, but it's possible. and there are still things like buffer time and incorrect time calculations (because gps signals at the receiver-points have to be corrected as well) will influence the position measuring.
BUT I don't need a position as exact as a millimeter, if it's 10 meters it's okay. even when it's 50 m, it's still okay for my purposes.
and there are even more ways to get a time, like clock radio signals are even more precise and more frequently broadcastet, but you have a different standard for it in every country. that's bad for global deployment.
The point is, GPS broadcast is essential encrypted time stamps but only expensive GPS reveals this time stamp. Commercial units can only decrypt a limited amount of digits in the time and thus have less accuracy. I don't think the 1 second update is accurate to 1ns and you need more or less that accuracy for measuring distances in meters or 10 meters.
The 1sec timeupdate is okay, you can log a time, count the cpu cycles log the next gps timestamp and you can interpolate.
Nevertheless I'm not fixed to have 1m accuracy, when it's 100m but the concept is proven it's okay.
I still want to play around with hardware and would like to get an advise what arduino -communication shield - gps shield is a good start.
I want to build at least one reception point and a beacon. First has to have com-link and gps, beacon only needs com-link. But perhaps it's wise to have 2 reception points that can also be switched to beacon mode. Shipping just one gps shield for turning the beacon into a reception point is the most expensive thing ;).
..not sure the gps works as you think it does.. it uses spread spectrum, not sure the time/position information is extracted by measuring "pulses with ns resolution", I think other method is used..
The "public"/"commercial"/"military" - all those are using specific separate channels in the gps band with special coding. The 1sec comming from gps is precise from long term prospective, usually there is a jitter caused by the gps receiver.p.
I think what -horn- wants to do is have the beacon send a message, the receivers all get iot and note the time it was received, talk among them selves to share those times, and then do the math to figure out where the beacon is.
that's it!
And talking to themselves and doing math is a further step. Because the reception arduinos don't have to share them to eachothers. The data will be collected and analysed on a PC afterwards, because I don't need to have it in realtime. I just want to get a "when was it where" result.
Realtime, where all arduinos will communicate with eachother or with a master-node isa further step, someday
..interesting project, indeed! The only issue is to have a synchronised time across all the receiving arduinos, a big issue, I would say ..
People usualy use the gps' 1 second pulse for disciplining a txco. You can hardly use it directly as the jitter is big for that kind of measurement. I would recommend you to study how navigation tools work, like LORAN or others.. The measuring time of receiving the ping from beacon is the last thing one would do when having only one beacon. When having two or more beacons, each with its own synchronised atomic time, then it would be much easier as you can measure differences..
To measure with one beacon only and 100m precision required you need the time information accross all the components with a +/-150ns time alignment (all within 300ns).. To synchronise two xtal clocks with such even short-time precision would be hard for NIST as well..
PS: Maybe other approach may work - the "beacon" will play a role of a "repeater". so the arduino's will send a ping (with their own ID) and the ping will be relayed back. Knowing the roundtrip time may give you some info on the distance. When all the arduinos will repeat the pings from each other, they do not need absolute time knowledge, I guess.. But I doubt one ping will be enough as the jitter caused by the processing in arduino and the transceiver is very large, so you have to ping many times and make some averaging, or something like that..
And this project is for http://shackspace.de/wiki/doku.php?id=project:hgg where some persons started to work on receiving signals, others are trying to find adequate hardware and I would like to build a proof of concept prototype with arduino. and IF/WHEN this works, we will change hardware to better andfaster equipment, but arduino is a nice and cheap way to check, if it is possible at all.
that's why accuracy is not so important for me, at least in this phase of the project.
Maybe you can get together with a couple of lab accomplices and pick up some free
STM32F4-Discovery boards to plan ahead for when you need faster hardware
for free? I don't think so! But I will ask tomorrow. At least they have more MHz!
I checked http://www.sparkfun.com and would like to ask for a good combination of an Arduino mega 2560, gps module (that can also provide gps-time to the arduino) and a communication link that uses 2.4ghz and has it's own antenna AND where I can plug in an external antenna, perhaps yagi. and it would be great to have it ready so that I don't have to build and solder them on my own.
And Galileo has only 2 test satellites up there and 2 real satellites that had been launched last friday. So at LEAST they have to have 4 real satellites up there to be working in any way, AND you have to have them all covering one region, and that's very very unlikely. So it's not working unless they have 18 out of 27 satellites up there, that will be in 2015 (I think).
Glonass is not fully working, yet.
But anyway, I want to have it the other way round. That's why I don't understand your answer.