Incoming Doom



(My apologies for the late post everyone!!)


Project Description

The premise behind the project involved teleportation. A space traveller accidentally initiates reception of a rogue “teleport” signal and is horrified when it is revealed that there is a space ghost coming through. The user experience is as follows: user walks by installation, an interesting visual appears in an enclosure of sorts – this is the teleport receiver pod, as the user walks by, the touch screen lights up, notifying them of an incoming teleport, the user is prompted to touch the screen. If the user touches the screen a sequence begins, detailing the incoming transmission and how there is something non-human coming through. At this point the teleport receiver begins revealing the monster coming through as it lets out a harrowing cackle.

This project required various components to function as an interactive experience. Firstly, in order to initiate the entire interaction, an Arduino was used in combination with an IR depth sensor to sense a potential user passing by. When a user is detected it announces announces it via serial. The Arduino also doubles as a controller for ambient/environmental lighting, which allowed for extra atmosphere to be added, for example, flashing red when the teleport alarm goes off.

The remaining components were, the project light surface (aka the teleport receiver), this was a Processing sketch running the incoming ghost visuals, projected onto a translucent mesh surface from behind. A second, separate Processing sketch was running a pre-scripted on screen dialogue accompanied by audio read out of the events occurring. This is the primary method of interaction. Once this application receives the serial data from the Arduino, reporting that a user is nearby it will prompt the user to touch the large screen. Upon receiving a touch, the application begins a series of timed events and audio queues. During this period it will then communicate with the application running the projected surface and start the video of the ghost appearing.

This combination of on screen dialogue with projected video and choreographed lighting in the surrounding environment, I hope helped contribute towards creating an immersive experience.


Circuit Diagrams

Assembly List

Label Part Type Properties
J1 Infrared Proximity Sensor
LED1 RGB LED (com. cathode, rgb) rgb RGB; package 5 mm [THT]; polarity common cathode; pin order rgb
LED3 RGB LED (com. cathode, rgb) rgb RGB; package 5 mm [THT]; polarity common cathode; pin order rgb
LED4 RGB LED (com. cathode, rgb) rgb RGB; package 5 mm [THT]; polarity common cathode; pin order rgb
LED5 RGB LED (com. cathode, rgb) rgb RGB; package 5 mm [THT]; polarity common cathode; pin order rgb
Part1 Arduino Uno (Rev3) type Arduino UNO (Rev3)
Q4 NPN-Transistor package TO92 [THT]; type NPN (EBC)
Q5 NPN-Transistor package TO92 [THT]; type NPN (EBC)
Q6 NPN-Transistor package TO92 [THT]; type NPN (EBC)
R2 100Ω Resistor resistance 100Ω; package 1206 [SMD]; tolerance ±5%
R3 100Ω Resistor resistance 100Ω; package 1206 [SMD]; tolerance ±5%
R4 100Ω Resistor resistance 100Ω; package 1206 [SMD]; tolerance ±5%
R5 100Ω Resistor resistance 100Ω; package 1206 [SMD]; tolerance ±5%

Shopping List

Amount Part Type Properties
1 Infrared Proximity Sensor
4 RGB LED (com. cathode, rgb) rgb RGB; package 5 mm [THT]; polarity common cathode; pin order rgb
1 Arduino Uno (Rev3) type Arduino UNO (Rev3)
3 NPN-Transistor package TO92 [THT]; type NPN (EBC)
4 100Ω Resistor resistance 100Ω; package 1206 [SMD]; tolerance ±5%



Arduino IR Distance and LED Code –

Main Processing Application –

2nd Processing App, Responsible for syncing video playback on projector –


Sketches / Design Files







The theme assigned of a “Haunted Space Station” immediately brought up a memory of one of my favourite episodes of Scooby-Doo as child. It involved a “Space Kook” that would appear out of nowhere and terrify people living in the area. I remembered finding it hilarious that the show explained the glowing, levitating and enormous “ghost saucer” as merely a projection on a the clouds overhead. This further influenced my decision to take this primarily Arduino based project and make it a combination with more screen-based and projected elements. I had the idea to project onto the mesh screen from the get go and planned on using it to allow for the correct height of the “space ghost”.

Unfortunately, it turned out to be much more trickier to implement two screens in a single Processing sketch. I spent some time trying the various methods and eventually gave up, opting to create a work around. So instead, I wrote two separate applications, one that would be responsible for all timing of the experience and one that would remotely play a video one instructed to. This idea sounded daunting at the time but I quickly found the reference on the server and client functions in processing and it was easier than expected. I simply used instead of a public ip address to setup the server and it worked.

The Arduino aspect required serial communication between it and the main Processing sketch. I decided to use an infra read depth sensor to detect if a person was walking by. Upon being triggered it would send a simple serial command back to Processing. I wanted to add a level of atmosphere with lighting, so, in addition to sensing for a user, the Arduino also allowed me to set up an array of RGB LEDs. I was able to change the colour of these lights by sending simple instructions from Processing to the Arduino. This part of the process went smoothly.

The multimedia aspect of the project turned out to be a lot more work than I expected. Exporting the text-to-speech files and synchronizing them with the on screen dialogue was a tedious task. Furthermore, tying in the projected video timing and the triggers for lighting and sounds, choreography was the trickiest thing to achieve and I wish that I had set aside more time to work on it as it cost other areas of the project.

Challenges / Improvements

As mentioned above, the amount of time spent on trying to perfect choreography cost me seriously in the presentation aspect of the problem, this was mostly  time management issues and could have been avoided if I had a more realistic break down of the assets required for each component.

I did not expect to have to write two application for my displays instead of two. I had no idea that the multi-screen situation in Processing was so tricky. Not accounting for that was another underestimate on time.

I wanted the final “teleportation chamber” to look better for critique. Given the time frame and my proposed idea, I worked with what I had but it could have been much better.



Scooby-Doo Space Kook Source footage – (Used without permission of Youtube account holder and Hannah-Barberra.)

Some handy Processing references:

Server Code –

Client Code –

Arduino Code Samples – referenced within github files.