Контролируем GoPro через WiFi с помощью Ардуино

В этом уроке мы покажем вам, как просто управлять GoPro Hero 4 и GoPro Hero Session 5 с помощью Wi-Fi и платы Arduino. В целом, эти рекомендации могут быть легко адаптированы для любого типа GoPro.

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

Шаг 1. Комплектующие

Для этого проекта вам потребуется всего несколько вещей.

Для начала, очевидно, понадобится камера GoPro. Все инструкции должны работать для самой последней модели (GoPro Hero 6). Хотя, всё протестировано с GoPro Hero 4 и GoPro Hero Session 5. Модели Hero Session немного отличаются по контролю, чем другие модели, но планируем также их рассмотреть.

Также понадобится Arduino MKR1000 или Arduino MKR Zero. Здесь используется MKR1000. Можно работать с другим совместимым с Arduino беспроводным микроконтроллером с поддержкой Wi-Fi.

Вам также понадобится USB-кабель для Arduino, компьютер, на котором работает программное обеспечение Arduino IDE (которое, как я полагаю, у вас есть), и смартфон с установленным GoPro-приложением.

Если у вас нет опыта и вы раньше не использовали Arduino, настоятельно рекомендуем вам сначала посмотретькласс Arduino перед тем, как начать этот проект.

Шаг 2. Настройка Wi-Fi вашей камеры

Первое, что вам нужно сделать, это включить и настроить Wi-Fi-соединение вашей камеры. Не будем вдаваться в это слишком глубоко, потому что для этого уже есть много уроков и рекомендаций. На GoPro Hero 4 самый простой способ сделать это - подключить камеру к телефону, следуя указаниям в приложении.

После того, как телефон связан с камерой, откройте настройки камеры с помощью приложения и дайте Wi-Fi сети новое имя и пароль по вашему выбору.

На GoPro Hero 5 применяется тот же метод. Для начала подключите камеру к телефону, следуя инструкциям в приложении. Это автоматически настроит имя и пароль сети Wi-Fi.

Чтобы просмотреть имя сети Wi-Fi на вашей камере, перейдите к «Информация о камере» (англ. - Camera Info), которая находится в меню «Настройки подключения» (англ. - Connection Settings).

Шаг 3. Поиск MAC-адреса GoPro

После того как Wi-Fi включен, вам нужно выяснить, какой MAC-адрес вашей камеры. Этот адрес хорошо бы знать когда имеете дело с традиционной линейкой GoPro Hero. Однако, если вы используете GoPro Hero Session этот адрес является обязательным.

Чтобы получить его, сначала подключите свой компьютер к сети Wi-Fi вашей камеры, используя имя сети и пароль с предыдущего шага.

Как только вы войдете в сеть Wi-Fi вашей камеры, откройте любой старый веб-браузер на своем компьютере и перейдите по следующему URL-адресу:

http://10.5.5.9/gp/gpControl/info

Этот URL-адрес должен печатать строку информации в вашем веб-браузере, которая выглядит примерно так:

Если это не так, убедитесь, что ваша камера включена и все еще подключена к Wi-Fi.

Нас интересует строка чисел, которая следует за «ap_mac:». Эта 12-значная строка цифр и является MAC-адресом. В данном случае это - 0641631510c4.

Как только вы определили адрес, разделите его на два символа и отформатируйте его следующим образом:

0x06, 0x41, 0x63, 0x15, 0x10, 0xC4

Шаг 4. Подключение Arduino к GoPro Hero

Для того, чтобы Arduino общался с камерой серии GoPro Hero, ее необходимо соединить с помощью PIN-кода. Чтобы получить pin, перейдите в меню телефона для соединения камеры с приложением. Это должно сгенерировать 4-значный PIN-код на всех камерах последующих моделей (у Hero 3 и ранее есть 6-значный PIN-код). Pin живет всего 3 минуты.

