Удаленное управление raspberry pi

Удаленное управление raspberry pi

Когда-нибудь хотели бы получить доступ к raspberry Pi, когда вы находитесь на дороге? Возможно, вы уже настроили камеры безопасности дома, вы используете собственный сервер minecraft, или вы используете свою «малинку» за каких то своих проектах . Независимо от ваших целей настроить доступ удалено, легче чем вы думаете. Вот как.

Чтобы получить доступ к Raspberry Pi (или любой домашний компьютер) из-за пределов Вашей домашней сети, вам обычно нужно пробрасовать порты на вашем роутере (маршрутизаторе). Если вам просто нужно контролировать несколько простых вещей на Вашем Raspberry Pi,это излишне. Мы собираемся описать два метода, которые пропускают все это.

Первое, что вам нужно сделать, это настроить Raspberry Pi и подключен к домашней сети. Так как вы подключаете свой Raspberry Pi в интернет, убедитесь, что вы изменили свой пароль по умолчанию во время процесса настройки. Как только это будет сделано, вернитесь сюда, чтобы настроить все остальное.

Удаленный вход в Raspberry Pi используя VNC Connect

VNC уже давно является лучшим способом удаленного доступа к любому компьютеру в той же сети. Недавно VNC Connect вышел, чтобы сделать его легко получить доступ к малине Pi из любой точки мира с помощью подключения к облаку. После того, как он настроен, вы можете получить доступ к графическому интерфейсу Raspberry Pi с любого другого компьютера или смартфона с помощью приложения VNC Viewer.

Vnc для подключения предоставляется бесплатно с последними версиями операционной системы Raspberry Пи. Если у вас уже есть, вы можете пропустить эту часть. Если нет, вы можете установить его и включить его, открыв терминал на Raspberry Pi и набрав несколько команд:

  1. Введите sudo apt-get update и нажмите Enter
  2. Введите sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer и нажмите Enter
  3. Как только это будет завершено, введите sudo raspi-config и нажмите Enter. Прокрутите вниз до VNC и включите.

После этого завершения загрузки, вы можете настроить vnc для подключения:

  1. Перейдите на страницу регистрации Realvnc Raspberry Pi и введите свой адрес электронной почты в поле регистрации.
  2. Следуйте инструкциям на экране, чтобы завершить настройку учетной записи с паролем.
  3. Снова на Raspberry Pi, нажмите на значок VNC в правом верхнем углу экрана, чтобы открыть VNC. Затем щелкните меню состояние и выберите Лицензирование.
  4. Введите адрес электронной почты и пароль, созданные на первом шаге.
  5. При появлении запроса выберите » прямое и облачное подключение.” Ваш Raspberry Pi теперь доступна онлайн.
  6. Загрузите Приложение VNC Viewer на компьютере, с которого вы хотите управлять Raspberry Pi, например, на ноутбуке или смартфоне, который у вас будет при путешествии.
  7. Откройте Приложение Vnc Viewer и введите учетные данные, созданные на первом шаге.
  8. Ваш Raspberry Pi появится в качестве опции автоматически. Выберите его, чтобы открыть соединение. При появлении запроса введите имя пользователя и пароль Raspberry Pi (по умолчанию это имя пользователя pi и пароль raspberry). Через несколько секунд он подключится.

Теперь вы можете войти в свой рабочий стол Raspberry Pi из любой точки мира, пока ваш Raspberry pi имеет доступ в интернет. Это означает, что вы можете взять под контроль любое программное обеспечение безопасности, проверить состояние любых проектов, которые вы настроили, или играть Minecraft на вашем частном сервере.

Доступ к командной строке с Dataplicity

Если вам не нужно получить доступ к полному графическому интерфейсу, вы захотите проверить Dataplicity. Dataplicity делает его невероятно легко получить доступ к командной строке Raspberry Pi из любого браузера. Для этого вам понадобится доступ к веб-браузеру и Вашему Raspberry Pi.

  1. Отправляйтесь в Dataplicity и создайте учетную запись, введя свой адрес электронной почты.
  2. Нажмите Кнопку Добавить Новое Устройство.
  3. Dataplicity будет отображать строку кода, как показано на рисунке выше. Скопируйте эту строку кода и введите ее в командную строку Raspberry Pi. Вы можете сделать это на Raspberry Pi, выбрав открытие терминала приложения или доступ к нему удаленно на домашней сети по SSH с помощью инструмента, как Pi Finder Adafruit. Через несколько секунд Dataplicity загрузит и установит программное обеспечение на Ваш Raspberry Pi, который связывает его непосредственно с Вашей учетной записью.
  4. Как только это готов, перейдите на страницу устройства Dataplicity. Вот, вы увидите свою «малинку». Нажмите на него, чтобы открыть окно терминала.
  5. Прямо сейчас вы можете перезагрузить и переименовать Raspberry Pi. Если вам просто нужно удаленно перезагрузить его иногда, оставьте его как есть. Если вам нужно сделать больше, как установить программное обеспечение или редактировать файлы, Вы можете войти в систему как суперпользователя. Для этого в командной строке Dataplicity, su pi и нажмите Enter. Затем введите пароль Raspberry Pi и нажмите клавишу ввод. Теперь у вас есть полный контроль над вашей Raspberry Pi.
  6. Вот именно, у вас есть полный доступ к Raspberry Pi из любой точки мира с подключением к интернету. Очевидно, что Ваш Raspberry Pi должен оставаться включен, но в противном случае вы не сможете получить доступ к нему из любого браузера. Вы можете сделать тонну вещи с этой маленькой функцией из коробки, в том числе: хостинг небольшой веб-сайт, обмен файлами, и даже потоковое видео.
Читайте также:  Установить драйвер для принтера hp laserjet 1020

Если первое, что необходимо освоить пользователю Raspberry Pi – это умение делать бэкапы, то следующим по важности и полезности пунктом идет организация удаленного доступа к микрокомпьютеру.

Единожды настроив удаленное управление Raspberry Pi, можно отсоединить от микрокомпьютера мышь, клавиатуру и монитор, да и вообще убрать “малину” с рабочего стола. А затем просто подключаться к ней со своего основного компьютера.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

В этой статье я рассматриваю удаленное управление Raspberry Pi с компьютера под управлением Windows. Для устройств под управлением Linux и macOS также возможно осуществление всех описываемых здесь действий, отличаться будут только названия используемых программ.

В двух словах о SSH и VNC протоколах

SSH (Secure Shell) – сетевой протокол, позволяющий производить удаленное управление операционной системой через шифрованное соединение, а также передавать файлы, транслировать видео- и аудиопотоки и сжимать передаваемые данные на лету.

Говоря простым языком, SSH – это та штука, через которую можно запустить на компьютере терминал для выполнения консольных команд на другом компьютере.

VNC (Virtual Network Computing) – более продвинутый протокол, обеспечивающий удаленный доступ к рабочему столу другого компьютера по сети.

Для этого используются модули сервера и клиента. Серверный модуль запускается на компьютере, который должен управляться удаленно. Клиентский модуль запускается на компьютере, с которого будет осуществляться удаленное управление.

В отличие от SSH, по VNC предоставляется доступ не только к консоли, но ко всему компьютеру, включая графический интерфейс.

Доступ к Raspberry Pi 3 через SSH

Для получения доступа к Raspberry Pi 3 по протоколу SSH нужно открыть инструмент конфигурации raspi-config:

Выбрать в нем Interfacing Options:

И включить SSH:

Все, больше с Raspberry Pi ничего делать не нужно.

Теперь скачиваем на свой основной компьютер (с которого будет осуществляться управление) бесплатный SSH-клиент PuTTY.

Запускаем его и вводим IP-адрес своей “малины”:

По умолчанию SSH работает на 22 порту, его менять не нужно.

После ввода IP-адреса нажимаем “Соединиться” и вот перед нами консоль нашего микрокомпьютера:

Остается ввести логин (по умолчанию pi) и пароль (по умолчанию raspberry, меняется через raspi-config) и можно пользоваться.

Когда привыкаешь к консоли, то становится понятно, что графический интерфейс в принципе не особо и нужен. Но если он все-таки нужен, то доступ к нему легко организовывается посредством протокола VNC.

Доступ к Raspberry Pi 3 через VNC

Для получения доступа к Raspberry Pi 3 по протоколу VNC нужно открыть инструмент конфигурации raspi-config:

Выбрать в нем Interfacing Options:

После чего нужно установить сам VNC-сервер:

И запустить его:

Теперь посмотрим на каком порту он прописался:

Скорее всего это будет порт 5901 или 5902:

Теперь скачиваем на основной компьютер (с которого будет осуществляться управление) бесплатный VNC-клиент VNC Viewer.

Через File -> New connection создаем подключение к Raspberry Pi, прописывая ее IP-адрес и порт, на котором прописался VNC-сервер.

Порт нужно писать через два двоеточия подряд!

Если IP-адрес и порт указаны верно, то при подключении VNC-клиент запросит имя пользователя и пароль:

И после их ввода мы получаем полный доступ к интерфейсу Raspbian PIXEL:

Которым можно управлять при помощи мыши и клавиатуры.

Добавляем VNC-сервер в автозагрузку

Теперь пропишем запуск VNC-сервера в автозагрузку Raspbian чтобы не приходилось каждый раз вручную запускать его после перезагрузки.

Для этого перейдем в папку, где хранятся конфиги текущего пользователя:

И посмотрим ее содержимое:

Интересует наличие папки “autostart”. Если ее нет – ее нужно создать, а если она уже есть – просто игнорируем этот шаг и идем дальше:

Переходим в только что созданную или уже существующую папку “autostart”:

Создаем новый файл:

И прописываем в нем следующее:

Этот файл при каждой загрузке графического интерфейса будет выполнять команду “vncserver :1”.

Перезагружаем “малину” для применения изменений:

Если все прошло верно, то VNC-сервер будет запущен автоматически и к нему можно будет подключиться.

Подключение к рабочему столу Raspberry Pi с Android-устройства

Установив VNC-сервер на Raspberry Pi, можно управлять ею не только с компьютера, но и со смартфона или планшета на Android.

Для этого скачиваем VNC Viewer в Google Play и конфигурируем соединение так же, как на компьютере:

Подключаемся, вводим логин и пароль, попадаем в графический интерфейс Raspbian:

Свайпами по экрану перемещается курсор мыши, “клик левой кнопкой мыши” осуществляется тапом по экрану, “клик правой кнопкой мыши” осуществляется тапом двумя пальцами по экрану, ну а средней кнопкой можно “кликнуть” посредством тапа тремя пальцами одновременно.

Подключение к рабочему столу Raspberry Pi с iPhone/iPad

Посредством VNC можно подключаться к рабочему столу Raspberry Pi и с устройств под управлением iOS.

Скачиваем VNC Viewer в App Store и конфигурируем соединение так же, как на компьютере:

Подключаемся, вводим логин и пароль, попадаем в графический интерфейс Raspbian:

Методы управления тут те же самые, что и в случае использования Android-приложения. Те же свайпы, те же тапы.

Но вообще, управлять “малиной” с маленького экрана iPhone – то еще извращение :).

Читайте также:  Как найти все фото человека в интернете

Заключение

Вот таким простым способом можно сделать эксплуатацию “малинки” еще более удобной, избавив себя от необходимости держать само устройство на рабочем столе и подключать клавиатуру и монитор для совершения любого действия с ней.

Если не рассматривать Raspberry Pi как альтернативу персональному компьютеру, а использовать ее в дополнение к имеющемуся парку компьютеров и гаджетов, то удаленного доступа к рабочему столу и терминалу достаточно для осуществления почти любых действий.

