Git Product home page Git Product logo

goprocontrol's Introduction

GoPro Control Arduino

This is a library to interface with GoPro cameras over WiFi using Arduino!

Alt text

Alt text

Here there is a short video that shows the potential of the library

Alt text

Supported actions

  • take a picture
  • start and stop a video
  • change the mode (photo, video, etc)
  • delete last file
  • format the SD
  • turn the camera on/off
  • change the field of view (FOV)
  • change frame rate
  • change photo and video resolution
  • turn the localization on/off
  • change the orientation
  • more

Supported boards:

  • ESP32
  • ESP8266
  • MKR1000
  • MKR WiFi 1010
  • MKR VIDOR 4000
  • UNO WiFi Rev.2
  • any other boards (UNO, NANO, bluepill) attached to an ESP01 using AT commands with this library

Supported cameras:

  • HERO3
  • HERO4
  • HERO5
  • HERO6
  • HERO7
  • FUSION
  • HERO8
  • MAX

I made the library with a style which would be quite easy to add other cameras (not only GoPro). I would be very happy to accept pull requests ๐Ÿ˜ƒ

Installation

  • Arduino IDE:
    • Go to Tools > Manage libraries
    • Search for GoProControl
  • PlatformIO:
    • From command line: run pio lib install "GoProControl" or use the ID pio lib install 5599
    • Or if you prefer a GUI from Platformio IDE
  • Manually:

Examples

Start with the GoProControl.ino to get used with the library

If you wish to control two (or more) camera at the same time check MultiCam.ino

On the ESP32 there is the possibility to use the dual core architecture with the FreeRTOS framework, check ESP32_FreeRTOS.ino

An advantage use of the getStatus() and getMediaList() can be seen in ArduinoJson.ino, you would need to download the ArduinoJson library

Important: Before uploading to your board you have to change the SSID, password and camera model from Secrets.h

Supported Settings

You can see the available settings in the manual of your camera or here for HERO3 and here for HERO4 and newer.

In the file Settings.h you can see how them are defined

NOTE: Not all the combination of settings are available for all the cameras (for example on a HERO3 you can't set 8K at 240 frame per second ๐Ÿ˜ฒ).

To Do list and known issues

  • ESP8266 can't get the BSSID of the camera. So if you want to turn it on you need to manually pass it to the constructor, see the docs
  • There is no way to know if an HERO3 camera is on or off so the function isOn() will always return true on this camera - open an issue if you found a way
  • BLE not implemented: the ESP32 core is not enough stable, especially if used together with wifi: see here
  • No confirm pairing for HERO4: see here - PR are welcome
  • on STM32 there is a known bug with WiFiEsp
  • Arduino official WiFi API doesn't support getHostname(), see here
  • HERO4 and later camera can't be turned on, this is due to a bug inside this library which I wasn't able to fix yet

Reference

All the commands came from the great work of KonradIT

The idea of making a GoPro library for arduino comes from another library which works only on arduino WiFi boards and only with GoPro HERO3

goprocontrol's People

Contributors

aster94 avatar konradit avatar per1234 avatar robsyrocket avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.