Все знают идею диверсити видиоприемников - выбирается лучший сигнал из поступающих с нескольких Video RX. Обычно один приемник подключен к направленной антенне, а другой - к круговой. Иногда ставят несколько приемников с направленными антеннами, например IBCrazy делал нанацеливаемую наземную станцию с 3-4 патчами, покрывающими все 360 градусов направления.
Обычно критерием выбора служит RSSI - уровня усиления приемника. Считается, но это не всегда так, что чем сильнее усиление, тем слабее (хуже) сигнал и тем больше в нем шумов. В самом простом случае для реализации переключения достаточно компаратора и реле или мультиплексора, хотя обычно используют микроконтроллеры, допускающую простую калибровку диапазонов изменения RSSI.
Реже используют метод Oracle - выбора буквально лучшего видеосигнала путем анализа качества синхроимпульсов. Реализация в основном программная и довольно сложная. По крайней мере у меня не получилось, хотя что-то пыталось работать 😁 Но у mataor вышло.
Но оба этих метода подразумевают, что Вы летаете один, и совершенно не учитывают, что кто-то неподалеку или вдалеке может включить свой передатчик на Вашем или соседнем канале и Вы увидите крупным планом его озабоченное лицо 😃 Или его модель с 2W передатчиком пролетит в 500м от Вас и покажет Вам свое видео.
Таким образом, идея в следующем: ставим на модель два передатчика на разных каналах или даже диапазонах (например, 5.8 и 1.2 ГГц). Схема диверсити должна уметь переключаться на лучший приемник только в том случае, если принимается сигнал именно Вашего передатчика. И отвергать приемник, если тот принял чужой сигнал.
Я придумал такую реализацию: на аудио канал каждого передатчика подается синусоидальный (чтобы минимизировать обертоны) аудиосигнал из одной или двух частот (DTMF). Частоту сигнала или пары сигналов Вы выставляете индивидуально для себя, в надежде, что кто-то другой не догадается сделать то же, что и Вы. Далее, сигналы с аудиовыходов приемников поступают на вход микрокнтроллера, который выполняет определение частоты или пары частот и сверяет их с установками. Если не совпадает - сигнал с этого приемника не передается на очки и его RSSI не учитывается.
Для декодирования DTMF есть и специализированные микросхемы, но у них параллельный выход и требуется занять много контроллерных ног.
Для Arduino есть библиотека DTMF. Для определения частоты сигнала есть библиотека Goertzel.
Я планирую попробовать сделать генерацию сигнала одной частоты на простой Arduino Pro Mini, а детектирование производить на том же контроллере, который управляет диверсити в проекте rx5808-pro.
Жалко терять аудиоканал, через него можно было бы передавать данные Апм телеметрии, например. Так уже реализовано в некоторых автопилотах.
Да, я пытаюсь сделать LTM телеметрию на аудиомодемах на TCM3105, но что-то пока не работает. Если делать через телеметрию - принцип тот же. Просто отвергаем приемник, чья телеметрия несет неправильный идентификатор канала (можно передавать не часто, а через 10 пакетов, например).
Если речь идет о частоте 5.8, то боюсь не чего хорошего не выйдет, аудиовыход умирает первым, при читаемой картинке и устойчивой синхронизации по видео. Лучше сразу перепроверьте это на своем комплекте, чтобы проделанная работа не оказалась напрасной.
Печально, а чем это можно объяснить?
Жалко терять аудиоканал, через него можно было бы передавать данные Апм телеметрии, например. Так уже реализовано в некоторых автопилотах.
Я не разбирался в причине. Планировал гнать телеметрию, даже реализовал м-последовательность для повышения помехоустойчивости, а когда стал проверять все в сборе выяснился этот неприятный момент.
Есть какие-то другие предложения? Ручной выбор приемника - держать руку на пульсе? Синхронное прыгание по каналам передатчика и приемника (hoping) ? Кодовая посылка во время обратного хода луча?
Я не разбирался в причине. Планировал гнать телеметрию, даже реализовал м-последовательность для повышения помехоустойчивости, а когда стал проверять все в сборе выяснился этот неприятный момент.
Вот засада а у меня все готово для проверки.
Использовали TCM3105NL ?
Кодовая посылка во время обратного хода луча?
Идея хорошая. Ну и спектрум а мысль навел. Не знаю как насчет обратного хода. Но использовать начало каждой строки видео для передачи данных кажется не сложно.
У меня было на микроконтроллере, можно найти примеры реализации в сети по словам код Баркера и AVR.
В TCM3105NL при беглом просмотре не чего такого не обнаружил, только частотную манипуляцию. Синхрослово вполне можно гнать в нескольких младших строках, они все равно не отображаются на мониторе. Были проекты, где таким образом гнали данные с ЖПС на поворотку.
А если в качестве метки использовать м-последовательность получите очень большое количество меток,
не нужно будет привязываться к кадровым и строчным синхроимпульсам при детектировании.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"41b8a4ac3df9550077792e83":{"_id":"41b8a4ac3df9550077792e83","hid":5271,"name":"Prikupets","nick":"Prikupets","avatar_id":null,"css":""},"49c5d8a83df9550077770422":{"_id":"49c5d8a83df9550077770422","hid":45741,"name":"=Илья#","nick":"=Илья#","avatar_id":null,"css":""},"4c0957443df9550077760211":{"_id":"4c0957443df9550077760211","hid":67065,"name":"Shuricus","nick":"Shuricus","avatar_id":null,"css":""},"503c8d213df9550077740839":{"_id":"503c8d213df9550077740839","hid":124498,"name":"grafis","nick":"grafis","avatar_id":null,"css":""},"526276cf3df9550077730fc0":{"_id":"526276cf3df9550077730fc0","hid":179522,"name":"Hyperion","nick":"Hyperion","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"56c4f489997073007711442a","hid":21423,"title":"Диверсити по частоте","html":"<p>Все знают идею диверсити видиоприемников - выбирается лучший сигнал из поступающих с нескольких Video RX. Обычно один приемник подключен к направленной антенне, а другой - к круговой. Иногда ставят несколько приемников с направленными антеннами, например IBCrazy делал нанацеливаемую наземную станцию с 3-4 патчами, покрывающими все 360 градусов направления.</p>\n<p>Обычно критерием выбора служит RSSI - уровня усиления приемника. Считается, но это не всегда так, что чем сильнее усиление, тем слабее (хуже) сигнал и тем больше в нем шумов. В самом простом случае для реализации переключения <a href=\"https://www.youtube.com/watch?v=t5n3yyen1iA\" class=\"link link-ext\" data-nd-link-orig=\"https://www.youtube.com/watch?v=t5n3yyen1iA\" target=\"_blank\" rel=\"nofollow noopener\">достаточно</a> компаратора и реле или мультиплексора, хотя обычно используют микроконтроллеры, допускающую простую калибровку диапазонов изменения RSSI.</p>\n<p>Реже используют метод Oracle - выбора буквально лучшего видеосигнала путем анализа качества синхроимпульсов. Реализация в основном программная и довольно сложная. По крайней мере у меня не получилось, хотя что-то пыталось работать <span class=\"emoji emoji-grin\" data-nd-emoji-src=\":grin:\">😁</span> Но у mataor <a href=\"https://rcopen.com/blogs/117417/20126\" class=\"link link-int\" data-nd-link-orig=\"https://rcopen.com/blogs/117417/20126\">вышло</a>.</p>\n<!--cut-->\n<p>Но оба этих метода подразумевают, что Вы летаете один, и совершенно не учитывают, что кто-то неподалеку или вдалеке может включить свой передатчик на Вашем или соседнем канале и Вы увидите крупным планом его озабоченное лицо <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span> Или его модель с 2W передатчиком пролетит в 500м от Вас и покажет Вам свое видео.</p>\n<p>Таким образом, идея в следующем: <strong data-nd-pair-src=\"**\">ставим на модель два передатчика</strong> на разных каналах или даже диапазонах (например, 5.8 и 1.2 ГГц). Схема диверсити должна уметь переключаться на лучший приемник только в том случае, если принимается сигнал именно Вашего передатчика. И отвергать приемник, если тот принял чужой сигнал.</p>\n<p>Я придумал такую реализацию: на аудио канал каждого передатчика подается синусоидальный (чтобы минимизировать обертоны) аудиосигнал из одной или двух частот (<a href=\"https://ru.wikipedia.org/wiki/DTMF\" class=\"link link-ext\" data-nd-link-orig=\"https://ru.wikipedia.org/wiki/DTMF\" target=\"_blank\" rel=\"nofollow noopener\">DTMF</a>). Частоту сигнала или пары сигналов Вы выставляете индивидуально для себя, в надежде, что кто-то другой не догадается сделать то же, что и Вы. Далее, сигналы с аудиовыходов приемников поступают на вход микрокнтроллера, который выполняет определение частоты или пары частот и сверяет их с установками. Если не совпадает - сигнал с этого приемника не передается на очки и его RSSI не учитывается.</p>\n<p>Для декодирования DTMF есть и специализированные <a href=\"http://www.electronics-diy.com/dtmf-decoder-using-mt8870.php\" class=\"link link-ext\" data-nd-link-orig=\"http://www.electronics-diy.com/dtmf-decoder-using-mt8870.php\" target=\"_blank\" rel=\"nofollow noopener\">микросхемы</a>, но у них параллельный выход и требуется занять много контроллерных ног.<br>\nДля Arduino есть библиотека <strong data-nd-pair-src=\"**\">DTMF</strong>. Для определения частоты сигнала есть библиотека <strong data-nd-pair-src=\"**\">Goertzel</strong>.</p>\n<p>Я планирую попробовать сделать генерацию сигнала одной частоты на простой Arduino Pro Mini, а детектирование производить на том же контроллере, который управляет диверсити в проекте <a href=\"https://code.google.com/p/rx5808-pro/\" class=\"link link-ext\" data-nd-link-orig=\"https://code.google.com/p/rx5808-pro/\" target=\"_blank\" rel=\"nofollow noopener\">rx5808-pro</a>.</p>\n","user":"41b8a4ac3df9550077792e83","ts":"2016-02-17T22:30:33.000Z","st":1,"cache":{"comment_count":10,"last_comment":"56c61b709970730077126be3","last_comment_hid":10,"last_ts":"2016-02-18T19:28:48.000Z","last_user":"49c5d8a83df9550077770422"},"views":7898,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}