— Ты пил пиво, — тихо заговорил Джо. — Плохо работал консервный нож.
Ты сказал, что сам смастеришь консервный нож, побольше и получше. Это я и есть.
© Генри Каттнер, «Робот-зазнайка»
Кто-бы мог подумать, что мы своими руками сможем разработать такую красавицу и умницу. Мало того — не просто разработать на бумаге, а ещё и получить десяток работающих образцов.
Картинка Для Привлечения Внимания
Пролог
Давным-давно мы с коллегой начали заниматься управлением через Интернет всякими штуковинами типа вебкамер и маленьких машинок. Чуть позже у нас появились ездящие девайсы посерьёзнее, способные нести на борту свой контроллер и ёмкую батарею. К тому же я увлёкся всякими летающими штуковинами — самолётами и коптерами, что внесло дополнительную лепту в список хотелок.
Не покидала мысль о том что хорошо бы сделать видео не «вид сбоку или сверху», а вид с борта девайса, от первого лица. То что самолётчики/коптеристы называют FPV. Было это примерно пару лет назад. Пробовали ставить на машинку аналоговую камеру и передатчик, принимали видео на ТВ-тюнер, далее отдавали на видеосервер для раздачи рулящим машинками. Но сразу всплыли нюансы — одновременно можно транслировать только 3-4 видеопотока, иначе появляются наводки с одного канала на другой. Плюс дороговизна такого решения, плюс проблемы с разрешёнными частотами, плюс паршивое качество картинки с постоянно появляющимися помехами… В общем, попробовали и забили на это дело. К тому же, возможностей управляющего контроллера (тогда всё было сделано на базе всем известной Ардуинки) начало нехватать. Стали искать другие варианты, чтоб было недорого, дёшево, удобно и практично. Но имеющиеся в продаже (за границей, само собой и с довольно высокой стомостью) на тот момент железки для нужд не подходили. Одни умели всё кроме видео, другие умели только видео, но не позволяли подключать периферию, и т.д. и т.п.
Поискали подходящие контроллеры в продаже в России — есть в малых количествах и за дикие деньги. С двойной, а то и с тройной накруткой. А нам-то не одна-две штуки нужно, нам надо много таких контроллеров. А кошелёк не резиновый. Да и потакать ценовому беспределу перепродающих посредников как-то не хотелось.
Попробовали заказать отладочную плату, дабы на ней смастерить девайс, который мог бы управлять машинкой и передавать видео. Но столкнулись с проблемой — забугорные магазины не хотят отправлять контроллеры в Россию, так как они находятся в списке А — товары двойного назначения. То есть устройства, которые можно применять и в мирных, и в военных целях. На первый взгляд — бред полный, но по факту так оно и есть. Все контроллеры, которые нас устраивали по функционалу, находятся в том злополучном списке. Я лично звонил в Farnell и имел увлекательную получасовую беседу с милой (надеюсь) девушкой, которая с тысячей извинений сообщила что они не могут отправить нам требуемую железку (если не ошибаюсь, это был BeagleBoard). Именно она сообщила что в Евросоюзе свято блюдут все правила, так что просто так они отправить не могут, а чтоб отправить им надо получать сертификат на железку, причём сертификат действует ограниченное время и получается для каждого заказчика. Срок получения сертификата — около месяца, и совсем не факт что он будет получен. Помимо этого, от заказчика (т.е. меня, в данном случае) потребуется рукописный документ, заверенный у нотариуса, где будет полное описание планируемого использование железки. Я уж было собрался писать такой документ, но девушка попросила не напрягать их зря, ибо вероятность получения положительного результата очень ничтожна, а иметь такой ге… иметь такие проблемы из-за штучной продажи им абсолютно невыгодно.
После этой неудачной попытки мы попробовали заказать железки из штатов. Железка называлась LeopardBoard. Её нам выслали без лишней нервотрёпки, но проблемы неожиданно всплыли на нашей, российской, таможне. Пришла бумажка от таможенников по почте, где от нас требовали доказать что вожделенная железка не имеет на борту модулей сильной криптографии и ещё чего-то (уж не помню, чего именно, извиняйте). Коллега лично съездил на таможню, но ничего путного втолковать им не удалось — железка пролежала на таможне около месяца, после чего уехала обратно к отправителю.
После таких мытарств мы окончательно обозлились на весь мир и стали думать, что делать.
В один из дождливых осенних дней ко мне в гости заглянул тот самый питерский коллега, с которым засели на кухне и, попивая пиво, начали задушевный разговор про то, кто и что интересного придумал, чтоб решить нашу проблему с выбором железа. Когда выпито было уже довольно много, коллега изрёк мысль, которая поначалу показалась дикой. А почему бы, сказал он, нам не сделать свой луна-парк, с блэк-джеком и шлюхами контроллер. Который был бы изначально заточен на подключение разной периферии (цифровая камера, моторы, датчики, светодиодики, динамик и т.д.), имел бы на борту какою-нибудь беспроводную связь (wi-fi или bluetooth) и был бы неприхотлив насчёт питания. Чтоб можно было взять тележку (машинку, танк, самолёт, коптер, далее продолжать по вкусу), воткнуть в неё железку-контроллер, добавить необходимых датчиков, запитать всё от любой имеющейся батарейки или аккумулятора и в результате получить готовую управляемую умную штуковину.
Оставшаяся часть вечера ушла на бешеное фантазирование на тему того, сколько всего разного интересного управляемого можно сделать, заимев подходящий контроллер…
Сформулировался список требований для железки:
— Низкая цена конечного устройства!
— Мощный процессор, умеющий аппаратно жать видео в H264 (т.е. имеющий соответствующий DSP)
— Интерфейс для подключения цифровой камеры
— USB-host для подключения периферии (особенно актуальны 3G/4G модемы)
— Низкое энергопотребление
— Широкий диапазон напряжения питания
— Малые размеры (чтобы можно было установить в небольшую машинку, например)
— Linux на борту (большое количество уже разработанного софта)
— Беспроводная связь на борту (Bluetooth не рассматривали, только Wi-Fi)
— Проводная связь (Ethernet)
— Аппаратный генератор PWM
— Большое количество пинов ввода-вывода, для подключения разнообразной периферии
— Композитный видеовыход (для передачи видео с помощью аналоговых видеопередатчиков)
Прошло некоторое время. Та дикая идея, высказанная под пивко, начала потихоньку реализовываться. Выбрали подходящую SoC с DSP на борту, умеющую на лету обрабатывать и жать видео в h264 с приемлемой задержкой. Которая, к тому же, имеет кучу всего в своём составе (пины ввода-вывода, или GPIO, плюс всевозможные интерфейсы). Это проц семейства DaVinci фирмы Texas Instruments — TMS320DM365. Digital Media System-on-Chip (DMSoC). www.ti.com/product/tms320dm365 На выбор очень повлияла цена процессора, его возможности, а так же сферы его применения — он очень широко используется в IP камерах, видеорегистраторах, мультимедиа-плеерах, и т.д. и т.п.
Далее осталось «всего лишь» разработать плату на базе этого процессора. На этом этапе мы слегка забуксовали, но вскоре нашли своего человека, который согласился заняться разработкой.
В это время (лето 2011 года) мы впервые услышали загадочное слово «Raspberry PI» 🙂 Первый анонс этой железки на Хабре слегка встревожил, ибо буржуи заявили о разработке девайса, который очень близок к тому что мы долгое время искали, а потом решили сделать самостоятельно. Но, прочитав всё про эту Малинку, успокоились — железка хоть и довольно близка к нашей, в практическом применении вот лично нам не подходит. Ибо RaspberryPi, всё-таки, больше ориентирована на десктопное применение, хотя и имеет возможность подключения периферии для DIY применения. К тому же цена с учётом доставки получается довольно высокой, учитывая необходимость добавления вайфая, камеры и т.д. Примерно в то же время появились другие аналогичные железки (Beagleboard, Beaglebone, Pandaboard и т.д.), но ни одна из железок в полной мере нам не подходила. Это придало нам сил, поскольку мы окончательно осознали, что движимся в верном направлении.
Кстати, когда в очередной раз звонил в Farnell насчёт Raspberry Pi, поинтересовался у них — почему BeagleBone находится в списке экспортных ограничений, а Raspberry — нет. Толком мне ничего не разъяснили, но подтвердили — Малины в этом списке нет. Возможно, пока нет 🙂
Процесс разработки проходил довольно весело. Прям-таки мечта поэта. Сидишь, придумываешь что бы ты хотел чтоб было на борту, а Александр (коллега, непосредственно занимающийся именно схемотехникой железки) либо говорит «да легко, блин» и добавляет только что придуманный функционал в схему, либо отвечает что «не, шибко дорого выйдет» и предлагает другой вариант.
Вся разработка происходила в свободное от основной работы время (т.е. по вечерам-ночам) и на собственные деньги. Точнее, на деньги одного из коллег, который по мере возможности финансировал весь проект и всю нашу команду. Так что на полном серьёзе на железку можно лепить наклейку «Разработано и сделано в России». Правда, из импортных деталей, тут уж ничего не поделаешь. К сожалению, нужных микропроцессоров и прочих деталей которые произведены в России мы не нашли.
Итак, спустя некоторое время у нас появился полный комплект документации для производства железки. К тому времени уже придумали название. Я ехал в машине, слушал радио, думал про железку, про машинки и про то как бы не врезаться в дамочку на жёлтой бэхе, которая очень коварно меня подрезала на перекрёстке у торгового центра XXL. А по радио «Эхо Москвы» как раз шло обсуждение очередной акции оппозиции и ведущий произнёс фразу «добро пожаловать в реальность». И как-то само собой в голову пришло сочетание — виртуальность в реальность, вирт в рил, virt2real. Тут же отзвонился коллеге в Питер, который название одобрил и которому тоже как раз нечто аналогичное на ум пришло. В общем, название сразу прижилось. А железку, соотвественно, стали называть «виртурилкой».
Для отладочных целей было решено изготовить десять сэмплов. Что и было сделано на одном из московских предприятий. Фактически, с первого раза мы сделали образец максимально приближенный к серийному.
Virt2real в сборе — два этажа
Virt2real в разобранном виде. Мелкая платка — для отладочных целей, в конечном виде слот для microSD и USB будут на основной плате.
Разобраный бутерброд, другой ракурс.
Первый этаж чипами наружу
Вы не представляете (ну, за исключением тех людей, кто часто занимается разработкой девайсов) что это такое — держать в руках готовую плату, которую придумали год назад, сидя на кухне и попивая пиво. Это кайф, восторг и гордость в энной степени. Пусть даже это всего лишь сэмпл, в котором уже нашли пару косяков.
В общем, дальше последовал процесс ловли багов. Хотя, надо сказать, Александр поработал отлично — всего пара-тройка косяков при таком объёме железа это отличный результат. Тем более что косяки получилось устранить довольно оперативно. К сожалению, нет видео, на котором было бы заснято как мелкой фрезой бурили скважину до третьего слоя платы (всего у платы 10 слоёв), чтобы поменять местами линии линии дифференциальной пары. Это было эпично 🙂
Постепенно, по мере ковыряния с виртурилкой, всплыли ещё мелкие нюансы, которые на качество эксплуатации не влияют, но если их сделать немного по-другому — было бы удобнее. Такие мелкие исправления отложили до следующего этапа — мелкой серии, в которой можно было бы сразу все выловленные недочёты и неудобства пофиксить.
Самая сложная и неприятная часть разработки поджидала нас там где ее, честно говоря, не особо ждали. Сложнось заключалась в том, что никто из команды никогда не занимался портированием Линукса на различные аппаратные платформы. То есть вообще как это делается мы знали, даже был опыт написания своей ОС, для своих специфичных задач, WinCE опять же портировали, но Linux-ом как-то судьба не сводила до этих пор. А оказывается есть хорошие сборки Линукса, если плохие… Для оживления платы мы воспользовались SDK от RidgeRun. Этот SDK распространяется на платной основе, но для некоммерческих применений его можно попользовать даром. От софта требовалось обспечить работу с оборудованием и вообще посмотреть, на что она способна. RidgeRun нам приглянулся тем, что там есть поддержка реальной платы на DM365 (Leopard Board), включена поддержка аппаратых кодеков и достаточно неплохая файловая система. Но как обычно, дьявол кроется в деталях (за подробносями можно обратиться к классической работе freeworld.thc.org/root/phun/unmaintain.html). Оказалась, что этот SDK путем несметного количества костылей и подпорок заточен именно под ту железку для которой он изначально создвался — LeopardBoard. Шаг влево — шаг вправо и все разваливается так, что потом даже не собирается. Причем выполнение make clean (внимание!!!) приводит к тому, что не только удаляются следы жизнедеятельность компилятора, но и исходные коды тоже перезаливаются из RidgeRun-овского репозиторя — прощайте изменения. Видимо разработчикам SDK в голову не приходило, что кому-то зачем-то может потребоваться править их код. По странному стечению обстотельств у нас 90% времени ушло как раз на борьбу с SDK вместо того, чтобы реализовать то, что мы хотим. Однако в конечном итоге SDK не устоял под напором и железка заработала.
В общем, итогом работ по портированию SDK RidgeRun стало решение разработать свой SDK для нашей платформы.
Вот на этой стадии мы сейчас и находимся — железку можно хоть завтра в серию, а вот с SDK пока не всё так как хотелось бы. Что, впрочем, не влияет на юзабельность — виртурилка уже прекрасно рулит тележкой и лодочкой (см. видео в конце топика) 🙂
В плане применения конечным пользователем-дуитёселфщиком предполагаем три уровня:
1. Начинающий — железка с нашей прошивкой, SSH-доступом и веб-админкой. Юзер может заливать свои скрипты на языках высокого уровня (PHP, Node.js, Perl, Python, Erlang) или готовые кросс-копилированные исполнимые приложения.
2. Продвинутый — всё то же что и для начинающего плюс SDK для сборки своих и любых сторонних приложений
3. Профи — использует сторонние дистрибутивы и SDK (Arago / OE / Angstrom / прочее)
Сейчас на борту доступны высокоуровневые языки программирования из обычного джентльментского набора — PHP, Node.js, Perl, Python, Erlang. Про Bash вообще молчу. Данного комплекта достаточно для удовлетворения 80% потребностей в плане управления ездящими штуковинами. Для оставшихся 20% — C/C++, но требуется кросс-компиляция.
Практически весь функционал контроллера доступен из «админки» — самописного управляющего веб-интерфейса. Удобно — не надо в консоль лазить.
Пролог закончился, теперь самое интересное — описание платы.
Устройство virt2real, «Виртурилка», изготовлена на базе процессора фирмы Texas Instruments семейства DaVinci TMS320DM365. Возможна установка более мощной модификации, TMS320DM368 (400Mhz), они полностью совместимы по ногам.
Так как изначально планировалось применение на борту управляемых железок, на плате не стали монтировать цифровой видеовыход, хотя проц это позволяет (HDMI). Возможно, добавим в специализированной версии платы. Зато на борту есть аналоговый видеовыход, т.е. можно видео и при помощи аналогового видеопередатчика передавать, что довольно актуально при управлении на дальних расстояниях.
Монтажная плата (собственно, сам контроллер)
Устройство — двухэтажное.
Первый этаж — основная плата, на которой, смонтированы все основные модули. Плата имеет десять слоёв.
Второй этаж — плата расширения. Разрабатывается отдельно для каждого конкретного применения, в случае серийного выпуска конкретного изделия. На данный момент второй этаж общий для DIY применения. На него выведены сигналы GPIO, RG45. Смонтированы силовые чипы и от них разведены клеммные колодки для подключения силовой нагрузки — моторов, лампочек и т.д.
Размеры: 70х42х10мм (первый этаж)
Процессор
ARM9 210-300Mhz (ARM926EJ-S rev 5) On-Chip L1 Cache 32 KB (ARM9)
Технология ARM® Jazelle®
Объем кэша команд — 16КБ
Объем кэша данных — 8КБ
Объем встроенного в процессор ОЗУ 32КБ
Little Endian
Два видео-сопроцессора (HDVICP, MJCP)
Часы реального времени PRTCSS (Power Management and Real Time Clock Subsystem)
Четыре 64-битных таймера общего назначения
Один 64-битный таймер Watch Dog
Процессор выполнен по 65nm технологии
Расширенный температурный диапазон (-40°C — 85°C) (для варианта процессора в индустриальном исполнении), для обычного —
DSP
Аппаратное ускорение MJCP и HDVICP
Аппаратная поддержка H.264, MPEG4, MPEG2, MJPEG, JPEG, WMV9/VC1
Разрешение кодируемого видео D1 и меньше, 720p (1080p для DM368) 30 fps
Видеоподсистема
4:2:2 (8-/16-bit) интерфейс
8-/16-bit YCC до 24-бит RGB888 цифровой выход
Аппаратный On-Screen Display (OSD)
Интерфейс IPIPE (IPIPEIF)
ISIF (Image Sensor Interface) и CMOS Imager Interface
Histogram Module
Lens distortion correction module (LDC)
Hardware 3A statistics collection module (H3A)
Композитный NTSC/PAL видеовыход
Компонентный видеовыход (соответствующие сигналы выведены на второй этаж, но предстоит реализовать конечную поддержку)
LCD (поддерживается процессором, но в текущей версии платы не используется. Будет задействован в следующих версиях)
Память
DDR2 128 — 256Mb
NAND 256Mb
Интерфейсы и периферия
GPIO — 51 шт. Логические уровни 3.3В и 1.8В
PWM — 4 шт
I2C
SPI — 5 шт
UART — 2 шт
DAC — 3 шт
ADC — 6 шт
USB 2.0 High-Speed host port
USB-клиент
microSD
Аналоговый компонентный видеовыход
Аналоговый композитный видеовыход (максимум 480p)
Аудиокодек CQ93VC (AAC-LC,G.711,MP3,WMA)
Линейный аудиовыход (моно)
Аудиовыход на спикер (моно, 300 mV на нагрузке 8 ом)
Аналоговый микрофонный аудиовход
10/100Mb RJ45 Ethernet
Вход для цифровой камеры
Wi-Fi b/g (чип HDG104)
Разъёмы для подключения силовой нагрузки (моторы) (3 микросхемы L293D)
McBSP интерфейс (Multi-Channel Buffered Serial Port)
Камера
На данный момент опробованы OV7690, OV7675 (шина 8 бит), вообще должны работать любые с шиной 8/10 бит, при наличии драйвера соответствующей камеры
Питание
2.8 — 15 Вольт. Потребляемый ток (основная плата при включённом wi-fi) при напряжении > 5В — 220mAh. При напряжении питания меньше чем 5В, потребляемый ток больше. Источник питания схемы выполнен по схеме SEPIC, который может как повышать так и понижать питающее напряжение для того, чтобы обеспечить необходимые напряжения в схеме, например при питании от 3-х вольт плата все равно выдаст требуемые 5В на USB.
Модули расширения
Вообще, второй этаж был задуман так, чтобы позволить легко реализовать специфику разнообразных пользовательских приложений. На второй этаж заведены всевозможные питающие напряжения и интерфейсы, при том, что используются стандартные PLD разъемы с шагом 2.54 мм. Если очень захочется, человек может сам в домашних условиях, разработать, нарисовать вытравить и распаять плату для решения своей задачи — требования к ней практически никаие не предьявляюстся. И он получит компактное устройство с мощным процессором для решения сових задач. Можно наоборот, интегрировать плату в собственную разработку. Вся необходимая информация будет предоставлена. Не надо вдаваться в дебри про то, как устроен процессор и его периферия.
Операционная система
Linux 2.6.32.17
Android
SDK RidgeRun (на данный момент), MontaVista, Arago/OE, Angstrom,
Демонстрационные ролики
Помня умную поговорку про то что лучше один раз увидеть, чем сто раз услышать, отснял несколько демонстрашек, где показаны некоторые аспекты использования виртурилки. Само собой, это всего лишь капля в море всех возможных вариантов, но хоть что-то для затравки.
Итак, видео №1 — Общий обзор девайса virt2real (или же Виртурилки)
Видео №2 — Самое Главное Видео. У всех ардуинщиков должно пробить слезу ностальгии, ибо здесь заснято моргание светодиодом.
Видео №3 — Установка виртурилки на гусеничную платформу. Часть 1.
Кстати, шасси тележки очень даже неплохое. Называется DAGU RP5, купить можно здесь (МСК). Ни разу не реклама, просто я стопицот раз в этом магазине заказывал разную мелочёвку, привозят быстро и без лишней нервотрёпки. Хотя, в принципе, да — это моя им бесплатная реклама 🙂 Честно — магазину респект, все бы так работали.
Видео №4 — Установка виртурилки на гусеничную платформу. Часть 2.
Видео №5 — Гусеничная платформа, управляемая Virt2real, в дейтсвии
Видео №6 — вид с борта тележки из прошлого видеоролика
Видео №7 — установка виртурилки на борт радиоуправляемой лодочки, дабы сделать управление оной со смартфона (конечно же, с видео с борта)
Видео №8 — продолжение прошлого видеоролика про установку железки на лодочку.
Видео №9 — Автономная трансляция на видеосервер
Видео №10 — Использование 3G модема и автономная трансляция видео (через RTMP) на видеосервер
Видео №11 — Виртурика как аналоговая камера (используется композитный видеовыход)
Видео №12 — Снова Виртурилка как аналоговая камера, но на этот раз — с OSD. Т.е. с отдельным слоем поверх видео
Небольшое пояснение: так как виртурилка, в первую очередь, задумывалась как контроллер для управления ездящих/летающих/плавающих девайсов — на борту отсутствует цифровой видеовыход. Т.е. к ней нельзя подключить монитор. Зато можно подключить аналоговый видеопередатчик, что актуально для летающих платформ с дальнобойным видео (самолёты/коптеры). Дальнобойное видео пока только аналоговое, так что именно под него мы и подстраивались. У виртурилки есть НЧ-видеовыход (композитный), который можно подключить к видеопередатчику, чтобы передавать видео далеко-далеко. Одновременно с этим видео можно записывать на SD-карту.
Помимо композитного выхода есть ещё и компонентный выход. Его не так просто по воздуху передать, так что его оставили пока незадействованым.
Видео №13 — Виртурилка и FPV видеопередатчик
Само собой, это лишь несколько небольших примеров. Возможностей у железки — море. Получилось даже больше, чем планировалось. А это очень даже неплохо, так как аппетит приходит во время еды. По мере осваивания новых, ранее неизвестных, функций, модернизируем и первоначальное использование. А когда выясняется что некий функционал практически поддерживается, но не хватает небольшой обвязки — вносим изменения в схему железки, или дополняем плату расширения.
Таким образом появилась идея использовать виртурилку как видеомодуль домашней охранной сигнализации. Просто до безобразия — я собрался на этаже (где моя квартира расположена) сделать видеонаблюдение. Ибо всякие нехорошие люди начали стены разрисовывать, бумажки всякие поджигать, и просто-напросто шалить. Собрался поставить видекамеру наблюдения, но всплыли проблемы — тот комп, который у меня круглосуточно функционирует, не имеет платы видеозахвата. Да и нагружать его дополнительной заботой как-то не хочется. Так что нужно чтоб видео с камеры наблюдения приходило уже в цифровом виде, чтоб его только на диск записать.
Само собой, сразу возникла идея использовать виртурилку в качестве главного блока домашнего видеонаблюдения. Но вот беда — у платы есть разъём только для цифровой видеокамеры. А CMOS камеры не славятся светочувствительностью, что довольно актуально в условиях лестничной площадки, где довольно паршивое освещение.
Написал коллеге о проблеме, в результате чего появилось решение — к виртурилке, в разъём цифровой видеокамеры, подключается небольшой переходник, который имеет несколько входов для обычных аналоговых CCD видеокамер. Мощности DSP хватает на оцифровку сразу четырёх камер (в случае DM365) и восьми (для DM368). В системе видится несколько устройств (/dev/video0, /dev/video1 и т.д.), каждое из которых можно обрабатывать — ужимать в h264 и либо сохранять на SD карту, либо передавать по сети. Вот и получилось требуемое — виртурилка оцифровывает картинку с нескольких камер и передаёт на сервер.
Данный функционал пока не могу продемонстрировать, ибо плата-переходник пока в разработке. Но как только сделаем — будет соответствующее демонстрационное видео.
Ещё интересный функционал по обработке видео предоставляет OpenCV. Эта бибилиотека есть на борту, но в плане практического применения я ещё её не проверял, извиняйте.
Эпилог
Изначально мы планировали использование железки только в DYI проектах, особенно в плане дистанционного управления (через Интернет и локально, с обычных компов, со смартфона, с планшета и т.д.) разными механическими девайсами. Но постепенно пришли к выводу что возможно применение и в конечных промышленных девайсах. Так как мы являемся авторами-разработчиками и имеем все возможности для модификации платы под конкретные нужды, можем выкинуть всё лишнее и оставить только необходимое (для удешевления конечного устройства) и выпустить, например, видеорегистраторы на базе нашей платформы. Видеорегистратор с подключением к беспроводной сети (Wi-Fi или 3G/4G) — можно сразу видео транслировать на видеосервер или подключиться к машине удалённо и посмотреть что в ней творится, и т.д. и т.п. Вариантов конечного применения — море. Тут уж всё будет зависить от того, что предложит заказчик или инвестор.
Если у вас есть предложения по сотрудничеству — пишите письма. С креативными идеями — велкам в комменты.
Официальный сайт — http://virt2real.ru
e-mail — info@virt2real.ru
Youtube канал — http://www.youtube.com/user/virt2real
Twitter — http://twitter.com/virt2real
P.S. Пользуясь случаем, хотелось бы от лица всех разработчиков высказать глубочайшее почтение и уважение нашим супругам. Которые довольно долгое время терпели наше просиживание за компьютерами. А мы занимались разработкой, вместо того чтобы уделить внимание своим половинкам. Мы вас любим и стараемся на ваше же благо. Чмоке-чмоке, короче.
ссылка на оригинал статьи http://habrahabr.ru/post/156491/
Добавить комментарий