Control GoPro Hero 3+ Black from Arduino
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Comparison.md
DummySerial.h
LED.cpp
LICENSE.txt
MewPro.h
MewPro.ino
README.md
a_Queue.ino
b_TimeAlarms.ino
c_I2C.ino
d_BacpacCommands.ino
e_Shutter.ino
f_Switch.ino
g_IRremote.ino
h_LightSensor.ino
i_PIRsensor.ino
j_VideoMotionDetect.ino
k_Genlock.ino
l_TurnedOn.ino

README.md

#MewPro

Arduino BacPac™ for GoPro Hero 3+ Black: GoPro can be controlled by Arduino Pro Mini attached on Herobus.

Resources:


###How To Compile The following small-factor microcontroller boards are known to work with MewPro at least core functionalities and fit within the GoPro housing. Not all the sensors, however, are supported by each of them.

  • Arduino Pro Mini 328 3.3V 8MHz

    • w/ Arduino IDE 1.5.7+
    • if you have troubles on compiling unused or nonexistent libraries, simply comment out #include line as //#include (see Note* below)
  • Arduino Pro Micro - 3.3V 8MHz

    • w/ Arduino IDE 1.5.7+
    • if you have troubles in compiling unused or nonexistent libraries, simply comment out #include line as //#include (see Note* below)
  • Teensy 3.x

    • [POWER SUPPLY: The VIN-VUSB pad connection on the bottom side of Teensy 3.x needs to be cut.]
    • To compile the code with Teensy 3.x:
    1. use Arduino IDE 1.0.6+ and Teensyduino 1.20+
    2. comment out all unused #include as //#include (see Note* below)

(Note*: There is an infamous Arduino IDE's preprocessor bug (or something) that causes to ignore #ifdef/#else/#endif directives and forces to compile unnecessary libraries.)

  • GR-KURUMI
    • [POWER SUPPLY: The dummy resistor soldered on JP1 of the MewPro board needs replacement w/ a general purpose diode of >100mA w/ dropoff voltage 1V (eg. Bourns S0180); Anode should be located on the Herobus side and Cathode on the Arduino side.]
    • To compile the code with GR-KURUMI using (Renesas web compiler)[http://www.renesas.com/products/promotion/gr/index.jsp#cloud] :
    1. open a new project with the template GR-KURUMI_Sketch_V1.04.zip
    2. create a folder named MewPro and upload all the files there.
    3. at project's home directory, replace all the lines of gr_scketch.cpp by the following code:
#include <RLduino78.h>

#include "MewPro/MewPro.ino"
#include "MewPro/a_Queue.ino"
#include "MewPro/b_TimeAlarms.ino"
#include "MewPro/c_I2C.ino"
#include "MewPro/d_BacpacCommands.ino"
#include "MewPro/e_Shutter.ino"
#include "MewPro/f_Switch.ino"
#include "MewPro/g_IRremote.ino"
#include "MewPro/h_LightSensor.ino"
#include "MewPro/i_PIRsensor.ino"
#include "MewPro/j_VideoMotionDetect.ino"
#include "MewPro/k_Genlock.ino"

###Serial Line Commands By default MewPro is configured to use the serial line for controlling GoPro. All the commands are listed at https://gist.github.com/orangkucing/45dd2046b871828bf592#file-gopro-i2ccommands-md . You can simply type a command string to the serial console followed by a return; for example,

  • PW0 : shutdown GoPro
  • TM0E0A0D090F00 : set GoPro clock to 2014-10-13 09:15:00 (hexadecimal of YYYY-MM-DD hh:mm:ss)
  • SY1 : shutter (camera mode) or start record (video mode)
  • SY0 : stop record (video mode)

Almost all listed commands that have a label named SET_CAMERA_xxx are usable. Moreover two special command are implemented in MewPro:

  • @ : GoPro power on
  • ! : toggle the role of MewPro (slave -> master or master -> slave)

Also the command ! can be used to write the necessary bytes to onboard blank/new I²C EEPROM chip: In order to work as a fake Dual Hero Bacpac™, MewPro's I²C EEPROM must contain such info.


###Sensors The code here includes examples to support various sensors:

  • b_TimeAlarms.ino : Using RTC (real time clock) in GoPro camera body.
  • e_Shutter.ino : Using external shutters such as CANON Timer Remote Controller TC-80N3.
  • f_Switch.ino : Using mechanical switches such as push buttons or reed switches
  • g_IRremote.ino : Using IR (infra red) remote controllers such as DFRobot Digital IR Receiver Module (Arduino), DFR0094.
  • h_LightSensor.ino : Using Microsemi Visible Light Sensor LX1971 and green laser pointers.
  • i_PIRsensor.ino : Using Parallax PIR sensors.
  • j_VideoMotionDetect.ino : Using Intersil Sync Separator EL1883 and a bulk motion detect algorithm.

If you like to use these functions please refer the corresponding .ino files.


###Genlock Dongle MewPro is designed to work with Genlock Dongle [https://github.com/orangkucing/GenlockDongle] Please refer the repository for details.

To use MewPro source code with Genlock Dongle, please #define USE_GENLOCK and set EEPROM (by using "!" command) as "master" for not only MewPro #0 but also MewPros #1, #2, #3, ...

For MewPro #0 it must be set debug = false, and for other MewPros this setting does no harm. So you can always set debug = false if you use this source code with Genlock Dongle.


###Timelapse (non-genlock MewPro software) MewPro in non-genlock supports start/stop of GoPro's timelapse. However a misuse will cause firmware corruption of your GoPro and you'll need to reinsall the firmware.

  • GoPro must be power-on in timelapse mode and interval must be set beforehand.
  • Interval must be greater than 2 seconds. (This is GoPro's limitation on Dual Hero System)