roboforum.ru

Технический форум по робототехнике.

Робот на базе роутера D Link DIR-320

Робот на базе роутера D Link DIR-320

esprit » 14 фев 2011, 07:33

==================================================================================================================
Вставка от =DeaD=

ВНИМАНИЕ!!! На рынке сейчас часто вместо DIR-320 продаётся DIR-320NRU - это совершенно другой по железу роутер и всё что тут описано к нему не имеет отношения. Будьте бдительны!

На текущий момент задача проброски видео и уарта на роутере D-Link DIR-320 решена полностью, при этом в рамках флеш-памяти роутера, т.е. для работы подключение каких-то флешек или usb-хабов не требуется.

Порядок модификации роутера для этой задачи подробно описан в вики на странице [[DIR-320]].

Кроме того от пользователя d3xr есть описание установки прошивки OpenWrt на DIR-320, оно находится на странице [[OpenWrt]]
==================================================================================================================


Вдохновленный темой http://roboforum.ru/forum40/topic5222.html, задумался над созданием робота на базе этого роутера. Первоначальный функционал - управляемый с компьютера робот по каналу Wi-Fi. Робот прошит (так скажем, не без усилий) прошивкой от http://vampik.ru/. На нем завелась Linux-подобная операционка, можно подключиться Телнетом. Задача первая научиться рулить роботом посредством операционной системы. На борту есть USB порт, говорят есть UART. Вот его лицо
face.jpg
, а это спина
back.jpg
.

Re: Робот на базе роутера D Link DIR-320

Grem » 28 ноя 2011, 17:23

Зачем? Они же выпустили SkypeKit :)

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 28 ноя 2011, 18:38

Ух ты, и правда, только вот влезет ли оно в DIR-320 ?

Re: Робот на базе роутера D Link DIR-320

d3xr » 28 ноя 2011, 20:49

Ну флеш не проблема. Я думаю добавление хаба не является такой большой проблемой, зачем вы так старательно этого избегаете? :) У меня вон стоит кардридер внутри, система на microSD карточке стоит, плюс 4 (или 3) USB появляется.

Кстати, есть же проект DebianWRT (что то вроде расширения OpenWRT вроде как), соответственно получаем несколько специфичную, но Debian. Не нее то наверняка должен скайп встать без проблем. Только как вот захватывать видео, и передавать команды из чата в консоль, ну или на uart...

Добавлено спустя 6 минут 22 секунды:
Эх, облом...

Список платформ, которые поддерживает SkypeKit
Linux-x86
Mac-x86
Windows-x86
Linux-armv5
Linux-armv6
Linux-armv7
Linux-mipseb
Linux-mipsel
Android (2.2 и выше)
WebOS

Немного технических данных
— аудио требует минимум 200 МГц ARM процессора
— видео требует минимум 400 МГц ARM процессора

Цены
Для выпуска собственного SkypeKit-based приложения требуется внести:
— $4000 на Acceptance test
— $4000 на саму сертификацию

Re: Робот на базе роутера D Link DIR-320

Grem » 28 ноя 2011, 21:09

А что за процессор на роутере?

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 28 ноя 2011, 21:16

DIR-320: CPU Broadcom BCM5354@240 / RAM 32 / Flash 4 / WiFi NIC Broadcom BCM4318 / 1 WAN / 4 LAN / 1 usb v.2.0

Re: Робот на базе роутера D Link DIR-320

boez » 29 ноя 2011, 10:22

Ну говорят что этот броадком это mipsel. А, и suart я когда собирал - как раз использовал компилятор под mipsel. Так что может быть. Но с лицензированием там какая-то муть, вот тут обсуждается: http://habrahabr.ru/blogs/skype/124321/

Вроде как себе на побаловаться можно его получить за 10 баксов.

А вообще еще года 3-4 назад писали, что китайцы ломанули протокол скайпа. Ну и где они подевались с результатами???

Re: Робот на базе роутера D Link DIR-320

Tsi329 » 29 ноя 2011, 10:40

Народ, нужна ваша помощь. Заканчиваю работу над проектом по открытию видео с mjpg-streamer средствами OpenCV, но застрял с проблемой.
Сделайте, пожалуйста, следующее:
Любым загрузчиком файлов из инета (у меня IDM) скачайте по ссылке файлы с вашей включенной камеры DIR-320.

http://192.168.1.40:8080/?action=snapshot

, где 192.168.1.40 IP Вашей камеры, а 8080 - порт mjpeg-streamer-а.

