Introduction: Dr. Who Tardis - IoT

In this Instructable I will explain how to make your own Dr. Who Internet-of-Things Tardis!

There are some great Dr. Who Tardis Instructables out there, like a money box or a puzzle box. None of them really fitted my needs though, so I used them as inspiration and made my own version!

Here is what you'll need:

- 3mm MDF or plywood (approx. 50*23cm)

- black & blue paint and a paint brush

- plastic film (see-through white or clear)

- 5.5mm power jack socket

- 1 RGB LED (or a white LED), 3x 220 Ohm resistors

- Particle (Spark) Core or Photon

- small breadboard or a piece of PCB

- WS2812B LEDs (either a strip or LED&pcb board)

- Some wires and headers

You can get pretty much all of the electronic parts on eBay or Adafruit. The plastic film can come from a package or something else you have laying around. And you can find paint at your local hobby shop or even toy store.

You'll also need access to a soldering iron/station. And access to a laser cutter would be handy. You can of course use a saw, but a laser cutter will save you a lot of time and trouble.

Step 1: Laser Cutting

The first step is of course to cut al your parts with a laser cutter.

I've added the files to this step.

As you can see I used the files from this Instructable, and changed them a bit so it fitted my needs.

Step 2: Sanding

After you cut al the parts it is time to sand them. First remove all the burnt wood by sanding the edges where the laser cut the wood.

When that's done the worst part starts. You have to sand all the sides of the wood to make sure the paint will hold. I used some spare wood that I had lying around. One side had some sort of clear coating that was pretty easy to get rid of. The other side however had a layer of white paint on it which was pretty hard to get rid of. It took me a lot of time and a sore arm.

Please be smart and where some mouth/nose protection like a mouth mask or something. Things get really dusty while sanding. I was stupid enough to not wear any protection and was coughing my lungs up for the rest of the week. So wear protection if your wood also requires a lot of sanding!

After sanding I cleaned my wood with a cloth and water mixed with a little bit of ammonia. I don't know if this is really necessary but it's what I've always been taught. Since the wood was very dusty I had to clean it anyway, so I figured it wouldn't hurt to just do it. Make sure to let your wood properly dry before you continue to the next step.

Step 3: Painting

The next step is to paint the wood. I used some acrylic paint that we had laying around.

There are basically two options for this step. You can either mix the paint to the desired colour and paint it on. This will take you the least time.

I am however very bad at mixing paint. For some reason I always end up with not enough paint and I never can make the same colour twice. So I chose to go for the other option. I first applied a layer of black paint to all the pieces. This is the base layer.

Once everything is dry you can start applying the blue paint. It will probably take a couple of layers before you get the desired colour. I ended up painting about 3 to 4 layers of blue paint until I had a colour I was happy with.

Step 4: Plastic Film

Once the paint is completely dry it's time to apply the plastic film. I didn't have semi white plastic film, so I used some clear plastic film. In a later stadium I decided to sand it up a bit.

Cut the plastic in squares and then glue the pieces to the wood with tiny dots of super glue.

Step 5: Glueing the Pieces Together

It's now time to glue the pieces together.

I started with the plug and the top. It's pretty straight forward how they should be glued together. I used super glue to glue the little ring and circle to the RGB LED.

Next it might be smart to glue your power socket in place. My hands are not very big so I felt confident that I would be able to glue it in later since I didn't solder wires to it yet. But you might want to glue it in first. In that case, go to step 6 and then come back to this step.

After that it's time to glue the inside together. It's again pretty straight forward how it should be glued together. Mine fitted pretty tight already, but I decided to put some glue between it anyway to be extra sure it wouldn't fall apart. Once that is completely dry it's time to glue the pieces with the windows on.

One of the last steps is to glue the small little bars to the bottom and the bigger signs to the top.

Last but not least it's time to glue the signs on there. The files are attached to this step. Print the signs on normal paper. Then cover the wooden area with a thin layer of wood glue and put the sign on it. Carefully press the paper on there and make sure there are no bubbles under the paper. Then cover the paper in another thin layer of wood glue. This glue will be clear once dry.

Step 6: Soldering and Connecting Everything

The next step is to connect all the electronics.

See schematics above.

I started with soldering wire to my RGB LED. There are two types of RGB LEDs, so make sure you connect it the right way. In my case, the longest leg is the ground. You can directly solder a wire to this. Solder a 220 Ohm resistor to the other three legs. Then solder a wire to the resistors (see picture).

Next I soldered wires to my power socket. Again, there are different types of power sockets, so look in the datasheet of your socket to find out how to connect it. If you don't have a datasheet, you can use a multimeter to find out which pin is what.

