APRX - aprs программа для TNC

декабрь 2020

Программа была написана Matti Aarnio (OH2MQK) в 2007 году. APRX может быть шлюзом из эфира или дигипитером, dprs шлюзом и т.д. Имеет всего один конфигурационный файл и легко настраивается.

Программа работает только с TNC контроллерами (звуковая карта не поддерживается). Главные отличия APRX от других аналогичных программ:

  1. компактный и быстрый код
  2. низкие требования к железу (работает под OpenWRT на роутерах)
  3. DPRS-to-APRS gateway (шлюз из D-Star в APRS)
  4. APRS iGate
  5. APRS Digipeater
  6. гибкое формирование маяков
  7. одновременная работа с несколькими радиостанциями

APRX поддерживает только TNC в режимах KISS, SMACK, FLEXNET, TNC2, XKISS и может работать с ними напрямую (через UART порт или через адаптер USB-COM) или удалённо, через TCP/IP сеть.

###

Благодаря мизерным ресурсам требующимся для программы, устанавливать её разумно на уже имеющиеся системы. Например, если у вас уже работает SvxLink на Raspberry_Pi, установка APRX добавит функционал и расширит возможности вашей локальной радиосети.

Собирать из исходников aprx нет необходимости, так как программа давно не обновлялась и в deb находится последняя версия 2.9. Работает APRX стабильно и надёжно, а все возможности хорошо документированы в мануале.

###

Есть два популярных проекта, которые заменяют TNC, это MicroModem и Mobilinkd (arduino kiss tnc). Оба проекта работают на плате Arduino, которая эмулирует TNC работающий в KISS режиме. С программой APRX, получается недорогой комплект для локальной aprs сети.


Установка

Устанавливаем deb-пакет APRX на Raspberry_Pi, командой:

sudo apt-get install aprx -y
Подключаем к Raspberry_Pi переходник USB-COM и смотрим как он определился, это название и впишем в конфигурационный файл:
dmesg | grep tty
Переводим TNC в режим KISS. У меня Kantronics KPC-3plus, для его перевода, нужно набрать команду IN KISS и RESET (выход из KISS: alt+192 alt+255 alt+192). Открываем и редактируем единственный файл конфигурации:
sudo nano /etc/aprx.conf
Запускаем в консоли и внимательно смотрим на ошибки, исправляем их редактируя aprx.conf:
aprx -d
Обычно, ошибки связанны с правами записи в директории /var/log/, /var/run/ и неправильным подключением TNC. После исправления ошибок, запускаем в режиме демона:
aprx
При следующей перегрузке Raspberry_Pi, aprx запустится автоматически. Для ручного управления, используем команды:
sudo /etc/init.d/aprx start
sudo /etc/init.d/aprx restart
sudo /etc/init.d/aprx stop
Чтобы видеть (в реальном времени) работу программы, используем команду:
tail -f /var/log/aprx/aprx-rf.log

###

Подключение к UART порту
На платах роутеров и микрокомпьтеров есть встроенный порт UART, который нужен для прямого подключения к консоли. Мы его можем использовать для подключения TNC контроллера. Как это сделать в Raspberry_Pi читайте в статье Disable Linux serial console.

Важно понимать! Если ваш TNC требует полноценного RS232, нужно добавить преобразователь уровней на микросхеме MAX232, между uart и tnc, как показано на картинке выше.


Настройка

Скорость порта устанавливаем 9600, это стандартный параметр для TNC2 контроллеров расчитанных на 300/1200бод в эфире.

Уровень девиации радиостанции, лучше настроить из консоли TNC, а затем переключить контроллер в режим KISS. Это связано с тем, что большинство настроек TNC изменить из режима KISS не получится и их нужно сделать заранее.

Конфигурацию в файле aprx.conf лучше создать самую простую и убедившись что всё работает, усложнять, до необходимого уровня.

mycall  UA6HJQ-1
myloc lat ddmm.mmN lon dddmm.mmE

<aprsis>
    login    $mycall
    passcode 689321
    server   russia.aprs2.net
</aprsis>

<logging>
    pidfile /var/run/aprx.pid
    rflog   /var/log/aprx/aprx-rf.log
    aprxlog /var/log/aprx/aprx.log
</logging>

<interface>
    serial-device /dev/ttyUSB0  9600 8n1  KISS
    callsign   $mycall
    tx-ok      true
</interface>

<beacon>
    beaconmode radio
    cycle-size 20m
    beacon symbol "I&" $myloc comment "Rx iGate" 
</beacon>

<digipeater>
    transmitter $mycall
    <source>
        source  $mycall
    </source>
</digipeater>
Показанная конфигурация может, ретранслировать чужие маяки в эфире (с учётом парадигмы), выводить маяки на карту, передавать свой маяк.

Возможности программы APRX на этом не заканчиваются! Очень гибкие настройки в секции <digipeater> позволяют создавать много канальные aprs дигипитеры или шлюзы с фантастическими возможностями. Функциональность раздела <beacon>, также радует.


Подключаем метеостанцию

Соберем простую метеостанцию на ардуино (которая будет измерять температуру, давление, влажность) и подключим её к APRX. Предлагаемая конструкция может работать автономно или в составе aprs-дигипитера.

Для этого нам потребуются:
- плата Arduino Pro Micro (ATMega32u4),
- датчик BME/BMP280 I2C,
- OLED-дисплей I2C.

###

Делаем соединения как на картинке. Прошиваем в плату ардуино готовый скетч meteo_3_detali.ino и подключаем к Raspberry_Pi, на которой установлена программа APRX. Питание метеостанции берёт от USB-порта, отдельный источник не нужен.

Блок-схема обмена данными, выглядит так:

датчики + arduino --> usb --> raspberry_pi --> wxbeacon.txt --> aprx --> tnc --> радио

Подробную конфигурацию и все файлы, смотрите на картинке. Данные в файл считывает скрипт. Он запускается из crontab, каждый час. В моей тестовой конфигурации svxlink и aprx работают на одной Raspberry_Pi, но с разными радиостанциями и независимо друг от друга.

Показанная конфигурация не передаёт погоду в формате WX, а лишь дополняет информационную строку aprs-маяка метео данными, что (иногда) более удобно.

Вариант 2
Если не предполагается автономная работа метеостанции, можно подключить датчик BME280 I2C к Raspberry_Pi без arduino и экрана. Как это сделать показано на картинке.

###

Такой вариант проще и дешевле. Конфигурация маяка, как в предыдущей конфигурации. Для организации передачи данных, выполните следующие команды:

wget http://kavkaz.qrz.ru/aprs/bme280_ua6hjq.tgz
sudo tar xvf bme280_ua6hjq.tgz -C /usr/local/bin/
sudo nano /usr/local/bin/bme280_ua6hjq.sh
Последняя команда открывает редактор, для того чтобы вы могли указать свои координаты для маяка. В crontab-е добавляем строку, которая считывает показания с датчика в 55 минут каждого часа.
55 * * * * bme280_ua6hjq.sh
Далее запускаем APRX как обычно. Если вы хотите отправлять маяки в WX-формате, нужно сделать по другому.....


Ссылки

Aprx Digipeater Software (сайт программы)
Aprx manual

Mobilinkd (arduino kiss tnc можно подключить к uart)
MicroModem + WT4Y + OM7TEK (работает через usb-порт)

APRS шлюз за 600 рублей на роутере
DIR-620 - роутер для радиолюбителя
DIR-300 - WI-FI и APRS роутер
APRX - шлюз и ретранслятор для aprs
модификация bash-скрипта от r6hacn

R7HJ