-
15.04.2020, 16:55 #1
- Регистрация
- 12.12.2006
- Адрес
- Ростов-на-Дону
- Возраст
- 57
- Сообщений
- 354
- Поблагодарили
- 44
- Поблагодарил
- 46
Программа - имитатор PMR радио
Наконец то дорос до микроконтроллеров, среди задач которые хочется на них реализовать, есть в том числе задача передавать и принимать звук через интернет. Для разных целей, таких например как сделать дешевый IP телефон на Arduino, что бы не зависеть от VoIP монстров с их перегруженными серверами, или что бы принимать сигнал удаленного радиоприемника, но не ставить для этого "тяжелое" железо. Задач может быть множество, но решать их что было бы максимум на микрокомпьютере, типа RspberryPI или OrangePI, а лучше на микроконтроллере. Есть конечно готовые какие то решения, но когда делаешь сам, то можно отбросить лишнее и не тащить за собой "паровоз" излишнего исходного кода и лишних возможностей. Процесс этот творческий и требует постоянного тестирования, вот соответственно для тех кто проводит такие же эксперименты предлагаю уже готовую программу под Windows которую сделал специально для осуществления звуковой связи с экспериментальными поделками. Ее конечно можно использовать и для связи между собой. Она сделана в виде PMR радиостанции и имеет всего 8 каналов для общения, но так как в ней можно выставить почтовый индекс, то 8 каналов можно умножить на миллион разных групп, на одной из которых можно спокойно общаться или тестировать.
Саму программу можно скачать по ссылке PMR.ZIP. Выглядит она примерно вот так
Для тех кто хочет разобраться как это работает прикрепляю пример example2.zip для Linux, тестировал на OrangePI. Используется библиотека ALSA. Исходники на Си, кодировка UTF8. Постарался максимально написать комментарии.
По поводу самой программы под Windows..., с кнопками все понятно, кликаем по ним левой клавишей мыши и получаем тот же результат как на настоящей радиостанции (канал Г служит для проверки звука на себя, никого другого в канале нет). Кликая по динамику выставляем режим приема/передачи. Правым кликом по кнопке выключения вызываем меню и настраиваем программу под свои возможности и хотелки. И еще, если нужно запустить несколько экземпляров программы, то нужно каждый экземпляр запускать из своего отдельного каталога.
Ну и самое главное, с удовольствие пообщаюсь на этой ветке со всеми теми, кого интересует данная тема.
P.S.
Свои эксперименты мы делаем вместе с Владимиром, RZ6AT73. Василий М.Колотуша (RN6LIQ)
-
15.04.2020, 18:01 #2
Скачал, запустил, никого не услышал, не совсем понял что и как настроить. Есть к софту хелп или еще в стадии разработки? Пожелания будт позже после тестирования.
Удачи с проектом!С уважением, Андрей. (Andy - 4L4KA) 73!
-
15.04.2020, 19:33 #3
- Регистрация
- 12.12.2006
- Адрес
- Ростов-на-Дону
- Возраст
- 57
- Сообщений
- 354
- Поблагодарили
- 44
- Поблагодарил
- 46
Более подробное описание можно почитать по ссылке https://ok.ru/profile/100058109188/s...51288934564612
Попробую скопировать текст от туда.
Программа маленькая, портабельна, не требует установки, имеет очень простое управление. Виртуально имитирует PMR радиостанцию. Всего 5 кнопок управления. Как известно PMR радиостанция имеет 8 каналов для общения, но в данной программе можно указать почтовый индекс и тогда общение будет происходить только между теми у кого установлен одинаковый номер, а это миллион различных комбинаций. Почтовый индекс поселка, где вы окончили школу, отделит ваше голосовое общение от других групп. Переключение каналов производиться кликанием левой кнопкой мыши по кнопкам слева. Канал Г (ниже первого) имеет особый статус, на нем можно проверить работоспособность рации, услышать свой голос, но общаться там нельзя. Верхней левой кнопкой производиться вызов в канале. Нижняя левая выключает программу. Щелкая мышкой по динамику осуществляется переключение между приемом и передачей. Если щелкнуть правой кнопкой мыши по кнопке выключения виртуальной радиостанции, то появиться дополнительное меню.
В нем можно выбрать микрофон и устройство воспроизведения. По умолчанию используются те, что установлены в Windows основными. Приемом/передачей можно управлять клавишами клавиатуры. По умолчанию используется клавиша пробела. Поочередное ее нажатие производит переключение. Клавиши Ctrl работают по другому, передача производиться между нажатием клавиш и их отжатием. В программе отсутствует перехват нажатий клавиш Windows (что бы не раздражать различные антивирусные программы), поэтому при управлении с клавиатуры программа должна иметь активное окно, то есть быть на переднем плане. Режим симплекс позволяет общаться без помех (заводки звука), если используется не гарнитура, а динамики компьютера.
Ну и главная изюминка программы:
Для того что бы менять цифры надо навести курсор мыши на нужное место и щелкнуть правой или левой кнопкой мыши. Колесико мыши также работает. Изменения вступают в силу после закрытия диалогового окна с почтовым индексом. Для того, что бы запустить несколько экземпляров данной программы необходимо ее запускать из разных каталогов, из одной и той же папки запустить несколько экземпляров невозможно. Ну и в заключении несколько слов о том почему не Скайп или что то подобное?
Потому что данная программа предназначена именно для общения голосом небольших групп пользователей, она маленькая и не требует больших умений. Надо просто скачать и извлечь архив в нужное место. После первого запуска программа практически готова к использованию, единственное действие которое нужно сделать, это обменяться в "личке" с нужными людьми единым номером, почтовым индексом, после чего ввести его в программу. Единственный дополнительный файл который создает программа, это файл в котором программа хранит настройки. Никаких записей в реестр или тайные места. Не понравилась программа, достаточно просто ее удалить. В ней нет модераторов. Но единственный вариант избавиться от мешающих общению, это использовать такой почтовый индекс про который никто кроме вас не знает.73. Василий М.Колотуша (RN6LIQ)
-
15.04.2020, 21:27 #4
- Регистрация
- 23.09.2008
- Адрес
- Обухово
- Возраст
- 59
- Сообщений
- 314
- Поблагодарили
- 236
- Поблагодарил
- 269
Василий, спасибо!
Попробовал, работает Один комп включил через мобильный и-нет, второй - штатно, через домашний роутер. Практически без задержки...
А режим "конфиденциальности" в ней как-нибудь можно будет всё-таки предусмотреть?Сергей, R2DO
-
16.04.2020, 04:13 #5
- Регистрация
- 12.12.2006
- Адрес
- Ростов-на-Дону
- Возраст
- 57
- Сообщений
- 354
- Поблагодарили
- 44
- Поблагодарил
- 46
Режим "конфиденциальности" есть, он выставляется почтовым индексом, миллион вариантов. Сервер не позволяет сканировать эти варианты с большой скоростью, а значит можно более или менее надежно затеряться среди этих шести десятичных цифр.
73. Василий М.Колотуша (RN6LIQ)
-
16.04.2020, 09:58 #6
- Регистрация
- 12.12.2006
- Адрес
- Ростов-на-Дону
- Возраст
- 57
- Сообщений
- 354
- Поблагодарили
- 44
- Поблагодарил
- 46
Наверное я не всеми был правильно понят. Достоинство именно этой программы в простоте протокола. Ведь возможности микроконтроллеров часто мизерны и на них организовать полноценный обмен сложными протоколами бывает непросто, а то и не возможно. Как правило сами устройства находятся за NAT серверами и к ним невозможен прямой доступ без программы ( сервера ) посредника, у которой есть белый IP. Задача сервера связать несколько программ с минимальными настройками. Когда я делал прямой IP телефон на Arduino, для связи с родительским домом, то возможностей этой платы, совместно с Ethernet модулем W5100, хватило только на работу с 8 битным звуком и на реагирование на действия - трубка поднята, трубка опущена. Ну еще остался один контакт который сигнализировал о приеме вызова. И на этом все, вся память занята, все контакты заняты, ну кроме разве еще A2-A5. ( ЦАП был реализован по схеме R2R, на что ушло 8 контактов, остальное забрал SPI ). По сути функционал как у проводного телефона. Вот тут остальное взял на себя сервер (а точнее VDS, арендованный на RUWEB ), который при поднятии трубки давал непрерывной гудок в этот телефон. Когда абонент несколько раз стучит по отбойнику (на который кладется трубка), то сервер давал или короткие гудки, в случае отсутствия на связи вызываемого абонента, или начинал давать длинные гудки с одновременным посылом вызова до поднятия с той стороны трубки. Без простенького сервера просто было бы не организовать такой проект. Это к тому, что ждать от меня добавления к PMR новых функций не стоит, тогда уже не будет все так просто. Но и так как есть, программой можно пользоваться в том числе и для оперативной связи небольших групп пользователей. А если мой коллега, Анатолий, р/л позывного у него нет, все таки сделает версию под Android, то это еще будет лучше.
Но у меня есть другой проект, посмотреть можно по ссылке. В общих чертах. Или более подробно на этом форуме. Вот там можно работать без сервера. То есть сервер первоначально нужен, он как STUN сообщает программам их внешние IP адреса и порты, а затем они работают напрямую. Есть возможность больших битрейтов, если позволит интернет между вами. Дело в том, что при передаче больших объемов данных увеличивается размер UDP пакетов, а их не всегда правильно разбирают до значения MTU и собирают до прежнего размера различные роутеры и шлюзы. Есть видео, правда низкого качества. Можно передавать файлы размером до 4 Гбайт, одновременно до 8 штук. Не всегда правда получается установить прямую связь, не все роутеры это позволяют. Но тогда есть хотя бы возможность работать через сервер, как этот проект PMR. Как альтернатива подобным программам почему бы нет. Не раз бывало когда не работала связь по скайп или WhatsApp( рвало звук, временно пропадало все ), тогда переходили на эту программу и отлично общались. Видео выставляли поскромнее, черно-белое, звук с меньшим битрейтом, а то и на GSM кодек переходили, но пусть с потерей качества, но общение все же было приемлемо комфортным.73. Василий М.Колотуша (RN6LIQ)
-
16.04.2020, 11:45 #7
Всем доброго дня!
В первую очередь хочется поблагодарить автора, а так же Владимира (RZ6AT) за интересную разработку, пожелать дальнейшего продвижения и конечно же побольше пользователей.
Софт тестировался на OS Win7 SP1 Pro x64, оптика - полет нормальный. Программа мгновенно запускается сразу из коробки после распаковки архива. Имеет мизерный вес (404кб.), отлично дружит с кириллицей в именах, полностью портабельна, можно таскать с собой на любых носителях, отлично справляется с любым размещением в каталогах на жестком диске и имеет приятный глазу интерфейс. Разобраться с программой можно за пару минут. Все до элементарности просто и доступно. Если в канале пусто, из-за полной тишины, может появится первое впечатление что PMR не работает, но это не так.
При первом запуске в своем каталоге создает единственный файл настроек (68б.) и просит разрешения у сетевого экрана на передачу. Настройки практически не требует и не привязывается к системе. Кому интересно, антивирус тоже молчит.
Особенно порадовал выбор одного из режимов работы дуплекс или симплекс, вызывной тональник, самоконтроль и залипание клавиши пробела. Качество связи на отличном уровне, но конечно многое будет еще зависеть от используемого микрофона. Задержки и замирания на всем протяжении связи не наблюдались. Ощущение что оператор находится рядом в комнате.
В процессе тестирования появились пару хотелок, не настаиваю, но было бы замечательно если автор учтет это тоже. Сидя за компьютером мы обычно всегда чем то заняты. Маленькая проблема возникает с PMR когда окно не активно. Нет возможности оперативного пользования. По возможности для удобства хорошо бы добавить в меню функцию выбора постоянно оставаться активным на переднем плане, а так же выбора свободной горячей клавиши на передачу. Можно будет сразу нажатием этой клавиши отвечать не отвлекаясь от работы. И второе, хотелось бы видеть в доступе серверную часть, если конечно не планируется в будущем коммерческая основа. Это сильно продлит жизнь самого проекта и даст желающим помимо прямого общения реализовать и другие возможности, например подключение к своему трансиверу на 144мГц.
Как вариант, можно сделать и английскую версию, думаю людям не владеющим языком будет тоже интересен проект.
В остальном же тестирование прошло на ура. В ближайшем будущем буду пробовать на других OS, а так же со своими разнесенными домочадцами. Ну и конечно же хочется услышать в канале дальних операторов. Интересно как поведет себя дальняя связь.
На низких скоростях инета проверить пока что не получается, нет такой возможности.
В итоге программа заняла постоянное почетное место на жестком диске и в архиве полезных программ. Давно искал что то подобное но увы, то что есть не совсем устраивало. В виду своей простоты и мобильности для меня этот вариант намного удобней всех скайпов, агентов, ватсапов и прочих "болталок" вместе взятых.
Команде удачи, всех благ и крепкого здоровья!С уважением, Андрей. (Andy - 4L4KA) 73!
-
16.04.2020, 12:33 #8
- Регистрация
- 16.06.2008
- Адрес
- Киев
- Возраст
- 66
- Сообщений
- 408
- Поблагодарили
- 218
- Поблагодарил
- 651
-
16.04.2020, 13:24 #9
Василий добрый день!
Зато "они" умеют делать большие дела и это главное!
А вот это не порядок и должно быть стыдно оставаться в тени! Срочно делать ему свой позывной. Страна должна знать своих героев!
Ну и по теме. Хочется в дополнение отметить так же возможность визуального контроля численности операторов в канале. Очень удобно!С уважением, Андрей. (Andy - 4L4KA) 73!
-
16.04.2020, 14:26 #10
-
16.04.2020, 15:04 #11
- Регистрация
- 12.12.2006
- Адрес
- Ростов-на-Дону
- Возраст
- 57
- Сообщений
- 354
- Поблагодарили
- 44
- Поблагодарил
- 46
Как сделать что бы программа была постоянно активной, я честно говоря не знаю. Но на переднем плане, что бы всегда была, сделать можно. Но фокус у не все равно будет теряться, если вы будете работать с другой программой. Можно конечно сделать перехват клавиатуры от системы, и тогда передача будет срабатывать всегда, есть ли фокус на программе или нет. Но в этом случае гарантированно начнут ругаться антивирусники. Сложный выбор.
Благодаря Сергею, RV3DOD, сейчас программа работает через его выделенный сервер. Сервер будет работать до октября этого года, может быть чуть больше. Потом выключится. Закончится срок оплаты. За все в интернете надо платить. Но это не страшно, программа взаимодействует с двумя серверами-диспетчерами, которые перенаправят программу на другой ресурс, может быть не такой мощный, но достаточный для работы. Вот в это время я и хочу предоставить сервера для общего доступа, под Windows и Linux. Общая стратегия заключается в том, что бы таких серверов было много. Тогда легче затеряться в лабиринте серверов и их почтовых индексов. Ведь программа удобна именно для небольших проверенных групп пользователей. А пока желательно, что бы все работали через единый сервер, во первых, что бы он не простаивал, все таки деньги уже уплачены, а во вторых что бы набралась статистика как сервер держит нагрузку.
Это сделать можно, но на данном этапе пока не имеет смысла. Хотя людей уже не мало скачало и включило программу, где то около 1200 человек, но это все наши соотечественники понимающие русский язык.
Программа имеет возможность перейти на более низкое качество, как это сделать я потом расскажу, для заинтересованных сторон, а пока желательно что бы было единообразие, желательно для тестирования и для Анатолия, который делает программу под Андроид.
Первоначально в программе этого не было. Но пошел сознательно на усложнение сервера. Дело в том, что серверу все равно какую информацию транслировать, звуковую или иную. Не хотелось вешать на него специфические задачи отдельных проектов. Но потом пришел к выводу, что не только для звука, но и для других данных полезно знать сколько программ стоит в канале, особенно если канал "закрыт" почтовым индексом. Что бы не нервничать и знать точно, что тут только свои, двое или трое. Как только цифра выросла, значит кто то еще случайно или как зашел в канал.73. Василий М.Колотуша (RN6LIQ)
-
16.04.2020, 15:23 #12
-
16.04.2020, 15:27 #13
- Регистрация
- 12.12.2006
- Адрес
- Ростов-на-Дону
- Возраст
- 57
- Сообщений
- 354
- Поблагодарили
- 44
- Поблагодарил
- 46
Если версия Linux совпадает, то должен запустится. Если нет, то сначала нужно откомпилировать (запустить файл ./make). Если ругнется, что нет библиотеки ALSA для разработчика, поставить ее sudo apt-get install libasound2-dev
Если со звуковой картой все нормально и ALSA ее видит, то должно заработать сразу. Может быть изменить значения
static char *deviceIn = "hw:0,0";
и
static char *deviceOut = "hw:0,0"; // звуковое устройство ALSA
по умолчанию указаны первые устройства. Если все нормально, то удалите файл init.bin, там хранятся настройки программы, а я не не помню какие именно установил. Потом в функции main() измените
MySave.MailIndex = 1;// как уже писал эксперименты мы проводим при почтовом индексе 1
MySave.PChannel = 2; // прошлый раз использовали 1 канал, сегодня будем второй юзать
на
MySave.MailIndex = 0;
MySave.PChannel = 1;
это будет соответствовать первому каналу виндусовой pmr-ки. А затем опять откомпилируйте (./make). Обращаю внимание, что это не команда компилятора, а исполняемый файл который лежит в этом же каталоге где и исходник. Там внутри командная строка gcc -o pmr pmr.c -lpthread -lm -lz -lasound
Это что бы не вводить эту команду каждый раз. Не люблю сложности и предпочитаю компилировать программы вот такими простыми командами. Проекты то у меня тоже простые. А то ведь одно только содержимое makefile может напугать кого угодно, кроме профессионалов конечно. Но я то не профессионал
Ну а потом, если все нормально, через эту программу будет слышно то, что передает виндусовая программа, ну а клавишей ENTER можно будет включать выключать\передачу. Для того, что бы перейти на другой канал, например второй, то нажимает 2 (двойку) а затем ENTER. Вызов нажать b, а затем ENTER. Ну а что бы выйти из программы набирает exit, а затем ENTER. Интерфейс с пользователем сделан специально попроще, что бы не отвлекаться на него. Главная задача примера показать как работать со звуком и с сервером.
И еще, у меня почему то это работало только с правами root, без этих прав запускается, но звука нетПоследний раз редактировалось RN6LIQ; 16.04.2020 в 15:37.
73. Василий М.Колотуша (RN6LIQ)
-
16.04.2020, 15:38 #14
Спасибо Василий за ответ! Все понятно.
Главное, при неактивном окне PMR-а есть звуковой контроль, этого тоже вполне достаточно и никто не будет пропущен при вызове.
По поводу вопроса о серверной части, это к тому что если вдруг не дай Бог прекратится поддержка этого маленького чуда и внешнего центрального сервера, софт будет лежать без пользы.
На 7-м канале кто то крутит музыку, хорошее качество и эфир без тормозов. В общем, все до минимума просто и есть все самое неоходимое. Спасибо за интересный проект еще раз!С уважением, Андрей. (Andy - 4L4KA) 73!
-
19.04.2020, 10:10 #15
- Регистрация
- 12.12.2006
- Адрес
- Ростов-на-Дону
- Возраст
- 57
- Сообщений
- 354
- Поблагодарили
- 44
- Поблагодарил
- 46
Придумал как сделать перехват клавиатуры и в то же время не вызывать подозрительность антивирусных программ. Надо перехват делать из другой программы. Если даже антивирусная программа заблокирует эту другую программу, PMR останется вне подозрения и продолжит работу, правда без удобства перехвата нажатий управляющих клавиш, независимо от того есть фокус на программе или его нет. По ссылке скачиваем программу и "вынимаем" её в удобное для себя место. Запускать нужно key.exe, при первом запуске окно программы не отобразится, но появится иконка в trey. При повторном запуске окно программы отобразится. В нем ничего интересного нет, кроме служебной информации, но программу при этом можно закрыть уже стандартным способом. Программа ищет все запущенные программы PMR и в случае нажатия левого CTRL или правого оповещает их об этом событии. Если конкретный экземпляр программы PMR настроен на управление одной из этих клавиш, то он будет управляться. Если например запущено несколько экземпляров программы с управлением от левого CTRL, то при нажатии на эту клавишу все они станут на передачу.
Последний раз редактировалось RN6LIQ; 19.04.2020 в 10:13.
73. Василий М.Колотуша (RN6LIQ)
|
Социальные закладки