Форум по радиосвязи предназначен прежде всего для постояльцев портала, которые кроме паяния жучков умеют жать на тангенту, проводить QSO, которые возлюбили свои антенны, и трансиверы как самого себя. Правила данного форума в рамках пп 6.6., 6.7.8., 6.7.9 соответствуют регламенту проведения радиосвязей
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Вернулся к опен-сорцному кодеку Codec2 и ещё раз прогнал несколько звуковых проб...
Честно говоря после MELP-a кодек-2 слушается УЖАСНО !!!
Есть MELP 1200 но он тормозной, причем безнадёжно...
Это если не извращаться и не урезать ничего - оригиналы.
Вот протестировал на трёх звуковых образцах битрейты 450, 700 и 1200.
Звучание на 450 и 1200 - вообще убивают, как будто по воздушному шарику ногтём скребут...
На 700 звучание похожее на вещание радиостанции "Маяк" на средних волнах - но вроде как разборчиво, хоть и старомодно.
Есть возможность сделать релиз codec2 на 700 бит/с с чутьём приемника -130 дБ (0.07 мкВ) и задержкой звука 0,32 секнуды.. Из всех трёх наиболее удачно ИМХО
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Дал послушать звуковые пробы разных вокодеров и битрейтов одному авторитетному специалисту в области звука.
В общем его мнение:
Все конфигурации вокодера Codec-2 - забраковал, говорит, "ничерта не разборчиво".
Все конфы, сделанные мной MELP ниже 2400 также забраковал, говорит либо голос ненатурален, либо ничерта не разборчиво.
Для меня это как серпом по яйцам... Стали вместе обдумывать, что можно сделать с вокодерами, чтобы из битрейта 2400 осторожно родить по-ниже, но при этом разборчивость осталась.
Кто-то бухает, но это не по мне, попили чай и обсудили кое-какие моменты, связанные с уменьшением битовой скорости при сохранении достаточной разборчивости.
И путём совместных усилий - родили новую прошивку для рации, обеспечивающую чутьё -127 дБм (0,1 мкВ), что даёт теоретическую прибавку дальности связи в 2 раза.
Вначале опеределили максимальное время битовой посылки в эфире для целевой чувствительности приёмника. Затем посчитали структуру пакета, распределив преамбулу и полезную нагрузку. Исходя из этого посчитали время одного фрейма вокодера. Потом всё остальное.
Получилось 1500 бит/с - это 36 мс 1 фрейм. Передаём 4 фрейма - 144 мс, что впритык влезает во время битовой посылки в эфире: 143,87 мс.
Уменьшать битрейт к примеру - до 1200 бит/с нет смысла, так как в радиотракте RFM96 чутьё растёт дискретно на +3 дБ на каждое снижение скорости.
Согласовали звучание нового конфига с вышеназванным экспертом, пришли к удовлетворительному заключению о годности применения вокодер на 1500.
Ниже прикрепил архив звуковых образцов - один через Codec2 на 1200 бит/с (признан экспертом как неудовлетворительным), второй - мод от Рыбы на 1500 бит/с (признан звучащим удовлетворительно):
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Прикрепляю архив как звучат передатчики, которые прошиты прошивкой на 2400 бит-с (вторая версия с чутьём приемника -124 дБм) и на 1500 бит-с(с чутьём -127 дБм) - на АМ детекторе:
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Пришлось починить шнурок (оказался обрыв внутри - болезнь всей бытовой акустики), добавил сопротивление 47 Ом - чтоб аудиовыход был под нагрузкой с целью минимизации искажений и более точной передачи звука:
Присоединённое изображение (Нажмите для увеличения)
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Сейчас все прошивки настроены на выполнение их с адреса 0x8000000 (начало Flash у STM32F4xx). С применением данного функционала надо написать загрузчик кидающий управление на нужную прошивку.
И зачем этот онанизм с загрузчиком, адресами flash, если можно реализовать вторую (3-ю, 4-ю и т.д., на сколько хватит памяти) прошивку в виде набора подпрограмм?
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE (rakov @ Jan 5 2017, 06:39 PM)
QUOTE (Gospodin_Riba @ Jan 5 2017, 02:25 PM)
Сейчас все прошивки настроены на выполнение их с адреса 0x8000000 (начало Flash у STM32F4xx). С применением данного функционала надо написать загрузчик кидающий управление на нужную прошивку.
И зачем этот онанизм с загрузчиком, адресами flash, если можно реализовать вторую (3-ю, 4-ю и т.д., на сколько хватит памяти) прошивку в виде набора подпрограмм?
Много задефайненных вещей, которые как оказалось не так просто обратить в переменные как параметры для изменения некоторой конфигурации. Потребует коренного переворота сорцов.
Возможно, я вас не понял.
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Группа: Cоучастник
Сообщений: 2602
Пользователь №: 42419
Регистрация: 27-January 09
Место жительства: Земля
QUOTE (Gospodin_Riba @ Jan 5 2017, 07:09 PM)
Более правильный и сложный путь: собрать модуль самому, настроив ВЧ-цепи в резонанс на нужный отрезок частот.
Истину глаголете, батенька. Самому - покрасивее будет и можно радиостанцию сделать 2-3-х диапазонной + добавить переключатели, входной усилитель и выходной, хотя бы на 1-2Вт.
--------------------
There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy. William Shakespeare
дефайны FRAME и PITCHMAX - они объявлены как конкретные числа. Они гуляют по всем сорцам анализа и синтеза практически и входят в состав других дефайнов.
Пробовал отказываться от этих дефайнов, переделав в переменные, но тогда оно за собой тащит переделывание остальных дефайнов в переменные + ещё менять прототипы функций - добавить аргумент или же дополнительно дописывать код по инициализации.
Бороться с разросшимися сорняками лениво...
Проще наверное прошивки сделать как вызов функции по определенному адресу..
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
QUOTE (Ranch @ Jan 5 2017, 08:06 PM)
QUOTE (Gospodin_Riba @ Jan 5 2017, 07:09 PM)
Более правильный и сложный путь: собрать модуль самому, настроив ВЧ-цепи в резонанс на нужный отрезок частот.
Истину глаголете, батенька. Самому - покрасивее будет и можно радиостанцию сделать 2-3-х диапазонной + добавить переключатели, входной усилитель и выходной, хотя бы на 1-2Вт.
Читаете мысли!
Кастомизировать свой ВЧ модуль скорее всего не буду (сорри, лениво), но есть готовый модуль на +30 дБм:
называется LoRa1278F30. Огорчает то, что есть только у китайцев.
Применив этот модуль - даже софт переписывать не прийдётся, так как ноги интерфейса те же что и у модуля RFM96
Прилагаю даташит на модуль и рекомендациями по разводке ВЧ тракта(антенна):
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Планирую заняться этим, как добью последнюю рацию в узком корпусе от аккума 3,2V - осталось припаять аудиоразъем и купить аккум (магазины после 8-го только заработают увы...)
Всё-же +10 дБ не помешает к существующим конфам: это теоретически даст ещё увеличение дальности чуть более в 3 раза!
Ну и файлы печатной платы (не знаю какой формат, так как файлы не мои) - для кастомизации всего и вся + заказ на заводе.
важное примечание!: если zip-файлы не открываются и выдают ошибку, то переименуйте его в rar и откройте. Просто форум не позволяет аттачить в rar, а я не поклонник zip-а...
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Ещё постоянно забываю написать, что приёмник в LoRa режиме устойчив к большим уровням сигналов: обе рации были проверены на расстоянии менее чем 30 см - при мощности 0,1 Вт забития не происходит - работают также как и на большой дистанции.
Чего не скажешь о другом трансивере CC1101 - при мощности передатчика 10 мВт (0,01 Вт) приёмник отказывался работать уже на полу-метре от передатчика. Лишь только на дистанциях более чем 2 метра работал сносно, и то - с замиранияма в радиусе даже 10 метров! (наверное идет многократное переотражение от стен помещения....)
Так что только Spread Spectrum и FEC...
На форуме электроникс даже есть Секта Свидетелей Расширенного Спектра Сигнала , в которую меня записали...
Это сообщение отредактировал Gospodin_Riba - Jan 6 2017, 07:19 AM
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
дефайны FRAME и PITCHMAX - они объявлены как конкретные числа. Они гуляют по всем сорцам анализа и синтеза практически и входят в состав других дефайнов.
В отдельном файле прописываешь в виде переменных extern свои PITCHMAX и FRAME в отдельный файл и подключай его где эти переменные используются. Далее, константы FRAME1 и PITCHMAX1, FRAME2 и PITCHMAX2 записываешь, например, непосредственно в main.c . А в подпрограмме main, при включении рации, в зависимости от режима, переменным PITCHMAX и FRAME даёшь значение FRAME1 и PITCHMAX1 или FRAME2 и PITCHMAX2. Больше никакие подпрограммы менять не нужно, PITCHMAX и FRAME будут гулять по остальным файлам в виде указанных значений.
дефайны FRAME и PITCHMAX - они объявлены как конкретные числа. Они гуляют по всем сорцам анализа и синтеза практически и входят в состав других дефайнов.
В отдельном файле прописываешь в виде переменных extern свои PITCHMAX и FRAME в отдельный файл и подключай его где эти переменные используются. Далее, константы FRAME1 и PITCHMAX1, FRAME2 и PITCHMAX2 записываешь, например, непосредственно в main.c . А в подпрограмме main, при включении рации, в зависимости от режима, переменным PITCHMAX и FRAME даёшь значение FRAME1 и PITCHMAX1 или FRAME2 и PITCHMAX2. Больше никакие подпрограммы менять не нужно, PITCHMAX и FRAME будут гулять по остальным файлам в виде указанных значений.
Сразу видно, что не смотрели весь репозиторий!
А с массивами что прикажете делать, где их размер задан дефайнами? А если дефайн в дефайне (о чем выше писал) типа:
#define D1 ((D2+D3)*D4)
и всё потом в массив загоняется.
А если размер массива берется оператором sizeof с массива размер которого дефайном задан? И потом это значение используется как предел цикла-счетчика?
Нет, таким простым способом замены на переменные просто не разрулить...
Это сообщение отредактировал Gospodin_Riba - Jan 6 2017, 12:26 PM
--------------------
По всем вопросам пишите на почту: repstosw2018 [собака] gmail [точка] com Энтузиазм заканчивается, когда начинается Кризис. Рождается Капитализм :)
Группа: Автор
Сообщений: 2137
Пользователь №: 116127
Регистрация: 26-April 16
Данная прошивка использует MP3 сжатие и не имеет валидацию пакета, поэтому крайне не рекомендуется использовать на предельных расстояниях, когда приём неуверенный.
Может так получиться (на практике было несколько раз), что будет очень неприятно для уха и головы - битый пакет звучит иногда как звон кувалды по жестянке!!! Осторожно!!!