OR-WRT
Содержание
О проекте
Этот проект создан в рамках более крупного проекта Open Robotics, направленного на создание доступных и повторяемых платформ для любительской (и не только) робототехники. Суть проекта - готовая прошивка для сетевого оборудования, позволяющая удобно и без множества ручных настроек и перепрограммирования использовать его в робототехнике в качестве WiFi адаптера для UART и USB-устройств (пока поддерживаются только UVC-вебкамеры и некоторые USB-UART адаптеры).
Поддерживаемое оборудование
Раутеры
- Беспроводные роутеры: D-Link DIR-320 (обычный, не NRU!),
- другие раутеры на базе SoC Broadcom BCM47xx/53xx (не проверялось)
- возможна модификация прошивки поддержки других устройств с USB и совместимых с прошивкой [http://openwrt.org/]
Вебкамеры
Все UVC-камеры (список тут — [http://www.ideasonboard.org/uvc/]) Лучше, чтобы камера поддерживала режим MJPEG, но YUV камеры тоже можно использовать, при этом увеличится задержка видео
USB-UART интерфейсы
- Pololu Orangutan SVP-1284,
- другие не проверялись, скорее всего будут поддержаны.
Установка прошивки
- установить tftp клиента (есть в поставке win 7, но не установлен по умолчанию).
- Настроить на компьютере IP-адрес 192.168.0.2
- подключить компьютер к любому порту LAN на раутере.
- приготовить команду tftp 192.168.0.1 PUT <имя trx файла>
- включить раутер
- подождать ровно 2 секунды и запустить приготовленную команду. Лампа LAN должна часто-часто моргать несколько секунд, после чего команда должна успешно завершиться.
- Ждать около 5 минут. Когда прошивка загрузится и не сможет подключиться к wifi (так как вряд ли Ваша сеть называется “OpenWrt” и имеет пароль “1”), должен загореться синий светодиод сбоку на раутере и помаргивать каждые 10 секунд.
Настройка прошивки
- ssh 192.168.0.1 по кабелю в любой порт раутера или ssh <wifi ip>, если wifi поднялся. Login root, password 123
- http://192.168.0.1 по кабелю либо http://<wifi IP> по wifi, если wifi поднялся. Login admin, password oradmin. На первой странице внизу ссылка на админку.
Подключение к домашней WiFi-сети
Предполагается, что раутер подлючается к домашней сети wifi как клиент со статическим IP.
- Выберите подходящий IP. Он должен быть в диапазоне IP сети, не быть занять, и быть вне диапазона адресов, раздаваемых DHCP сервером.
- Зайдите на web интерфейс прошивки, в админке есть соответсвующая страница. Там вы можете поставить:
- защита WPA-PSK/WPA2-PSK,NONE
- имя сети SSID
- пароль
- static IP
- netmask
- default GW
- dns
В качестве проверки работоспособности сети прошивка раз в 10 секунд однократно пингует адрес default gateway. В случае неудачного ping зажигается голубой светодиод на следующие 10 секунд. Так что он может иногда загораться при работающем IP в случае выпадения пакета (такое бывает).
Настройка веб-камеры
На странице настройки камеры вы можете выбрать:
- разрешение
- fps
- номер камеры(возможно подключение нескольких камер через USB-hub)
- YUV или MJPEG режимы
Использование прошивки на ПК
Получение видеопотока или отдельных кадров
- видеопоток в формате mjpg "http://wifi-ip:8080/?action=stream"
- кадр в формате jpg "http://wifi-ip:8080/?action=snapshot"
Проброска UART-а
- Встроенный UART доступен двумя способами:
- сервис ser2net транслирует обмен на TCP порт 2000
- запись в порт доступна по протоколу http URL /cgi-bin/serial.cgi , метод POST, значение параметра SERIAL_DATA будет записано в порт
- Pololu Orangutan SVP-1284. На оборудовании tenik удалось связать раутер с систмой Pololu Orangutan:
в файл /etc/rc.local для перезапуска драйвера были добавлены строки:
rmmod usbserial insmod usbserial vendor=0x1ffb product=0x0087
в файл /etc/config/ser2net.conf добавлены строки:
2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS 2002:raw:600:/dev/ttyUSB1:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS 2003:raw:600:/dev/ttyUSB2:115200 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS
После перезагрузки 3 UART порта Pololu доступны на TCP портах 2001, 2002, 2003
Внесение изменений в прошивку
Для внесения серьезных изменений в прошивку штудируем документацию [OpenWRT]
Загрузка своих страниц для управления роботом
Текущие страницы доступны для сливания через админку робота. Для заливки новых страниц я использую команду:
pscp.exe -r -pw 123 -scp www/* root@192.168.0.1:/www
pscp входит в комплект программ Putty.
Не заливайте файлы из каталогов /cgi-bin/* На них скорее всего слетят unix-права и прошивка перестанет работать.
Нерешенные проблемы
- Задержка видео. При использовании 160*120 30 fps она минимальная, но есть.
- Нет удобного способа менять пароль, только через SSH консоль (команда passwd).
- Защита. Робота с такой прошивкой надо держать на защищенном протоколе. Сейчас видео идет по http порт 8080 вообще открыто, web-face и управление - либо http либо https, либо с паролем, либо без. Самый правильный способ - https+пароль. Но https в данной конфигурации жутко тормозит.
- Скрипты Webface написаны на чем awk и ash, их неудобно поддерживать, Следует мигрировать на Lua
- Webface содержит явную недоделку - когда заходишь на страничку настройки, то она показывает не текущие значения из конфигов раутера, а ее собственные дефолты
Другие предупреждения
- Не выключайте HTTP и HTTPS одновременно. Иначе перенастройка раутера станет возможной только по SSH.
- Не забывайте про защиту. Очень хочется показать эту вещь в интернете, но надо понимать, что за вами могут наблюдать через камеру, а ездящий робот может даже нанести материальный ущерб либо даже травму. Учтите, что в Интернете “кулхацкеров” гораздо больше, чем ваших друзей.
Ссылки
[OpenWRT]