LogoHam

Konstrukce i-gate pro analogové APRS, část první

Obsah:

  1. Testy příjmu APRS
  2. Zprovoznění programu Direwolf
  3. Připojení k internetu
  4. Testy i-gate (v plánu)

1) Testy příjmu APRS

Po absolvování prvního dílu by mělo být rádio funkční. Můžeme si to zkontrolovat příkazem:

systemctl status rtl_sdr.service

Pokud služba není aktivní, doporučuji použít příkaz:

sudo journalctl -xeu rtl_sdr.service --no-pager

S jeho pomocí se můžete dozvědět víc, ale upřímně těžko předpovídat, jaká chyba by u vás mohla nastat. U mě se během pokusů stávalo, že rádio bylo nedostupné. Nedalo se spustit. To bylo způsobeno nedostatečnými právy uživatele pi. Řešením je parametr -DINSTALL_UDEV_RULES=ON u příkazu cmake, jak bylo uvedeno v prvním dílu.
Pokud se rádio spustí, tedy služba je aktivní, pořád ještě nevíme, jestli poslouchá na nastavené frekvenci a má na výstupu nf signál APRS. Proto uděláme pár ručních testů. K tomu budete potřebovat vysílačku nastavenou tak, aby vysílala analogový APRS signál, jak bylo popsáno v článku Nastavení radiostanice. Třeba na kanálu PMR10. Nejprve zastavíme službu rtl_sdr.service, aby se rádio uvolnilo pro ruční ovládání.

sudo systemctl stop rtl_sdr.service

Princip testu je následující. Výstup z rádia nebudeme posílat do zařízení Loopback, ale do souboru ve formátu wav. Tento soubor uložený na SD kartě RPi můžeme okopírovat do běžného počítače programem Filezilla (client). Tam jej přehrajeme libovolným přehrávačem a uslyšíme, jestli obsahuje typický cvrlikavý zvuk APRS. Ještě lepší by bylo zobrazit si jej v nějakém audio editoru.
Příkaz pro příjem a konverzi do souboru vypadá takto:

rtl_fm -f 446118750 -s 24000 -g 48 -p 0 -M fm - | sox -t raw -r 24000 -e signed-integer -b 16 -c 1 - -t wav /home/pi/test01.wav

Výstup z rádia se ukládá do souboru tak dlouho, dokud se příkaz neukončí klávesovou kombinací Ctrl+C. Ale podívejme se na strukturu tohoto příkazu. První polovina, tedy nastavení rádia,  je shodná se skriptem rtl_sdr.sh, který najdete v prvním dílu. Ke zpracování přijatého zvuku se použije program sox. Jeho parametry jsou:
-t: formát vstupních PCM dat z rádia
-r: vzorkování nf signálu, musí být shodné s rádiem
-e: formát čísla hodnoty vzorku
-b: počet bitů na vzorek
-c: počet kanálů
- : standardní výstup
-t: formát PCM dat ukládaných do souboru
/home/pi/test01.wav: cesta a soubor, do kterého se zvuk bude ukládat

Úkolem je nejen zjistit funkčnost příjmu signálu APRS, ale i v jakém rozsahu parametru -p lze APRS zachytit. Pro běžný provoz služby se pak zapíše do souboru rtl_sdr.sh střední hodnota -p. Tohle je nejsložitější část celé konstrukce. Já jsem postupoval takto:
- zvolil jsem parametr -p = 0 a název souboru test01
- spustil jsem příkaz
- několikrát odvysílal signál APRS na kanálu PMR10
- zastavil jsem příkaz klávesovou kombinací Ctrl+C
- zvýšil jsem hodnotu parametru -p a zvýšil jsem číslo v názvu souboru wav
- uvedený postup jsem několikrát zopakoval
- získané soubory jsem okopíroval do svého počítače a přehrál
- vyhodnotil jsem, v jakém rozsahu hodnot -p je slyšet APRS a střední hodnotu jsem zapsal do skriptu rtl_sdr.sh

Protože jsem ve zvukových souborech neměl žádný signál APRS u hodnot -p 0 a -p 30, použil jsem pro běžný provoz do skriptu rtl_sdr.sh hodnotu -p 15. Teoreticky by tyhle testy parametru -p neměly být potřeba u rádia Blog V4, které má teplotně stabilizovaný oscilátor s přesností 1 ppm. Bohužel u záznamů z tohoto rádia jsem nf signál neměl skoro žádný. Vypadá to na delší výzkum a následně možná i samostatný článek.

