Cand-pasiunea-pentru-radio-cucereste-muntii

Când pasiunea pentru radio cucerește munții

 De fapt, ea… pasiunea, a fost cea care ne-a ghidat în toate acțiunile pe care le-am întreprins de-a lungul anilor, mai ales când a fost vorba de RoLink. Așa s-a întâmplat de mai multe ori și în cazul Masivului Cozia, un munte care ne atrage ca un magnet. De ce?

Când pasiunea pentru radio cucerește munții
Repetor RoLink YO7C – Masivul Cozia

În primul rând, deoarece oportunitatea celor 1664 de metri altitudine, oferă o arie de acoperire impresionantă, depășind așteptările din simulările efectuate. Astfel că noi, prin rețeaua care ne unește, am găsit un amplasament minunat pentru desfășurarea optimă de QSO-uri interesante în RoLink.

Când pasiunea pentru radio cucerește munții

De asemenea, tot pe Cozia, partea de comunicații digitale este asigurată în rețeaua BrandMeister prin deja existența de ceva timp acolo, a repetorului DMR instalat de Adrian – YO7HKR și administrat de către Denis – YO3DSG.

Când pasiunea pentru radio cucerește munții

Al doilea motiv pentru care Masivul Cozia ne atrage, este acela al peisajului uimitor care bucură sufletul și relaxează mintea. În fapt, este o panoramă extraordinară în toate punctele cardinale.

Când pasiunea pentru radio cucerește munții
Valea Oltului în aval

Mai ales în zilele senine, de la crestele înzăpezite ale Făgărașilor și până la îndepărtatul Parâng, se poate vedea toată frumusețea orizontului, indiferent de anotimp.

Când pasiunea pentru radio cucerește munții
Vedere spre Munții Făgăraș

Altfel, conform mărturiei depuse de ambele camere web, amplasate pe vârful Ciuha Mare, silueta ondulată a râului Olt, se vede șerpunid dinspre Sibiu, în avale spre Râmnicu Vâlcea.

Și atunci? Care dintre cele două motive ne-au convins că este cazul pentru o mică reuniune radioamatoricească, într-o oarecare zi de duminică? În principiu… ambele. Mai precis, aveam în plan montarea unui nod sub forma unui IGate – YO7JYL-10, care să preia traficul din zona surprinzător de mare de acoperire a repetorului. Acesta ar fi mult mai ușor de monitorizat pentru radioamatorii care traversează pitoreasca vale a Oltului.

Când pasiunea pentru radio cucerește munți
Antena Diamond X30 a sistemului pentru A.P.R.S

De asemenea, deoarece ne pasă de modul cum funcționează rețeaua RoLink, am constatat că atunci când se emite pe frecvența repetorului de pe Cozia, se preia tonul CTCSS 103,5 Hz și se distribuie în radiofrecvență, deranjând cumva nodul de la Craiova. Astfel, ne-am gândit la activarea filtrării tonurilor CTCSS așa încât, în momentul când un radioamator vorbește prin Cozia, să nu deschidă nodul configurat pe frecvența de emisie a repetorului.

Având planurile puse la punct, din Pitești (YO7JYL – Cristina, YO7GQZ – Cătălin), Brașov (YO6NAM – Răzvan), București (YO3DEL – Dan, YO3DSG – Denis) și desigur, Râmnicu Vâlcea (YO7HKR – Adrian), câțiva radioamatori pasionați, oameni cu minte deschisă, fără stare și cu dorință de aventură, s-au mobilizat pentru urcarea în Masivul Cozia.

Când pasiunea pentru radio cucerește munți
Releul radio – tv din Masivul Cozia

Chiar dacă vremea nu se anunța grozavă, prin prisma norilor denși care nu se lăsau împrăștiați de pe cerul lui februarie, ne-am bucurat că totuși, temperatura era pozitivă. Pentru mine, singurul impediment vinovat de înghețarea mâinilor, avea să fie vântul care sufla suficient de tare la altitudinea celor 1664 m.

Când pasiunea pentru radio cucerește munți
Valea Oltului spre Sibiu

Întâlnirea noastră a avut loc la baza muntelui, înainte de intrarea pe drumul forestier ce urcă spre cabană. Un fapt era clar: bucuria revederii se observa pe chipurile noastre, deci un motiv în plus să ne gândim că echipa astfel formată, avea să realizeze cu succes ceea ce și-a propus.

Când pasiunea pentru radio cucerește munți
YO6NAM, YO7HKR, YO7JYL, YO7GQZ, YO3DEL, YO3DSG – Foto: YO3DSG

Companie pe calea undelor radio am avut în permanență, pentru că rețeaua veselă s-a animat. Noi ne-am simțit bine, deoarece vorbind la stație, drumul a fost și mai scurt.

Când pasiunea pentru radio cucerește munți
YO7GQZ, YO3DSG, YO7HKR, YO6NAM

Covorul alb și-a făcut apariția abia după ce, în urcarea pe drumul forestier, am trecut de 1000 m în altitudine. Apoi, pe ultimul kilometru în apropierea Cabanei Cozia, zăpada moale de pe drum avea un strat de vreo douăzeci de centimetri și era suficient de enervantă.

Când pasiunea pentru radio cucerește munți

Ne-am echipat cu cele necesare pentru urcarea pe Vârful Ciuha Mare și am verificat dacă lipsește ceva. Nu de alta, dar n-ar fi fost plăcut să mai facem un drum înapoi la cabană, unde am parcat mașinile.

Când pasiunea pentru radio cucerește munți
Cabana Cozia

Denis împreună cu Adi au rămas acolo, în timp ce eu, Cătălin, Răzvan și Dan am pornit spre vârf prin zăpada moale, alunecoasă și viscolită pe alocuri.

La un moment dat, câteva picături de ploaie au încercat să ne intimideze, dar nu le-a reușit. În schimb, vântul și-a făcut treaba, schimbând forma norilor aruncați pe cer și mișcând ramurile brazilor în toate direcțiile.

Când pasiunea pentru radio cucerește munți
YO3DEL, YO7GQZ, YO6NAM

Colegii mei s-au pus pe treabă, fiind și o ocazie bună pentru mentenanța repetoarelor (RoLink și DMR- prin rugămintea lui Denis). A fost montat și nodulețul pentru IGate, urmat de configurarea lui în sistem.

Când pasiunea pentru radio cucerește munți
Nod IGate A.P.R.S

Când pasiunea pentru radio cucerește munții
YO7GQZ, YO3DEL; Foto – YO6NAM

Apoi, era momentul pentru activarea filtrării tonurilor CTCSS. Foarte simplu pentru Răzvan de realizat asta, dacă ar fi vrut să funcționeze cablul de legătură dintre stația Motorola și laptop.

Când pasiunea pentru radio cucerește munții
YO7GQZ, YO6NAM

Pentru o clipă m-am amuzat în tăcere, deoarece mi-am adus aminte că, la fiecare urcare pe Cozia, mereu a fost ceva ce ne-a dat de furcă. De exemplu, la instalarea repetorului, un senzor încăpățânat ne-a dus pe culmile disperării. De data asta, era vorba de mufa rebelă de la cablul de programare.

Când pasiunea pentru radio cucerește munții
YO6NAM, YO7GQZ, YO3DEL

Deși introdusă în stație, nu voia sub nici o formă să comunice cu laptopul, fapt ce ne-a pus pe gânduri, pentru găsirea unei soluții rapide.

Când pasiunea pentru radio cucerește munții
YO6NAM, YO3DEL

Și de data asta am fost norocoși, în ideea în care a fost găsită o altă mufă, de la un alt cablu, tăiată și apoi lipite cu cositor toate firele din alcătuirea cablurilor. În lipsa unui clește de sertizare, au fost asociate culorile componente și, cu mare atenție, făcută echivalarea lor. Odată lipite cele două bucăți de cablu, a funcționat și conexiunea stației cu laptopul. Ce s-a vrut de fapt?