Сделайте, пожалуйста, штучки три-четыре. И вышлите их мне.
Я уперся в проблему и не понимаю, это только у меня так или у всех.

Если есть вопросы, задавайте!
Заранее спасибо!

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 29 ноя 2011, 10:45

Вечером буду пробовать прошивку новую, попробую скачать файлы, если всё по плану будет.

Re: Робот на базе роутера D Link DIR-320

elmot » 29 ноя 2011, 15:24

С подачи DeaD и еще одного человека, здесь не представленного, и в результате 3х-дневных бдений у меня родилась своя собственная версия прошивки для DIR-320.
Кратенько так:
Что включено?
авто-логин в сеть wifi как клиент со статическим IP
автозапуск mjpeg-streamer с поддержкой камеры
автозапуск ssh сервера
webface http(s) с опциональной авторизацией
простая страничка с видом из камеры
настройка wifi
защита WPA-PSK/WPA2-PSK,NONE
имя сети SSID
пароль
static IP, netmask, GW, dns
настройка камеры (номер, MJPEG/YUV, frame rate, resolution)
настройка Web-сервера
http да/нет
https да/нет
консоль linux отцеплена от uart, некоторое количество данных от загрузчика, но после загрузки OS uart доступен для работы периферии, система не лазает в UART.
доступ к UART через HTTP/HTTPS пока только на запись
Нерешенные проблемы
Задержка видео. При использовании 160*120 30 fps она минимальная, но есть. Надо пробовать gstreamer/rtp
Нет человеческого способа менять пароли, только через SSH консоль.
Камера шарик logitech глючит в режиме в режиме mjpeg, лечится включением YUV.
Проблемы с ARP протоколом.
Пришлось сделать костыль, по вайфай ходит ARP broadcast раз в секунду.
Это все равно не помогает wifi устройствам в той же сети. Сидящие на кабеле видят, wi-fi в той же сети - нет. Надо пробрасывать порт на раутере или что-то в этом роде.
Защита. Такую штуку надо держать на защищенном протоколе. Сейчас видео идет по http порт 8080 вообще открыто, вебморда и управление - либо http либо https, либо с паролем, либо без. Самый правильный способ - https+пароль. Но https в данной конфигурации тормозит жутко. Похоже, http сервер на раутере на каждый запрос пересоздает SSL подключение, а это небыстрое дело.
Webface написана на чем попало, поэтому может быть много ошибок, ее неудобно расширять.
Webface содержит явную недоделку - когда заходишь на страничку настройки, то она показывает не текущие значения из конфигов раутера, а ее собственные дефолты

Добавлено спустя 9 минут 16 секунд:
А зачем скайп-то? Гемора много, а плюсов он, по-моему не даст никаких. В скайпе тоже задержки будь-здоров не кашляй. Единственный его плюс - гулять по сетям пробивая файрволлы, с видеосвязью в обе стороны и в конференцию. Для роботских задач это не очень нужно.
Потом, по-моему не надо путать, требования скайпа 400MHz ARM, а в этом раутере почти вдвое меньше и MIPS(точно mips, сам компилял). Новый некошерный DIR320NRU - тоже MIPS(RALINK5350) и 360 MHz, все равно не дотягивает.

Добавлено спустя 1 час 24 минуты 47 секунд:
Забыл указать - прошивка на базе OpenWRT 10.03

Добавлено спустя 1 час 21 минуту 4 секунды:
Tsi329 писал(а):Народ, нужна ваша помощь. Заканчиваю работу над проектом по открытию видео с mjpg-streamer средствами OpenCV, но застрял с проблемой.
Любым загрузчиком файлов из инета (у меня IDM) скачайте по ссылке файлы с вашей включенной камеры DIR-320.

Попробуйте wget. У него вроде был порт под винду. Проблема может крыться в том, что mjpg-streamer предоставляет http 1.0, а везде давно принят 1.1

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 29 ноя 2011, 23:40

Короче итоги тестирования прошивки - с некоторыми заморочками (надо будет поправить прошивку), но удалось подцепить DIR-320 в качестве клиента к домашней вай-фай сети. После чего проверили работу с новой веб-мордой и проброску видео, полный успех. Тестировали на:

1. Настольный ПК с WinXP, подцепленный к домашнему роутеру через провод;
2. Ноутбук с Vista, подцепленный к домашнему роутеру через вайфай;
3. Нетбук с Win7, подцепленный к домашнему роутеру через вайфай;
4. Смартфон Highscreen Cosmo с андроидом и браузером Opera Mobile (штатный не показывал видео), подцепленный к домашнему роутеру через вайфай;

