Arduino Controlled Hidden Transmitter by The Nate Dawg
A hidden transmitter, or fox as it is sometimes called, is used by amateur radio operators for sport. Somebody hides a fox, and participants use different methods to find it. This is for practice for when there is an illegal transmitter nearby. Then the "hams" know what they are doing when tracking it down.

The transmitter usually transmits a long tone followed by a fcc granted call sign in morse code. The club I am a member of needed one of these, so I sat down and started designing it. I based it around an arduino, though this could be ported to many different microcontrollers.


 
Remove these adsRemove these ads by Signing Up

Step 1: How The Code Works

Writing this code was the first time I used custom functions, as well as an array. First I define values at the top for easy customization. Then i set up the morse code array. After declaring a few more things, I go on to the loop. First it calls my first fuction called playtone(). In the parenthathese you input how long you want it to transmit in milliseconds (1 second == 1000 milliseconds; this adds precision). This is for the hams to track the signal. After this it waits 1 second then calls my second function. called playcode(), which plays a call sign in morse code. This function uses a for loop to read through the array one character at a time. It uses a series of if statements to set the duration. After that playtone(Duration) is called. This plays the sound at the length of the character then the for loop reads the next character of the array. After it has gone through all characters the program delays for a set time, determined by preference. I have it set for 1 minute. Read the comments in the code for more detailed information.

Note that in the array you must put your call sign in morse code. I changed it from my call to sos.
jsmith256 says: Apr 14, 2013. 6:28 AM
Cool project, looks like it is going to be used on a local foxhunt sometime soon.

A friend of mine suggested I feed back some changes I made. Took a few minutes to find you, but the power of the interwebz comes through!

When you do the sizeof you get double what you expect because the variable is declared int, which is a doublebyte construct. Change it to byte and you won't have to do the division.
...
byte code[] = { }; // 1 id dih, 2 is dah, 0 is pause
int codelength = sizeof(code);
...
I also changed the "rest" parameter by adding in a random element. My thought is you don't want the fox to be too predictable.
...
delay(rest+random(7000)); // keeps it from repeating on a regular schedule
...
It would be cool if the changes were attributed to me, but not necessary. These things are just too much fun.

Cheers,

Jim
hailster says: Nov 11, 2012. 8:43 AM
Thanks for posting this. I run the fox hunts for the local ham radio club (W9ZL) and currently use a really old stand alone fox, which I do not like because it was modified by someone in the past and I haven't been able to fully figure everything out. It's also fairly large so it isn't the easiest to hide.

I have a Arduino Uno laying around along with a IC-T90A that I don't use very often. This would be nice to use since it's smaller than the current transmitter and will allow us to also try doing a hunt on 70cm.
73,
KC9FSH
jstelmack says: Apr 22, 2012. 5:42 PM
Excellent FOX build! This gives me idea to expand into APRS use. Thanks! 73's
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!