Then solder your LED strip. Measure how many LEDs will fit on one side of your Tardis (in my case 3) and cut the LED strip. Then solder it back together with short wires. Connect GND to GND, 5V to 5V, and DO to DI. After soldering I used some hot glue to strenghten the soldered connections.

Once done soldering I put the power socket in place and used a lot of hot glue to keep it in place. I then did the same for the LED strip.

The last step is to connect all wires to your Core or Photon. See schematics and pictures above. I connected all ground wires in one row of my breadboard. Same for all the power/vin wires. Connect the ground row to GND and connect the power row to VIN. Then I connected the DI wire of the LED strip to pin D6 on my Core. And I connected the R, G and B wires from the LED to pin A4, A5 and A6.

Step 7: Testing

Now that everything is connected it's time to test if it is all working.

Plug your adapter in the power jack socket, connect your Core and flash the code below.

The LED strip should now do a rainbow loop and after a few seconds the RGB LED should change from red to green to blue.

#include "application.h"
//#include "spark_disable_wlan.h" // For faster local debugging only
#include "neopixel/neopixel.h"

// IMPORTANT: Set pixel COUNT, PIN and TYPE
#define PIXEL_PIN D6
#define PIXEL_COUNT 60
#define PIXEL_TYPE WS2812B

int test(String command);

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);

void setup() 
{
  strip.begin();
  strip.setBrightness(255);
  strip.show(); // Initialize all pixels to 'off'
  
  pinMode(A4, OUTPUT);
  pinMode(A5, OUTPUT);
  pinMode(A6, OUTPUT);
  
  
}
void loop() 
{
  rgbLed(20);
  rainbow(20);
}

void rgbLed(uint8_t wait) {
    analogWrite(A6, 200);
    delay (500);
    analogWrite(A6, 0);
    analogWrite(A5, 200);
    delay (500);
    analogWrite(A5, 0);
    analogWrite(A4, 200);
    delay(500);
    analogWrite(A4, 0);
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i

Step 8: Connect Your Tardis to the Internet

Everything is put together and working, so the only thing left to do is to connect your Tardis to the internet!

This can be done fairly easy with IFTTT.

The first step is to create a function in your Particle app. This can be done with the following code: Spark.function("functionName", test); Place it in setup (see completed code below)

Next, make the variable and the function that will contain the code that needs to be executed. Search for "int test" twice in the completed code below.

Finally, flash the code to your Core or Photon.


Once that's done, make a new recipe at IFTTT and choose a trigger channel. For example; Gmail. Then select a trigger (any new email in inbox). Login with your gmail account, follow the instructions, and click Create Trigger.

Then select Particle as an action channel. Select 'Call a function' as an action. Choose the function name that you just made (functionName) from the dropdown menu. You can fill in an input for the function, but you can also leave it as is. In this example we won't do anything with it.

Click create action and then create recipe. That's it!

Now go send yourself an email and see if it's working. It might take a while before IFTTT checks your recipe, so you can click the button to run the recipe immediately. It also takes a few seconds for the lights to turn on after the recipe was checked, so be patient!


Completed code:

/*
 * This is a minimal example, see extra-examples.cpp for a version
 * with more explantory documentation, example routines, how to 
 * hook up your pixels and all of the pixel types that are supported.
 *
 */

#include "application.h"
//#include "spark_disable_wlan.h" // For faster local debugging only
#include "neopixel/neopixel.h"

// IMPORTANT: Set pixel COUNT, PIN and TYPE
#define PIXEL_PIN D6
#define PIXEL_COUNT 60
#define PIXEL_TYPE WS2812B

int test(String command);

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);

void setup() 
{
  Spark.function("functionName", test);
  strip.begin();
  strip.setBrightness(255);
  strip.show(); // Initialize all pixels to 'off'
  
  pinMode(A4, OUTPUT);
  pinMode(A5, OUTPUT);
  pinMode(A6, OUTPUT);
  
}
void loop() 
{
}

int test(String command) {
    analogWrite(A4, 255);
    for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, 255, 0, 0);
    }
    strip.show();
    delay(10000);
    analogWrite(A4, 0);
        for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, 0, 0, 0);
    }
    strip.show();
}

Step 9: Finish Things Up

Last but not least:

Place your Core in the Tardis (if you didn't do that already) and put the plug in the bottom.

Remove any masking tape that was left and finally glue the roof to the rest of the Tardis.

That's it! You're done!

Now go program your Tardis with some funky functions and enjoy! :)

Fandom Contest

Participated in the
Fandom Contest

Remix 2.0 Contest

Participated in the
Remix 2.0 Contest

Soldering Challenge

Participated in the
Soldering Challenge