Fig 1 W2DEN's APRS Tracker 2

Fig 1 W2DEN’s APRS Tracker 2 In the prototype enclosure

  • User definable settings
    • See table below.
  • Single knob menu!
  • Autostart
  • Time to transmit countdown
  • Full color display
  • Easy to use menu and user / data editor
    • Display can be turned off to save power.
    • Display turns on for menus.
  • SmartBeaconingTM   ( HamHUD.net )
    • Or  preset, user editable, time between transmissions
  • User selectable symbol including: House, Car, Motorcycle, Van, Truck, Bike, Balloon, Sailboat, Powerboat and School. More can be added to the code.
  • Radio audio monitor:
    • The Tracker can be connected to the radio’s audio output (speaker, packet connector etc.) and it will monitor the audio level and only transmit when no signal is detected. This functions in connection with you radio’s squelch that must be set correctly. There is a 5 second time out that overrides this feature.  A setting of 0 (zero) will disable this feature… the radio will transmit without checking the radio’s audio.
  • # of satellites
  • V+ monitor


  • Universal radio I/O using Cat 5 cable.
  • Fully isolated from the transceiver


3 independent sketches (programs) were written for this project:

  1. APRS GPS Receiver: This is a receive only sketch similar to the picture on top of Phase 2. (GitHub Link)
  2. APRS Tracker V 1.x: Basic tracker with no menu. All parameters; call, UTC offset etc. are hard coded. (GitHub Link)
  3. APRS Tracker V 2.x: V 1.x with a menu system for changing user parameters without recoding. (GitHub Link)
    1. Requires W2DEN+APRS_Tracker_2_EEPROM_Initiator to load the eePROM before first run.


This layout (phase 1, 2 etc.)  is not exactly the order in which things were developed but separating out the software helps keep things compartmentalized, and easy to find.

First: you can find the latest build on my Github site https://github.com/W2DEN

With this project here: https://github.com/W2DEN/W2DEN_APRS_Tracker

Don’t worry about GitHub, hopefully I will create a quickie primer on how to utilize it. For now download the ZIP file, lower right corner of the GitHub site and extract it into a folder named W2DEN_APRS_Tracker. It should then show up as a sketch in your Arduino IDE.

The HUGE box and the tape, will be replaced in the near future. 😕 There will be a post on construction when I receive the new box.

Main Screen ( Fig 1 ):

This will appear once the program has loaded and a stable fix has been established.

Updates every second. The Tracker will only transmit while this page is present.



Date:  corrected by UTC Offset

Count down until xmit


Time: corrected by UTC Offset

Time between xmissionsSmartBeacon or constant
Latitude  Degrees Decimal Minutes N o rS
Longitude  Degrees Decimal Minutes E or W
Miles Per Hour  MPH. what else you need to know?
Heading  Heading, if moving
 # of Sats  V+ check
 # of birds heard Warns below ~3.3v

Main Menu ( Fig 2 ) :

W2DEN Tracker Menu 1

Fig 2 Main Menu

Push the button and you are graciously escorted to the Main Menu

Rotate the button to highlight an option

Push the button to go there

  • Return: back to the main screen
  • Send/Return: send a packet then return to main screen
  • User editable paramater Sub-Menus:
    • Packet: call signs, SSID etc.
    • AX.25: transmit delay, PTT/VOX etc.
    • SmartBeacon: Speed, rates, times
    • Display: On / Off ( not shown in Fig. 1 )

Packet Menu ( Fig 3 ) :

Fig 3 Packet Menu

Fig 3 Packet Menu

Highlight Packet on the Main menu and push the button and you are delivered to the Packet menu.
Displayed are data you can edit and the current value. The data is stored in eePROM so is restored when the Tracker is turned on.

