Radio direction finding (RDF) or T-hunting or fox hunting has been a hobby in the ham radio world for a long time. If you've ever seen a car equipped with a big, crazy looking antenna, a square antenna array or people running around with funny antennas and radios, they are probably T-Hunting. If it's a weekend it's probably hams and a weekday someone looking for a transmitter for another reason.
T-hunting is still a thing with communities of hunters. In San Francisco there is rdf-sf and there may be a club in your neighborhood. rdf-sf and http://www.homingin.com are great sources of fox hunting information and local hunts.
Google's your friend for Doppler Direction Finding theory of operation. The May and June 1999 QST issue with WA2EBY's article on a radio direction finder is based on simulated Doppler. For even more information find a copy of "Transmitter Hunting - Radio Direction Finding Simplified" - available in dead-tree form only. The 1999 article is an update to WA4BVY's early 80's design. It's been 20 years so a technology update is overdue.
I'm using four antenna that are electronically switched to impart a Doppler tone FM modulated on the received signal. The Doppler tone is isolated with a very narrow band-pass filter and the phase of the Doppler relative to the switched antenna is measured to determine direction. The relative position of the signal source is derived from the difference.
The WA2EBY DDF is composed of nine chips (74HC), a couple of transistors, a voltage regulator and a bunch of passive parts. I am using the same idea for the antenna switching but trying to do the instrumentation with many fewer parts. WA2EBY's used cheap 1n4148 because at the time PIN diodes could be over $10 and the design needs 8. PIN diodes have become commodity parts and the BAP64-03 PIN diodes I'm using are $0.09. In addition the 1n4148 are rated for 75 V and the PINs are 175 V.
I first went with a "drop in " replacement of the Teensey for the WA2EBY DDF using zero crossing detection to determine input Doppler phase angle. That is described as the "Zero Crossing Version". I have found that approach limited in accuracy. I an now working on a "DSP Version". The big motivation is the elimination of considerable hardware. I also hope to improve performance by going DSP.
Along the way I have been building a set of boards for the Teensy, an antenna switcher and antenna connectors. The are documented below.
Zero Crossing Version - A Teensy 3.2 ($20) is used for most all the logic and filtering including the Teensy Audio Library. I am using 16 Bi-Quad filters but have not gotten around to characterize performance yet. The code is pretty simple and sloppy. It mostly "rotates" the antenna and measures the zero crossing of the filter output.
DSP Version - This will be a bare-bone audio into the Teensy and no zero crossing detection. I am redoing a new board to free up the D5 pin to make use of FrequencyTimer2 library. That promises to reduce jitter in the antenna rotation and resulting Doppler tone. Too much jitter in the Doppler tone causes the receiver's FM discriminator to break up.
Both Versions - feature a magnitude measurement of the Doppler antenna rotation frequency and second harmonic (a measure of reflections) to create a measurement quality metric.
Display - The design uses a 24 element Neopiixel display - the Neopixel is a nice update of the '80s ring of plain old blinken' LEDs. I am using a single white pixel to point direction and the rest of the array to display signal quality. I have decided to augment the Neopixel display with a heading readout.
Testing - I am using a cheap 0.5 W FM transmitter module for my test signal. I fired everything up and the display was crazy random. I have come to learn that was to be expected. I am testing in a small office with metal filing cabinets so there are lots of reflections. Even my movement in the office makes a difference. I did some testing on the major functions and everything looks right. I wanted to test with a RF signal generator that somehow was synchronized to the antenna switching. I tried putting together a gnuradio flowgraph but I've yet to find a PC fast enough to make it work. I finally stumbled across a much simpler technique: disconnect the switched antenna signal from the receiver and attach each of the antenna driver signals to the transmitter audio input. The display should hit 0, 90, 180 and 270 degrees.
I plan on testing outside to operate in an open area without so many reflections. I should be able to take my prototype for a spin soon.
Please feel free to ask questions. I'm a terrible software coder and PCB designer so if anyone would like to help or offer suggestions - please go for it.