Везде полёт нормальный.

Кроме того пока есть проблемы с работой в MJPEG режиме, выдаётся мусор, как тут уже ранее в теме описывалось, пока лечится YUV-режимом.

В целом - большой шаг вперед.

Re: Робот на базе роутера D Link DIR-320

Tsi329 » 30 ноя 2011, 11:41

=DeaD=, не забыли ли Вы про мои файлы с камеры?

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 30 ноя 2011, 11:46

Не забыл, но не успел :( в полвторого ночи только закончил тестирование с прошивкой. Надеюсь сегодня всё будет оперативней и я успею для вас файлы выгрузить.

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 30 ноя 2011, 20:18

Tsi329 писал(а):Сделайте, пожалуйста, следующее:
Любым загрузчиком файлов из инета (у меня IDM) скачайте по ссылке файлы с вашей включенной камеры DIR-320.
http://192.168.1.40:8080/?action=snapshot
, где 192.168.1.40 IP Вашей камеры, а 8080 - порт mjpeg-streamer-а.
Сделайте, пожалуйста, штучки три-четыре. И вышлите их мне.

Держите:

Добавлено спустя 1 минуту 12 секунд:
Протестировал новую версию прошивки - теперь соединяется с wifi без проблем.
mjpeg тоже работает без косяков. Еще один большой шаг вперед.
Вложения
test-images-x4.zip
(66.88 КиБ) Скачиваний: 0

Re: Робот на базе роутера D Link DIR-320

tenik » 30 ноя 2011, 21:13

а suart в новую прошивку можно сразу встроить?

Re: Робот на базе роутера D Link DIR-320

=DeaD= » 30 ноя 2011, 23:28

Надо будет, еще не проверял, сейчас пробую получить видео или snapshot'ы с камеры.

Добавлено спустя 27 минут 20 секунд:
Покадровый захват видео в Qt Creator под OpenCV получился, правда через нетрадиционную медицину, но всё равно:

Шаг 1. В файл проекта .pro дописываем строку "QT += network"

Шаг 2. Добавляем в основной класс приложения (окна, где будет видео) заголовки:
Код: Выделить всёРазвернуть
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QFile>


Шаг 3. Добавляем в основной класс метод:
Код: Выделить всёРазвернуть
void downloadFinished(QNetworkReply *reply);



Шаг 4. Добавляем в конструктор основного класса строки:
Код: Выделить всёРазвернуть
connect(&manager, SIGNAL(finished(QNetworkReply*)),
            SLOT(downloadFinished(QNetworkReply*)));


Шаг 5. Прописываем в событии по таймеру основного класса строки:
Код: Выделить всёРазвернуть
QString url="http://192.168.1.120:8080/?action=snapshot";

    QNetworkRequest request(url);
    QNetworkReply *reply = manager.get(request);


Шаг 6. Прописываем в метод "downloadFinished(QNetworkReply *reply)" содержание:
Код: Выделить всёРазвернуть
QString filename="c:\\dir320\\img0.jpg";

    QFile file(filename);
    if (!file.open(QIODevice::WriteOnly)) {
        fprintf(stderr, "Could not open %s for writing: %s\n",
                qPrintable(filename),
                qPrintable(file.errorString()));
        return;
    }

    file.write(reply->readAll());
    file.close();

    IplImage *image=cvLoadImage("c:\\dir320\\img0.jpg");
    assert(image);


ну и дальше там внутри делаем чего хотим с ним, например:
Код: Выделить всёРазвернуть
CvSize size2; size2.width=320; size2.height=240;
    IplImage *image2=cvCreateImage(size2, IPL_DEPTH_8U, 3);
    cvResize(image,image2);
    if(!invertVertical) cvFlip( image2, NULL, 0); //Flip vertical if need
    if(!invertHorizontal) cvFlip( image2, NULL, 1); //Flip horizontal if need
    cvwidget->putImage(image2);


Добавлено спустя 1 час 17 минут 11 секунд:
Скриншот с вебморды
or-html.zip
Сам html-файл вебморды для управления роботом.
(1.29 КиБ) Скачиваний: 0


для управления роботом на базе OR-AVR-M128-DS (проверено на реальном контроллере, подцепленном к DIR-320 - управление шасси + сервой поворота камеры):
Вложения
or-dir320.jpg


Rambler\'s Top100 Mail.ru counter