Când pasiunea pentru radio cucerește munții
YO6NAM, YO7GQZ

Cu alte cuvinte, semnalul ce trece prin repetor din stația de emisie (dinspre recepție spre emisie), să fie la același nivel cu cel care trece din stația de recepție în rețea. Au urmat câteva teste de volum pentru conformitate, după care, în principiu… n-ar mai fi fost nimic de făcut.

Când pasiunea pentru radio cucerește munții

Apă am avut destul de puțină cu noi, știind că nu stăm mult pe vârf. Răzvan mi-a reproșat că, de data asta nu am mai luat tradiționalul termos cu ceai din fructe de pădure, așa că băieții s-au consolat cu niște suc. Oricum de foame uitaserăm, dar am avut noroc cu Adi, care cu grija unui părinte, înainte să pornim spre vârf, mi-a dat niște sendvișuri și câteva mere delicioase.

Abia pe la ora 16.30 am început să coborâm și în scurt timp am ajuns la cabană, unde ne așteptau Adi și Denis.

Când pasiunea pentru radio cucerește munții
YO6NAM, YOYJYL, YO7GQZ, YO3DEL, YO3DSG; Foto – YO3DSG

Ne cam grăbeam să pornim spre casă, mai ales Răzvan care avea de parcurs cel mai lung traseu până la Brașov. Totuși, la invitația lui Denis de a nu pleca la drum fără să mâncăm, am acceptat cu plăcere să pornim în coloană spre Râmnicu Vâlcea. La un local recunoscut pentru că „se mănancă bine”, ne aștepta Dana – YO7HKM. Ne-am bucurat din nou pentru revederea surpriză și împreună am povestit despre cum a fost pe Cozia, dar și peripețiile de care am avut parte.

Mai pot să spun că, de comun acord, a fost o zi la superlativ. Deși vremea s-a vrut morocănoasă, n-am avut timp să o băgăm în seamă. Toate momentele petrecute împreună s-au dovedit constructive și ne-am bucurat pentru că în final, rezultatele au ieșit așa cum ne-am propus. Voia bună ne-a animat fiecare minut, iar gândurile noastre au avut ca punct final Ham-spirit. El este cel care ne-a ghidat de fiecare dată proiectele finalizate cu succes.

Cu simplitatea care ne caracterizează încă de la originile rețelei RoLink, având mintea deschisă și sufletul liber, ne-am adunat o mână de oameni și încă o dată, am pus în slujba radioamatorilor, posibilitatea de a comunica cu echipamente profesionale, dar și de a monitoriza traficul cu ajutorul acestui IGate. Ceea ce vrem să punctăm este faptul că, pentru cei pasionați, este deschisă oferta noastră de a distribui noduri pentru sistemul A.P.R.S. în amplasamente situate la altitudinea de peste 1400 m.

Este foarte simplu! De aceea povestea noastră continuă să scrie istorie în pagina RoLink.

Cristina – YO7JYL

www.439100.ro

Nod portabil RoLink dotat cu GPS


*** Nu te descurci să faci instalarea manual? Nicio problemă! Click aici ***

Dacă foloseşti un nod RoLink bazat pe Orange Pi Zero şi SA818, poţi utiliza o imagine preconfigurată cu softul necesar pentru tot ce ai nevoie (SVXLink, Direwolf, Web Dashboard)

  • Descarcă fişierul de aici, dezarhivează şi citeşte informaţiile din fişierul text.
  • Fă-ţi un cont (dacă nu ai deja) pe reflector, aici
  • Configurează opţiunile pentru APRS şi verifică dacă apari pe hartă, aici sau aici
  • Stai informat despre activităţile din RoLink pe canalul de Telegram
  • Vizitează-ne pe pagina de Facebook


În cele ce urmează, o să vă prezint modul cum este configurat și funcționează nodul portabil RoLink ce are atașat un sistem GPS. A fost testat și verificat de către mine cu ocazia mai multor călătorii și mi s-a părut interesant.

Modulul USB GPS se gaseste la următoarea adresă: https://t.ly/wWHXN și arată astfel:

Pe un sistem Orangepi zero cu imagine preconfigurată RoLinkX, (ATENTIE! se lucreaza cu userul root) se trece sistemul din ro în rw și se instalează următorele pachete:

apt install gpsd gpsd-tools direwolf

Daca avem deja modulul GPS, putem verifica functionarea acestuia cu comanda:

cgps -s

Daca totul este in regula, vom avea urmatorul tabel:

Daca nu apare niciun parametru in tabel, trebuie verificat daca sistemul vede receptorul; ne uitam cu comanda:

dmesg |grep -i usb

si ar trebui sa avem:

3.421818] usb 6-1: new full-speed USB device number 2 using ohci-platform
[ 3.648888] usb 6-1: New USB device found, idVendor=1546, idProduct=01a7, bcdDevice= 1.00
[ 3.648945] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3.648969] usb 6-1: Product: u-blox 7 - GPS/GNSS Receiver
[ 3.648987] usb 6-1: Manufacturer: u-blox AG - www.u-blox.com
[ 11.297455] cdc_acm 6-1:1.0: ttyACM0: USB ACM device
[ 11.297820] usbcore: registered new interface driver cdc_acm
[ 11.297841] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Daca identificam dispozitivul atasat ttyACM0 inseamna ca totul este in regula. Daca nu, vedeti ca nu cumva sa folositi un cablu lung ce are cadere mare de tensiune pe el; cel mai bine este sa folositi pentru inceput receptorul infipt direct in orangepi. Atentie insa la pozitionarea receptorului, care are antena pe partea cu led-urile. Led-ul rosu indica alimentarea, si mai este un led verde care functioneaza intermitent atunci cand receptorul s-a “fixat”. Daca cgps ne arata ceva de genul:

unde la status avem NO FIX inseamna ca nu avem receptie si trebuie sa ii schimbam locul. Sper ca este clar ca in casa nu vom avea nimic receptionat.

Pentru ca direwolf să funcționeze fără placă de sunet, tebuie să adăugăm o placă de sunet virtuală:

modprobe snd-aloop
Comanda o adaugăm în /etc/modules, astfel încât să se încarce la fiecare repornire:

nano /etc/modules

În ultima linie adăugăm:

snd-aloop

apoi salvăm (CTRL+o, ENTER, CTRL+x) și mergem mai departe cu configurarea direwolf. Pentru asta edităm:

nano /etc/direwolf.conf

și adăugăm următoarele linii:

ADEVICE plughw:1,0

GPSD localhost

MYCALL YO0XXX-15
MODEM 1200
DWAIT 30
SLOTTIME 3
PERSIST 220
TXDELAY 120
TXTAIL  5

TBEACON sendto=IG overlay=R symbol="V0" altitude="1" comment="Nod portabil cu gps " commentcmd="/usr/local/bin/temp.sh"
SMARTBEACONING 50 0:30 5 0:60 0:10 30 255 

DEDUPE 28

IGSERVER aprs.439100.ro
IGLOGIN YO0XXX-15 12345

IGTXVIA 0 WIDE1-1

IGTXLIMIT 6 10

Userul și parola se pun în functie de indicativul folosit. Indicativul trebuie intodus cu litere mari. Parola aprs-is este generata de un algoritm implementat pe diverse site-uri si este numerica. Daca ati folosit deja APRSDroid, o puteti folosi pe aceea.

Adăugam scriptul de temperatură:

nano /usr/local/bin/temp.sh

în care punem:

#!/bin/bash
temp=$(cat /sys/class/thermal/thermal_zone0/temp)
temp_int=`expr $temp / 1000`
echo " CPU Temp: $temp_int°C"

Facem scriptul executabil:

chmod 777 /usr/local/bin/temp.sh

Functionarea direwolf se poate testa cu comanda:

/usr/bin/direwolf -c /etc/direwolf.conf

Ar trebui să arate ceva de genul:

