Universal control for ARDF beacons, that can be configured via DIP switch or serial RS232/COM-like communication, based on AVR processors and BASCOM-AVR (BASIC) - suitable for Classic, Sprint, and Foxoring competitions with 80 m, 2 m, and other transmitters.
  • QuickBASIC 93.5%
  • Visual Basic 6.0 6.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-04 11:33:01 +00:00
FOXAVR Testversion to prepare the battery feature 2026-09-03 13:06:25 +00:00
.gitattributes 1st upload 2013-06-17 16:24:29 +02:00
.gitignore mein erster branch zum test 2013-09-26 23:22:06 +02:00
FOXAVR-BRD-m.png Board population uploaded 2026-09-03 09:18:16 +00:00
FOXAVR-BRD.png Board population in hi-res uploaded 2026-09-03 09:18:42 +00:00
FOXAVR-DIPSW-m.png Bild21 ergänzt 2026-05-26 22:27:14 +02:00
FOXAVR-DIPSW.png Bild1 ergänzt 2026-05-26 22:26:49 +02:00
FOXAVR-JP2-m.png Bild4 ergänzt 2026-05-26 22:28:03 +02:00
FOXAVR-JP2.png Bild3 ergänzt 2026-05-26 22:27:41 +02:00
FOXAVR-SCH-m.png Sheet uploaded 2026-09-03 09:17:14 +00:00
FOXAVR-SCH.png Sheet in hi-res uploaded 2026-09-03 09:17:46 +00:00
foxavr1-2-BOM.txt FOXAVR 1.2 EAGLE Bill Of Material 2026-09-04 11:26:45 +00:00
FOXAVR1-2-BOTTOM.png FOXAVR 1.2 PCB Bottom Layer 2026-09-04 11:28:20 +00:00
FOXAVR1-2-TOP.png FOXAVR 1.2 PCB Top Layer 2026-09-04 11:27:54 +00:00
foxavr1-2.brd FOXAVR 1.2 EAGLE Board file 2026-09-04 11:25:51 +00:00
foxavr1-2.sch FOXAVR 1.2 EAGLE Sheet file 2026-09-04 11:25:13 +00:00
README.md README.md aktualisiert 2026-09-04 11:33:01 +00:00

FOXAVR

Intention

Universal control for ARDF beacons, which can be configured via DIP switch or serial RS232/COM-like communication - suitable for Classic, Sprint, and Foxoring competitions with 80 m, 2 m, and other transmitters.