27 комментария на «Raspberry Pi 3. Удаленное управление через SSH и VNC»

ЭТО vncserver :1 – нужно делать каждый раз при включении Малинки? Вчера все сделал, сегодня попытался зайти – никак, подключился терминалом, запустил, потом зашел… Не сильно удобно, особенно если со смартфона планируется заходить.

Дополнил статью пунктом про добавление VNC-сервера в автозагрузку.
Совсем забыл об этом во время ее написания, действительно, сам по себе vncserver после перезагрузки “малинки” не перезапускается.

Как я вижу по ip адресу, то дозвон идет по адресам в одной сети, а как стучаться к своему устройству совсем с другого подключения?

Чтобы иметь доступ из интернета, нужно пробросить порты на роутере и настроить динамический DNS на самой малине. Я не стал об этом писать, т.к. на мой взгляд такое решение небезопасно.

Более безопасный вариант – сделать Telegram-бота для управления малиной и залочить его на прием команд только со своего телеграмного ID. В будущем напишу пост про это.

Можно создать бесплатный аккаунт на RealVNC и подключаться из любого места, аналогично TeamViewer

Передача видео для дистанционного управления может использоваться во многих проектах связанных с управление различными устройствами. То есть это можно прикрутить к колесной базе, к квадрокоптеру, к телу гуманоидного робота и тд. Raspberry Pi(далее малина) в данном смысле удобна тем что позволяет использовать для этого не какие то специализированные устройства типа FPV, а обычные устройства которые у многих уже имеются в наличии, а так же упрощает и схемы их включения и сложность написания программ для них, не говоря уже о стоимости проектов.

Удаленный контроль

Недавно заполучил малину, в Питере их уже в магазинах продают так что ни ждать, ни заказывать не надо, хотя чуть дороже получается. Поскольку монитора с HDMI у меня нет, а роутер есть, то как вариант управления был выбран remote controle через ssh порт. Это позволяет с любого компа, включенного в локальную сеть (как вариант, но более сложный — глобальную) управлять малиной.

Примечание. На компьютере, с которого я управляют малиной, стоит Ubuntu. Хотя для Windows’а все это также остается в силе.

Наладить подключение достаточно просто. В Debian образе, скачиваемом с офсайта, эта функция по умолчанию включена. И единственное что остается — узнать ip адрес и ввести команду подключения. Для того, что бы узнать адрес, можно либо зайти в настройки роутера(обычно ip 192.168.0.1), либо в консоли вести команду
$ nmap -p 22 —open -sV 192.168.0.1/24
которая выдаст кучу текста, среди которой будут указанны адреса подключенных в сеть устройств и состояния их SSH порта.
Далее для открытия удаленного доступа
$ ssh -p 22 pi@192.168.0.17
где pi — это имя учетной записи, а после @ адрес малины.

Потом попросят ввести пароль и если он правильный то консоль начнет общаться с вами от лица малины.

На второй ссылке описывается как получить удаленный доступ к графическому интерфейсу. Это выглядит интересно — на экране своего монитора видишь рабочий стол малины. Но из-за того что сигнал идет по сетке то появляется задержка и мышка и прочее управление идет с запаздыванием. Так что в предустановленную там «змейку» не поиграть.

Как имхо, малину в качестве десктопа использовать и нет смысла, все её плюсы теряются. Маловероятно, что у кого то настолько маленькая комната что в ней рядом с монитором некуда поставить системный блок, напряжения в розетке хватает только что бы заряжать сотовый телефон или денег не хватает даже на подержанный персональный компьютер. А минусы наоборот становятся очевидными — малая относительно настольных компьютеров производительность и недружелюбная операционная система.

Подключение Веб камеры и передача картинки