[rx>ig] #
GPSD: Location fix is now 2D.
GPSD: Location fix is now 3D.
[ig] YO0XXX-15>APDW16:!4450.39NR02453.70E0360/000/A=000910Nod portabil cu gps CPU Temp: 40°C
rx_to_ig_allow? 3188 "YO0xxx-15>APDW16:!4450.39NR02453.70E0360/000/A=000910Nod portabil cu gps CPU Temp: 40°C"
rx_to_ig_allow? YES, no dedupe checking

Dacă până aici totul este în regulă, putem pune sistemul să porneasca automat la butare.

nano /lib/systemd/system/direwolf.service

în care adăugăm (sau inlocuim -adica stergem tot ce este acolo si punem ce e mai jos- in cazul in care avem ceva deja):

[Unit]
Description=DireWolf is a software "soundcard" modem/TNC and APRS decoder
Documentation=man:direwolf
AssertPathExists=/etc/direwolf.conf
After=syslog.target network.target

[Service]
User=root
SupplementaryGroups=dialout audio

ExecStart=/usr/bin/screen -S direwolf -D -m /usr/bin/direwolf -q d -d ii -d fff -c /etc/direwolf.conf -t 0
ExecStop=/usr/bin/screen -S direwolf -X quit

Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

…. și un alt fișier care îl pornește întârziat:

nano /lib/systemd/system/direwolf.timer
[Timer]
OnStartupSec=60

[Install]
WantedBy=multi-user.target

adăugam permisiunile:

chmod 755 /lib/systemd/system/direwolf.service

și comenzile de actualizare a sistemului pentru pornirea automată:

systemctl daemon-reload
systemctl enable direwolf.timer
systemctl start direwolf.service

Putem urmări live consola direwolf folosind screen:

screen -r direwolf

De acolo se iese apăsând combinatia CTRL+a și apoi d. Dacă ieșim cu CTRL+c, direwolf se va opri și apoi va reporni automat dupa 10 secunde.

Spor la teste,

Cătălin – YO7GQZ

Interfaţa hibrid pentru RoLink

RoLink_PCB_OPiZ_v3_hibrid

Anul 2021 a fost unul plin pentru reţeaua RoLink şi evoluţia acesteia, evoluţie la care am participat cu toţii, se observă şi continuă să ne bucure.
S-a demonstrat ca accesul la reţea se poate face şi uşor, dar în acelaşi timp şi ieftin. Ne-a confirmat exerciţiul care s-a dovedit a fi unul practic, eficient şi popular, acela de a achiziţiona, în grup, mare parte din necesarul pentru un nod portabil/mobil bazat pe Orange Pi Zero şi modulul rf SA818.
Pentru o recapitulare, vă recomand să (re)citiţi articolul RoLink gratis

În urma afluxului de noduri conectate la RoLink, construite conform schemei din articolul la care am făcut referire mai sus, s-au constatat şi remediat o parte din problemele ce au fost uşor de identificat.

Versiunea 1 (pcb verde), având la bază schema concepută de Evgeniy (UR5TLZ) a suferit o modificare pe care o consider critică, aceea de introducere a filtrului ceramic în lanţul de radio frecvenţă. Mai târziu, s-a descoperit lipsa decuplării pe pinul MIC_IN-N de pe Orange Pi Zero însă din păcate, versiunea 2 (pcb roşu) fusese deja comandată şi distribuită celor care au solicitat un PCB (populat sau nu).

Pentru următoarea revizie a cablajului imprimat, îmi propusesem să-l modific şi să fac loc componentei lipsă, dar din experienţa anterioară (dezamăgitoare) cu nodurile fixe, de putere, care utilizează Orange Pi PC şi un alt model de interfaţă, am hotarât să transform ce aveam deja şi mergea bine, într-o placă eficientă, flexibilă şi potrivită nu doar pentru modul portabil/mobil. Aşa s-a născut versiunea 3 (hibrid).



Schema electronică a fost modificată prin adăugarea lui C2 (560nF) care, aşa cum spuneam mai devreme, rezolvă problema preluării şi amplificării zgomotului de radio frecvenţă pe circuitul de microfon al Orange Pi Zero.
Pentru a minimiza zgomotul provenit din sursa de alimentare (riplu) s-a introdus C10 pentru decuplarea componentelor de joasă frecvenţă şi C9 pentru componentele de înaltă frecvenţă. Eficienţa filtrului, însă, nu poate compensa orice trompetă de alimentator, prin urmare recomandăm selecţia atentă a alimentatorului folosit (riplu cât mai redus).

Au fost efectuate decuplări pentru semnalele de înaltă frecvenţă pe traseele principale, predispuse la preluare de zgomot, fiind introduse C5,C6,C7 şi C8.

Valoarea rezistenţei R3 a fost revizuită prin ajustarea celei iniţiale de 1k la 2.2k, în scopul îmbunătăţirii calităţii audio la receptie, în spectrul frecvenţelor medii-joase.
Modificarea spectrului frecvenţelor superioare (audio dinspre RF, spre reţea) se poate face prin ajustarea C5 (valori recomandate : 560pf pentru o modulaţie mai cristalină, până la 1000pF pentru un spectru mai natural).
Accentuarea spectrului de frecvenţe medii-joase se poate face prin modificare valorii condensatorului C4 de la 470nF la 680nF.

Tranzistorii bipolari utilizaţi în vechea schemă au fost înlocuiţi (la sugestia lui Cătălin YO7GQZ) cu varianta prepolarizată a acestora, lucru care ne-a economisit spaţiul pe cablaj, făcând loc celorlalte componente adăugate.

A fost introdusă D1 care are rol de a proteja tranzitorul responsabil de activarea GPIO pe Orange Pi la momentul intrării în recepţie a staţiei mobile (în funcţie de modelul folosit, poate varia între 4V – 7V).

RoLink_PCB_OPiZ_v3_hibrid_A

Am adăugat conectorul UF.L/IPX (X2) pentru a facilita montarea ansamblului în interiorul cutiilor metalice, cu posibilitatea utilizării unui patch (UF.L-SMA), montare pe panou.

Flexibilitatea este oferită ce CN1, R10 şi R11, care atunci când se doreşte utilizarea unei staţii mobile, pot fi populate în locul SA818 şi poate tranforma nodul dintr-unul mobil/portabil, într-unul fix/de putere.
În configuraţia aceasta, se pot omite componentele pentru partea de RF (filtru ceramic, conector UF.L şi SMA).

Testul practic l-am facut cu o Motorola GM340 iar nivelele audio sunt suficient de mari pentru a obţine un reglaj corect al modulaţiei, atât pe intrarea de microfon a Orange Pi Zero, cât şi pe intrarea staţiei mobile, pe pinul 5 (Flat TX Audio). În caz contrar, pinul 2 (Ext Mic Audio) ne-ar fi permis să injectam nivelul insuficient iar apoi să-l amplificăm folosind selecţia de “Gain” din configuraţia CPS.

Pentru că pinul 6 de pe conectorul CN1 nu avea o utilitate, ideea lui Laur YO4FZV s-a dovedit a fi una excelentă, prin urmare am ales ca destinaţie a acestui pin, +5V pentru a facilita alimentarea ansamblului Orange Pi Zero / Interfaţa hibrid dintr-o sursă externă, diferită de cele clasice cu mufa microUSB.



Ca şi până acum, plăcile au fost comandate de la JLCPCB, calitatea este excepţională şi testele efectuate pentru ambele variante (SA818 / fix, de putere, Motorola GM340) au produs rezultatele scontate.

Îmbunătăţirile descrise în acest articol au contribuit la modificarea listei de componente (BOM), pe care am refăcut-o şi o găsiţi aici.
Restul resurselor rămân aceleaşi ca în trecut, cu precizarea ca RoLinkX Dashboard va fi modificată în viitorul apropiat pentru a putea face selecţia între cele două moduri de utilizare (SA818 / fix).