Of course this works the same way. rotate the dial to highlight and click to select.

  • Return: back to the Main Screen
  • UTC: offset to correct the GPS UTC time and date. This is only for the display. No DST correction.
  • Delay: time between transmissions if the SmartBeaconing is disabled. Time to first SB transmission.
  • W2DEN1: Your location call sign
  • SSID: Your location SSID
  • APRS1: Destination call sign
  • SSID: Destination SSID usually zero (0)
  • Car1: The symbol for your location Car, House etc.
  • Comment: 35 character comment transmitted with your packets.


  1. Your Tracker will show what you have set.

AX.25 Menu ( Fig 4 ) :

Fig 4 AX.25 Menu

Fig 4 AX.25 Menu

This menu allows the setting of a number of parameters associated with the AX.25 protocol.

  • Xmit Dly: milliseconds between PTT and the packet flag transmission
  • # of Flags: The number of start byte flags (0x7e) (01111110) sent at the beginning of an AX.25 frame.
  • VOX on: milliseconds to transmit the VOX tone to ‘key’ a VOX radio. 0 (zero) for off.
  • VOX off: milliseconds between VOX tone and first AX.25 flag.
  • PTT Pin: Hardware pin on the Teensy used for PTT. Fro VOX set to 0 (zero).
  • Squelch: (not shown in Fig. 4) 0 to 1000. o (zero) disables the feature. The tracker will only transmit when the audio is below this level. You must set the radio’s squelch so APRS packets break the squelch. If the audio is not below this level the tracker will transmit after 5 seconds.  Levels between 50 and 100 seem to work with most radios that were tested.


Smart Beacon Menu ( Fig 5 ) :

Fig 5 Smart Beacon Menu

The W2DEN APRS Tracker Smart Beacon feature is based on HamHUD’s SmartBeacon® ( Link ).

This menu allowss for full user control of all of the Smart Beacon parameters.

  • Enabled: Enabled turns the Smart Beaconing on. Disabled and the Tracker will transmit via the ‘ Delay’ setting in the packet menu.
  • fSpd: Fast Speed (MPH). At or above this speed and the tracker transmits at the fRate.
  • fRate: Fast Rate (seconds). Time between transmission when the Tracker is traveling at or above the fSpd.
  • sSpd: Slow Speed (MPH). At or below this speed and the Tracker transmits at the sRate.
  • sRate: Slow Rate (seconds). Time between transmissions when the Tracker is traveling at or below the sSpd. NOTE: When sSpd is active the current sRate will double after ever transmission until sRate is equal to or above the sRate then transmissions will be sent at the sRate.
  • tTime: Turn Time (seconds). The minimum time between transmissions due to a turn.
  • tAgle: Turn Angle (degrees). The minimum angle that will cause a turn transmission.
  • Slope: A calculated value based on speed, turn time and turn angle to compensate for speed.

turn_threshold = tAgle + Slope / mph;

IF (heading_change_since_beacon > turn_threshold) AND
(secs_since_beacon> tTime)

A good write up on how this all works can be found here: http://wisconsinaprs.net/Smart%20Beaconing.htm

There are a number of editors in the W2DEN Tracker menu that allow the above parameters to be edited. The following will describe how to edit these parameters.

Numeric / Symbol Editor ( Fig 6 ) :

Fig 6. Numeric Editor

Fig 6. Numeric Editor

The numeric parameters can be changed using the numeric editor. These include: UTC, Delay, both SSIDs, All AX.25 and Smart Beaconing parameters.

The APRS symbols; car, house etc. are also edited in the same manor a a number.

All numeric parameters have minimums and maximums set in the code.

  • Title:(UTC Offset)  the top of the display will indicate which parameter you are editing
  • Now: Displays the current value
  • New: Displays the new value that will be stored.
    • Rotate the control knob to select the new value you want for the current parameter.
    • Push the control knob to accept the new value.
    • If the New = Now the value will not be changed.

The lower portion of the display will give you some additional information about the parameter.

Alpha Field Editor ( Fig 7, 8, 9 & 10 ) :

W2DEN APRS Tracker MyCall Edit Exit

Fig 8. Call Editor Exit Select

W2DEN APRS Tracker MyCall Edit Edit

Fig 7 Call Editor