Используемая камера Logitech c270 встала без проблем. Однако дальше ждало разочарование так как заявленное на малине аппаратное ускорения кодирования видео отсутствовало. То есть оно есть, но кодеки для него отсутствует. А без него, программно, сжатие идет со скорость 2-5 fps и дает 100% загрузку машины. В итоге без подвешивания системы идет только необработанный(raw) поток. То есть для записи (по прикидкам) при разрешение 640х480 на одну минуту уйдут 100-200 мб. Но пропускной способности локальной сети и wi-fi хватает так что пока что можно и так его гнать, надеясь что в ближайшее время кодеки все таки появятся. Так что идем дальше.

Долгих экспериментов и поиска нужных заклинаний описывать не буду. В итоге все свелось к использованию gstreamer’а. Вкратце, это мультимедийный фреймворк с интерфейсом в виде командной строки. Так же есть библиотека которая дает возможность программно использовать его компоненты, что можно использовать в дальнейшем для интеграции в собственные программы.

Читайте также:  Как разблокировать аккаунт телеграмм

Для его установки на малине надо ввести
$sudo apt-get install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-tools

(если их не будет, возможно номер версии сменился или другое, то удобно воспользоваться командой « $apt-cache search gstreamer » и установить что-то с похожими именами)

Далее на малине вводится
$sudo gst-launch-0.10 v4l2src device=/dev/video0 ! ‘video/x-raw-yuv,width=640,height=480, framerate=20/1’! ffmpegcolorspace ! rtpvrawpay ! udpsink host=192.168.0.50 port=4000 sync=false

где
device=/dev/video0 — источник картинки
‘video/x-raw-yuv,width=640,height=480, framerate=20/1’ — формат
udpsink host=192.168.0.50 port=4000 sync=false — адрес куда посылаем

Видео передается по протоколу rtp. Этот протокол работает на транспортном уровне и используется при передачи трафика реального времени. Он может использовать как TCP, так и UDP, но так как TCP повторяет не дошедшие сообщения, которые уже не нужны то в данном случае используется UDP.
На стороне приемника надо ввести
$ gst-launch udpsrc caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)RAW, sampling=(string)YCbCr-4:2:0, depth=(string)8, width=(string)640, height=(string)480, ssrc=(uint)1825678493, payload=(int)96, clock-base=(uint)4068866987, seqnum-base=(uint)24582" port=4000 ! queue ! rtpvrawdepay ! queue ! ffmpegcolorspace ! autovideosink

В итоге на стороне приемника появится картинка.

Для любителей рекурсии: эта скриншот рабочего стола нетбука, который принимает картинку от малины, которая берет её от веб камеры, которая направлена на малину лежащею на нетбуке на экране которого …

Картинка, полученная таким образом, по качеству идентична полученной напрямую без сети от веб камеры, так как никаких сжатий или трансформаций не применялось.
На следующем скриншоте показана загрузка канала, слева при передачи картинки 640х480, затем пауза и 320х240.

Однако, поскольку картинка идет не напрямую, а через сеть, то появляется задержка сигнала. Далее была проведена серия нехитрых экспериментов, по которым можно оценить задержку сигнала.

Для конфигурации малина->LAN кабель->роутер Dlink-300->wi-fi->нетбук задержки составили
для разрешения 640х480 0.5 секунд
для разрешения 320х240 0.2 секунды

Много это или мало зависит от целей использования. Для прямого управления квадракоптера (без дополнительной стабилизации) или других систем испытывающих какие то возмущения выводящие их из равновесия — это много. Но тем не менее многие вещами при такой задержки управлять можно, как пример — луноходы, которые управлялись вообще с 2х минутной задержкой.

UPD 09.10.2012
В комментариях к данному посту было предложено воспользоваться встроенным в саму камеру аппаратным сжатием и передавть картинку в формате mjpeg.
После некоторого поиска нужных заклинаний, команда на малине выглядит
gst-launch-0.10 v4l2src device=/dev/video0 ! ‘image/jpeg,width=320,height=240, framerate=10/1’ ! rtpjpegpay ! udpsink host=192.168.0.50 port=4000 sync=false