Imaginea de OS pentru Orange Pi Zero este disponibila aici.

Bonus : Exemplu configuraţie pentru Motorola GM340. Descarcă de aici.

Cum te putem ajuta :

Iţi punem la dispoziţie cablajul imprimat (15 RON / PCB)
Poţi opta pentru comanda unui PCB pre-asamblat (fară SA818) cu componentele SMD în mai multe variante de configurare.



Ce poţi face (deja) singur :

Să-ţi creezi un cont aici.
Să începi să te bucuri de hobby şi de “ham spirit”, aşa cum o facem noi, cei din spatele RoLink – www.439100.ro

Pentru că la acest proiect au participat mai multe persoane, dorim sa le mulţumim următorilor :
Mihai (schema electronică, design PCB) – 0721 254 126
Cătălin (YO7GQZ), Laur (YO4FZV), Dan (YO3DEL)

Mult succes!
Razvan / YO6NAM

RoLink GRATIS


Instructiuni text pentru instalare, conform video


Cum îi şade bine radioamatorului modern

Cu hotspot la purtător, staţie portabilă (ideal Motorola, dar merge şi un Baofeng) cu acumulator de capacitate mare, că doar românu-i vorbăreţ, şi abonament cu internet la un operator de telefonie mobilă, evident.

Din enumerarea de mai sus, aproape orice este disponibil în cel mult 2 zile, mai puţin hotspotul, pe care fie îl găseşti la vânzare rar şi uneori la nişte sume ridicole, fie ţi-ai dori să-l construieşti, dar nu ştii de unde să începi.

Pentru că aici, pe 439100.ro, ne-am strâns o mână de oameni care înţelege ce înseamnă “ham spirit” (este spirit, da? ştiu că unii beau ultimul i când sunt puşi faţă în faţă cu un formular incomod), ne-am propus să fim deschişi şi gata să ajutăm orice radioamator care doreşte să construiască un nod portabil/mobil sau, cum i se mai spune de către unii, hotspot.

Deoarece nu o să intru în detalii foarte tehnice, vă prezint succint, fiecare element care compune nodul.

  • Schema electronică
www.439100.ro

O construcţie simplă, care are la baza 3 componente. Orange Pi Zero, modulul RF SA818 şi interfaţa între cele două, a cărei schemă este prezentată mai sus.

ATENŢIE! Schema iniţială omite cuplarea pinului 38 (MIC1N) la masă (GND) iar asta poate cauza preluarea şi amplificarea de zgomot de la orice generator de RF din apropierea nodului, dar în general se limitează la staţia folosită pentru comunicarea cu nodul. Pentru a preveni această problemă, se recomandă modificarea PCB-urilor existente, conform schemei de mai sus. Din fericire, pinul 38 este uşor accesibil, iar componentele folosite pot fi :
C = 470nF – 1uF
R = 200Ohm – 2kOhm
Descoperirea a fost făcută de Cătălin, YO7GQZ, căruia îi mulţumim.

Rezultatul fizic al schemei este un PCB de mici dimensiuni, care se potriveşte “mănuşă” peste minicalculatorul OrangePi.

  • Cablajul imprimat

Cablaj Imprimat SVX

Realizat la JLCPCB, acesta vine populat cu modulul SA818 şi componentele din schemă. Lista o veţi găsi mai jos, în acest articol.

  • Modulul RF SA818 (VHF sau UHF)

Modul RF SA818

Modulul poate fi cumpărat în varianta VHF sau UHF, de pe Aliexpress. Click aici

  • OrangePi Zero

Modul RF SA818

Se găseşte pe piaţa din România, atunci când stocurile nu sunt 0 (adică 360 zile din an), însă cea mai sigură sursa este, din nou, Aliexpress. Click aici

Puteți intra și în posesia unei carcase pentru nod:

Linkul cu fișierele necesare imprimării 3D a carcaselor respective este acesta . (Îi mulţumim lui Andrei YO3ANS pentru variantele corectate).
Variantă corectată de YO3ANS
  • Lista de componente

Toate piesele necesare pentru popularea cablajului imprimat (exceptând modulul SA818) le puteţi comanda dintr-un singur loc, cu doar câteva click-uri, de la TME. Click aici.
Stocurile pot varia, însă am facut o selecţie cu cele mai ieftine piese (însă nu “uscături”), dimensiunea potrivită şi disponibilitate ridicată.


Pentru pretenţioşi sau pentru cei cărora le pasă de EMI/RFI, se poate opta pentru intercalarea unui filtru ceramic (BPF) pe traseul de RF. Acesta este ieftin, poate fi comandat de aici şi poate fi adăugat la PCB-urile existente relativ uşor. Cablajele imprimate cu solder pad-uri pentru filtru sunt acum disponibile. Detalii aici:

În urma unei comenzi efectuate de curând pentru a popula 10 cablaje, am calculat costurile pe care le implică o singură placă. Acestea le puteţi vedea în poza de mai jos.

  • Antena

Click aici pentru UHF
Click aici pentru VHF
Click aici pentru Dual Band

  • Card microSD

Disponibil la orice magazin cu electronice sau super market. Dimensiunea minima 2GB.

  • Imagine OS

Imaginea este disponibila aici:

https://cutt.ly/RoLinkX

  • Carcasă plastic, print 3D

Disponibilă la cerere. Detalii în curând.

Suma estimată pentru finalizarea unui nod este de 220 – 300 RON, iar costurile detaliate sunt următoarele :
Orange Pi Zero + SA818 + Antena = 160 RON
Componente = 38 RON
Carcasa = 3D print (6 RON) / TME Tekal (44 RON)
Card = 15 – 25 RON
Total = 220 – 267 RON

Nodul realizat de YO8ESO

“Rezultatul final, satisfactie maxxxima!”

Cum te putem ajuta :

  1. Iţi punem la dispoziţie cablajul imprimat (gratuit sau contra unei sume simbolice de 50 bani / PCB)
  2. Dacă ai dificultăţi de plantare a componentelor, poţi cere să primeşti PCB-ul pre-asamblat cu componentele SMD. Vei plăti NUMAI valoarea brută a pieselor şi numai cantitatea folosită pentru o singură placă (puţini sunt cei care au nevoie de 100 de rezistenţe 🙂 ).
  3. Te asistăm la configurarea software a programelor necesare pentru conectarea la reţea, oricare dintre ele
  4. Putem participa la comenzi de grup (OrangePi, SA818, componente), pentru a scuti costurile individuale

Ce poţi face (deja) singur :

  1. Să-ţi creezi un cont aici https://svx.439100.ro/?m=reg
  2. Să începi să te bucuri de hobby şi de “ham spirit”, aşa cum o facem noi, cei din spatele RoLink www.439100.ro

Mult succes!

Razvan / YO6NAM

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Povestea montării acestui nod RoLink este scrisă dintr-o perspectivă cumva… diferită. Asta deoarece, eu nu am participat efectiv și deci este văzută prin prisma a ceea ce mi-a relatat Cătălin – YO7GQZ.

Este de fapt îndeplinirea proiectului instalării unui nod RoLink pe vârful Teasc aflat desupra localității Borsec.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

La altitudinea celor aproape 1400 m este Releul de Televiziune, vegheat de peste treizeci de ani de către Nelu – YO6FCD.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Istoria acestui nod RoLink s-a născut din excursia mea alături de Cătălin, hoinărind prin țară în vara acestui an. La invitația dumnealui de a-l vizita la înălțime, adică în locul atât de drag lui, ne-a împărtășit dorința de a instala un nod RoLink acolo.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

În singurătatea muntelui, dar printre posturile de radio si televiziune pe care le monitorizează în permanență, cu siguranță ar fi fost altceva, dacă ar asculta și ar vorbi cu radioamatorii din rețea.

Bucuria a fost reciprocă deoarece ne făcea plăcere să îl putem ajuta în acest sens, iar eu i-am propus și montarea unei camere web cu vedere spre zări.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

