Миниатюрный HD-видеотранслятор на виртурилке: тесты в сетях 3G и 4G



    После первых статей о виртурилке к нам пришло много вопросов вида «а можно ли сделать такую штуку, которую цепляешь на человека/велосипед/мотоцикл/машину или на самолетик/коптер/лодку/машинку и она транслирует видео в интернет?»

    Ну вот мы и решили сделать такое устройство, тем более что недавно нам удалось наконец осилить работу с HD-видео. Мы также разработали простенький корпус для устройства (файлы stl для печати на 3D-принтере прилагаются).

    Так что в этой статье мы немного отойдем от нашей основной доктрины, а именно «удаленное управление и видеонаблюдение в реальном времени», и сфокусируемся исключительно на трансляции видео на сервисы типа Ustream, ЯТВ и иже с ними.

    Перед тем как приступить к деталям


    Постоянный тест HD видео по WiFi (вид из окна) здесь: www.ustream.tv/channel/virt2real-hd-test-wifi
    Живые тесты трансляции через модемы МТС и YOTA (вид из автомобиля) планируются сегодня около 15:00, ссылка на страницу со всеми видеоокнами: virt2real.ru/node/162

    UPD>Первые живые тесты прошли сегодня с 15:15 до 16:00
    Следующие тесты:
    1. Сегодня 24 марта с 18:30 до 19:00
    2. Завтра, 25 марта, с 10:15 до 11:00.


    Делаем корпус


    Задача была такая: сделать простой компактный корпус для использования устройства в режиме «воткнул модем, воткнул питание и пошла трансляция».

    Каким бы ярким не было воображение и способности к 3D-моделированию в голове, без прототипирования на чем-то реальном невозможно учесть все нюансы будущей конструкции. Поэтому работа началась с создания раннего прототипа.

    Для его изготовления были использованы любимые мной еще со времен трассы на микрогонках пластиковые уголки, шириной 3 и 5 см. Удобнее использовать трехсантиметровые, так как у них тоньше пластик и его можно резать обычными ножницами. Из двух отрезанных кусочков было склеено «корытце» — дно и длинные боковые стенки. Короткие стенки вырезал отдельно и прикрепил на скотч, т.к. в процессе множественных примерок приходилось постоянно их снимать и устанавливать обратно. Толщина пластика оказалась около миллиметра, и из нарезанных квадратиков были изготовлены «ножки» в тех местах, где виртурилка будет крепиться винтами. Вот как выглядела конструкция первой версии:



    После первых примерок всплыли нюансы, а именно:

    1. Место для размещения камеры

    Понятно что размещать ее надо на фронтальной крышке. Если камеру расположить просто один раз согнув шлейф, то устройство придется держать вертикально, что не совсем удобно. Да и картинка получится перевернутая, либо устройство придется держать проводами вверх (питание и модем). Конечно, можно перевернуть картинку программно, но это нештатное использование, и такой вариант был отброшен. Было решено делать горизонтальную ориентацию, т.е. нормальное положение когда длинная сторона корпуса расположена горизонтально.

    Для проверки варианта крепления камеры к крышке было сделано отверстие и приклеены винтики на суперклее.

    2. Шлейф внутри корпуса

    У нас плоский шлейф, он не любит гнуться под некоторыми углами. Первая мысль была сделать короткий шлейфик (наш штатный — 20 см) с помощью надфиля:



    Но оказалось что, во-первых, короткий шлейф лишает маневра, а во-вторых, сделать качественное укорачивание шлейфа с первого раза без его порчи практически нереально. Не у всех владельцев виртурилки есть запасной шлейф, поэтому было решено оставить родную длину. В корпусе он размещается таким образом, что после закрытия крышки не имеет сильных перегибов.
    Для защиты от острых перегибов вдоль всего шлейфа была наклеена обычная синяя изолента.

    3. Крепежные площадки

    Наклеенные «ножки» в местах будущего расположения винтиков указали на вторую проблему: при большой площади ножек при установке платы на них попадают некоторые компоненты. И при закручивании винтов можно просто «пережать» мелкие SMD-детальки.

    4. Гайки для крепления

    Представляете, оказалось что гаечки имеют свою толщину, а винтики имеют свою длину! Соответственно винт должен иметь длину не меньше чем толщина виртурилки плюс толщина гайки, но при этом не намного длиннее чтобы не вылезти с обратной стороны корпуса. Поход в магазин «Метизы» обогатил винтами троичками длиной 3, 4 и 8 мм (последние для сквозного жесткого крепления wi-fi к плате – это отдельная тема) и гайками для них. Заодно был приобретен штангенциркуль, который потом неоднократно спасал при проектировании.

    После того как были учтены все тонкости и прототипный корпус был весь изрисован простым карандашом, начался процесс создания 3D-модели.

    Программа




    Идея была сделать такой корпус, который все желающие могут распечатать на ныне модных и активно распространяющихся 3D-принтерах. Фраза «скачайте корпус из интернета и установите в него ваше изделие» лет пять назад звучала бы несколько странно, но наше время не перестает нас удивлять.

    Было решено выбрать бесплатную программу с подходящей функциональностью. Надо сказать, что последний опыт работы с 3D-редактором у меня был лет 10 назад – это был 3DS Max, да и то поверхностно. Так что хотелось найти золотую середину между «для чайников» и «достаточно толковая». Скачав несколько софтин и поиграв с ними, я остановился на Google SketchUp. У нее есть бесплатная версия SketchUp Make.

    Выбрана была потому что:
    • быстро разобрался, отличные видеоуроки;
    • нереально огромная библиотека готовых примеров;
    • бесплатная. :)


    Важным моментом была поддержка формата STL – именно его у меня просили для 3D-печати. В данной софтине можно установить плагин для экспорта в STL (меню Window -> Extension Warehouse а там поиск по слову STL).

    Было одно ограничение которое смутило — не смог нарисовать прямоугольник со скругленными углами. Эта фича есть в про версии, а в обычной нужно каждый угол резать отдельно. Но после опыта с печатью модели подумалось «ну и хорошо что не стал рисовать скругленные углы».

    Первый вариант макета был с косяками – компания по 3D-печати сказала что их софт ругается на отсутствие поверхностей и не принимает чертеж нижней части корпуса. Пришлось основательно все пересмотреть и перерисовать некоторые моменты. Проблемы оказались в лишних плоскостях внутри монолитных элементов корпуса – нашел их и удалил.

    Печать на принтере.


    Какой гик не любит 3D-печать! В прошлом году на гик-пикнике в Питере ими была занята огроменная площадь. Оных сейчас великое множество, торгуются во многих местах. Но покупать ради нескольких корпусов принтер смысла не было, поэтому поиском в Яндексе были найдены несколько компаний, которые могут распечатать вам образец. Выбор пал на printers3d.ru по тривиальной причине – находились относительно недалеко и согласились распечатать быстро, а не ждать три дня. Ребята оказались отзывчивые и адекватные.

    Приехал в гости, посмотрел на сами принтеры и разные красивости, которые они могут печатать.



    Ну а дальше было погружение в мир нюансов. Вот мне было интересно, а как принтер печатает детали, которые «висят в воздухе», т.е. имеют под собой некоторое пространство. Оказывается, для них печатается «поддержка», которая удаляется после печати. Или вот, например, одна и та-же марка пластика разных цветов имеет немного разные свойства. В результате нужный мне акилбутадиенстирол черного цвета при первой печати выдал неудачный результат (он на фото слева):



    А его красный брат такими проблемами не страдал и все получилось хорошо.

    Второй сюрприз прилетел от желания облагородить поверхность верхней крышки. «Ацетон или растворитель, лучше подогретый – и будет вам счастье», говорят интернеты. Ага, блажен кто верует! Если у вас статуэтка напечатана – да, это вариант. А у нас крышка толщиной 2 миллиметра. Причем «лицевая» поверхность оказалась на подложке, после снятия которой остаются глубокие полоски. Более того, пластик не монолитный: между застывшими «линиями» принтера есть микрощели, в которые растворитель с удовольствием забирается. Результат – да, поверхность блестит, но крышка изогнулась. Я даже подумал, что при должной сноровке можно таким способом трубочки делать.



    Но дело помог поправить… кипяток. Берем металлическую емкость с ровным дном, заливаем кипяток и кладем крышку. Пинцетом прижимаем ко дну — и через 10 секунд она ровная. Пластик не становится совсем мягким, но достаточно послушен, чтобы принять нужную форму. Извлеченная крышка остывает за минуту и готова к использованию.

    А еще в первом варианте на крышке была надпись с выпуклыми буквами, тонким шрифтом – они с большим трудом отделяются от подложки, на которой идет печать.

    В общем, были набиты очень полезные шишки. Главный вывод – при знании нюансов можно правильно нарисовать модель и получить качественную печать на 3D-принтере.

    Запасы и допуски


    В корпусе имеются шесть мест для установки гаек.Гайка была внимательно обмеряна штангенциркулем, и установочные места были сделаны с запасом около 0,1 мм с каждой стороны. Не влезают. Решение оказалось простым – зубочистка, ватка, капаем растворителя и немного протираем место для установки гайки. Через 30 секунд гайка отлично помещается.

    Всплыл еще один эффект – растворенная пластмасса может сыграть роль клея и прочно удержать гайку. Но возможность различных усадок и непредвиденных эффектов удержала от такого способа крепления. Установочные пазы высохли, гайки сели как влитые.

    Поделюсь еще одним нюансом по использованию суперклея с гаечками. Даже если клей брать на кончике зубочистки и аккуратно наносить в отверстия – его там может оказаться чуть больше чем нужно. И после установки гайки оказывается, что у нее внутри «на дне» есть некий уровень клея, который при высыхании забивает резьбу и может укоротить естественную «вместимость» гайки. Поэтому сразу после установки гайки на место излишки клея, пока они совсем жидкие, лучше убрать ватной палочкой или той-же зубочисткой с ватой.

    Да, гайки легче всего устанавливать в пазы не пинцетом, а накрутив их на 8-мм болтик.

    Вот здесь можно скачать именно те файлы, которые были отданы в печать.

    Еще раз повторюсь — мы не специалисты в 3D-моделировании, так что в конструкции возможны недочеты. Если вы захотите нарисовать улучшенную версию — присылайте, будем рады!

    Настройка виртурилки


    Для работы можно использовать штатную прошивку серии HD. Свежий вариант, с уже внесенными настройками оттестированных модемов и сервисов трансляций, будет выложен в ближайшие дни в нашей теме о прошивках. Ключевое отличие этой прошивки от предыдущей – камера может работать только в режиме HD 1280x720. Для работы с младшими разрешениями нужно использовать предыдущие прошивки без префикса HD.

    Идеальным вариантом настройки является работа через консоль и переходник USB-UART (он уже встроен в нашу отладочную плату для прототипирования).

    Если коротко, то настройка делается в несколько этапов:
    • Настраиваем виртурилку на модем – чтобы она его узнавала.
    • Для 3G модемов делаем из режима накопителя в режим модема и принудительно включаем режим 3G без поддержки 2G.
    • Для 3G модемов прописываем скрипт запуска pppd соединения. Они для разных операторов разные.
    • Прописываются настройки сервиса видеотрансляций, на который будем вещать.
    • Настраиваем автозапуск – чтобы после подачи питания виртурилка загружалась и сразу начинала транслировать.
    • Желающие могут готовую настроенную прошивку залить в NAND, тогда карточка MicroSD с прошивкой будет не нужна.


    Я не буду описывать полный процесс первого разбирательства с настройками (это касается 3G), так как они уже сделаны и в прошивке вам нужно лишь раскомментировать строчки, соответствующие вашему модему. Прошивка будет выложена уже в эти выходные — так что все желающие владельцы виртурилок смогут провести эксперимент, потратив совсем немного времени на настройку.

    Из важных моментов — модемы любят кушать. Поэтому питания виртурилки от USB порта компьютера будет недостаточно – обильные глюки в работе обеспечены. Так что запитайте от внешнего источника. Я просто разобрал один шнур USB-MicroUSB и вместо разъема MicroUSB припаял разъем питания виртурилки.

    Отдельно отмечу, что 4G (тестировался модем Yota в Питере и модем Билайна в МСК) настроек вообще не требуется. Билайновский модем вообще Линукс на борту имеет, интересная штука. Инструкция по настройке выглядит примерно как «Подключите модем».

    Настройка сервисов трансляций


    Преднастройки для сервисов ЯТВ, Ustream и YouTube лежат в соответствующих скриптах в папке /opt/stream в нашей прошивке.

    Вам необходимо лишь добавить в них настройки вашего канала трансляции. По большому счету разница лишь в последней строчке скрипта.
    Обычно это строка трансляции и ключ трансляции. Для ЯТВ еще есть параметр «название канала» и app.

    Как узнать настройки видеосервиса для добавления в скрипт виртурилки:


    Еще один параметр скрипта — targetbitrate — зависит от того, как вы собираетесь передавать видео на сервер. При сжатии потока плата virt2real старается «ужать» его в указанные пределы. Если это 3G модем то рекомендуем не ставить скорость выше 400 кбит, если результаты ваших тестов скорости не показывают большего.

    Его лучше устанавливать по результатам тестирования скорости вашего модема, предварительно проведя его в месте предполагаемой трансляции.

    Например, вот результаты тестов модемов, которые участвуют в эксперименте. Тесты условные и проводились в Питере, район м. Комендантский Проспект, внутри помещения (около окна):

    МТС:
    image

    Билайн:
    image

    Yota:
    image

    Из моего окна видно самое высокое здание на Комендантском проспекте со шпилем на крыше — поэтому приведенные замеры имеют скорее теоретическую ценность, ибо предположительно на этом здании и сидят антенны операторов. Однако следует отметить, что в результате предварительных поездок в некоторых местах 3G модем просто теряет сеть (он настроен на принудительное 3G).

    Немного тонкостей о видео



    Сжатие видео таит в себе множество нюансов. У виртурилки на борту стоит DSP, специально обученный жать видео с кучей опций – вот описание некоторых параметров, доступных пользователю в скриптах запуска без необходимости программировать или пересобирать ядро, на сайте TI.

    Вообще снимаемые сцены можно условно разбить на две большие группы. Первая – это «псевдостатика», т.е. в кадре происходит не очень много движения. Например, картинка с веб-камеры из окна многоэтажки будет давать псевдостатическую картинку. Вторая группа – «активное движение», когда изображение постоянно претерпевает изменения. Например, если резко дергать камеру, крутить, или снимать сквозь боковое окно быстро едущего авто или поезда – это активное движение. Понятное дело, что при активном движении требуется гораздо более широкий канал передачи данных. Так вот, при даже очень слабом канале связи видео псевдостатической сцены может выглядеть изумительно и иметь высокую плавность. А видео с активным движением даже при хорошем канале может иногда «лагать» и дергаться.

    А рассказываю я это не просто так – один из режимов сжатия видео нашего процессора DaVinci заточен под ситуацию, когда идет активная смена сцены в кадре, канал передачи данных ограничен и нам очень нужна высокая плавность видео – т.е. хороший FPS. Этот режим включается установкой параметра ratecontrol равным 5 (пользовательские установки) а параметра rcAlgo равным 6 (детали см. по приведенной выше ссылке). При таком алгоритме сжатия на резко меняющихся сценах будет падать качество изображения, но сохранится высокий FPS. Рекомендую вам при работе с 3G модемами помнить об этой опции. Вообще такие тонкости имеет смысл учитывать когда вы планируете трансляцию – они могут радикально изменить ощущение от видеопотока. А DSP нашего процессора предоставляет широчайшие возможности для интересных экспериментов.

    О звуке


    Мы оттестировали работу с микрофоном и проверили трансляцию видео со звуком. Аппаратные вопросы решены (пропатчено конденсатором), а вот программные еще потребуют определенной работы с нашей стороны. Если среди хабраюзеров есть люди, решавшие на платформе DM365/368 проблемы вроде вот этой, которую мы словили – просим нам помочь. Отдельно звук передается без проблем, отдельно видео – тоже прекрасно работает, а вот в связке H.264 + AAC стабильной работы пока достичь не удалось.

    Поэтому дальнейшие боевые тесты мы проводим в режиме «только видео»

    Как будет проводиться живое тестирование


    Сегодня часиков после трех мы запустим живое тестирование в прямом эфире. Цель тестирования – проверить реальность стабильной HD видеотрансляции с виртурилки с помощью общедоступных средств сотовой связи в условиях, приближенных к обычной жизни. Транслятор будут путешествовать на машине несколько километров, чтобы гарантированно попасть в разные условия приема сотового сигнала, по участкам разной освещенности и с различной активностью сцен – от неподвижных до активных.

    Мы решили не делать последовательного тестирования разных модемов, а запустить три транслятора одновременно. Для этого три собранных устройства были закреплены в один ряд. Такие вот три мушкетера получились:



    Чтобы поток можно было идентифицировать, каждая из трех виртурилок будет накладывать поверх видео текстовую информацию о том, с какого провайдера и с каким битрейтом идет вещание.

    Домашнее применение


    Как вариант можно предусмотреть в корпусе отверстие, позволяющее виртурилке работать с родным модулем WiFi в домашних условиях. Он спокойно вытягивает поток в несколько мегабит. Правда, при этом у крышки остается только 3 из 4 точек крепления, поэтому мы такой вариант корпуса делать не стали — наш вариант рассчитан на активное использование и крышка должна держаться очень крепко.

    Можно вывести на боковую панель переключатель, который переводит виртурилку в режим точки доступа (для настроек) или в режим трансляции при перезагрузке.

    А вообще внутри-то у нас виртурилка — поэтому наворотов можно придумать море. Например кнопки для трансляции на различные сервисы, светодиоды с индикацией соединения и трансляции, градусник и так далее. Тут уж кто во что горазд.

    Ссылка на HD трансляцию по вайфаю из окна дома приведена в самом начале статьи.

    Размеры



    Приведенное здесь описание было сделано на базе типовой версии виртурилки без каких-либо оптимизаций. При этом корпус получился по длине и ширине меньше кредитки:



    Ближайшие планы


    У нас уже нарисована схема модуля для подключения к виртурилке видео HDMI, есть готовый модуль для захвата аналогового видео — но пока не написаны к нему драйвера. Также проведено подключение инженерного образца более крутой камеры ov5642, которая дает фантастически хорошую картинку. В общем, фронт работ по видео-части обрисован достаточно хорошо.

    Для производителей


    Если вы представляете компанию, которой интересна разработка или выпуск готового устройства, подобного описанному — свяжитесь с нами. Можно варьировать функционал и размер устройства — например, мы можем просто не устанавливать на плату боковые разъемы и стабилизатор напряжения, тогда толщина ограничивается лишь высотой разъемов USB и питания. Пишите на info@virt2real.ru или в личку на хабре.

    Спасибо что дочитали!


    Нам также интересно услышать ваше мнение — насколько будет востребовано вами такое устройство, если его довести от прототипа до серийного изделия. Приняв участив в мини-опросе, вы поможете нам понять, в верном ли направлении мы движемся.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Насколько вам интересно такое устройство?

    Virt2real
    46,00
    Компания
    Поделиться публикацией

    Комментарии 24

      0
      Эээмм, а где тесты то? Куча описания как сделать корпус и другую муть и ни одного слова о технической стороне проведения тестов, настроек виртурилок и.т.п.
        0
        Сейчас идет трансляция из окна, в 15-00 будут тесты из автомобиля. Ссылка вверху статьи.
        Про настройку и прошивку я тоже вроде написал — выложим уже готовую преднастроенную в ближайшее время (постараемся сегодня).
        +1
        А есть картинка с ov5642? В частности, интересует ночная съёмка.

        И ещё, на улице в герметичном корпусе виртурилка выживет?
          0
          Насчет улицы надо тестировать, но проба в холодильнике была успешной habrahabr.ru/company/virt2real/blog/197318/
          А насчет 5642 — как дорулим настройку полностью будем тестировать. На днях только завелась, не все регистры еще правильно прописали.
            0
            Чудненько.
            А имеющуюся камеру можете ночью тоже погонять?
              0
              Уже гоняли — слабовата она для ночи. Это же ov2643 — по сути фронтальная камера для мобильников. Я постараюсь сегодня на ночь оставить WiFi стенд, чтобы можно было посмотреть.
          +1
          Если сделаете дешевле или на уровне 150$, добавите HDMI с поддержкой 1080p и будет открытая прошивка то вы составите неплохую конкуренцию Livestream Broadcaster и аналогичным продуктам. (которые на территории России вообще не продаются)
            0
            Ну если готовый продукт делать то ценник будем стараться ужать конечно. Сейчас это просто первые прикидки.
              0
              Здравствуйте. А на форуме Вы не читаете личку? Тут вопрос появился по wi-fi модулю.
                0
                Здравствуйте! Читаю, но сейчас через 20 минут иду за руль — кататься с трансляторами по городу. (: Так что попозже смогу ответить.
                  0
                  Удачной поездки :). Жду ответа.
            0
            Вот страничка где собраны все видеопотоки: virt2real.ru/content/162
            Пошел на улицу. В статье update сделал. Волнуюсь страшно, но на то он и живой тест
              0
              Остановился проверить как дела. Вроде все три трансляции идут. Транслятор с йотой питается от прикуривателя, мтс и билайн от внешних аккумов. Могу ответить на горящие. Вопросы пока не поехал, минут пять постою.
                0
                Все работает, как надо. Круто!
                  0
                  Спасибо! :-) Продолжу живые тесты сегодня в 18:30 и завтра с утра.
              0
              Самое интересное для FPV-шников умолчали — какая задержка? Можете снять внешней камерой так, что бы секундомер и его отображение на экарне через Виртурилку были видны одновременно? Желательно — ещё и через WiFi.
                0
                Этот вариант не для FPV — тут идет трансляция на сервисы, которые сами делают буферизацию и добавляют лаг от 3 до 30 секунд.
                Для FPV надо вещать напрямую на управляющий девайс и по UDP — тогда 0,2-0,5 секунд будут.
                Еще для FPV возможен вариант, когда цифра захватывается, на нее накладывается OSD (в левом нижнем углу сейчас есть) и через видеовыход подается на аналоговый ретранслятор — тогда еще и с дальнобойностью вопросы решаются.

                Вообще по FPV и HD мы сейчас приступаем к исследованию вопроса на практике.
                  0
                  Круто… На мой взгляд, заниматься исследованием FPV без HD смысла мало — есть много решений и по OSD и по расстояниям… А вот HD — даже на 300 метров за вменяемые деньги нет :(… Реальным прорывом будет даже полноценное 800х480 в цифре, не говоря уж о 1280х720.
                    0
                    Напишите в личку, давайте сделаем работающий пример.
                      0
                      Стукнулся в Ваш Скайп…
                0
                Можно ли как то настроить вещание по запросу? Чтобы скажем модем потреблял трафик не постоянно?
                  0
                  Можно. У нас сейчас на борту есть gstd, который позволяет на лету останавливать или возобновлять трансляцию и менять ее параметры. Критерии начала/окончания трансляции можно придумать любые.
                    0
                    Я давно думаю над тем, чтобы собрать удаленное видеонаблюдение в гараж.
                    И это устройство почти идеально подходит.
                    Нет только нескольких вещей(лично для меня):
                    1. Вещание по запросу
                    2. Подсветка светодиодная
                    3. Включение по датчику движения и уведомление об этом меня(опционально)
                    4. Возможность быстрой смены аккумулятора или подключение внешнего

                    При этих условиях и не очень большой цены купил бы не задумываясь.
                    Автору удачи.
                      0
                      Все эти вещи на виртурилке легко реализуются. Вопрос только, в каком именно виде хочется это получить.
                      1. Вещание по запросу — это СМС, звонок, заход на страницу или срабатывание датчика открывания двери?
                      2. Подсветка — ну тут нет смысла комментировать, легко добавить обычную и ИК
                      3. Датчик движения — есть примеры датчиков, которые хотите подключить?
                      4. Аккумулятор — сейчас внешний как раз. При желании можно корпус потолще сделать и там аккумулятор разместить.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое