Introduction: AutomaHipster

Automahip aims to take a digital app (Instagram, Hipstimatic etc) and reimagine it in a physical form.

The Automahip can easily attach to most tripods, and has a hold for the users phone.

This is the first prototype and as such and few adjustments will need to be made.

Step 1: Materials

-Featherboard 32u Proto

-FeatherWing 8-channel Servo / Stepper motor or

-Servo Motor x 2

-6v Battery

-3.7v Lithium Ion Polymer Battery

-Enclosure - Wood box - dimensions = L 7" x W 3" x H 3.5"

-Motor Arm

-1/4" T Nut

-Glue Gun

-Arduino IDE program

-Transparency Film

-Soldering Iron

Step 2: Assembling Feather Board and Wing

Adafruit has a tutorial explaining how to solder and assemble these components.

It can be found at this link :

Step 3: Filters

Using photoshop, filters can be created to replicate the ones you would use on your phone.

I've attached the filters I used for this instructable.

The size of each filter is 4x4" and they were printed on transparency film.

It's important to let these filters air dry for a long period of time, otherwise the ink will smudge easily.

Step 4: Enclosure

Dimensions = L 7" x W 3" x H 3.5"

For my enclosure I made a wooden box, due to time and ease it was the best option for me.

Using simple butt joints I nailed the sides together and fitted a top and bottom piece. The top is made of bamboo and can be easily taken off to access the inside, this is important in case anything needs to be changed or fixed later on.

With the bottom piece I drilled a hole in order to put the 1/4" T nut. The hole should be centred for maximum stability.

The T Nut is where the tripod will screw into the box, keeping it stable.

To give the box a cleaner appearance it was painted white to contrast with the bamboo.

The last feature of the enclosure is the hold for phones.

Step 5: Filter Frames

The frames are cut out of cardboard, this can be done by hand or laser cutting.

As the filters are 4x4" the frames are cut to 7" in length and 4" in height.

To match the box they were also painted white.

Step 6: Programming Time!

To upload the code onto your featherboard you will need to make sure you have arduino IDE programing software. It can be downloaded from :

Once you have it downloaded you will need to install the correct libraries for the feather board which can be found at

Now you're ready to go, select the correct board from the tool dropdown bar and then you can plug in the feather board via USB. You can test your featherboard by running the Blink sketch on it, if you can get that to work you're ready and you can plug in the feather wing attachment on top.

Make sure you have a 6v power supply to the featherwing or it won't be able to power the servos.

When plugging in the servos put them in position 1 and 2, making sure to keep the brown wire connecting to GND. Then upload the code in the next step.

Step 7: Code for the Motors



// called this way, it uses the default address 0x40 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // you can also call it with a different address you want //Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41);

// Depending on your servo make, the pulse width min and max may vary, you // want these to be as small/large as possible without hitting the hard stop // for max range. You'll have to tweak them as necessary to match the servos you // have! #define SERVOMIN 50 // this is the 'minimum' pulse length count (out of 4096) #define SERVOMID 350 //middle dawg #define SERVOMAX 600 // this is the 'maximum' pulse length count (out of 4096)

// our servo # counter uint8_t servonum1 = 0; uint8_t servonum2 = 1;

void setup() { Serial.begin(9600); Serial.println("16 channel Servo test!");

pwm.begin(); pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates

yield(); }

// you can use this function if you'd like to set the pulse length in seconds // e.g. setServoPulse(0, 0.001) is a ~1 millisecond pulse width. its not precise! void setServoPulse(uint8_t n, double pulse) { double pulselength; pulselength = 1000000; // 1,000,000 us per second pulselength /= 60; // 60 Hz Serial.print(pulselength); Serial.println(" us per period"); pulselength /= 4096; // 12 bits of resolution Serial.print(pulselength); Serial.println(" us per bit"); pulse *= 1000000; pulse /= pulselength; Serial.println(pulse); pwm.setPWM(n, 0, pulse); }

void loop() {

// Drive each servo one at a time for (double pulselen = SERVOMIN; pulselen < SERVOMID; pulselen++) { pwm.setPWM(servonum1, 0, pulselen); pwm.setPWM(servonum2, 0, pulselen); }


// Drive each servo one at a time for (double pulselen = SERVOMID; pulselen < SERVOMAX; pulselen++) { pwm.setPWM(servonum1, 0, pulselen); pwm.setPWM(servonum2, 0, pulselen); }

delay(2000); for (double pulselen = SERVOMAX; pulselen > SERVOMID; pulselen--) { pwm.setPWM(servonum1, 0, pulselen); pwm.setPWM(servonum2, 0, pulselen); }


for (double pulselen = SERVOMID; pulselen > SERVOMIN; pulselen--) { pwm.setPWM(servonum1, 0, pulselen); pwm.setPWM(servonum2, 0, pulselen); }


// servonum ++; // if (servonum > 7) servonum = 0; }

Step 8: Test

With the code uploaded you may need to tweak the pulses to control the rotations and timing. The servo motors we are using have a variable range and at max should make 180°, my ones made it roughly 160-170° which meant I had to make a few adjustments to fake the 180°.

Step 9: Final Assembly

To space the motors evenly so that the filters hit the same point you attach a piece of wood (13" long) to the main box and from there you can make your adjustments. Using a glue gun will allow the motors to connect solidly. Its important to place the motors in the right direction, so before anything is glued practice running the program and see how it goes. When the featherboard is no longer attached to your computer you will need your 3.7v battery, all of your component will fit into the enclosure.

The frames easily screw onto the servo motors, make sure to screw it tight so they stick to there desired position.

Finally attach the box to any tripod and you are ready to go.