În răstimpul acesta, noi cei din echipa fanilor RoLink, ne-am mobilizat, așa încât până la venirea frigului și a unei eventuale zăpezi, nodul și camera să fie funcționale în locația de pe Vf. Teasc.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Conform zicalei „dar din dar se face Rai”, Răzvan – YO6NAM ne-a dat o stație ICOM IC-F110 programată pentru frecvența 145.3375 MHz, Bogdan –  YO3IXW avea pregătit un Orange PI, iar Cătălin – YO7GQZ antena, cablul, sursa, cutia pentru ele și desigur… camera web.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
Nod RoLink Vf. Teasc – Borsec

După ce toate au fost pregătite, Cătălin a stabilit un sfârșit de săptămână în care eu eram ocupată cu serviciul și alături de Bogdan și Mirel – YO4OMG s-au găsit într-un trio ce vroia să mute munții.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

La ora 7.30 AM, Cătălin a pornit din Pitești pe drumul spre Brașov, iar Bogdan și cu Mirel au plecat din București, cu punct intermediar de întâlnire la Dâmbul Morii. Echipa odată întrunită a făcut un popas la QTH-ul lui Răzvan, după care s-au pus în mișcare pentru că, nu-i așa? Aveau în față un traseu destul de lung, spre Sfântu Gheorghe, Miercurea Ciuc, Ghiorghieni, Toplița, Borsec și în final cei zece kilometri de drum forestier ce urcă prin pădure și gol alpin, până la poarta Releului de TV de pe Vf. Teasc.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

În jurul orelor 18, Nelu – YO6FCD i-a așteptat cu inima deschisă, dornic de a se afla în compania unor oameni buni, cu gânduri mari și plan de acțiune bine pus la punct.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
YO6FCD, YO4OMG, YO7GQZ, YO3IXW

În timp ce Nelu făcea cunoștință cu Bogdan și Mirel, deoarece se vedeau pentru prima dată, portbagajul de la Duster se golea încet – încet. Cutiile cu diverse unelte, aparate și cabluri, inclusiv suport pentru antenă de care, până la urmă  nu a fost nevoie, se mutau în clădirea releului.

Mirel deja s-a apucat de treabă și a pus mufa la cablul de antenă, iar după ce au stabilit planul de bătaie pentru a doua zi, Nelu le-a pregătit cina celor osteniți după atâtea ore de drum.

Dimineața zilei de sâmbătă promitea să țină cu RoLink, așa că soarele a urcat binișor temperatura din aer, în timp ce în vale ceața lăsa o atmosferă tristă și rece.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Mirel n-a mai avut răbdare, dornic să vadă antena și camera web montate pe pilonul de lângă clădirea releului.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
YO4OMG

Cu alte cuvinte s-a urcat pe scara din interiorul pilonului până la înălțimea de douăzeci de metri, după care, printre celelalte antene de radio și televiziune, a făcut loc și pentru antena nodului RoLink. Și camera web a fost prinsă de pilon și orientată spre Toplița.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
YO6FCD, YO4OMG

După orele prânzului au început primele teste radio și… primele imagini cu zările. Era oarecum de așteptat ca semnalul să fie înecat de radiofrecvența celorlalte antene ale releului, iar colegii mei s-au gândit la soluții pentru remedierea acestei probleme.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Partea cea mai grea, aceea de testare a nodului, a fost destul de neplăcută, deoarece de la Pitești, îi dădeam lui Cătălin controale zgomotoase de Q3 datorită radiofrecvenței. Testele efectuate în banda VHF nu s-au ridicat la înălțimea așteptărilor, așa că într-un final, a rămas ca Nelu să schimbe poziția antenei pe pilon.

Instalarea nodului RoLink și a camerei web se voiau încununate cu un grătar delicios ca și importanța proiectului, în mirosul de brad accentuat de altitudinea la care ei se aflau.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Cele două patrupede ale lui Nelu, Mura și Lola au stat în permanență cu oaspeții, iar joaca de care aveau chef mai tot timpul, a asigurat atmosfera de bună dispoziție.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
Mura, Lola

Altfel, după oboseala zilei de sâmbătă, cu stat afară, urcat de nenumărate ori pe pilon, întins cablurile și toate testele radio făcute până după apus, liniștea nopții s-a lăsat peste toate.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Deși pentru duminică, drumul destul de lung spre casă, anunța plecarea devreme, nu a fost așa, deoarece bagajele erau destule și … de îndesat în mașină.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
Gata de drum

În plus, le mai veniseră câteva idei de încercat pentru partea de radio a nodului RoLink. De fapt, nici vremea faină nu-i lăsa să plece. Nelu s-a bucurat enorm pentru tot ceea ce s-a realizat în acest timp relativ scurt și a rămas să încerce diverse metode de a îmbunătăți recepția nodului.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Evident că oaspeții nu puteau pleca așa… cu burta goală, încât Nelu le-a pregătit, urmând o rețetă originală, o delicioasă mâncare de fasole, pe care eu am savurat-o doar cu ochii.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
Mmmm

În jurul orei 12 PM, în compania aceluiași soare blând de noiembrie, Cătălin, Bogdan și Mirel au stat frumos la o poză cu Nelu, le-au mângâiat pe Mura și Lola, după care l-au salutat și… au pornit la vale.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
YO6FCD, YO4OMG, YO7GQZ, YO3IXW

Au urmat același traseu de întoarcere și din nou, au oprit la Dâmbul Morii pentru ca fiecare să pornească pe drumul lui spre casă.

Pe lângă imaginile frumoase pe care camera web le oferă pe blogul meu, a rămas acolo amintirea celor trei zile pline petrecute de patru oameni sufletiști, radioamatori, foarte pasionați și cu mult avânt.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
YO6FCD, YO4OMG

Și nu este prima dată când mă întreb: Ce anume i-a adunat pe acești oameni acolo? Nelu îi vedea efectiv pentru prima dată pe Bogdan și Mirel, chiar dacă se mai auzise cu Bogdan în legături radio, când el se afla prin munții din zonă.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
Nelu – YO6FCD

Și totuși, așa cum am mai spus și altă dată, dorința de a realiza acest proiect interesant, de a ajuta comunitatea de radioamatori, a făcut ca acești oameni să se întâlnească, de parcă se știau de o grămadă de ani.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec

Să fie pasiunea pentru radio mai presus de orice efort fizic sau financiar? Să fie altruismul o parte importantă din acest hobby de lângă care nu putem sta departe? Să fie bucuria de a cunoaște oameni cu atâtea puncte comune pe lista de pasiuni?

Eu, nelipsită din toate aventurile care țin de RoLink, mi-a părut foarte rău pentru că de data asta nu am putut să fiu acolo, lângă acei oameni.

Nod RoLink deasupra norilor – Vf. Teasc – Borsec
Până când vom reveni…

Dar invitația lui Nelu pentru a reveni în zona pitorească a Borsecului, a rămas deschisă și de bifat pentru vara anului viitor, deși cu o nostalgie amuzantă, a afirmat că: “Până la anul, mai sunt trei ani!”.

’73

Cristina – YO7JYL

www.439100.ro

Instalare Sistem pentru RoLink

Dragi colegi,

Aici o să scriu pașii necesari pentru o instalare de svxlink pe Orange PI Zero denumit în continuare „opi”.

Pentru ca articolul este destul de stufos, pun aici un fel de cuprins prin care sa accesati rapid sectiunile.

Configurarea modulului SA818/DRA818.

Calibrarea receptorului

Configurare network pentru autoconectare la ethernet/wifi/usb/modem

Administrare online

Reflectorul și un exemplu de configurare

Ca și echipament hardware este necesar un micro-computer OrangePi Zero

Pe partea hardware, poate fi la latitudinea fiecăruia ce alege pentru inter-gate-area cu radioul, însă două proiecte interesante ni le prezintă colegul nostru, Miron – YO3ITI:

