The DIY Lifelogger Camera

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.)

3D printed fibonacci watch band

A quick add-on to the last post. I wanted to make a striped watch (and design something that could be dualstruded on the Seeedstudio Replicator), but not just any striped pattern… so I turned to nature+mathematics for inspiration, and came up with a fibonacci sequence striped watch band!

Design:
With a layer thickness of 0.27mm, the 21.6mm thick band turned out to be 80 layers thick. Thus Alternating between white and black I was able to represent the fibonacci sequence as the number of layers of each alternating colored stripe. I was able to encode the sequence 1-1-2-3-5-8-13-21 and part of 34, since I only had 80 layers to work with.

You can count the layers, and see the fibonacci sequence!

I then took the solid model, sliced it accordingly to the layer counts of each stripe, and saved the two corresponding sliced parts it as two solid models. Then it was simply a matter of following this tutorial.

It took a bit of finagling to get it to print right without curling (since currently the dualstrusion print profile doesn’t include rafts to help stabilize the first layer), but I got it on the 4-th try!
One of the inherent problems of FDM (Fused Deposition Modeling) 3D printing is that there is always “ooze”; since the material being extruded is heated to liquid state, it naturally oozes out of the extruder over time as it is being pulled by gravity. When doing dual colored 3D prints, using two extruders the “ooze” from the extruder that is not currently extruding leaves little ABS droppings on the print wherever the extruder passes over the print. Thus you get residual lines, and bits of plastic inside the print. The question is, is there a way to stop the ooze? maybe a tightly toleranced and actuatable valve/lid? Or designing a nozzle that takes advantage of the surface tension of the liquified print material? This problem must be solved if the open source FDM 3D printing community wants to achieve high quality blemish-free prints, and if one wants to minimize intermixing between two different print materials.

Anyways enough rambling, here’s more pictures of the purdy results!

3D printed watch band

A while ago I wondered if it was possible to 3D print a watch band that was not only functional and strong, but also aesthetically pleasing. After smelling what the continual Shenzhen humidity had done to my NATO style watch band in the last month, last night I decided it was time to actualize this idea.

Here’s the sexy results of a few hours of CAD and Makerboting (is that going to become a verb, like xeroxing?)

First off I started by posing my concept: I wanted to use an extrusion-type 3D printer (makerbot) to print out a flexible wrist watch band that is thin and flexible.

My first try was more of an experiment to determine if 2 layers of ABS plastic was strong and flexible enough to act as a watch band. I designed a 1mm thick band, and spec’ed the prototype to test the watch spring bar mounting holes. In the first print there was noticeable curling after the 10th layer, so I stopped the print part way. Additionally, there was a small gap between the two shell layers of the watch band such that it wasn’t properly bonded. I tried to rip apart the first partial print (about 4 mm in width), but I was not able to without help, thus proving that this ABS band would be strong enough!

After adjusting the watch band to be 0.75mm thick ( to eliminate the gap), and printing on a raft to stop the curling, this was the result! This second print proved that 2 layers of ABS were indeed strong and flexible enough to be a watch band, but the watch springbar holes were not fully supported by infill, thus I resized the holes so that they would be set closer to the shell (and hopefully bond with it). Right about now I realized that a standard watch clasp wouldn’t work well for the 3D print (since the clasp would exert force parallel to the ABS print lines, and probably split it and rip right through). So I set about designing printable clasp. I took the concept of a zipper (with trapezoidal interlocks), and made a simple watch clasp out of it. Here is the first clasp design I made The watch band of the second print was wayyyy to long, so I resized the watch band diameter to fit my wrist circumference (~172mm). The watch band design length was sized according to the length of two arcs (with a radius of 35mm) + a top flat piece that supported the bottom of the watch. After this bit of the design refinement, I printed the third prototype with fingers crossed.

As its said, the third time’s the charm and the third print came out very nicely :D

With a little bit of filing the clasp slid in and out smoothly and snugly, and the watch cuddled my wrist fairly cozily like a koala on a eucalyptus tree.
As always, there little things that can be tweaked. So I made a final fourth revision that reduced the length of the band by 4.25mm so that it would cuddle up a tad bit closer, and eliminate some of the side slack space. Additionally, the way that the male side of the clasp attached to the watch band created an air gap after the clasp. Thus I adjusted the male clasp side design to close the gap an make the clasp more physically symmetrical
Here is the final (for now :P ) revision


The files for the watch band are posted here on Thingiverse

total project time: ~ 5hrs

Graduation + LEDS = funsies

So I recently graduated from Arizona State University with a Bachelor’s degree in Mechanical engineering! whoohoo.

So the day before my graduation ceremony, I decided that I wanted to do something with my mortarboard. I have been meaning to build a simple LED matrix for some time now, and I decided it would be the perfect opportunity to make one! So at 4:30 pm, the day before graduation, I started the sketching out my design for the LED mortarboard. In order to display aplha-numeric messages, I determined that at minimum a 5×4 LED matrix would be necessary to display most of the characters of the alphabet and all the numbers (except for M and W). I based the wiring design and code around the Arduino direct-drive LED matrix information from this link.

