Tag Archives: make

DIY balance bike headlight

Light up your little one’s balance bike with this simple do-it-yourself headlight.

There’s not a lot to say here, glue something ferromagnetic (something magnets stick too) to the front of the balance bike and purchase a puck shaped utility light with a magnet on the back to stick to it. I used a washer and crazy glue, super simple, loads of fun. The light may slide off the washer in the event of a collision — but putting it back on is half the fun!

The balance bike my son has is the Kinderfeets TinyTot Wooden Balance Bike and Tricycle, which converts from a three-wheeled tricycle to a two-wheeled bike when they’re old enough.

Materials

DIY steampunk-style iron pipe Edison fixture

I’ve been seeing these types of steampunk black malleable iron on the net for years; it was only a matter of time before I went and made one. The texture of the iron combined with the warm vacuum-tube glow is quite an amazing effect, and they certainly look easy to make. Previous trips to the hardware store had only resulted in the question of what socket will fit into these types of pipes? I found myself with some spare time this past Saturday, so I went to the local hardware store and laid out 15 or 20 iron gas pipe fittings in the aisle and designed a 4-bulb fixture — roughly designed that is.

While designing the fixture be careful not to screw the fittings together too tightly as they can bind, also keep in mind these fittings will turn your hands black and the sharp threads can easily shred your hands if you slip. This being my first attempt I kept it relatively simple, keep in mind that you will have to thread wiring through all the bends and turns at some point.

I used the largest malleable iron piping I found, which had an inner diameter of 1 inch on the female threaded sections. I then purchased some basic keyless (no switch) brass sockets. These did not fit in the pipes, though I didn’t mind the look of the brass sockets extending from the fixture so I started with that.

The rounded base of the sockets became a problem as when they were wired and threaded into the fixture they lolled this way or that rather than extending straight from the fitting. I tried bulking up the base of the sockets with electrical tape, but they still slipped. I then tried removing the rounded bottom section yet the upper brass part was still too large in diameter to fit in the pipe.

Then I discarded everything but the bare socket with its bakelite base, the middle portion in the exploded image below (not the exact socket, but very similar). These almost fit, I had to crack/shave/cut off some protrusions from the bakelite base. Discarding the brass and cardboard meant that the socket had no protection or isolation for the wiring leads, for this reason I wrapped the hot lead with some electrical tape to isolate it and then ran one wrap of electrical tape around the entire socket. This extra bulk meant I had to twist and fiddle but they still fit in the pipe. If you fiddle so much that you think the electrical tape may have shredded, take it out, replace the tape and start again. It’s better to be safe.

Even though the sockets had no ground lead it was important when wiring be sure to wire all sockets in the same fashion and keep track of which wire is hot as they will all be combined at some point and you don’t want to short the wrong lead to the iron fixture structure.

While threading wire through the fixture you can unscrew fittings but be careful not to twist the wiring too much inside around elbows.

With the sockets wired and the wiring threaded through the fixture the next step was mounting it to the ceiling or wall. The wall mount fitting, pictured right, is not large enough to cover a junction box. For this reason I used a white plastic cover, however screwing the wall mount fitting to the plastic cover would not be strong enough to support the fixture (iron is heavy).

Another problem was that the wall mount fitting’s screw holes would block the plastic cover’s screw holes. I decided to use a steel junction box cover on top of the plastic cover to support the fixture. I drilled a center hole in both covers, two holes to line up with two of the iron mount’s screw holes and ensured that one of the remaining two screw holes in the iron mount fitting lined up with one of the plastic cover’s screw holes. This meant that the iron fitting would not be centered on the plastic cover, but it did allow access to both of the plastic cover’s screws even after the iron fitting was secured.

In this manner the iron fitting could be bolted to the steel cover, through the plastic cover and still allow access to the plastic cover’s screw holes in order to affix the entire assembly to the junction box.

The photo above shows the steel cover which has been drilled, in this photo the white plastic cover has not had the center hole drilled for the wires yet. I’m confident this system would have worked with a full sized junction box, however once I removed the old fixture I realized my desired location had an old-style smaller junction box and this system wasn’t going to work.

As it turns out, mounting to an old-style smaller junction box is even easier as the two junction box mounting bolts do line up with the iron fitting and therefore there wasn’t a need for the steel plate after-all. I put bolts right through the iron mount fitting, the white plastic cover and into the junction box, which allowed the junction box to directly support the weight of the fixture.

If you’re confident wiring fixtures, outlets, sockets and such this should be right in your comfort zone — if not perhaps enlist a friend who is to help out.

If you’re interested in other Edison-style lighting ideas check out DIY reclaimed lumber hanging Edison bulb chandelier and the reason I have so many Edison bulbs kicking around, Maker Wedding: Rustic Edison-style hanging light fixtures.