2) Zprovoznění programu Direwolf

Pojem Dire Wolf označuje vymřelý druh největší divoce žijící psovité šelmy, která kdy existovala. Možná, že autor programu direwolf tím chtěl symbolicky naznačit jeho velikost nebo rozsáhlost. Program direwolf je kompletní SW část i-gate.  Dokumentaci si můžete stáhnout tady. My si program samozřejmě zkompilujeme ze zdrojových textů.

git clone https://github.com/wb2osz/direwolf.git
cd direwolf
mkdir build
cd build
cmake ..
make
sudo make install
cd ~

Během kompilace nejspíš uvidíte spoustu varování (platí 7.8.2025). Ale není mezi nimi žádná chyba, takže se program přeloží a nainstaluje. 
Soubory související s programem umístíme do adresáře /etc/direwolf/ Ten musíme nejdřív vytvořit a zpřístupnit uživateli pi.

sudo mkdir /etc/direwolf/
sudo chown -R pi:pi /etc/direwolf/

Potom zde vytvoříme konfigurační soubor:

nano /etc/direwolf/direwolf.conf

Minimalistický obsah konfiguračního souboru:

# --------------------------------------------------------
# Direwolf Configuration File – HUGJEV RX test i-Gate
# Hardware: RTL-SDR (Logilink VG0002A)
# --------------------------------------------------------

# Používáme Alsa Loopback
ADEVICE plughw:0,1,0
CHANNEL 0

# Volací značka iGate (bez SSID pro koncového klienta, -10 pro RX iGate)
MYCALL HUGJEV-10

# APRS server
IGSERVER eu.cbaprs.net 27235

# Login podle APRS-IS - použij hash passcode (není skutečné heslo)
IGLOGIN HUGJEV-10 12345
IGTXLIMIT 1

# Beacon – pouze informační, bez zpětného RF vysílání (jen podle APRS-IS)
# Symbol "I&" = i-gate
PBEACON lat=49.63265 long=16.71244 symbol="I&" every=30 delay=0:15 comment="HUGJEV test iGate RPi zero" sendto=IG

# Logování do souboru (volitelně)
LOGFILE /etc/direwolf/direwolf.log

Co všechno se v tomto konkrétním souboru nastavuje? Nejprve definujeme, z jakého zdroje se budou přijímat vstupní data. Pak musíme nastavit volací značku z 5 ÷ 6 velkých písmen a číslic. Číslice nejsou povinné. Pro zařízení i-gate je typické za volací značku doplnít "-10". Pak definujeme adresu a port serveru, kam se dekódovaná APRS data posílají. Na dalším řádku je znovu volací značka doplněná číselným heslem. Tohle heslo můžete získat v některých službách některých mapových serverů. Třeba se podívejte na https://aprs.to/ do menu Tools, APRS Passcode Generator. IGTXLIMIT by měl stanovit minimální čas odesílání dat. Já mám 1 minutu, program direwolf doporučuje 5 minut, ale nejsem si jist, jestli to tak nějak funguje. PBEACON obsahuje souřadnice ikony zařízení na mapě, vzhled ikony, čas automatické aktualizace informací o i-gate a komentář, který se zobrazí u ikony i-gate. Změňte si hlavně zeměpisnou polohu, jinak se vaše ikona zobrazí na náměstí v Jevíčku. Také v komentáři budete chtít mít nejspíš něco jiného. Zbytek můžete nechat podle mě. Na posledním řádku je uvedená adresa logovacího souboru. Nelogují se ale provozní nebo chybové informace, nýbrž obsah přijatých APRS paketů. Zde se můžete podívat, jaké APRS informace vaším i-gate prošly.

V tuto chvíli už můžeme vyzkoušet funkčnost programu direwolf. Spustíme ho ručně příkazem:

direwolf -r 24000 -t 0 -c /etc/direwolf/direwolf.conf -l /etc/direwolf -D 1

