Thursday, 7 September 2017

Simple 70cm Fox Hunt Transmitter

While discussing with a few friendly hams about the coming summer we came up with the idea of running a fox hunt for the kids, so I set about looking at how we could do this.
Ultimately we needed a transmitter and receiver that could be easily constructed and operated by children. Fortunately I came across these cheap UHF transmitter / receiver pairs whilst browsing Amazon..
The pair labeled XY-FST-RX / MK-RM-TX can be had for only a few pounds and are available in the 315Mhz, 418Mhz, 433Mhz and 915Mhz frequency bands, so out of interest I purchased a few of the 433Mhz (70cm) varients. The modules operate with AM on 433.92Mhz ISM band which is fortuently license exempt (power limit!) in the UK and are designed for basic data transmission (The band is popular for car remote locking, wireless doorbells, etc). The emitter has 3 pins (Vcc, Data, Gnd) and a pad located in the top right for an antenna, however I have seen the same module with four pins (Vcc, Data, Gnd, Ant). Likewise the reciever follows a similar layout and has four pins (Vcc, Data0, Data1, Gnd) however upon inspection the two data pins are actually bridged. 
After breadboarding the emitter and manually pulsing the data pin whilst monitoring with the HT it became clear that oscillating the pin with an MCU could be a viable method of producing a crude CW signal. I eventually came up with this circuit using parts from my junk drawer and an Arduino Nano MCU.
 The circuit is very simple, with power being provided from a 9v PP3 battery and the datasource being provided by a PWM digital pin on the arduino. I added the LED for visual feedback. Those looking to reduce costs could probably use an ATiny MCU or PIC instead. The circuit was built onto a scrap piece of copper veroboard, without any antenna. I wrote a simple sketch to test my thoery, by interpreting morse: 0 - pause, 1 - dit and 2 - dah to control the timing of the pulses.
//msg = FOX HUNT M3RKV
int msg[]={0,1,1,2,1,0,2,2,2,0,2,1,1,2,0,0,1,1,1,1,0,1,1,2,0,2,1,0,2,0,0,0,2,2,0,1,1,1,2,2,0,1,2,1,0,2,1,2,0,1,1,1,2,0,0,0};
int i;
int t;
void setup() {
  // Setup Pin 3 (PWM) as output
 pinMode(3, OUTPUT);
}

void loop() {

 for(i=0; i < (sizeof(msg)/sizeof(int)); i++){
  delay(200);
  if(msg[i] == 0){t=800;}                   //Pause
  if(msg[i] == 1){tone(3,1200,100);t=400;}  //Dit
  if(msg[i] == 2){tone(3,1200,300);t=600;}  //Dah (3x dit)
  delay(t);
 }

 //Pause between Messages
 delay(5000);
}

As you can see I  used the tone() function to produce the signal required, where the first parameter is the Pin used, the second is the frequency and the third the duration in mS. I will come back here at soon to revisit the code and improve it but for the purpose of testing it does suffice.
Sure enough, tuning my HT to 433.920Mhz allowed be to hear the crude signal being produced and even without an antenna I was able to move around the house and outside without complete loss of the signal, however even when placed directly next to the emitter the AF signal was not strong enough to break through the squelch on my HT dispite it being on the lowest possible setting. 
The enclosure is a standard project box and provides enough space for the battery, PCB and antenna. The antenna is a simple J-Pole designed for 70cm and made from 18SWG enameled copper wire. Moving forwards it would probably be a good idea to terminate with an N-Type connector so that multiple antenna configuration can be used.