Maker Wedding: Animated Arduino LED matrix lounge table top


Finally got around to making an LED table top, as it turns out — for my wedding reception. We decided to have a lounge area and an LED coffee table seemed like the perfect centerpiece for it. I decided instead of making a full table that I would make a table top that fit onto an existing ottoman. I affixed the LED strips to a plywood board which had a 2″ raised frame with aluminium duct tape, to help with brightness.

Arranging the LED’s in a proper matrix turned out to be quite a job as the strips I used came pre-wired and there isn’t all that much length between LED’s on the strip. I ended up having to cut and re-splice the connection leads for each row of the 7 x 7 matrix, after that the construction went quickly. You could get around this by using a more modular LED strip solution, I initially had ShiftBrites slated for this project, but I made something else with them and when I got around to this table top there were much less expensive options available.

I created an outer frame with a bevel to support a glass top. Initially I went with plexiglass but it would bow in the middle with anything of weight on the table, I didn’t want to add supports as this would disrupt the light diffusion, so I opted for a piece of tempered glass (actually intended for table tops to boot).

Adding adhesive obscuring film to the glass didn’t have the diffusion effect I’d hoped for so I sandwiched a sheet of white tracing paper between the tempered glass and a similarly sized piece of plexiglass and this gave the soft white diffused look I wanted.

The issue of programming the animations took a little longer. I wanted to use the disco(esc) animations available from the fine folks responsible for the 1E Disco Dance Floor — which I also used in my ohDisco! app for iPad. These animations are 32 x 16 and can have hundreds of frames — too much to load completely into the Arduino’s memory. But I didn’t want to have to deal with reducing the animations to 7 x 7, or reducing their total frame count, as this would affect the quality and overall impression. Instead I opted to add an SD card reader to the setup which stores the animations. The 7 x 7 section of each frame is loaded on-demand from each animation file and displayed on the table, with this setup the Arduino has no memory problems whatsoever and with a little more code it could index and play animations from the SD card without the need for code changes.

Worth noting is that the SdFat library used to interface with the Seeedstudio SD Card Shield wouldn’t run reliably (or at all sometimes) on an ATmega128 so be sure to use a more powerful Arduino running an ATmega328.

Parts

Arduino Sketch


const int chipSelect = 10;

#include <SdFat.h>
#include "SPI.h"
#include "Adafruit_WS2801.h"

uint8_t dataPin  = 2;
uint8_t clockPin = 3;   

SdFat sd;
SdFile myFile;

int rows = 32;
int cols = 16;

long framesize = rows*cols*3;
long rowsize = cols*3;

int ledrows = 6;
int ledcols = 6;

int rep = 0;
long reps = 5;

int brightness = 15;
int delaytime = 40;

char* files[]={
  "pulsar.ddf",
  "snake.ddf",
  "inter3.ddf",
  "inter4.ddf",
  "inter5.ddf",
  "rings.ddf",
  "rings2.ddf",
  "rings3.ddf",
  "matrix.ddf"
  };

int fileCount = 9;

char* file;
int frame = 0;
int frames;

Adafruit_WS2801 strip = Adafruit_WS2801(50, dataPin, clockPin);

// strip to matrix addressing array
byte addressMatrix[7][7] = {
  1,2,3,4,5,6,7,
  14,13,12,11,10,9,8,
  15,16,17,18,19,20,21,
  28,27,26,25,24,23,22,
  29,30,31,32,33,34,35,
  42,41,40,39,38,37,36,
  43,44,45,46,47,48,49
};

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
  delay(400);  // catch Due reset problem
  if (!sd.begin(chipSelect, SPI_FULL_SPEED))
    sd.initErrorHalt();

  file = files[ random(fileCount) ];

  strip.begin();
  strip.setPixelColor(0, 0, 0, 0);
  strip.show();
}

void loop() {
  if (!myFile.open(file, O_READ)) {
    sd.errorHalt("failed");
    rep = reps + 1;
    return;
  }

  // seek to next frame
  if(myFile.fileSize() < ((frame*framesize)+1))
  {
    myFile.close(); 

    frame = 0;
    rep = rep + 1;

    if(rep > reps)
    {
      rep = 0;
      file = files[ random(fileCount) ];
      Serial.println(file);
    }

    return;
  }
  else
  {
    myFile.seekSet(frame*framesize);
  }

  // adjust reps for number of frames
  if(frame == 0)
  {
    frames = myFile.fileSize()/framesize;
    reps = 750/frames;
    Serial.println(frames,DEC);
    Serial.println(reps,DEC);
  }

  int data;

  int column = 0;
  int row = 0;

  while (row <= ledrows)
  {
    while (column <= ledcols)
    {
      data = myFile.read();
      // read red
      int r = map(data,0,255,0,255);
      // read green
      data = myFile.read();
      int g = map(data,0,255,0,255);
      // read blue
      data = myFile.read();
      int b = map(data,0,255,0,255);

      // set pixel address
      byte address = addressMatrix[row][column];

      // set pixel color
      strip.setPixelColor(address, map(r,0,255,0,brightness), map(g,0,255,0,brightness), map(b,0,255,0,brightness));

      // next column
      column = column + 1;
    }

    // reset column count
    column = 0;

    // increment row
    row = row + 1;

    // skip extra pixels
    myFile.seekSet((frame*framesize)+(row*rowsize));
  }

  // turn off first pixel (7x7 matrix, 1 unused pixel)
  strip.setPixelColor(0, 0, 0, 0);

  // send current frame to strip
  strip.show();

  // close the file
  myFile.close();

  // increment frame
  frame = frame + 1;

  // rest
  delay(delaytime);
}