Na mapě by se měla objevit ikona i-gate. Pokud je funkční služba rádia a odešlete APRS ze své vysílačky, objeví se na mapě i druhá ikona uživatele. Tohle je už kompletní funkčnost, které chceme trvale dosáhnout. Příkaz zastavíme opět klávesovou kombinací Ctrl+C. Pro běžný provoz ale musíme udělat ještě několik věcí. Nejprve si projdeme parametry programu direwolf:

-r: vzorkovací frekvence, musí být shodná s rádiem
-t: formát výstupního textu v terminálu
-c: cesta ke konfiguračnímu souboru
-l: cesta k logovacímu souboru, povolí logování
-D: dělička vzorkovací frekvence

V tomto případě nesmí být na konci příkazu obvyklá pomlčka pro nastavení defaultního vstupu / výstupu. Přebije totíž údaj v konfiguračním souboru a výstup ze zařízení Loopback by se na vstup programu direwolf nedostal. Pokud program direwolf funguje a na mapě se vám zobrazily ikony i-gate i koncového uživatele, převedeme ho na službu. Nejdřív vytvoříme skript služby:

sudo nano /etc/systemd/system/direwolf.service

Obsah souboru:

[Unit]
Description=Direwolf APRS iGate
After=sound.target network.target rtl_fm_loopback.target

[Service]
ExecStart=/usr/local/bin/direwolf -r 24000 -t 0 -c /etc/direwolf/direwolf.conf -l /etc/direwolf -D 1
Restart=always
User=pi
Group=audio

[Install]
WantedBy=multi-user.target

Potom službu spustíme:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable direwolf.service
sudo systemctl start direwolf.service

Že služba opravdu běží můžeme v tuto chvíli i kdykoliv po startu RPi zkontrolovat příkazem:

systemctl status direwolf.service

I tady poznáme běžící službu zeleným označením: active (running). Pokud se tak nestane, zkuste zjistit víc příkazem:

sudo journalctl -xeu direwolf.service --no-pager

Po jakémkoliv restartu nebo spuštění RPi se už obě služby automaticky rozběhnou a celý i-gate by měl fungovat samostatně a bez obsluhy.

3) Připojení k internetu

Aby i-gate fungoval popsaným způsobem, musí mít přístup do internetu. Během vývoje asi máte tuto podmínku splněnou, protože do nějaké sítě musí být RPi připojené kvůli komunikaci s terminálem. Naším záměrem je ale vytvořit mobilní zařízení. A v terénu asi budou jiné podmínky, než u vás doma na stole. Já jsem si pořídil speciální jen datovou SIM kartu O2. K ní jsem si koupil USB modem Alcatel IK41VE1. Pro jeho připojení k RPI zero 1 WH je potřeba USB HUB bez externího napájení. Celá konfigurace vypadá takto.

Konfigurace1Thumb

Obr. 01 - Konfigurace mobilního i-gate s vlastním internetem

Dokud jsem sestavu testoval doma v klidu, všechno fungovalo správně. Bohužel v terénu se začaly objevovat problémy se stabilitou a funkčností. Dost často jsem musel RPi restartovat odpojením od zdroje a opětovným připojením. Mohu zde uvést jen své osobní doměnky, ale myslím si, že jeden z hlavních problémů byly otřesy během cestování. Zařízení jsem měl v batohu na zádech a při chůzi hlavně v těžším terénu asi docházelo k neúměrným rázům. Zařízení obsahuje několik USB propojů, které k takovému použití nejsou určeny. Navíc napájení přijímače, modemu a HUBu vede přes RPi, což také není optimální. Kolísáni přechodových odporů v kontaktech USB pak nejspíš způsobovalo zamrzání RPi. Proto jsem s testy přešel na druhou variantu.

 Konfigurace2Thumb

Obr. 02 - Konfigurace mobilního i-gate s WiFi hotspotem v mobilu

Odstraněním USB HUBu a internetového modemu spolehlivost výrazně vzrostla. Během 5 hodin dlouhého pochodu na místní kopec Hušák a zpět bylo potřeba i-gate restartovat jen dvakrát. Důvody budu teprve zkoumat v dalších testech. Pro úplnost ještě dodám, že tuhle konfiguraci vydrží uvedená power banka napájet něco přes 20 hodin.

Žádné komentáře

Zanechat komentář

Odpověď na Some User

E-mail: hugocz@jevicko.org Lokátor: JN89IP