По мірі відладки та додавання сервісів, інструкція може змінюватися та розширюватися !
Ні для кого вже з моїх читачів не секрет, що Малина - це міні супер комп'ютер. Саме для мене. І настав час викинути Windows з нетбуком, на якому крутиться Ехолінк вузол, замінивши його на більш гнучку та менш споживану (споживання електрики - 36 Ват проти 5 Ват) систему.
Використовувати я буду пакет SvxLink. Це дуже гарна система голосових сервісів для радіоаматорів.
Висловлюю щиру подяку Тобіасу Бломбергу SM0SVX (автору пакету) та Володимиру UR3QJW (адміністратору конференції UKRAINE) за допомогу.
Сервіси будуть підняті в наступній послідовності: Голосова допомога, Ехо-репітер (папуга), Ехолінк вузол, Метеоінформер, Голосова пошта.
Окрім самої Малини порібна буде ще зовнішня USB звукова карта, сумісна з Linux та схема керування РТТ.
Виглядять звукові карти подібним чином.
В середині має бути плата приблизно такого вигляду.
В мене є інтерфейс для цифрових видів зв'язку. Там присутні USB-COM перехідник на мікросхемі від FTDI, до якої під'єднано ключовий транзистор, що комутує РТТ радіостанції та вхід/вихід звуку з гальванічною розв'язкою на трансформаторах.
Ну що ж. З апаратною частиною все готово. Тепер програмна частина.
З офіційного сайту потрібно скачати Raspberry Pi OS Lite. Образ невеликого розміру. Приблизно 500 МБайт. Інші версії будуть зайвими. В них багато програмного забезпечення, яке не буде використовуватися на вузлі, а дискового простору, як грошей, скільки би не було - завжди мало. Єдина незручність це відсутність графічного відображення робочого столу. А нам його і не потрібно.
Записуєте цей образ на флешку з допомогою Etcher, Win32DiskImager, або Raspberry Pi Imager. Кому що більше підійде. Підключаємо Малину до комп'ютерної мережі з допомогою патч-корду, якщо немає можливості під'єднатися по дроту, після першого завантаження необхідно буде прописати назву WiFi точки та пароль до неї.
Вставляємо флешку і запускаємо Малину. Починаю я завжди з безпосереднього підключення клавіатури, миші та монітора до Малини. Мені так зручніше і можна на перших порах поглядіти процес завантаження системи. Далі, коли бачу що Малина веде себе адекватно я активую ssh і решта налашувань проводжу з іншого комп'ютера через мережу.
Гаразд. Система запустилася і чекає на вхід. Введіть стандартний логін pi та пароль raspberry .
Якщо підключилися до мережі по дротовому з'єднанню, то переходимо до безпосереднього оновлення операційної системи. Якщо відсутня можливість під'єднання дротом, то потрібно запустити утиліту конфігурування.
sudo raspi-config
Вибираємо пункт Network Options -> Wireless LAN
На запит Please enter SSID введіть назву WiFi точки. На запит Please enter passphrase введіть пароль до точки доступа. Далі вийдіть з утиліти конфігурування системи.
Дізнайтеся чи Малина отримала ІР адресу. Для цього введіть команду
sudo ifconfig
і в залежності від типу підключення адреса буде відтворена або біля інтерфейсу eth0 (у випадку дротового з'єднання) або біля wlan0 (при підключенні по WiFi ). До інтернету під'єднано.
Оновимо систему до останніх версій файлів.
sudo apt update
sudo apt upgrade
Наберіться терпіння, доки система оновиться.
Ні в якому разі не можна змінювати мову по замовчуванню та створювати каталоги на кирилиці.
Для полегшення майбутніх страждань з системою, встановимо Midnight Commander. Надалі він нам згодиться.
sudo apt install mc
Щоб не забути, прокиньте одразу порти 5198 (udp), 5199 (udp), 5200 (tcp) на своєму маршрутизаторі і подбайте про можливіть їх проходження через вашого провайдера, інакше все буде на смарку. Вони необхідні для роботи сервера.
В процесі налаштування системи виявилося, що обов'язково Малина має мати статичну ІР адресу. Робиться це просто. Для цього спершу визначимося з трьома параметрами: яка ІР адреса має бути в Малини, маска мережі, ІР адреса шлюзу. Наприклад, в мене Малина живе на адресі 192.168.1.103, шлюз 192.168.1.1, маска мережі 255.255.255.0 Відредагуємо файл dhcpcd.conf
sudo nano /etc/dhcpcd.conf
Шукаємо коментар
# Example static IP configuration
за ним буде
#interface eth0
Розкоментуємо її і у випадку дротового з'єднання залишемо так як вона є.
interface eth0
Якщо буде з'єднання по WiFi , то ця строчка перетвориться на
interface wlan0
Решта строк будуть такі
static ip_address=192.168.1.103/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
Зробимо так, щоб можна до сервера було достукатися через SSH. Запустимо
sudo raspi-config
Вибираємо пункт Interface options -> SSH і активуємо ssh.
З цього місця за бажанням можна відключити від Малини клавіатуру, мишу та монітор і решта всього робити через ssh.
Якщо будете під'єднуватися до Малини по ssh у Windows то використовуйте Putty. Якщо з Маку чи любого дистрибутиву Linux, введіть у терміналі
ssh -l pi ip_адреса_вашої_Малини
Тепер сервер будемо збирати вручну з вихідних файлів. Так краще на даний момент. В минулих версіях готових пакетів були проблеми з відтворенням звуку. Окрім того сервер буде оптимізований під залізо, яке в даний момент використовується. Тим більше особо нічого складного там немає. Головне, вірно набрати команди та у вірній послідовності. Встановимо необхідні для цього пакети.
sudo apt install g++ cmake make libsigc++-2.0-dev libgsm1-dev libpopt-dev libgcrypt20-dev
sudo apt install libspeex-dev libasound2-dev libopus-dev librtlsdr-dev doxygen
sudo apt install tcl-dev groff alsa-utils rtl-sdr git rtl-sdr curl libjsoncpp-dev
sudo apt install vorbis-tools libcurl4-openssl-dev libcurl4-openssl-dev
Далі створюємо користувача svxlink та додаємо його в необхідні групи.
sudo useradd -rG audio,plugdev,gpio,dialout svxlink
Тепер настав час скачати з Github вихідні файли сервера.
git clone http://github.com/sm0svx/svxlink.git
mkdir svxlink/src/build
cd svxlink/src/build
Скомпілюємо їх.
cmake -DUSE_QT=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var -DWITH_SYSTEMD=ON ..
make -j4
make doc
sudo make install
sudo ldconfig
Скачуємо звукові файли на англійській мові та розпакуємо в потрібні каталоги.
cd /usr/share/svxlink/sounds/
sudo curl -LO https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/18.03.1/svxlink-sounds-en_US-heather-16k-18.03.1.tar.bz2
sudo tar xvjf svxlink-sounds-en_US-heather-16k-18.03.1.tar.bz2
sudo ln -s en_US-heather-16k en_US
Перевантажуємо комп.
sudo reboot
Підключіть зовнішню звукову карту в та цифровий інтерфейс в USB порти.
Настав час налаштовувати конфігураційні файли. Перед налашуванням потрібно дізнатися про CОМ-порт, який буде використано. Введіть команду
ls /dev/tty*
Скорш за все це буде ttyUSB0 як в мене. Тепер потрібно відкрити доступ серверу до цього порту, щоб він міг ним керувати.
sudo chmod a+rw /dev/ttyUSB0
Чудово.
Дуже прошу вносити мінімальну кількісь змін за раз і робити це дуже уважно та вдумливо. Вас ніхто і нікуди не жене в спину. Інакше можете отримати непрацюючий сервер.
Налашування почнемо з самих простих модулів, щоб одразу відчути що ця шкарабайка запрацювала. Основний конфігураційний файл - це svxlink.conf
Ось повний шлях разом з іменем файлу /etc/svxlink/svxlink.conf
В режимі адміністратора частково його відредагуємо командою
sudo nano /etc/svxlink/svxlink.conf
Файл уявляє собою назви параметрів та їх значення, об'єднані з допомогою знака рівності. Коментарі, або закоментовані параметри мають перед собою знак решітки #. Назви розділів позначаються квадратовими дужками [ ], наприклад [SimplexLogic]
Деякі параметри неодноразово повторюються у файлі. Якщо назви параметрів будуть повторюватися, то змініть значення в усіх них згідно нижченаведених. Буду вказувати в яких розділах які мають бути активні параметри. При їх відсутності - додайте їх в конфіг.
[SimplexLogic]
#Встановимо дискретизацію звукової картки
CARD_SAMPLE_RATE=16000
#Вкажемо які модулі запускати на даний момент та свій кличний. Показую на своєму прикладі
MODULES=ModuleHelp
CALLSIGN=UT2YR-L
....................................................
[RX1]
#Вкажемо послідовний порт, керування через DTMF та який порт буде комутувати прийом/передачу
SERIAL_PORT=/dev/ttyUSB0
DTMF_SERIAL=/dev/ttyUSB0
PTT_PORT=/dev/ttyUSB0
#З'єднаємо в єдине ціле комп'ютер з радіостанцією
SQL_DET=VOX
SQL_START_DELAY=0
SQL_DELAY=50
SQL_HANGTIME=2000
SQL_TIMEOUT=600
VOX FILTER DEPTH=20
VOX_TRESH=1000
.......................................................
[TX1]
PTT_TYPE=SerialPin
PTT_PORT=/dev/ttyUSB0
PTT_PIN=RTS
Ще один момент. В цьому файлі необхідно вказати номер звукової карти, яку будете використовувати. Враховуючи, що до Малини під'єднана зовнішня USB звукова карта та присутня вбудована в комп'ютер, на даний момент ми маємо їх дві. Визначимо, який номер наданий зовнішній карті системою, адже внутрішню ми використати не можемо через відсутність в ній аудіовходу. Наберемо
aplay -l
В мене зовнішня відображається під номером 1.
тоді параметр буде виглядати так.
#Вкажіть номер звукової карти, присутній в системі.
Щоб зберегти зміни, тиснемо Ctrl + X потім Y Файл конфігурації змінено.
Запустимо svxlink від імені користувача svxlink.
sudo -u svxlink svxlink
Нарешті настав час для першого запуску модуля голосової допомоги. Наберіть на вашій радіостанції DTMF код 0# Система жіночим голосом на чистій англійській мові розповість про те як нею користуватися. Мої вітання ! Перший крок до мрії подолано !
Зупинимо svxlink з допомогою Ctrl+C
А тепер зробимо так, щоб система розмовляла українською. Для цього потрібно скачати ось цей архів. Перезапишемо звукові файли поверху українськими аналогами.
Розпакуйте та перезапишіть поверх старих файлів ці файли. Перевантажте Малину.
sudo reboot
Знову запустіть svxlink.
Тепер час випробувати Ехо-репітер, або папугу. Тиснемо на радіостанції 1# і чуємо у відповідь: "Активація папуги". Натисніть PTT у своєї болтушки і щось скажіть. Відпустіть PTT. Система відтворить все, що ви сказали. Папугу налаштовано.
Тепер час налаштувати Ехолінк.
Його налаштування зводиться до налаштування конфігураційного файлу ModuleEchoLink.conf Знаходиться він /etc/svxlink/svxlink.d/ разом з іменем файлу це буде /etc/svxlink/svxlink.d/ModuleEchoLink.conf
Увага ! Перед його редагуванням, відправте сканкопію свого дозволу на валідацію . Не забудьте в запиті вказати кличний у вигляді потрібний_кличний-L наприклад UT2YR-L. -L тому що лінк (безпосередньо приєднаний до симплексної радіостанції), якби він під'єднувався до ретранслятора, потрібно було б вказати -R, при особистому використанні вкажіть свій кличний.
Вважаємо, що у вас вже кличний валідовано і його можна внести у файл. Редагуємо конфіг
sudo nano /etc/svxlink/svxlink.d/ModuleEchoLink.conf
#Вписуємо свій кличний
CALLSIGN=UT2YR-L
#Вписуємо свій пароль
PASSWORD=********
#Вписуємо свої дані, що будуть відображатися
SYSOPNAME=Sokyriany, 145450
#Вписуємо місце розташування вузлу та його робочу частоту
LOCATION=[Svx] 1451450, Sokyriany
Щоб лінк у нас не відвалювався при неактивності протягом 5 хвилин, закоментовуємо
LINK_IDLE_TIMEOUT=300
Рядок прийме такий вигляд
#LINK_IDLE_TIMEOUT=300
Налаштуємо так, щоб вузол автоматично під'єднувався до всеукраїнської конференції UKRAINE (її ідентифікатор 370296).
AUTOCON_ECHOLINK=370296
AUTOCON_TIME=1200
При таких налаштуваннях лінк буде постійно підключеним до цієї конференції, але ви в любий момент зможете її відключити, приєднавши ту, в якій захочете попрацювати, лише після того, як попрацюєте там, перепідключіть її назад.
Невеликий відступ. Більшість вузлів мають шестизначний ідентифікатор. Якщо хочете підключитися до іншого вузла, ви повинні знати його ідентифікатор. Скажімо, у вузла UT2YR-L ідентифікатор 232979, а всесвітня конференція WORLD має ідентифікатор 479886.
Наведу приклад роботи. Захотілося вам попрацювати у конференції WORLD. Для цього потрібно від'єднати приєднану до вузла конференцію, нажавши # Вузол відповість що конференцію від'єднано. Далі потрібно набрати ідентифікатор 479886 а за ним # Система сповість, що вузол приєднано до конференції WORLD. Якщо ви вже перестали там працювати, нажміть для від'єднання # і приєднайтеся до української конференції, набравши 370296#
Самі розумієте, що багато цифр важко запам'ятати, тому придумали таку річ як макроси. Макросу призначається значення ідентифікатора вузла або конференції. Вам достатньо лише набрати номер макросу і ви вже підключені до вибраного вузла або конференції.
Ці макроси описуються в головному конфігураційному файлі svxlink.conf у розділі [Macros]. Приклад розділу.
[Macros]
номер_макросу=Назва_модуля:числовий_ідентифікатор#
#Підключення до конференції UKRAINE
1=EchoLink:370296#
#Підключення до вузла UT2YR-L
2=EchoLink:232979#
#Підключення до ретранслятора R1 у Полтаві
3=EchoLink:293702#
# Підключення до конференції WORLD
4=EchoLink:479886#
і так далі. Макроси формуєте на свій смак та розсуд.
Тепер як цим користуватися. Підключимося до WORLD. Це макрос позначений цифрою 4. Натискаємо на клавіатурі радіостанції D4# і, о диво, вузол автоматично підключиться до конференції WORLD.
Тепер додамо шарму та гламуру всій конструкції. В принципі це необов'язково, але може комусь буде потрібно. Метеоінформер, або дівка, буде розповідати про погоду в населенному пункті, де встановлений лінк. Дані беруться з сайту Метеонова . Працює це наступним чином. Скрипт бере дані з сайту і ці дані у текстовому вигляді відправляє на голосовий синтезатор, який формує звуковий файл. Потім цей файл буде відтворюватися системою в етер.
Як завжди, стало доброю традицією додавати необхідні для цього пакети.
apt install sox libsox-fmt-mp3 curl gawk python-smbus python-dev i2c-tools
В архіві є скрипт та файли, які потрібні для цієї процедури.
Створимо в каталозі /home/pi каталог weatherinfo
cd /home/pi/
mkdir weatherinfo
розпакуємо в цей каталог вміст архіву.
відредагуємо скрипт weatherinfo.sh відповідно до свого населеного пункту.
nano /weatherifo.sh
Після запуску цього скрипта в каталозі /home/pi/weatherinfo утвориться звуковий файл weather.wav
Внесемо деякі зміни у конфігураційний файл svxlink.conf
sudo nano /etc/svxlink/svxlink.conf
[SimplexLogic]
#Коротка ідентифікація вузла. Кожних 15 хвилин буде промовлятися кличний вузла
SHORT_IDENT_INTERVAL=15
#Активація голосу
SHORT_VOICE_ID_ENABLE=1
#Довга ідентифікація вузла. Кожних 30 хвилин буде промовлятися кличний вузла
#місцевий час та прогноз погоди в населеному пункті
LONG_IDENT_INTERVAL=30
LONG_ANNOUNCE_ENABLE=1
LONG_ANNOUNCE_FILE=/home/pi/weatherinfo/weather.wav
TIME_FORMAT=24
Для автоматичного формування звукового файлу додамо у cron запуск скрипта weatherinfo.sh чотири раза на добу о 5:50, 11:50, 17:50 та 23:50 За бажанням, ви можете собі налаштувати інші години запуску скрипта.
crontab -e
50 5 * * * /home/pi/weatherinfo/weatherinfo.sh
50 11 * * * /home/pi/weatherinfo/weatherinfo.sh
50 17 * * * /home/pi/weatherinfo/weatherinfo.sh
50 23 * * * /home/pi/weatherinfo/weatherinfo.sh
Ctrl + X далі Y
Тут голосову пошту допишу.
Ну що ж. Моя розповідь близиться до кінця. Мабуть вже всі втомилися від неї.
Наостанок буде команда, яка зробить повну автономність запуску лінку після подачі живлення на Малину.
sudo systemctl enable --now svxlink
Перезавантажимо комп
sudo reboot
При виникненні потреби підправити конфіги, не забудьте, що лінк працює в автоматі.
Якщо потрібно буде його зупинити, набираємо
sudo systemctl stop svxlink
Якщо потрібно буде його перезавантажити, набираємо
sudo systemctl restart svxlink
Якщо потрібно буде його стартанути, набираємо
sudo system start svxlink
А, ще для самих допитливих десерт. Якщо вам забагнеться глянути на поведінку лінка, введіть в терміналі
tail -f /var/log/svxlink
Цим ви побачите останні події, що відбулися на лінку.
До зустрічі !
73 ! de UT2YR
Комментариев нет:
Отправить комментарий