Features

  • Variable number of transmitters
  • Usable for training, classic and sprint events (foxoring, if PCB size doesn't matter)
  • Variable keying speed for sprint or training
  • Configurable either with DIP switches or via serial interface
  • Single LED signaling the current transmitter status (waiting, not active, active keying)
  • Outputs for morse keying and TX on
  • Integrated audio generation for modulation of AM transmitters
  • Battery monitoring with RF signaling (code implementation pending)
  • One optional input for a future parameter or function
  • One optional output for future transmitter control

Circuit Description

FOXAVR circuit diagram

  • core with MCU and tunable (C14) crystal oscillator (3.6864 MHz)
  • supply chain with buffer and blocking capacitors (C13,C12,C1) and voltage regulator (IC2) at the top
  • I/O section to the left with serial interface lines, LED and RESET/SYNC line to JP3
  • transmitter control section to the right with up to three transistor-buffered outputs, plus audio output (bottom right)
  • programming section with DIP/SER selection (JP2), DIP switch (S1) and ISP connector (JP4) at the bottom

Part Population Variants

FOXAVR board diagram

You may vary the board population according to your needs. Maybe you skip output stages, the audio output, the serial input or similar not needed parts.

Adjustments

Oscillator Frequency

With trimmer C14 the exact oscillator frequency of the AVR microcontroller can be adjusted. For long competitions or long wait times this can improve the synchrony between the transmitters. Use a precise frequency counter with high input impedance or wire loop close to the oscillator circuit and adjust to 3.6864 MHz. While adjusting the oscillator frequency the environmental temperature should be constant for all FOXAVR transmitter controllers of a set. Let the powered PCB accomodate to the surrounding operating temperature.

Audio Output Volume

With trimmer R1 the output volume of the keyed audio tone for AM transmitters can be adjusted. Vss can be adjusted between 0 and ~4.3 V.

Battery Warning Threshold

Code implementation pending

With trimmer R15 the threshold level to trigger a battery warning can be adjusted. Voltage comparison between battery voltage (PD7/AIN1) and reference (R16,R17,PD6/AIN0) is done just before the active transmitting time starts. This allows the battery to recover from the former transmitting load. If the voltage of the unloaded battery is below threshold at this time, it must be considered as almost discharged or empty. To signal this battery warning via rf, the keying speed is increased to 90 CpM (~18 WpM) starting with the beginning transmission. Adjust the threshold to your needs.

^Code implementation pending

Jumpers - Overview

For a detailed description of the connectors see next but one chapter "Connectors".

JP Function
1 removed
2 Input Mode
(open = DIP switch, closed = serial interface)
3 I/O port
(1 serial input, 2 serial output, 3 future use , 4 reset/sync, 5 GND)
4 ISP - In-System-Programming
re-programming without removing the AVR controller (experts only)
5 Power Supply
(1 Ubat, 2 V+/Ubat, 3 GND)
6 TX connector
(1 tune, 2 CW keying, 3 TX On, 4 future use, 5 keyed audio out, 6 GND)

Code Summary

The code is mainly grouped into these parts:

  • setting of constants, filling the EEPROM defaults plus declaration of variables and subroutines
  • reading the transmitter parameters either from serial interface (and storing them to EEPROM), from EEPROM, if no interface is connetcted, or DIP switches, if this mode is selected
  • reading keying information from EEPROM according to parameters set
  • configuring of interrupt and timers for the basic ticks and the audio generation for AM transmitters
  • the main state machine
  • the subroutines for waiting, inactive time and active transmission

  1. Interrupt - according to dot length in morsecode as basic timing ticks
  2. each interrupt the state machine is triggered looking for necessary status (wait, non-active, active) and, if necessary, changing the status

Connectors

Configuration and Usage

JP2 DIP/serial

DIP-Switch Configuration

If the FOXAVR controller is set to DIP switch mode (JP2/PB0 open), it uses 10 DIP-Switches to configure transmitter kind, transmitter number, total number of transmitters in the cycle and waiting time until the 1st transmitting cycle. The 16 binary selections for waiting time and transmitter configuration are entered with the most significant bit (MSB) to the left and the least significant bit (LSB) to the right of the 4 bit nibble.

DIP switch configuration

If the FOXAVR controller is set to DIP switch mode (JP2/PB0 open), the configuration is read with each power-on or reset/sync.

Switches 1 to 4 - Waiting Time

The switches 1 to 4 determine the waiting time until the active transmitting cycle starts for the 1st time. The values are looked-up in an EEPROM-stored table of 16 positions. Default is from 0 to 15 hours. Individual values in hours and minutes can be changed for each position in the EEPROM table (see source code).

1 2 3 4 Waiting times (default)
- - - - 0 hrs, 0 mins, immediate transmission
- - - O 1 hrs, 0 mins
- - O - 2 hrs, 0 mins
- - O O 3 hrs, 0 mins
- O - - 4 hrs, 0 mins
- O - O 5 hrs, 0 mins
- O O - 6 hrs, 0 mins
- O O O 7 hrs, 0 mins
O - - - 8 hrs, 0 mins
O - - O 9 hrs, 0 mins
O - O - 10 hrs, 0 mins
O - O O 11 hrs, 0 mins
O O - - 12 hrs, 0 mins
O O - O 13 hrs, 0 mins
O O O - 14 hrs, 0 mins
O O O O 15 hrs, 0 mins

Switches 5 to 6 - Classic/Sprint - Slow/Fast

The switches no. 5 and 6 have a special meaning for transmitting duration and keying speed in classic and sprint competitions, see table below. Up to now, this selection is hard coded in the program section of the FOXAVR and can be changed in the source code only.

5 6 Meaning - Classic/Sprint - Slow/Fast
- - classic competition with "slow" transmitting time of 60 seconds, default keying speed 54 CpM, ~11 WpM
- O classic competition with "fast" transmitting time of 30 seconds, default keying speed 60 CpM, 12 WpM
O - sprint competition transmitting time of 12 seconds and slow keying speed of 48 CpM, ~10 WpM
O O sprint competition transmitting time of 12 seconds and fast keying speed of 72 CpM, ~14 WpM

Switches 7 to 10 - Transmitter Selection

The switches 7 to 10 determine the transmitter’s number in combination with its keying code and the number of transmitters in a complete cycle (2, 3, 4 or 5) according to the following table. Individual values for the transmitter's number and the numbers of total transmitters (1 to 20) can be changed for each position in the EEPROM table (details see source code).

7 8 9 10 Transmitter parameters (default)
- - - - MO in permanent transmission
- - - O MOE 1st transmitter of 5
- - O - MOI 2nd transmitter of 5
- - O O MOS 3rd transmitter of 5
- O - - MOH 4th transmitter of 5
- O - O MO5 5th transmitter of 5
- O O - MOE 1st transmitter of 2
- O O O MOI 2nd transmitter of 2
O - - - MOE 1st transmitter of 3
O - - O MOI 2nd transmitter of 3
O - O - MOS 3rd transmitter of 3
O - O O MOE 1st transmitter of 4
O O - - MOI 2nd transmitter of 4
O O - O MOS 3rd transmitter of 4
O O O - MOH 4th transmitter of 4
O O O O MO– (MO with a 6 dots long carrier) in permanent transmission

Serial Interface Configuration

With the serial interface configuration enabled (JP2/PB0 closed) you get full flexibility for most of the transmitter parameters. To enter this mode close JP2/PB0. Parameters for the RS232/COM-like communication are 19200 Baud/8N1, which can be handled by most terminal applications on usual PCs. Please note: signals are on TTL/CMOS-levels 0 (low) and 5 V (high).

In both input modes (DIP switch and serial), when powering up the FOXAVR outputs via the serial output (combined with LED) a "hello" message with the current software version and a license information. In serial input mode several text question will follow asking for the necessary parameters. Where usefull, the range of value is given in round brackets, e.g.: (a - b).

Total number of beacons (0 = MO, 1 = MO- or 2 - 20)
?>

Active beacon number (1 - <number of beacons>)
?>

Seconds of active transmitting slot (10 - 240), e.g. 12 for Sprint
?>

Keying speed (48, 54, 60, 72 CpM)
?>

Prephase waiting hours (0 - 36)
?>

Prephase waiting minutes of an hour (0 - 59)
?>

As you can see, you can configure up to 20 transmitters in cycles with a transmission time of 10 to 240 seconds with keying speeds of 48, 54, 60 and 72 CpM plus a waiting period from 0 to 36 hours and 59 minutes. To differentiate up to 20 transmitters the morse code is variied in following sequence:

MOE, MOI, MOS, MOH, MO5, MOTE, MOTI, MOTS, MOTH, MOT5, MOT, MOM, MOO, MO----, MO0, MOET, MOIT, MOST, MOHT, MO5T

In case you entered an invalid value, you'll receive an error message with a short notice, e.g.:

ERROR: doesn't match number of beacons
ERROR: invalid speed value

In case of an error message you need to power up the FOXAVR again and restart entering of parameters as described above. Otherwise hard coded default values are set to avoid malfunctioning, but probably causing an unwanted setting.

In the end, in both input modes (DIP switch and serial) the read parameters are sent completely via the serial output, e.g.:

TX No. 4 of 5 / 60 sec / 54 CpM / 2:45 hrs:min waiting

While in DIP switch mode the FOXAVR starts immediately operation, in serial input mode you must

  1. remove the serial interface connection
  2. reset/sync or power up again the transmitters

NOTE:

  • All entered parameters are stored in the FOXAVR's EEPROM and are reused the next power up and reset/sync without the need of re-entering.

  • Being in DIP switch mode, the parameters entered in serial mode before are ignored but not lost. When changing back to serial mode, the formerly saved serial parameters are used again. You can use this feature to keep two separate configurations in one transmitter.