Вам нужно вручную вставить PIN два раза в код ниже в обоих местах, где:

После ввода pin-а у вас есть менее трех минут, чтобы загрузить его в Arduino и установить соединение с камерой.

Не забудьте ввести учетные данные Wi-Fi GoPro в этом месте:

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

Если на следующих шагах вы не сможете отправить команды на камеру, вернитесь назад и повторите этот шаг. Код для связки GoPro с Arduino с использованием его PIN-кода:

Шаг 5. Подключение Arduino к GoPro Hero Session

GoPro Session не содержит ПИН-код. Однако у неё есть свои особенности, которые делают подключение к ней действительно раздражающим. Как вы могли заметить, как только вы закончите запись, или, если на то пошло, как только вы закончите делать что-либо с камерой, она выключится и перейдет в спящий режим.

Прежде чем вы сможете отправить GoPro Hero любую команду, вам нужно ее "разбудить". Самый простой способ сделать это - вручную нажать кнопку меню на задней панели камеры и отправить команды в течение нескольких секунд, в которых она "бодрствует". Однако это раздражает и не особенно практично.

Лучший способ разбудить GoPro - это использовать WOL-пакет или «волшебный пакет». Этот аббревиатура означает Wake-on-Lan и является протоколом для дистанционного пробуждения компьютера из спящего режима. Это требует отправки байтов с использованием протокола UDP от Arduino к GoPro, чтобы разбудить её. Это немного раздражает, потому что это другой протокол, чем тот, каким вы отправляете все остальные команды управления. Код также менее симпатичный, и с ним немного сложнее справиться, если вы новичок в программировании.

Тем не менее, когда он работает, он действительно работает как магия. Никогда не перестает удивлять, когда камера просыпается, отправив ей команду от Arduino.

Команда WOL (функция CameraInitiate() в коде) должна быть отправлена ​​перед большинством других команд и обычно должна сопровождаться задержкой в ​​1-2 секунды. По сути, вам нужно отправить её в любое время, когда вам может понадобиться разбудить камеру. И после того, как вы отправите команду, вам нужно сделать паузу на мгновение, чтобы камера действительно проснулась.

В приведенном ниже примере функция WOL вызывается в настройке, поэтому она будет только будить вашу камеру при первом запуске. Не забудьте ввести учетные данные Wi-Fi GoPro и MAC-адрес в код.

Сам код для GoPro Session:

Шаг 6. Передача команд GoPro

В этом примере отправляем команды для запуска и остановки видеозаписи.

Тем не менее, используя тот же метод, продемонстрированный здесь, вы можете отправлять команды практически для каждой функциональности в камере. Команды GoPro Hero 4, как представляется, являются стандартными для всех последующих моделей. Тем не менее, некоторые из последних камер имеют новые функции и специальные команды, которые стоит исследовать. Вы можете найти конкретные команды камеры на странице github API-интерфейса Unofficial GoPro WiFi, щелкнув ссылку для конкретной модели камеры.

Пример ниже включает запись в течение 5 секунд, прекращает запись, ждет еще 5 секунд и начинается снова. Если вы используете Hero Session, обязательно раскомментируйте строку кода, которая будит GoPro!

Еще раз, не забудьте ввести ваши учетные данные Wi-Fi GoPro и MAC-адрес!

Код для отправки команд «Старт и Стоп»:

Шаг 7. Получение обновлений статуса GoPro

Вы можете получать обновления статуса GoPro, используя эту ссылку:

http://10.5.5.9/gp/gpControl/status

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

Самый простой способ увидеть это - подключиться к Wi-Fi сети GoPro с вашим компьютером и загрузить вышеуказанную ссылку с помощью веб-браузера.

Он вернет что-то похожее на:

На этом пока всё. Будьте внимательны и осторожны при работе с GoPro и Ардуино, проверяйте всё много раз, прежде чем запустить что-то.

Смотрите больше интересного ↓