To be able to locate a radio beacon using the drone, the appropriate radiolocation technique needs to be determined. This log entry looks at the methods available and assesses their suitability for using with SDR on the drone, to find the best method to begin playing about with.
There are two broad methods for locating the source of a radio transmission. The first, Trilateration, uses multiple geographically-separated omnidirectional receiving stations while the second, Triangulation, uses one or more directional receiving stations.
The first method uses a technique called trilateration [wikipedia]. Each receiving station measures the length of time taken for the radio signal to reach their position, and when the times from three or more receiving stations are known, a position for the receiver can be calculated. The advantage of this method is that each receiving station is equipped with a simple, omnidirectional antenna (the received signal strength is the same from all directions), however you need multiple fixed receiving stations, and each station must be equipped with a very precise clock in order to have any accuracy (since we're timing things travelling at the speed of light here).
Unfortunately, we only have a single drone, so this method is not much help (however the theory does come in handy a bit later). If you're interested in a trilateration radiolocation project, check out the MoSAReX project.
The second method uses the slightly more familiar-sounding triangulation [wikipedia]. It can be used with multiple fixed-position receiving stations, as with trilateration, or it can be used with a single mobile receiving station. The station is equipped with a directional antenna (the received signal strength is much higher when the antenna is pointed toward the transmitter), and determines the angle which the signal is received from. When this angle is taken from three or more different locations, the location of the transmitter can be calculated.
The advantage of this method is that a single receiving station can be placed at each location in turn, and take a bearing to the signal. No clocks are involved, you just need to measure your position and the angle to the signal from a reference point (ie magnetic north) with reasonable accuracy.
When using triangulation manually in real life, the operator would typically select 3+ good sites on a map (ideally at on top of some nearby hills), go to each location, take a bearing, and plot the lines on a map. As shown in the diagram above, the transmitter should be where the lines meet. This is the process I plan to implement with the drone, with the added advantage that we can select arbitrary points in space (as long as they're above ground) to take the bearings from!
Radio Direction Finding (RDF)
To get a bearing on a signal, you need a way to find the direction the signal was transmitted from - this is the field of Radio Direction Finding [wikipedia], which has had lots of development thanks to its use in aircraft navigation for most of the 20th century. Rather than looking at professional aerial navigation systems however, at this point we'll be going off into the world of amateur radio and the sport of "Foxhunting" [wikipedia]. Not surprisingly, radio nerds have made a sport out of searching for hidden radio transmitters and dedicate quite a bit of effort to the equipment they use to help them.
Again, there are two main methods of RDF used in the foxhunting world - using a directional antenna (a "directive gain antenna" to be more precise), or using a direction-finding (DF) system.
Directive Gain Antennas
Radiation pattern of a typical Yagi antenna (ignore the Russian!) [wikipedia]
As the name suggests, directive gain antennas achieve their directionality by applying gain (increasing the recieved signal strength) in the direction the antenna is pointing. Think of this in the same way you can focus the light from a lightbulb by using a reflector - it's the same amount of light, but concentrated in a direction rather than going out in all directions.
The most common example of this sort of antenna is a Yagi antenna, which looks like your standard long-and-pointy TV antenna. These are simple, really easy to make, and can have reasonable direcionality (10-20 degrees beamwidth). Unfortunately they're quite large and ungainly, which could present problems mounting it to the drone, although that can probably be worked around.
The fact that these antennas have a high gain is both good and bad - if the signal is weak, or far away, having a high gain directional antenna is a real advantage. However, as you get closer to the signal and it gets stronger, having a high gain antenna can be a pain if it is your only method of determining direction - it can become less sensitive to direction. Using a stepped attenuator (see later) can help overcome this somewhat.
A directional Yagi antenna seems like a good plan B for the drone. It has quite a few downsides for typical expected use cases - it's bulky, has quite a wide beamwidth, and taking a bearing requires the drone to hover and rotate a full 360 degrees. The high gain makes it harder to use when close to the transmitter, however it could also be really useful in situations involving a transmitter which is weak or far away. So for now I'll focus elsewhere, but eventually it might be useful to integrate a yagi as a third antenna.
Direction Finding (DF) Systems
DF systems use multiple antennas to determine the direction of the signal. These come in two types, "homing" DF units which tell you which way (left or right) you need to rotate the antenna to be pointing directly at the transmitter, and doppler DF units which constantly tell you which direction the signal is in, regardless of which direction the receiver is pointing.
Doppler DF units work using the Doppler Effect - the same effect which causes a car horn to change pitch as it approaches you. A "true" Doppler DF antenna consists of a single antenna, rotating around a point in space at a high rate. As the antenna moves towards the transmiter, the frequency of the radio signal increases, as the antenna moves away from the transmitter the frequency decreases, and as the antenna moves perpendicular to the transmitter the frequency is the actual frequency of the transmission. So by observing the frequency changes of the received signal as the antenna rotates, you can determine the direction of the transmitter.
Making a rotating antenna like that is pretty hard, but luckily you can approximate the effect by making a circle of 4 or more static antennas and electronically switching between them at a high rate. This signal is then fed into a special receiver which analyses the frequency shifts and, traditionally, outputs to a ring of LEDs to show the direction the signal was recieved from. This sounds pretty perfect for my use on a drone, but has some drawbacks - implementation with an SDR, whilst possible (check out this great project from Balint making one with a USRP SDR) is a bit tricky in that the switching frequency of the antennas needs to be synchronised with the SDR's internal clock. This is pretty simple on expensive SDRs like the USRP (as it has a GPIO pin to generate the switching clock), but I haven't looked in to how easy this is to do with the RTL dongle.
Eventually I would like to try building one of these, just to say I've done it if nothing else. But the development work required is a bit much for a proof-of-concept build of the drone system, so this is on the backburner at the moment.
Of the various homing DF designs, one stands out as being highly directional, lightweight and, crucially, easy to implement in an SDR - the "TDOA" DF antenna. This DF system consists of two dipole antenas, mounted a quarter-wavelength apart. A circuit switches between the two antennas at a high rate, and is fed into an FM radio reciever. If the switching frequency is in the audible range, the radio reciever outputs a tone at that frequency. When the two antennas are in-line with the transmitter, the tone is at its loudest, and when the two antennas are perpendicular to the transmitter the tone is a its quietest, or is not there at all. Check out this HaD post describing one. Note: Time Difference of Arrival (TDOA) is a slightly erroneous name for this type of reciever, but seems to be the most common name in use so I will too.
This has several advantages for drone use - it only uses two antennas and should be very easy to process with an SDR. Additional processing with the SDR should also allow the antenna to determine whether the signal is to the left or right of the current direction, which would be really useful - making this DF system useful both for a "stop and turn" bearing, as well as simply flying towards the signal, turning left or right as indicated. One downside is that this antenna has a 180 degree ambiguity - when the tone is at its quietest, you don't know if the transmitter is directly in front of you or directly behind you. Taking multiple bearings and triangulating can solve this, and I'm hoping that doing additional processing with the SDR will let me determine this programmatically.
Due to the simplicity of development, I'm going to try using this sytem for the first proof-of-concept version of the drone.
Other RF Bits
As can be seen in the block diagram, an RF switch is required to select the antenna/DF system currently going into the SDR. These need to be able to be controlled by the onboard Raspberry Pi, so mechanically operated switches are off the table. Proper coaxial RF relays exist, but theyr'e crazy expensive and pretty heavy. At the small power levels that are being recieved, PIN diode switching circuits seem to be a good direction to look. Although they are a relatively complex option, they offer high switching rates and low RF loss when switched and are comparatively cheap - Digikey has a pretty good article going over the basics.
Once a reliable switching circuit has been found, it also needs to be integrated into a stepped attenuator. This allows the incoming RF signal to be attenuated by a controllable amount (need to research how much attenuation is useful and in what steps), so as the drone gets closer to the signal the Raspberry Pi can use the stepped attenuator to make sure the signal does not get so strong it oversaturates the SDR.
- A "TDOA" reciever needs to be built and tested on foot to see if the directionality is fine enough and generally how well it works.
- TDOA reciever then needs to be integrated with RTL SDR.
- Research and testing needs to be done with PIN diode switch circuits.
- Research and/or experimentation needs to be done to see what levels of attenuation will be requied for the stepped attenuator.