Background
I have a terrible long term memory, I rarely remember the details of what I did a day before, let alone a week, or month! So for some time I had been playing around with the idea of making my own life logging camera. I had come across previous projects such as the Microsoft SenseCam, and I had given some thought to actually purchasing a Vicon Revue. But given that the Vicon is ~500 usd, and only has a 3MP sensor it didn’t seem like quite a deal. So instead I sought to create my own DIY lifelogging camera!
I started this project on the day before I left for the Open Hardware Summit + Maker Faire. Thus, I didn’t have very much time on my hands to source components. Thankfully I had been doing a bit of designing and researching for a while before, and I had formed a basic concept design.
The Lifelogger camera driving design requirements:
1. compact and small enough to wear like swag necklace
2. wide field of view to capture what I see
3. battery life to last a full day (from when I wake up early at 7am, till when I pass out at 5am on a Friday night)

@jacobrosenthal lifelogging me lifelogging him

The lifelogger camera is based around a GoPro action camera (I use a Hero2, but
an older Hero should work fine). The GoPro is a perfect camera for doing lifelogging; it is small, has a wide field of view (170 degrees), and is relatively inexpensive. But the GoPro has one crippling problem; it has a mediocre battery life. It only lasts ~2 hrs regardless of whether it is recording 1080p video or snapping one picture a minute in its intervalometer mode. In order to extend the battery life of the GoPro, it needed to be hacked! Thankfully others had already done the hard work of figuring out the GoPro pinout and found ways of triggering it using a microcontroller to significantly extend its battery life. Thus all I had to do was base the design around what they had previously done! (which made it much easier, and feasible to complete in one night).

Prototyping
I worked together with my buddy and electronics wizard Jacob Rosenthal to do the electronics. We came across this triggering method developed by this guy 
To trigger the GoPro camera, you link the power button (pin 12) on the GoPro port to ground (pin 30). This is essentially pressing the on button on the GoPro camera. When the GoPro camera is in the one-button mode, you can set it to take a picture the instant that the camera is turned on. Thus by simply using the microcontroller to turn the GoPro on (thus taking a picture), then turn it off and sleep for an interval, you can significantly increase the battery life of the GoPro!
We first prototyped all the parts on a breadboard to make sure it would all work before we transferred it to a PCB. The original schematic on Peter’s website wasn’t enough to actually get the MSP430 running on its own. Quickly flipping through TI example schematics, it turned out that the only additional component we needed to add was a 1K resistor between the Vcc and the Reset pin! To connect to the GoPro expansion port, we took an iPod 30-pin connector, ripped off metal sheath, and did a bit of dremeling to make it key into the port nicely (the iPod connector has symmetrical keyed indentation, the GoPro is slightly offset on one side so you need to Dremel it out). There are a few connectors out there that are designed to fit the GoPro port, but the iPod connectors are all we had on hand.

Modified version of schematic – Added a 1K resistor between the RESET and Vcc pin on the MSP430

Once we had the GoPro successfully triggering off the breadboarded prototype, we then went into Eagle and designed a schematic and board layout.
To mask and etch the copper clad PCBs, we used a laser cutter to speed up and make the masking and etching process a bit easier. Here is a nice instructable on the process
*Side note* So right when we finished etching and cleaning off the first board and were admiring how pretty it was, we realized that we had the traces reversed since the throughhole components are soldered from the rear. Thus we had to go back to the layout, flip all the traces, and then go through the PCB process again :P. Once we had the (correct) board, I soldered on the components, and crossed my fingers, and thankfully everything worked!

Creating the Case
The existing GoPro case was going to be too shallow with the additional board attached to the expansion port, so I created a simple holder for the camera that would give additional space in the rear for the PCB, and also have attachment points so a lanyard could easily be attached.

Two copies of the LifeLogger Camera for Jacob and I

With a two part design I was able to both securely enclose and protect the GoPro, and keep the usb port and SD card slot open and easy to access. The main case and lens hood was 3D printed on an Ultimaker, and the front plate was laser cut from 6mm thick acrylic. Two screws hold the acrylic plate in place, and keep the camera snuggled up inside. I also added a lens hood that protects the GoPro lens by protuding out slightly further than the GoPro lens, so that it ensures I can’t bash the camera lens against objects. This has proven its worth multiple times already

Using It
At the writing of this blag post, I’ve been wearing the Lifelogger for about 2 weeks now. I charge it overnight, and put it on in the morning and wear it until I go to bed at night. At first it was a bit awkward and strange, but like just like wearing a watch, I became used to it over time and now when I take it off at night it feels weird not having that slight bit of weight resting against my chest. Its rested high enough against my chest where it doesn’t bounce around, and stays well out of the way of everything.
*Note* The current board is extremely simple and dumb, it merely just presses the on button to turn the camera on and off, and then waiting at set intervals. Thus if the camera’s on state is out of sync with the trigger, it will be on for the majority of the time, thus not saving battery (ex. if you have the camera on initially, it will then hit the on button (turn it off), and then immediately hit the on button again (turning it on), thus keeping the camera on during the wait interval). Make sure the MSP430 triggering is in sync with the intended state! (or else you might inadvertently let the GoPro herp derp and burn through its battery life)

Settings and Storage
I set the MSP430 to trigger the camera to take a 11 MP photo every 2.5 minutes (often enough to catch short conversations but spaced out enough to not be an overwhelming amount of photos). On average I shoot ~300 photos a day, resulting in about 2.5-3 GB of data (so it will probably be about 1TB for a year of pictures). Right now I’m just locally storing it on an external hard drive, but I’m looking into ways to cheaply and securely store it on the cloud (for easy access, and redundancy). Some options I’ve found are using a flickr pro account, setting up my own server box, or using Amazon Glacier. I still need to figure this part out.

So now make your own!
Here are all the code, CAD and eagle files you need to make your own!
Features planned for next version:
  • Sensors (ex. Accelerometers to minimize blurry pictures, heart beat monitor for physiological triggering)
  • Thinner case (Transplant the GoPro guts into an integrated case w/ the PCB)
  • User input (buttons to easily control interval speed, trigger video recording, trigger an instant snapshot, etc.)