http://www.yo3iti.ro/index.php?title=RoLink_OPi_Simplificat

www.439100.ro
Placa radio nod simplificat

http://www.yo3iti.ro/index.php?title=Nod_RoLink_OPi_complex

www.439100.ro
Placa radio nod complex

Detaliile constructive și nu numai, multe alte lucruri interesante, veti gasi urmărind link-urile de mai sus.

Pentru cei ce nu se pot descurca cu ce se prezinta mai jos, am pregatit o imagine gata configurata cu sistemul instalat si care se conecteaza la un reflector de test, pe care se pot face reglajele de modulatie.

Imaginea este disponibila aici: https://bastus.go.ro/imagini/portabil.img

Se acceseaza prin ssh pe portul 22, cu userul root si parola: qweasd..!

Se recomanda schimbarea parolei. Sistemul este configurat pentru conectare la retea prin cablu ethernet si prin wifi la o retea folosita de obicei de catre hotspoturile facute prin telefoanele mobile Android. Reteaua este cea cu ssid=”AndroidAP” prezenta in exemplul de mai jos. O alta retea se poate adauga urmarind exemplul. ATENTIE! Imaginea este default Read-Only, pentru a fi protejat sd-cardul. Inainte de a se face orice modificare, se va da comanda “rw” (fara ghilimele) . Totodata, imaginea fiind comprimata, se va da apoi comanda:

/usr/lib/armbian/armbian-resize-filesystem start

Se asteapta aprox un minut dupa care se da reboot. Pentru conectarea la retea, se va completa ce este necesar in fisierul /opt/rolink/conf/svxlink.conf, adica credentialele primite la inregistrarea nodului.

Cei ce vor sa puna mana sa isi construiasca sistemul singuri, pot citi in continuare.

Se download-ează armbian de aici.

Imaginea se dezarhivează, rezultă un fișier cu extensia „img”.

Se download-ează de aici Balena Etcher, cu care se scrie fișierul img pe sd-card.

Recomand sd-card minim 4G, maxim 8G. Nu știu dacă se mai gaseste de 4G, dar de 8G este destul de răspandit și ieftin. De asemenea, să luați clasa „10”, deoarece au accesul mai rapid. Scrie pe card „Class 10”. Și să fie produs de o firmă cunoscută. Nu vă zgârciți.

După ce se scrie imaginea, se bagă în opi, se alimentează, se conectează la internet/rețeaua locală prin placa de rețea integrată și în câteva momente ar trebui să vă conectați prin ssh la sistem, pe adresa locală. Adresa o aflați din router, sistemul e configurat să își ia adresa prin dhcp.

Inițial vă conectați ca root, cu parola 1234; sistemul vă va cere să schimbați parola inițială într-una mai complexă și de asemenea, să creați un user cu care vă veți conecta de acum înainte.

Pentru următoarea conectare și rularea comenzilor uzuale, monitorizare etc, veți folosi user-ul respectiv, iar comenzile care necesită drepturi de root vor fi precedate de comanda sudo. Comanda sudo (substitute user do) permite rularea unor comenzi cu privilegiile de acces ale unui alt utilizator, de obicei root.

În materialul de față, pentru simplitatea editării, eu voi rula comenzile direct ca și root. Acest lucru se face prin comanda sudo su – după introducerea parolei, user-ul se va transforma în root, acest lucru se vede și în caracterul din stânga prompterului, care s-a transformat din $ în #. În continuare să dau următoarele comenzi:

apt update 
apt upgrade
apt install g++ cmake make libsigc++-2.0-dev libgsm1-dev libpopt-dev tcl-dev libgcrypt20-dev libspeex-dev libasound2-dev libopus-dev libogg-dev libjsoncpp-dev libcurl4-openssl-dev alsa-utils vorbis-tools curl git-core ca-certificates

Instalarea de față, după o idee a lui Adrian – YO8RXT, nu va fi una standard, ci se va face în directorul rolink din /opt; aceasta va simplifica configurarea și monitorizarea programului svxlink.

cd /opt
git clone https://github.com/sm0svx/svxlink
cd svxlink
cd src
mkdir build 
cd build  
cmake -DUSE_QT=OFF -DCMAKE_INSTALL_PREFIX=/opt/rolink \
       -DSYSCONF_INSTALL_DIR=/opt/rolink/etc \
       -DSVX_SYSCONF_INSTALL_DIR=/opt/rolink/conf \
       -DSHARE_INSTALL_PREFIX=/opt/rolink/share \
       -DSVX_SHARE_INSTALL_DIR=/opt/rolink/share \
       -DSVX_MODULE_INSTALL_DIR=/opt/rolink/lib/modules \
       -DLOCAL_STATE_DIR=/opt/rolink/var \
       -DCMAKE_BUILD_TYPE=Release \
       -DCMAKE_C_FLAGS="-march=armv7 -mtune=generic-armv7-a" \
       -DCMAKE_CXX_FLAGS="-march=armv7 -mtune=generic-armv7-a" ..
groupadd svxlink
useradd -r -g daemon svxlink
make; make install 

Diferind de instalarea standard, librăriile necesare rulării programului nu se mai găsesc unde trebuie așa că va trebui să îi spunem sistemului unde se află acestea:

touch /etc/ld.so.conf.d/svxlink.libs.conf
echo "/opt/rolink/lib" > /etc/ld.so.conf.d/svxlink.libs.conf
ldconfig -v

ultima comandă ne arată că sistemul le găseste unde trebuie:

/opt/rolink/lib:
libasynccpp.so.1.6 -> libasynccpp.so.1.6.0.99.4
libasyncaudio.so.1.6 -> libasyncaudio.so.1.6.0.99.4
libasynccore.so.1.6 -> libasynccore.so.1.6.0.99.4
libecholib.so.1.3 -> libecholib.so.1.3.3

Dacă nu au apărut erori pe parcurs (și nu trebuie… dacă s-au respectat instrucțiunile) svxlink este instalat în acest moment.

Acum ne ocupăm de placa de sunet.  Ultimul kernel vine cu placa de sunet cu microfinul dezactivat, așa că trebuie să îl activăm:

alsamixer store

se apasă o data TAB ca sa ne pozitionam pe Capture, selectam MIC1 (cu săgețile stânga-dreapta) și, când e selectat, se apasă tasta SPACE.

Trebuie să arate ca în poză:

Urmează să edităm fișierele de configurare. Pentru asta trebuie să ne aflăm în directorul /opt/rolink/conf și să edităm fișierul svxlink.conf.

Acesta ar trebui să arate ca aici

[GLOBAL]
MODULE_PATH=/opt/rolink/lib/modules
LOGICS=SimplexLogic,ReflectorLogic
CFG_DIR=/opt/rolink/conf/svxlink.d
TIMESTAMP_FORMAT="%Y-%m-%d %H:%M:%S"
CARD_SAMPLE_RATE=48000
LINKS=ReflectorUpLink

[ReflectorUpLink]
CONNECT_LOGICS=SimplexLogic:99:R,ReflectorLogic
DEFAULT_ACTIVE=1
TIMEOUT=10
[SimplexLogic]
TYPE=Simplex
RX=LocalVoter
TX=Tx1
CALLSIGN=yo0xxx
SHORT_IDENT_INTERVAL=10
LONG_IDENT_INTERVAL=30
EVENT_HANDLER=/opt/rolink/share/events.tcl
DEFAULT_LANG=en_US
RGR_SOUND_DELAY=0
RGR_SOUND_ALWAYS=1
FX_GAIN_NORMAL=-5
FX_GAIN_LOW=-12

[ReflectorLogic]
TYPE=Reflector
HOST=bastus.go.ro
#HOST=svx.439100.ro
PORT=5300
CALLSIGN="nod_nou"
AUTH_KEY="qawsed"
JITTER_BUFFER_DELAY=250
DEFAULT_TG=226
MONITOR_TGS=226
TG_SELECT_TIMEOUT=99999
ANNOUNCE_REMOTE_MIN_INTERVAL=10
EVENT_HANDLER=/opt/rolink/share/events.tcl