osPID Sous Vide: Open source high tech cooking on a budget

osPID Sous Vide

It seemed inevitable that I’d put together a sous vide immersion cooker, when I came across a post regarding the osPID I knew the time was right. The osPID or Open Source Proportional–Integral–Derivative Controller is a device which can be employed to turn a heater on and off in such a way as to keep the temperature of an environment at a specific level — in this case a container of water used to cook sealed food, or a sous vide.

What I liked about the osPID is that it’s more than just a PID, it’s a platform. Programmable as any Arduino is along with four buttons, a two line LCD display (my favourite white-on-blue style) and limitless expansion possibilities, the osPID can be used in many, many applications — a sound investment I thought, so I invested. Can anyone spot the other PID in the gallery?

Commercial sous vide cookers can be extremely expensive. Creating one yourself is easy, it can be taken apart for storage and you can also salvage parts from it for other projects if need be.

Parts

  • osPID Kit $85.00 (Rocket Scream)
  • Exoterra Repti flo 200 Circulation Pump $10.99 (Pets & Ponds)
  • Milwaukee Type K 49-77-2002 Thermocouple $14.17 (Amazon)
  • Norpro 559 300 Watt Water/Tea/Coffee Heater $7.05 (Amazon, eBay) *Ensure the coils are submersed before powering (plugging-in) or these will fry themselves
  • 12V, Positive Center, A/C Adapter
  • Grounded Extension Cable
  • Coat Hanger
  • Clip

Alternate Parts

Once I had the osPID up and running, thanks to great support from Brett (one half of the dynamic duo responsible for the osPID), I cut the black (hot) wire of the extension cord and attached each stripped end to the relay onboard the osPID. By using an extension cord I can plug any type of heater into the relay, for this project I purchased two Norpro Water/Tea/Coffee Heaters which have a useful clip style base. Because the extension I wired only had one outlet I needed a power bar to plug both heaters in — whether or not you’ll need one will depend on how many heaters you want to use.

I then purchased a K-Type thermocouple (don’t ask me what it means, K-Type is what the osPID supports), removed the connector it came with and connected the positive and negative leads to the thermocouple terminals on the osPID. These terminals are polarized so keep track of positive and negative leads on the thermocouple while working.

That’s it really. I purchase a circulation pump to keep the water moving in the vessel and thus heating evenly. I try to include a coat hanger in every project so I used one to suspend the ziplock full of tenderloin secured with a clip in the sous vide.

Keep in mind the thermocouple will most likely not read the proper temperature until calibrated so just use a thermometer to find the target temperature and set the osPID accordingly. For me an input reading of 57 translated to the 130°F I needed for medium rare, so I set the osPID to maintain an input of 57.

I would’ve preferred a larger bowl and will track one down, but the Beef Tenderloin With Lemon-Parsley Butter I cooked with my favourite gal turned out fantastic and we’re looking forward to more sous vide meals.

Thanks to Brett for the swift support and for the osPID itself.

Update: The Norpro Heaters stopped working on my second cook. This is probably due to the fact that I plugged them in before fully submersing the coils, that being said, many others have had these types of cheap immersion heaters die on them — so I included an alternate upgraded heater for those wishing to avoid the issue. Thankfully since I wired in a cord not the heaters themselves I was able to plug in another heat source for the osPID to control in order to get my dinner cooked.

Update: To replace the Norpro Heaters I picked up a couple of heating elements at a local electronic surplus store (Active Surplus) for $3 each. I snipped and soldered the Norpro power cords to the new heating elements and covered the connections with heat shrink tubing. You can see the final results in the gallery above. These weren’t stainless steel but they work just fine, I bent them to follow the curve of the bowl (which I’ll probably regret when I switch to another container) and to keep them from slipping I fashioned some clips out of, you guessed it, left over coat hanger. They’ll probably short circuit if both solder joints hit the water, heat shrinking or no – be mindful of that if you decide to go this route. I believe these are somewhere around 140 Watts, I needed both to maintain a temperature setting.