Guide to Stripdown GoPro Hero 3 external MCU control for UAVs, near-space and space applications
|KOREA CANSAT COMPETITION 2014. THE GOPRO ON THE STRUCPRO V2.5 |
(TOP LEFT CAMERA)
I was just notified yesterday that the GoPro camera that we have been working on for quite some time now will not be featuring in SNU’s maiden nano-satellite, the SNUSAT-I, which plans to be launched in LEO next year. The QB50 project which this CubeSat mission has been supervised wants the satellite to have a “homegrown” CMOS imaging sensor instead. Which basically translates that I am in deep, deep shit.
However, I think it is important to touch on what we have been able to do with the camera put it out in the web space for interested parties to see and build on what we have already managed to accomplish. Given the clear understanding that I am no software hacker, we decided to leave the GoPro’s firmware alone and happy and gay (that old gay we grew up learning) and rather focus on external MCU control.
To be able to do so we had to strip down the camera and look for just about anything that let us have complete, reliable access to its controls. This also meant that we had to build an equally reliable, robust structure that could hold the camera in its place inside the satellite/UAV/HABs.
If you are familiar with the camera itself, you will know that the camera has two switches. One power and one trigger. Actually three, the WIFI button as well but I will come back to that in a while. With the combination of two, you can do just about anything, from changing 1080p videos to burst modes to WIFI settings. That means having control of these controls would basically give us access to all the functions.
In hot pursuit of attempting to do so, we found a video on youtube (where else?) of someone basically grounding the buttons each time he wanted to take a picture.
So taking inspiration, we did something similar. The results were exactly what we were looking for. You see, the concept is rather simple; the cameras buttons are at a HIGH state meaning, in camera’s case at 3.7V. They remain that way for time eternity until and unless we decide to remove the battery. In order to signal the camera to turn ON, the power button needs be grounded. Meaning we simply connect that button to ground (0V). In doing so the camera responds and turns on.
[We simply took a wire, tore the sticker off and soldered the wire at the highlighted portion]
Wala. Very simple. Now, applying the same to the trigger switch we have complete control over the camera. It just boils down to bringing an external MCU like a simple Arduino UNO, soldering two wires on the buttons and sending a LOW signal mimicking as if someone was physically pressing the button. I will leave you to find the delay time for each LOW as an assignment. Takes about 5 min tops.
While this went all fine and we started to work on the structure prototype, however, midway through I lost (or should I call it misplaced but never found) the switches (buttons). What I mean by this is that the switches were on the flexible PCB which was linked to the main board of the GoPro. Having lost that meant no switches, no controls.
The immediate solution was to buy another GoPro. But that costs money and GoPros aren’t cheap. The white edition that I was toiling and experimenting with was cheapest of the lot that set us back about $300 dollars per purchase. Having made my futile and unsuccessful attempts at a new GoPro through research funding, I turned my attention at the camera’s motherboard.
Was there a way to control the camera without the switches themselves?
After a painstaking series of experiments, the results have been presented in the image below. There’s also option of directly turning on the WIFI in case you seem to be interested in real time video stream from the camera on your UAV to your computer. Will touch on that later.
[I noticed that the GoPro Hero3 White and Black have slightly different boards. While the Power/Mode Pins remain the same, the Trigger and WIFI Pins in the White have array of pins as in the Power/Mode. I am guessing the pins on the Black should correspond to the once on the White. The far left is the Trigger and the one immediate to the right is the WIFI switch]
Finally, now to the structure. The SNUSAT-I posed some design constrains mainly pertaining to the materials that we could use and also factors such as weight and size. The camera module with the structure was to be under 100g plus had to endure all the vibrations imposed during launch and then survive extreme temperatures in space. Phew.
[The all new StrucPro V3.0 for Striped GoPro. IGES and Solidworks CAD file has been provided below.
Rendered in 2013-14 Student Edition Solidworks]
I will not touch on the development procedure of the structural prototypes as it could get rather tedious and boring, so I will let you have access straight up to the relatively brand new GoPro StrucPro V3.1. The hole definitions should have a fair amount of accuracy in them. We have done testing of the GoPro StrucPro V2.5 both on a Hobby King RC Plane and CanSat (Satellite in a Can) Competition(s) and the structure holds fine. The only downside is that the image’s vertical side is actually longer than the horizontal meaning the CMOS is rotated at 90 degrees.
DOWNLOAD GoPro StrucPro V3.0 [HERE]
[Here’s a stitched image of the GoPro taking a video while being placed on the StrucPro V2.5 on the earlier mentioned Hobby King RC Plane flown by steady hands of labmate and multicopter maniac colleague Jae in front of SNU’s Administration Building. You will notice the new library being constructed]
In regard to image extraction from the onboard SD card which will not concern people who want to use it for near space and UAV as they are bound to get back their Gopro and have access to video or images stored.
However, in case of space it’s entirely different. The GoPro stores files on the SD card through SPI Serial Communication and there’s a whole animal that needs to be explained in order to clarify how that can be used for our advantage and use an external MCU to extract images out from the GoPro controlled microSD and send it back to mother earth. In short, since issues of Multiple SPI arises, a switch is required in order to solve the issue. Which is very boring indeed.
We have also managed to do some further tweaks on the camera for this year’s Creative Design Fair [Fair Poster HERE]. Since we needed an near-IR camera, we removed the IR filter, placed a floppy cut filter to filter out visible light and placed IR leds for indoor, night vision application.
[IR lens modification with IR led on StrucPro V2.5 3D printed structure]
For WIFI live video feed access, connect your gopro to your computer through its WIFI, type in \\10.5.5.9:8080 , select live, copy the weirdest longest link there, past on the network video settings in VLC media player and you will have a 4 second delayed video feed. Which did the job for us.
My undergraduate thesis on gopro's space application: [HERE]