[LocalVoter]
TYPE=Voter
RECEIVERS=Rx1
VOTING_DELAY=100
BUFFER_LENGTH=100
COMMAND_PTY=/dev/shm/voter_ctrl

[Rx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
SQL_DET=GPIO
SQL_START_DELAY=0
SQL_DELAY=250
SQL_HANGTIME=0
SQL_TIMEOUT=180
GPIO_SQL_PIN=gpio10
SIGLEV_SLOPE=1
SIGLEV_OFFSET=0
SIGLEV_OPEN_THRESH=30
SIGLEV_CLOSE_THRESH=10
DEEMPHASIS=0
PEAK_METER=0
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40
DTMF_SERIAL=/dev/ttyS0
##compression - recomandat activ
RxComp=1
RxCompThreshold=-30
RxCompRatio=0.5
RxCompAttack=50
RxCompDecay=5000

[Tx1]
TYPE=Local
TX_ID=T
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
PTT_TYPE=GPIO
PTT_PIN=gpio7
TIMEOUT=300
TX_DELAY=100
PREEMPHASIS=0
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
##compression - recomandat activ pe portabile
TxLimit=1
TxComp=1
TxCompThreshold=-90
TxCompRatio=0.5
TxCompAttack=10
TxCompDecay=5000

Svxlink trebuie pornit automat la pornirea sistemului, așa ca în directorul rolink creăm următorul fișier, numit rolink-cron.d, în care vom pune comenzile de mai jos:

*       *       * * *   root    /opt/rolink/scripts/checkalive.sh
*       *       * * *   root    /opt/rolink/scripts/network.sh
*       *       * * *   root    /opt/rolink/scripts/reflector-test.sh 
17      3       * * *   root    /opt/rolink/scripts/rolink-re-start.sh

Îi vom face link către directorul demonului cron:

ln -v -s /opt/rolink/rolink-cron.d /etc/cron.d/rolink

Scripturile la care se face referire mai sus, va trebui să le creăm, ca tot ansamblul să funcționeze. Așadar:

md scripts
cd scripts
nano checkalive.sh

și aici punem:

#!/bin/bash

if [ "$(pgrep -c svxlink)" != "1" ]; then
   echo "re-start svxlink"
   /opt/rolink/scripts/rolink-start.sh
fi
exit 0

Salvăm, ieșim și creăm urmatorul fișier: rolink-start.sh

#!/bin/sh
. /opt/rolink/scripts/gpio-up.sh
export LD_LIBRARY_PATH="/opt/rolink/lib"
[ "$(pidof svxlink)" != "" ] && killall -v svxlink
/opt/rolink/bin/svxlink --daemon --config=/opt/rolink/conf/svxlink.conf --logfile=/tmp/svxlink.log --runasuser=root --pidfile=/var/run/svxlink.pid
echo heartbeat > /sys/class/leds/orangepi:red:status/trigger
#

gpio-up.sh:

#! /bin/sh
useradd -M -N -G daemon,audio svxlink
GPIO_USER=root
GPIO_GROUP=daemon
GPIO_MODE=664
GPIO_PATH=/sys/class/gpio
##function gpio IN pin
gpioin() {
 N=$1
 [ ! -d ${GPIO_PATH}/gpio${N} ] && [ -n "$N" ] && echo ${N} > ${GPIO_PATH}/export
  echo "in" > ${GPIO_PATH}/gpio${N}/direction
  [ -n "$GPIO_USER" ]  && chown "$GPIO_USER"  ${GPIO_PATH}/gpio${N}/value
  [ -n "$GPIO_GROUP" ] && chgrp "$GPIO_GROUP" ${GPIO_PATH}/gpio${N}/value
  [ -n "$GPIO_MODE" ]  && chmod "$GPIO_MODE"  ${GPIO_PATH}/gpio${N}/value
}
##function gpio OUT pin state
gpioout() {
  N=$1
  V=$2
  [ ! -d ${GPIO_PATH}/gpio${N} ] && [ -n "$N" ] && echo ${N} > ${GPIO_PATH}/export
  echo "out" > ${GPIO_PATH}/gpio${N}/direction
  [ -n "$V" ] && echo ${V} > ${GPIO_PATH}/gpio${N}/value
  [ -n "$GPIO_USER" ]  && chown "$GPIO_USER"  ${GPIO_PATH}/gpio${N}/value
  [ -n "$GPIO_GROUP" ] && chgrp "$GPIO_GROUP" ${GPIO_PATH}/gpio${N}/value
   [ -n "$GPIO_MODE" ]  && chmod "$GPIO_MODE"  ${GPIO_PATH}/gpio${N}/value
}
echo '### SQL - set PA20|gpio20/gpio26 in'
gpioin 10
echo '### PTT - set PA10|gpio10/gpio19 out high'
gpioout 7 0
gpioout 6 0
ls -1d ${GPIO_PATH}/gpio*
cat /sys/kernel/debug/gpio
#

network.sh:

#!/bin/bash
# RoLink
PAT='-p 526F4C696E6B'
echo 0 > /sys/class/leds/orangepi:red:status/brightness
ping reflector/vpn
ping -q -A -c 3 -W 10 $PAT reflector.rolink-net.ro > /dev/null 2>&1
if [ $? -ne "0" ]; then
  echo heartbeat > /sys/class/leds/orangepi:red:status/trigger
  # ping internet - google-public-dns-b.google.com [8.8.4.4]
  ping -q -A -c 3 -W 10 $PAT google-public-dns-b.google.com > /dev/null 2>&1
  if [ $? -ne "0" ]; then
    systemctl daemon-reload
    sleep 3
    systemctl restart networking
  fi
fi
echo 255 > /sys/class/leds/orangepi:red:status/brightness
exit 0
#

Orangepi zero are două led-uri, pe cel verde îl lăsăm în pace, când este aprins ne indică faptul că hardware sistemul este ok, cel roșu e folosit pentru statusul sistemului svxlink. Astfel, când programul este funcțional, led-ul va lumina intermitent, iar când este conectat în Rețeaua RoLink led-ul va fi aprins permanent.

reflector-test.sh

#!/bin/bash
LOG=/tmp/svxlink.log
INF=/tmp/reflector.test
REFOF=$( tail -50 $LOG | grep -ia 'ReflectorLogic: Disconnected from' | tail -1 )
REFON=$( tail -50 $LOG | grep -ia 'ReflectorLogic: Using audio codec' | tail -1 )
REFDEC=$( echo -e "${REFOF}\n${REFON}" | sort -n | tail -1 | grep -ia 'ReflectorLogic: Disconnected from' )
if [ "$REFDEC" != "" ]; then
  echo 'FAIL' > ${INF}
  exit 1
else
  rm -f ${INF}
fi
exit 0

Va trebui să dăm drept de execuție pe fișierele create:

chmod 755 *.sh

și să facem un simlink către rolink-restart.sh

ln -s rolink-start.sh rolink-re-start.sh

În momentul de față sistemul este pregătit de conectare. Cu configurația actuală, se va conecta la un reflector de test configurat în mod papagal, care vă va ajuta la testele de modulație. Pentru conectarea la rețea, în svxlink.conf vor trebui modificate aceste linii (trebuie să arate ca mai jos):

#HOST=bastus.go.ro
HOST=svx.439100.ro

iar aici:

CALLSIGN="nod_nou"
AUTH_KEY="qawsed" 

va trebui introdus user-ul și parola pe care ar trebui sa le primiți în prealabil de la administratorii Retelei RoLink.

Mai jos urmează configurarea modulului SA818/DRA818.

Modulul comunică pe interfața serială cu sistemul. Interfața este folosită doar pentru programarea acestuia, nu are alt rol în comunicație. De obicei armbian vine cu interfețele de comunicație serială neconfigurate, așa că va trebui să verificăm în /boot/armbianEnv.txt existența următoarei linii, care va trebui să arate ca mai jos (dacă nu, se editează):

overlays=usbhost1 usbhost2 analog-codec uart1 uart2

Va trebui să adaugăm un script care ne va ajuta în programarea modulului. Deci:

nano /opt/rolink/scripts/orangeserial.py
import time
import serial
ser = serial.Serial(
     port='/dev/ttyS1',
     baudrate=9600
 )
ser.isOpen()
print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
input=1
while 1 :
     # get keyboard input
     input = raw_input(">> ")
         # Python 3 users
         # input = input(">> ")
     if input == 'exit':
         ser.close()
         exit()
     else:
         # send the character to the device
         # (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device)
         ser.write(input + '\r\n')
         out = ''
         # let's wait one second before reading output (let's give device time to answer)
         time.sleep(1)
         while ser.inWaiting() > 0:
             out += ser.read(1)
     if out != '':         print ">>" + out

Scriptul de programare este făcut în Python. Vor trebui date urmatoarele comenzi, că sa meargă:

apt install python-pip
pip install pyserial

Pornim scriptul cu:

python orangeserial.py

după care dăm următoarele comenzi:

AT+DMOCONNECT

Dacă totul este în regulă, modulul va raspunde cu:

+DMOCONNECT:0

Deci, programăm frecvența:

AT+DMOSETGROUP=1,432.5500,432.5500,0013,4,0013

Ultimele 3 grupe reprezintă tonul ctcss la emisie și recepție (13->103.5) și nivelul de squelch (4).

și nivelul audio la ieșire din modul:

AT+DMOSETVOLUME=2

Ieșim scriind: exit

Configurare network pentru autoconectare la ethernet/wifi/usb/modem

By default armbian vine cu network-manager instalat. Îl dezinstalăm:

apt remove --purge network-manager

Mergem în /etc/network/interfaces și punem aceasta:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
wireless-mode Managed
wireless-power off

Salvăm, apoi:

nano /etc/wpa_supplicant/wpa_supplicant.conf

în care punem de exemplu:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
#ap_scan=0
update_config=1
network={
        ssid="AndroidAP"
        psk="123456789"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        auth_alg=OPEN
}
network={
        ssid="acme"
        psk="123456789"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        auth_alg=OPEN
}

Aici avem configurate două rețele, prima e un hotspot din telefon și a doua este rețeaua de acasă, de exemplu.

Administrare online

Daca ați observat în svxlink.conf o chestie numită “[LocalVoter]” , aici este cazul să explicăm la ce se folosește. Din documentație, aflăm că svxlink știe să lucreze cu receptoare multiple, nu este cazul aici, însă pentru gestionarea acestora, s-au introdus niște comenzi: Rx(x)Enable/Disable. În configurația cu un singur receptor, acestea nu funcționează, de aceea am recurs la acest artificiu, și anume receptorul introdus prin voter. Asta face ca într-o situație reală și anume paraziși pe recepție, cu o comandă, să putem opri recepția nodului fără a interveni fizic asupra acestuia sau a streamului din rețea, și să-l repornim când este cazul sau după un anumit interval de timp.

Deci: cd /opt/rolink/scripts

și mai adaugăm un fișier de stare:

touch t_rx

și trei scripturi:

rx_on.sh

#!/bin/bash
echo "ENABLE Rx1" > /dev/shm/voter_ctrl
echo -n "1" > /opt/rolink/scripts/t_rx

rx_off.sh

#!/bin/bash
echo "DISABLE Rx1" > /dev/shm/voter_ctrl
echo -n "0" > /opt/rolink/scripts/t_rx

rx.sh

#!/bin/bash
exec=$(</opt/rolink/scripts/t_rx)
if [ "$exec" == "1" ]; then
echo "ENABLE Rx1" > /dev/shm/voter_ctrl
else
echo "DISABLE Rx1" > /dev/shm/voter_ctrl
fi
exit 0

Acesta din urmă se ocupă de verificarea ultimei stări a receptorului, în caz de restart de exemplu. Pentru asta va trebui să-l adaugăm în fișierul rolink-cron.d din directorul rolink.

*       *       * * *   root    /opt/rolink/scripts/rx.sh

Atenție să fie executabile scripturile, deci:

chmod 755 rx*.sh

Următorul lucru este să instalăm soluția client/server oferită de Răzvan – YO6NAM de aici:

https://github.com/yo6nam/phpKontrol

Dacă nu suntem dispuși să instalăm server, instalăm doar clientul și apelăm la bunăvoința lui Răzvan pentru o pagină de administrare de pe binecunoscutul server XPANDER

Configul ‘launcher.conf’ pentru scripturile de mai sus arată asa:

logfile         = '/var/log/phpKontrol'
mqtt_broker     = 'ex_host.ro'          # default: 'localhost'
mqtt_port       = 1883                  # default: 1883
mqtt_clientid   = 'client_789'            # must be unique!
mqtt_username   = 'gigi'
mqtt_password   = 'bestialu'
mqtt_tls        = None                  # default: No TLS

topiclist = {
        "devices/cmd"   :   {
                'client_789_on'   :   [ 'bash', '/opt/rolink/scripts/rx_on.sh' ],
                'client_789_off'  :   [ 'bash', '/opt/rolink/scripts/rx_off.sh' ],
        },
}

Parametrii mqtt îi completăm cu ce primim de la Răzvan.

Interfața de administrare de pe mobil arată asa:

Ce este reflectorul și un exemplu de configurare

Reflectorul, parte a pachetului svxlink de ceva vreme, este un mic program care asigură interconectarea nodurilor. Configurarea sa este simplă și intuitivă și nu are nevoie de multe resurse; poate rula pe același sistem ca și clientul svxlink.

Exemplu de svxreflector.conf:

###################################################################
#
# Configuration file for the SvxReflector SvxLink conference node
#
###################################################################

[GLOBAL]
#CFG_DIR=svxreflector.d
TIMESTAMP_FORMAT="%c"
LISTEN_PORT=5300
#SQL_TIMEOUT=600
#SQL_TIMEOUT_BLOCKTIME=60
#CODECS=OPUS
TG_FOR_V1_CLIENTS=9
#RANDOM_QSY_RANGE=12399:100
HTTP_SRV_PORT=8090

[USERS]
YO7GQZ-1=MyNodes
YO7GQZ-2=MyNodes
PITESTI=MyNodes
CLIENT_NOU=Teste
#SM3XYZ=SM3XYZ

[PASSWORDS]
MyNodes="qweasdf"
Teste="123456"

Acesta este un exemplu de reflector ce funcționează la Pitești. Nodurile sunt cele cu denumirea din secțiunea [ReflectorLogic] a clientului.

Trebuie avut în vedere ca portul 5300 să fie accesibil extern pentru clienții din exterior. Clientul local se poate conecta la localhost.

Scripturile de pornire și verificare:

reflector-start.sh

#!/bin/sh


[ "$(pidof svxreflector)" != "" ] && killall -v svxreflector

/opt/rolink/bin/svxreflector --daemon --config=/opt/rolink/conf/svxreflector.conf --logfile=/tmp/svxreflector.log --runasuser=root --pidfile=/var/run/svxreflector.pid

#

Și mai adaugăm în scriptul checkalive.sh și verificarea de reflector:

if [ "$(pgrep -c svxreflector)" != "1" ]; then
  echo "re-start reflector"
  /opt/rolink/scripts/reflector-start.sh
fi

Atenție! Inaintea liniei “exit 0” se adaugă cele de mai sus.

Va urma:

-legarea mai multor noduri la un reflector și un exemplu de mini-rețea

-configurare modem 3G/4G

-qso recorder

-configurare voce, alta decât cea standard

-anunțuri personalizate

-monitor de propagare

-imagine gata configurată

’73

Cătălin – YO7GQZ