а на компьютере принимающем картинку
gst-launch udpsrc caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, ssrc=(guint)469657143, payload=(int)96, clock-base=(guint)2841649723, seqnum-base=(guint)39869" port=4000 ! rtpjpegdepay ! jpegdec ! autovideosink

В результате при разрешении 640х480 трафик составил порядка 300 — 800 кбайт/сек, а задержка 0.2-0.3 секунды.

Подключение wi-fi адаптера

В итоге после всех выяснений файл /etc/network/interfaces у меня сейчас выглядит так. Эти настройки верны wpa-psk, если использовать wpa2 то настройки будут другие, описание которых можно найти в ссылке на Ubuntu.
auto lo

iface lo inet loopback
iface eth0 inet dhcp

# The wireless interface
iface wlan0 inet static

address 192.168.0.40
gateway 192.168.0.1
netmask 255.255.255.0
wpa-ap-scan 1
wpa-proto WPA
wpa-pairwise TKIP
wpa-group TKIP
wpa-key-mgmt WPA-PSK
wpa-ssid name
wpa-psk 7d7cf754caЦензураf04b1b0ef6f15e21ed1292168950d20
wpa-driver wext

После настройки беспроводного соединения на стороне компьютера надо сменить ip адрес и общение будет происходить так же как и при проводном соединение.

Далее были проведены тесты на время задержки для конфигурации:
малина->адаптер->wi-fi->роутер Dlink-300->wi-fi->нетбук
(а так же для малина->адаптер->wi-fi->роутер Dlink-300-> LAN кабель ->нетбук )
для разрешения 640х480 0.8 секунд
для разрешения 320х240 0.2-0.3 секунды

По тому что время задержке увеличилось можно сделать предположение что либо адаптер, либо юсб соединение, либо драйвер вносят задержки, которых нет при соединение через LAN. Так что там где габариты позволяют лучше вместо адаптера соединять малину через LAN c роутером.

Как довесок, что бы отвязать систему от сети питания собрал преобразователь для подключения к LiPo аккумулятору. Дело в том что малина запитывается от 5В плюс-минус 25%, так что напрямую подключать аккумуляторы с другим напряжением нельзя, однако при помощи небольшого девайса это можно исправить.
Схема у него очень простая и нашел я её здесь
http://spydamonky.hackhut.com/2012/07/05/lipo-raspberry-pi-power-adapter/
Детали схемы я нашел в ближайшем специализированном магазине, а microUSB штекер в компьютерном магазине – купил самый дешевый кабель и вырезал из него.

В первом варианте как и на схеме был один регулятор напряжения, но он сильно грелся, так как максимальный ток там 1А, а через него шло минимум 700мА, то я решил ему в параллель поставить второй, что должно в вдвое увеличить максимальный ток. Однако все равно греется сильно. Видимо надо будет какой то радиатор еще прикрутить.
Вообще, LIPo аккумуляторы для таких целей лучше не использовать так как в случае разряда ниже допустимого уровня они необратимо выходит из строя, а этот момент здесь ни как не ловится. То есть устройство работает, работает, а когда перестает аккумулятор уже умер. Если под рукой есть другой тип аккумуляторов то лучше их использовать.


П.С.
Далее как цель поставить это все на какую то платформу и использовать уже дальше.

Ссылка на основную публикацию
Удаление последнего элемента списка
Введение. Основные операции О дносвязный список – структура данных, в которой каждый элемент (узел) хранит информацию, а также ссылку на...
Телефон самсунг с хорошей камерой недорогой
Если вы ищете лучший телефон Samsung, тогда рейтинг поможет разобраться в их различиях. Посмотрите какой смартфон лучшие купить из всех...
Телефон перестал заряжаться быстрой зарядкой
Наверняка многие сталкивались с тем, что смартфон ни с того ни с сего перестаёт заряжаться. Другая распространённая беда — слишком...
Удаление дубликатов фотографий на русском бесплатно
Здравствуйте Уважаемый Друг. У каждого из нас на компьютере хранится большое количество различных фотографий изображений и тому подобных картинок. Парой...
Adblock detector