I love projects that start off with a definite need – however daft it might be ! This one came about because the 802.11 chili can antennas we built were a bit of a pain to mount and point at various 802.11 access points. I thought it would be handy to build a steering platform that allowed the antenna to hunt for the strongest access point itself and zero in !
The antenna (standard issue Chili can antenna) is controlled by a PIC microcontroller connected to servos on the pan and tilt axis. This gives about 180 degrees of motion in both planes. The RF pigtail from the antenna is plugged into the 802.11 PCMCIA card in the computer which runs a Visual Basic program. This computer sends the PIC microcontroller the antenna coordinates to point to and measures the received signal strength off the 802.11 card. Hence the antenna is instructed to scan the environment, the PCMCIA card records signal strength readings and the computer builds up an RF map. At the end of the scan the computer searches the compiled matrix for the strongest signal and the antenna is instructed to point there. See – easy
See the Cantenna section for details on the antenna design and construction. The gray base was made out of plywood and 2” ABS plastic pipe was used as the antenna pivot pole. Two end caps were used along with two metal bracket to make sure the servo didn’t bear either the downward weight of the antenna and to make sure that the nylon servo gears weren’t expected to steady the whole assemble once it got going (it can fairly zing about when the low resolution mode is chosen)
Looking at the electronics, I cheated and used a SIMM stick for the PIC PCB and built a small perf board power supply and anchor for the serial and servo cables. I chose an 877 PIC since its 16 bit counters were an easy way to create the servo pulses plus it had an on-board hardware serial port for communicating to the PC.
The PIC software waits to receive two characters that represent the x and y location that the antenna should point to; AA being bottom left, ZZ being top right. The PIC checks that the characters are valid, (within the capital alphabet) sends what it receives back to the PC for error control and adjusts the servo control pulses accordingly.
The computer runs windows XP and VB5. (don’t get be going on why I couldn’t use VB .net – like no #(*$)# serial support !) The Windows Management Instrumentation (WMI) stack allows you to interrogate nearly anything on the computer as objects, including 802.11 specific characteristics such as basestation SSID, received signal strength, etc. The VB program first digs out a list of all visible access points along with their RSSI and SSIDs then it instructs the antenna to scan the environment. For each position the antenna is moved, the signal strength is recorded and the screen is updated and colored. At the end of the scan the RF matrix is searched and the antenna is instructed to point at the strongest signal strength.
The user can set the resolution of the scan for a quick low resolution to slower high resolution scan. In addition, the RF map is clickable to provide the RSSI on every point on the map.
The program needs to do a better job of selecting the strongest AP per coordinate – at the moment the entire scan is performed on the AP that the PCMCIA card is attached to at the beginning of the scan – even though it could be seeing many more APs or finding more during its scan. Unfortunately this would slow the scan down considerably.
I almost got it to be able to manually control the antenna by moving the mouse around the RF map part of the window ! Still needs more work on that. I would also like it to maintain lock on a particular access point even though the antenna unit may be moving – I’m sure the “War-drivers” can think of some uses for that !
Anyway – a really fun project – I learnt way more than I had anticipated about WMI and digging into managed objects in XP ! it’s also given me some thoughts on mounting a gameboy camera to a similar servo mechanism and doing some visual tracking – some of the Seattle Robotics Society folks have played with this in the past and have had some good results.
see more at http://www.smithstuff.net/steercan/Steercan.htm