In order to construct the LED matrix on the mortar board I first measured out the mortarboard, and laid out a pencil grid of lines in order to evenly space the LEDs. The mortar board was made of cardboard, so it was relatively easy to then poke two holes for each LED at each of the spots. I then inserted each LED through the holes and made sure to align the cathode and anodes in corresponding directions to make soldering the matrix easier. 

Once all the LEDs had been inserted, I then cut and stripped wire harnesses that lined up with each of the LEDs. In order to securely attach the LEDs to the wiring, I first hooked each of the LED leads as shown below 

I then crimped each of those hooked legs around the pre-tinned wiring harness, added some heat and boom, instant strong solder joint! 

I repeated this process for both the rows and columns, and routed the ends into the cap itself to semi-hide the birds nest of wiring.

To make it easy to plug into the Arduino I soldered some male headers on the wires. To power the whole thing I used 4x AA battery pack from sparkfun, and ran the power wires from my pocket up to the mortarboard.

fun messages scrolled by the mortarboard included, “ASU Class of 2012 is 1337″, and “Feels good brah”

here’s a poor quality video of the thing in action!

http://www.youtube.com/watch?v=pgA3khWz7xk

Total time of the project from “hmmmm I should make something” to finish ~ 8 hrs

LED watch update

Jacob (@jacobrostenthal) the god-like EE and master maker at heatsynclabs designed and made the LED light control board. Here’s a quick video showing how blindingly bright it is. We had no issues transmitting light through our fingers and slightly through my palm!

Here’s a picture of how the LED watch looks on my wrist. Its a bit thick, so I’m shaving off a few mm, and redesigning  the button mechanism for the next one.

The button mechanism worked fairly smoothly on the first print when we only used 2 shells in the 3D print. On the second print we used 3 shells but the tolerances came out weird and Jacob wasn’t able to get the mechanism to work smoothly. Lesson learned: tight tolerances can be finicky if you adjust the number of shells you print. The good news is that the 22mm spring bars fit beautifully and held the watch band in place solidly.

Antarctic Timelapsings

I finally compiled the short timelapse sequences I took in Antarctica into a little video. Seeing the continuously circling sun dance around you never ceased to mesmerize me while I was there. I miss those Antarctic views that gave me that same existential crisis inducing tingles that staring up into the deep infinity of space deliver.

LED watch update

Working late into the night on the LED watch with @jacobrosenthal at heatsynclabs, the local hackerspace! Got some beautiful 3D prints of the fourth revision of the watch case in some sexy silver ABS.All the details came out really nice, and I sized the lettering justtt right

Here is a quick video of the Makerbot doing its thing, laying down the Shell layers for the watch face part. The brisk whirrs and hums of the stepper motors make a nice CNC symphony of sorts.

 

 

First week in Antarctica

Its a surreal experience being down here. Its easy to feel like everything is “normal”, doing the familiar tasks of debugging the robot, soldering wiring, etc. However every time I take a peek up from the workbench to my lab window, I see the Ross Ice shelf stretch out until the Royal Society mountain range. Its breath taking. Its weird. Its beautiful. Even though I have only been here for ~5 days, its feels oddly homely and familiar. The galley is bustling like any university dining hall, filled with casual banter and dirty jokes. Its nice how everyone is pretty friendly and approachable. I don’t feel like an outsider at all. So… an update on what I have been up to. The day after I arrived to McMurdo, I was assigned to undergo the Snowcraft I course, known as Happy Camper School around here. It was essentially an outdoor survival training course, where we learned how to stay alive, and thrive outdoors in the icy environment. It was loads of fun, and the group I was with was awesome, which made it all the more enjoyable. 

 

Right after I got back, it was straight to getting MSLED working. I had to redo some wiring harnesses and trouble shoot some bugs, but as of right now MSLED is working! (mostly). I’m shooting for a field test this weekend on the sea ice. We will see how that goes (fingers crossed).

well I’m gonna go grab a drink at gallagher’s (one of the bars down here) before I head off to sleep.

over and out

 

 

 

 

To Antarctica I go! Leg 1, PHX to LAX

So finally here I am waiting at the gate here at PHX, mildly delirious, and most definitely sleep deprived. After an all-nighter prepping, debugging and frantically packing with the team (special thanks to Scott and Alex for trooping it out all night), we have our little robot all ready to go all snugly tucked away in a carry-on, and all of his lab buddies  (tools and spares) packed into two check-in pelican cases that are exactly 70 lbs each. Well, off by 2.5 lb but I was able to get away with it. Ill try to make posts more interesting and picture filled in future, but right now all I can think of is sssllleeeeeepppp

Over and out

Colin