Как настраивается коммуникация с raspberry pi через интернет?
Добрый день!
Я недавно начал играться с роботами и итоговой целью является постройка робота-паука, которым я бы мог управлять с компьютера (телефона).
Архитектуру я хотел использовать следующую:
Raspberry Pi (какая-то из последних у меня) выступает в качестве мозга и точки входа, к ней не сложно прикрутить камеру, wi-fi/bluetooth/gsm модуль, еще сопутствующие датчики. Поднять на ней полноценный веб. сервер и реализовать высокоуровневое api (идти вперёд/назад/повороты/смещения).
По usb к малине подключается дуина (на самом деле у меня Iskra JS, но в этом вопросе не суть важно). Я смотрел в сторону ethernet-а, но подружить их вполне можно и просто по usb. Эта загогулина будет рулить только сервами, передвигать ноги.
Соответственно, план такой, что я подключаюсь с компа к веб серверу на малине (хоть через браузер), посылаю команду "вперёд" через api, малина её разбирает на низкоуровневые и по ком. порту посылает ардуине как ей надо палки переставлять. Но тут я, похоже, пропустил фундаментальное условие, пока у меня малина сидит в локальной сети с моим домашним компьютером, мой роутер выдаёт айпишник и я могу с компа видеть веб. сервер малины. При желании я могу заказать у провайдера статический айпи, настроить роутер соответствующим образом, чтобы вебхост малины видеть в интернете и управлять малиной с любого устройства через интернет. Но, если я поставлю gsm модуль и отвезу робота в поле, то у него ж не будет айпишника, я ж в таком случае не смогу сделать вебсервер, так как, по сути, это мобильник с подключением к интернету, но айпишник меняется от вышки к вышке и мобильный оператор не сможет зафиксировать выделенный белый айпишник на симку?
Поправьте, пожалуйста, если я ошибаюсь.
Насколько я понимаю, мне нужен третий обычный веб. сервер у любого хостера. На малине нужен клиент, который при наличии соединения будет долбиться на этот сервер и устанавливать соединение по вебсокетам. Когда я захожу с компа, то так же устанавливается двустороннее соединение с этим внешним сервером, который, по сути, будет работать как прокси, переадресовывать вызовы с компьютера в робота и гнать обратную связь.
Правильный ли у меня ход мыслей или я занимаюсь какой-то ерундой?
Буду рад любым мыслям.
Нужен некий внешний сервер, который всегда будет "знать" как обратиться к вашему устройству.
На этом сервере поднимаете VPN-сервер, на вашей малинке поднимаете VPN-клиент.
Теперь не важно - то ли дома с роутера через WiFi, то ли в поле через точку доступа на вашем телефоне по WiFi - ваше устройство всегда будет видно VPN-серверу.
Ну а собственно на VPN-сервере пробрасываете порты снаружи какие надо на вашу малинку через VPN.
Спасибо за наводку, с vpn я тоже, к сожалению, не работал, представляю себе только поверхностно. То есть это получается как мой первый вариант, на малине поднимается полноценный веб сервер. При грамотной настройке vpn работа будет такой же, как сейчас в моей локальной домашней сети?
Виктор П., да - на малине поднимаете полноценный сервер. Да - при грамотной настройке VPN вы из любой точки сможете работать с малиной так же как у себя в локальной домашней сети.
Но, если я поставлю gsm модуль и отвезу робота в поле, то у него ж не будет айпишника, я ж в таком случае не смогу сделать вебсервер, так как, по сути, это мобильник с подключением к интернету, но айпишник меняется от вышки к вышке и мобильный оператор не сможет зафиксировать выделенный белый айпишник на симку?
Почитайте про DDNS. На линуксе (Raspbian=Debian) его просто поднять.
может коммуникацию отдать файваю или блютусу? если нет, то можно через сервак с внешним ип коммуницировать, для начала можно попробовать free-dns или что-то подобное, но имхо $5 за дроплет на DO не много, да и домены дорого не стоят.
Привет!
Что значит коммуникацию отдать вайфаю или блютусу? Я многого пока не знаю и мыслю в рамках веб разработчика. Как происходит взаимодействие, на малину ставится вай-фай модуль, но не как приемник, а как передатчик? С телефона я нахожу вайфай точку робота и подключаюсь. Какие клиенты для этого нужно писать и как это должно работать?
Вообще, мне желательно сделать такую вещь, что я могу выехать в поле с тремя такими роботами, построить какую-то трассу и устраивать забеги. Управлять, естественно, чтобы могли другие люди сидя дома. Я могу привезти ноутбук, могу использовать мобильный интернет, сделать какой-то аналог локальной сети в поле, если это будет проще. Хоть через вайфай, хоть через блютуз ими управлять на месте, но конечный пользователь должен быть через интернет. То есть я могу развернуть какую-то стационарную инфраструктуру, если это будет нужно и проще, но это будет в поле со всеми вытекающими последствиями и ограничениями. Работу такой схемы я пока не понимаю, если можно, как-то более детально раскрыть?
Сервак с внешним ip это из последней части моего вопроса? То есть вариант вполне рабочий? Я могу каждому роботу выдать симку, могу поднять общую вайфай сеть, и выдать вай-фай модуль, это не принципиально. Цена веб серверов сейчас тоже не особо интересует, с этим я умею возиться.