This is a library to interface with GoPro cameras over WiFi, just press a button and turn on your GoPro action camera using an Arduino!
Have you ever thought about the possibility to control your action camera with your Arduino? Well if you are here because you googled that you may be interested in watching this video
- take a picture
- start and stop a video
- change the mode (photo, video, etc)
- delete last file or 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?
- ESP32
- ESP8266
- MKR1000
- MKR WiFi 1010
- MKR VIDOR 4000
- UNO WiFi Rev.2
- any arduino boards (UNO, nano, 101, etc.) attached to an ESP8266 (ESP01) using AT commands with this library
- HERO3
- HERO4
- HERO5
- HERO6
- HERO7
- FUSION
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 😃
- Arduino IDE:
- Go to Tools > Manage libraries
- Search for
GoProControl
- PlatformIO:
- From command line: run
pio lib install "GoProControl"
- Or if you prefer a GUI from Platformio IDE
- From command line: run
- Manually:
cd $HOME/Arduino/libraries
(see Arduino library paths for other operating systems)git clone https://github.com/aster94/GoProControl.git
- Restart Arduino IDE
Important: Rename the Constants.h.example
to Constants.h
and change the SSID, Password and camera model. If you have a GoPro HERO4 or newer you should add also the mac address (in a future release this would be done automatically).
Mode | HERO3 | HERO4,5,6,7 |
---|---|---|
VIDEO_MODE | ✔ | ✔ |
PHOTO_MODE | ✔ | ✔ |
BURST_MODE | ✔ | ✔ |
TIMELAPSE_MODE | ✔ | ✔ |
TIMER_MODE | ✔ | ✔ |
PLAY_HDMI_MODE | ✔ | ✔ |
MULTISHOT_MODE | ✔ |
Orientation | HERO3 | HERO4,5,6,7 |
---|---|---|
ORIENTATION_UP | ✔ | ✔ |
ORIENTATION_DOWN | ✔ | ✔ |
ORIENTATION_AUTO | ✔ |
Video Resolution | HERO3 | HERO4,5,6,7 |
---|---|---|
VR_4K | ✔ | |
VR_2K | ✔ | |
VR_2K_SuperView | ✔ | |
VR_1440p | ✔ | |
VR_1080p_SuperView | ✔ | |
VR_1080p | ✔ | ✔ |
VR_960p | ✔ | ✔ |
VR_720p_SuperView | ✔ | |
VR_720p | ✔ | ✔ |
VR_WVGA | ✔ | ✔ |
Field Of View | HERO3 | HERO4,5,6,7 |
---|---|---|
WIDE_FOV | ✔ | ✔ |
MEDIUM_FOV | ✔ | ✔ |
NARROW_FOV | ✔ | ✔ |
LINEAR_FOV | ✔ |
Frame Rate | HERO3 | HERO4,5,6,7 |
---|---|---|
FR_240 | ✔ | ✔ |
FR_120 | ✔ | ✔ |
FR_100 | ✔ | ✔ |
FR_90 | ✔ | |
FR_80 | ✔ | |
FR_60 | ✔ | ✔ |
FR_50 | ✔ | ✔ |
FR_48 | ✔ | ✔ |
FR_30 | ✔ | ✔ |
FR_25 | ✔ | ✔ |
FR_24 | ✔ | |
FR_15 | ✔ | |
FR_12p5 | ✔ | |
FR_12 | ✔ |
Video Encoding | HERO3 | HERO4,5,6,7 |
---|---|---|
NTSC | ✔ | ✔ |
PAL | ✔ | ✔ |
Photo Resolution | HERO3 | HERO4,5,6,7 |
---|---|---|
PR_12MP_WIDE | ✔ | |
PR_12MP_MEDIUM | ✔ | |
PR_12MP_NARROW | ✔ | |
PR_12MP_LINEAR | ✔ | |
PR_11MP_WIDE | ✔ | ✔ |
PR_8MP_WIDE | ✔ | ✔ |
PR_8MP_MEDIUM | ✔ | |
PR_7MP_WIDE | ✔ | |
PR_7MP_MEDIUM | ✔ | |
PR_5MP_WIDE | ✔ | ✔ |
PR_5MP_MEDIUM | ✔ |
Time Lapse | HERO3 | HERO4,5,6,7 |
---|---|---|
60 | ✔ | ✔ |
30 | ✔ | ✔ |
10 | ✔ | ✔ |
5 | ✔ | ✔ |
1 | ✔ | ✔ |
0.5 | ✔ | ✔ |
Continuous Shot | HERO3 | HERO4,5,6,7 |
---|---|---|
10 | ✔ | |
5 | ✔ | |
3 | ✔ | |
0 | ✔ |
NOTE: Not all the options are available for all the cameras (for example on a HERO3 you can't set 1080p at 240 frame per second 😲). You can see the possibilities on the manual of your camera of here for HERO3 and here for HERO4 and newer
- Missing get status which gives info like mode (photo, video), fow and so on: see here
- Wait for the ESP32 core to make a stable BLE core, right now it has many issues, especially, if used together with wifi: see here
- No confirm pairing for HERO4: see here
- Missing some modes for HERO4 and newer camera: see here
- The arduino class String() could cause memory leaks (I never had problem yet), move to char array? 🤔
BSSID()
andmacAddress()
not perfectly compatible with arduino API: see here- make gopro_mac_address field optional
All the commands came from: https://github.com/KonradIT/goprowifihack
The idea of making a GoPro library for arduino comes from another library https://github.com/agdl/GoPRO which works only on arduino WiFi boards and only with GoPro HERO3.