The Alpha Field Editor allows compete editing of the Call fields (my call and Destination call) as well as the Comment field. Originally the call editor was different from the comment editor but the two have now been combined into a single, easy to use Alpha Field Editor.




W2DEN APRS Tracker Comment Edit 1

Fig 9 Comment Editor


    • The display is in Landscape mode to handle the 35 comment characters.
    • The title ‘Comment’, ‘My Call’, ‘Dest. Call’ is on top.
    • Now: the current field contents.
      • Note: For the ‘Now:’ comment filed the last ( 35th) character is cut off so this all fits on the display
    • New: the new field with one character highlighted in white on blue.
    • To edit:
      • Rotate the control knob to highlight the letter to edit.
      • Push the control knob to select the letter. The letter will turn to yellow on blue.
      • Now rotate the knob to the desired new character.
      • Push the knob to change to the new letter.
      • repeat as needed.
W2DEN APRS Tracker Comment Edit Continue

Fig 10 Comment Editor

  • To save the new field contents:
    • Rotating the control knob past the end of the ‘New:’ field will display the ‘Exit’ choices:
      • Continue
      • Exit
      • Exit / Save.
    • Click to choose the one you want.

This new improved scheme for single control editing is far easier than the prior Call Editor.

User Defined Data:

Many published DIY APRS Trackers depend on hard coded constants to handle information such as UTC offset, Call, symbols etc. The W2DEN APRS Tracker 2 will store this data in EEPROM that is user editable via the menu system.

Note this uses the EEPROMex.h library

Here are definitions of these data:

Data Byte Type Notes
Start Length
check 0 1 char  * if data is present
UTC Offset 1 1 int8_t  Integer hours -12…14 (minutes to be added in the future)
dTime 2 2 uint16_t  unit: seconds: Time between transmissions (default)
source Call 4 6 String  A…Z, 0…9, / space padded char(32)
source Call SSID 10 1 int8_t  0…15 This is the call ID e.g.  for a SSID of 5: W2DEN-5
dest. Call 11 6 String  A…Z, 0…9, / space padded
dest. SSID 17 1 int8_t  0…15 This is the destination call ID
Symbol  Set 18 1 String  “\” or “/” for primary or secondary
Symbol1 19 1 String  various( – house, > car etc)
comment 20 34 String  a…z, A…Z, 0…9, some spec. chars. space padded
Fast Speed2 55 2 uint16_t  Smart Beacon mph 10 … 100
Fast Rate 57 2 uint16_t  Smart Beacon seconds 10 …600
Slow Speed 59 2 uint16_t  Smart Beacon mph 1 … 30
Slow Rate 61 2 uint16_t  Smart Beacon seconds 1000 … 5000
Min. Turn Time 63 2 uint16_t  Smart Beacon seconds 5 …, 30
Min. Turn Angle 65 2 uint16_t  Smart Beacon degrees 5 … 30
Turn Slope 67 2 uint16_t  Smart Beacon  200 … 300
axDelay 69 2 uint16_t  millisecond key down until packet starts
axFlags 71 2 uint16_t  integer # of ax.25 preamble flags ( 7e ) to send
axVoxOn 73 2 uint16_t  seconds VOX time on. 0 = use PTT
axVOXSilent 75 2 uint16_t  seconds VOX silent until first flag
pttPin 77 2 uint16_t  Teensy PTT pin # 0 = use VOX (normally = 13)
tftOnOff 80 1 int9_t  =1 for display on, =0 for off
squelch 81 2 uint16_t 0 – 1000 with 0 (zero) disabling the squelch feature

Notes: The user data is now functional.

  1. The current Symbols are: house, car, motorcycle, balloon, sailboat, power boat, bike, truck, van, school. More can be added via programming as needed.
  2. SmartBeaconing parameters.


Some useful, for programing purposes, and perhaps interesting, for those who must know what goes on behind the scenes, information.

Some may end up on a separate post… we’ll see how it progresses.

<< Previous: Testing Next: Enclosure >>