1. Disassembly - January 2018

1. Flip Tardis on its side, remove batteries
2. Remove screws from base
3. Remove base; careful as it's spring loaded, remove and keep spring elements safe and make sure floor door pusher doesn't fall out
4. Remove the screws that connect the base to the inner pillars
5. Apply gentle force to remove the base from the Tardis, careful of the wires
5. Now remove the screws from the Tardis' ceiling
6. Now remove the screws from the Tardis' ceiling
6. Remove the roof, watch out for the ribbon cable, ease it up gently so not to break the supporting clips
6. Remove the lighting rig
6. Remove the interior imaging, work it around the inside so not to tear it
6. Remove the screws attaching the interior of the Tardis
6. Lift out the interior by holding the base and wiggling it free
6. The electronics should now be visible (speaker and chip)
6. Remove both the chip and speaker by unscrewing
6. Detach the battery cables and remove all the interior cabling, disassembly complete.



2. Initial Circuitry Plan

How I planned to wire the circuit, powering all areas of the Tardis by USB attached to a circuit, then using Vin into power the ESP8266.

Whilst this version is on a breadboard, I plan to move it to a prototyping board to fit within the casing of the Tardis when it’s complete due to it being around the same size as the original circuit board and being able to fit in its place.

3. Assembly (version 1)

  • Following the breadboard guidance above, I wired up the top LED with the resistors soldered between two wires connecting the bulb and ESP8266

  • Before soldering these two together, make sure that the bulb is connected the right way around!

  • Also, when wiring up the LED strips, to remove the silicon saw through the top layer and bend the wire until it simply peels off

  • The first time the web interface actually appears is the most satisfying moment ever, to test it for both the single LED I used the two example scripts linked at the bottom of the page in resources.

  • Once both the LEDs work, and you’re happy, push the ESP8266 into the prototype board and solder it in, then check if it boots. If not you’ve connected two of the pins together and you will be stuck in a terrible boot loop (desolder them and it’ll work fine), the lack of booting caused me a lot of confusion!

  • Whilst this version is on a breadboard, I plan to move it to a prototyping board to fit within the casing of the Tardis when it’s complete because it will be around the same size as the original circuit board and fit in its place.

3. Restarting

Circuit Final

'Real' Circuit Diagram

  • I later realised that this probably wasn’t the best way to go around circuit design and that my extra resistors and that running 3 more cables up a very limited space would not fit.
  • My new design uses two NeoPixel rings instead, which only require Ground, 5V and digital in cables (where the 5V cable is shared between the two) rings meaning that only 5 cables need to be run up to the roof.
  • More holes to be drilled in the roof to help light spread, out of the box the Tardis sheds light really poorly, to allow more light to get to windows as well I’ll cut down the sides of the plastic to allow light straight out.
  • You can see a circuit drawing and a ‘real’ circuit diagram to the left.
  • To build this I used two Adafruit NeoPixel 5050 rings and an ESP8266, as well as a MQTT (Mosquitto) server hosted in the cloud.

4. Building (again)

Soldering up the NeoPixel rings for the Tardis roof.
Fitting the new ring in the roof for the interior.
Connecting up the wiring loom and seeing how it fits and whether lighting works correctly.
Connecting up the wiring loom and seeing how it fits and whether lighting works correctly.
How the roof looks with more holes and reduced backpiece size.
How the complete Tardis looks. Reassembly was pretty easy, just follow the disassembly instructions backwards!

Firmware

  • I flashed the ESP8266 with MicroPython to run my software, on boot the ESP8266 connects to WiFi and then runs main.py which handles connecting to an MQTT server and waiting for requests.
  • The tardis allows the lamp to be manually flashed, the interior colour changed or notifications to be sent.
  • Now when running, I can just call the following commands
  • lamp0,50,0 - sets the lamp colour for one blink
  • interior0,50,0 - changes the interior colour until overridden or rebooted
  • notify0,50,0 - flashes roof and changes interior temporarily to notify

If you fancy building something like this yourself, you can find a copy of the firmware I wrote and the useful uMQTT library here:


Firmware on GitHub

Retrospective

  • Looking back on the Tardis, I’m really pleased with what I’ve created as an Internet of Things and MQTT device, I was initially planning to use this project solely as a notifications delivery platform.
  • uPyCraft is great, as is screen and MFPShell
  • I now plan to link the MQTT to Home Assistant, to allow the static colour to match that of a colour scene that I set.
  • As for writing for MicroPython on an ESP8266, I’d really recommend ESPTool for Mac to flash, screen (built in to see what’s happening on the console live and run basic commands), MFPShell to push and get files reliably and uPyCraft as a reliable enough IDE.

Video

You can see a video of the finished product below:

Useful Resources

Be careful - electrical fires don’t smell nice