No description, website, or topics provided.
Arduino C++
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Ham radio repeater controller

This is an arduino sketch aiming at providing a flexible
repeater controller.

The code is provided under GNU GPL v3

- Fully non-blocking code
- Easy to modify PIN allocation
- Programmable delays
- Programmable morse messages
- Opening controllable by 1750, CTCSS, Carrier
- Programmable Beacon
- Too long PTT timer

- Pins (Pin Allocations)
INACTIVE_CLOSE: delay from last PTT to repeater closing
RELEASE_BEEP: delay between PTT release and roger beep
BEEP_LENGTH: when single beep is used, length of the beep
PTT_ON_DELAY: Time between PTT on and morse
PTT_OFF_DELAY: Time between morse and PTT off
CARRIER_1750_DELAY: Required 1750/Carrier length before opening

BEACON_DELAY: time between two beacons when repeater is closed
TIMEOUT_DELAY: closes repeater if PTT is on for TIMEOUT_DELAY ms
MORSE_DOT: time of the morse dot in ms

USE_1750_OPEN: Open repeater when 1750 pin is asserted (1 for enabled)
USE_CTCSS_OPEN: Open repeater when CTCSS pin is asserted (1 for enabled)
USE_CARRIER_OPEN: Open repeater when Carrier pin is asserted (1 for enabled)

USE_CTCSS_BUSY: active when CTCSS pin is asserted (1 for enabled)
USE_CARRIER_BUSY: active when Carrier pin is asserted (1 for enabled)

ROGER_TONE: use one single tone beep (exclusive with ROGER_K)
ROGER_K: use morse K (exclusive with ROGER_TONE)

BEEP_FREQ: Roger beep frequency
MORSE_FREQ: Morse frequency

Avoid modifying the other defines unless you know what you are doing...

- Messages
openMsg: message when repeater is opened
closeMsg: message when the repeater is closing
kMsg: message for roger beep
beaconMsg: ID message when repeater is closed
timeoutMsg: message when PTT is held for too long

Code internals:
In the setup function, pins are configured in ioSetup function.
Serial is enabled for debug purposes. And Watchdog is enabled.

In the loop function, PTT is controlled, repeater is controlled
to be opened or closed. Morse is generated and beacon is controlled.

Watchdog is reset every loop iteration and timeout is 8 s.

Repeater can be in 3 states:
REPEATER_CLOSED: Repeater is IDLE, identifying itself every 
BEACON_DELAY. If the 1750, CTCSS or Carrier pin is enabled, State goes to 

REPEATER_OPEN: Detects Sql openings, Generates Roger beep
and timeout timer

REPEATER_MORSE: Currently sending morse, keeping PTT open before closing