Технический форум по робототехнике.
alexkov87 » 25 окт 2013, 21:37
Добрый день!
Предисловие
Я делаю машинку, которая умеет смотреть по сторонам и ездить (для начала) и управляется со смартфона по wifi.
Сразу оговорюсь, что в робототехнике как и программировании я пока новичок.
Реализовано
Робот уже умеет "дергать лапками" и "крутить головой", а также делится тем, что видит посредством Mjpeg streamer.
Сейчас я управляю им с помощью SSH-команд вида XXYYY, которые отправляются на встроенный UART роутера MR3020, к которому, в свою очередь, подключен МК ATmega328 с загрузчиком ардуино. Смотрю видео пока через браузер, а отправляю команды из Putty. В общем, ничего особенного.
Задача и вопрос
Сейчас я пишу приложение для смартфона (android). Оно будет выводить поток mjpeg, а также будет два джойстика для управления колёсами и сервоприводами камер. Сейчас передо мной встал вопрос: "А нужен ли мне веб-сервер на PHP, который я поднял на чистой openWRT с прикручиванием флешки к роутеру". Или я могу отправлять команды и получать ответы посредством того же SSH, чем пользуюсь сейчас.
То есть вопрос заключается в том, можно ли обойтись без посредника (веб-сервера)? Я не нашёл ответа, но быть может есть какие-то подводные камни, о которых я не подозреваю?
Мне это представляется сейчас практически на одном уровне. Т.е. в одном случае я использую GET или POST запрос (AndroidHttpClient), а в другом команды прямо в UART, открыв SSH сессию (есть библиотека для adnroid JSch).
P.S. Я подключаюсь со смартфона к точке доступа на MR3020 (то есть сеть локальная), я решил так, чтобы не зависеть от наличия интернета в местах покатушек.
P.P.S. Если ошибся темой — перенесите куда надо, пожалуйста.
elmot » 26 окт 2013, 01:12
Ну и вопросик. Как что будем делать летать или на бензине?
PHP на роутере не место - слишком тяжеловесная хреновина. Мое глубокое имхо.
alexkov87 » 26 окт 2013, 02:50
Не, всё вовсе не так серьёзно:) И не летать, и не на бензине. Обычная маленькая машинка на L298N (~16 х 30см).
Я вот тоже, когда все пакеты php зарядил — подумал, что очень уж много. Думаю, если от него избавиться — можно выгадать 1-2 fps для mjpeg и попробовать избавиться от флешки.
Просто все проекты, что я расматривал (на которые опирался) используют веб-сервер зачем-то (может потому что почти все управляют из веб морды?). Вот и задался вопросом, о том что он не обязателен в моём случае?
elmot » 26 окт 2013, 09:24
сам по себе вебсервер ничем не плох, а вот всякиэ блэкджеки к нему, типа пхп - вот это тормозня. Проще надо быть, не разводить бегемотов ради пары строчек в uart
alexkov87 » 26 окт 2013, 13:41
Понял, спасибо! А что насчёт SSH? Хочу попробовать через него общаться, стоит или нет, как думаете?
elmot » 26 окт 2013, 14:49
У ssh есть и плюсы, и минусы. Задержки там могут быть(а могут и не быть), через прокси-сервера не проходит, и тд
alexkov87 » 26 окт 2013, 15:01
Понятно. Задержек вроде бы сейчас не наблюдается. А подключение у меня прямое, без прокси. Попробую так, если что переделаю, надо же руку набивать (а может шишки)). Спасибо огромное за помощь.
P.S. Пользуясь случаем. Ваши знания мне немало помогают в мире роботов. Спасибо, что делитесь.
Footniko » 16 ноя 2013, 15:08
Что-то не пойму, зачем вам php сервер на роутере? У меня подобная машинка есть. Управляю ей полностью через браузер(PHP+JavaScript). В Php есть функция, которая умеет работать с сокетами(fsockopen) - просто открываем соединение с адресом роутера и шлем ему команды, которые тот переправляет микроконтроллеру - все дела.
Angel71 » 16 ноя 2013, 15:46
работать с сокетами очень легко, вот только ваш вариант реализации с php/js - это дело такое
в одной ситуации будет хорошим вариантом, в другой просто какафонией. для клиента на смартфоне - это имхо полный ппц, если в планах нет пунктика "размещу ка я это всё потом на локальном сервачке".
alexkov87 » 18 дек 2013, 15:06
Про PHP написал по глупости. Отговорили сразу, как можно наблюдать выше. Веб-сервер попробовал, но кое что не устроило. Сделал на ssh. Пока общаюсь так. Но ещё не всё реализовано.
Всем спасибо. Тема закрыта, этап выбора пройден, в принципе:)
oxid » 12 мар 2014, 18:54
веб сервер имеет накладные расходы на установление соедиения (если не делать keep-alive).
ssh в целом быстрее. Но если вы команды сам писать не будете, то зачем он?
Можно установить постоянное соединение c ssl например между клиентом на телефоне и сервером на роботе.