Introduction: Hologram Display (Pepper's Ghost) Projector - Part 2

About: Hi! My name is Gian and I'm a designer and builder in beautiful Vancouver, British Columbia. Dedicated to crafting custom objects and furniture with unique properties and clean shapes to help create harmonious…

Welcome back to my Hologram Display Case (Pepper's Ghost) build page.

As part of the Critical Making Core class at Emily Carr University of Art and Design, I have been working for the past couple of months towards designing and building a responsive hologram display cabinet that will showcase a possible scenario of the impact human race has on our planet. Initially the display would utilize a PIR sensor that would detect when viewers are getting closer and would turn on the projection of a catastrophic scenario (i.e. wildfires or global warming).

As stated on the first part of this build (link below) the main components of this display are the cabinetry, the display monitor, the acrylic pyramid, a solid shape (that will act as canvas) and the electronics. Along the way there has been some adjustments and modifications to the initial design in order to achieve desired purposes. This second part of the build gives an overview of the final stages of the build along with the modifications made to the design and electronics.

Special thanks once again to Critical Making Professor Dr. Garnet Hertz, Technician and electronics guru Bobbi Kozinuk and my classmates at INDD-310-S003-2017 for their guidance and support.

Note: The video demonstrates the last steps of the build, 3D printing and final projection.

You can find the first part of this build here:

Step 1: 3D Printing - Solid Shape "Canvas"

Before continuing with the assembly it was necessary to create a central piece where the content video could be projected on. The piece needed to represent on its own, as a static object, part of the reflection that the hologram display was intended to deliver: "the impact of humans in nature". To do so, the object had to be something that would represent nature in a simple way that viewers could easily recognize and relate to. That is when 3D printing became an option. It makes it possible to fairly quickly generate a monochromatic volume using CAD software.

After performing some research on 3D printing capabilities, the idea of 3D printing nature or a landscape became stronger. After reading some forums I was able to find an online STL file generator called Terrain2STL. ( ). The Terrain2STL STL Generator, created by GitHub user “ThatcherC” provides a a method of generating STL files for landscapes. Image 1 above shows that browsing around Google maps you can select a zone and generate a STL file that is ready for printing. For this project I have chosen the city of Squamish due to its familiarity for most people in Vancouver and to have iconic natural scenery such as the Stawamus Chief Provincial Park and the Howe Sound.

Picture 2 shows the STL file created and opened in the Gcode generator software. This is a screenshot of the printing simulation showing in colors the different parts of the piece. Picture 3 shows the printer head and nozzle and pictures 4 and 5 show the final print in scale with a 17" laptop screen.

Step 2: Painting + Lower Casing

Next step after having a center piece to project on and having made sure that it fits within the dimensions of the hologram display cabinet, its time to give some finish to the cabinet itself prior to start doing the projections tests and generating the content.

As stated on the previous instructables, the main body of the cabinet was made out of MDF. This material provides an even surface with a good texture to apply any type of paint and sealant without the need to use a primer. In this case we have used black laquer (matte) and a common opaque sealant to prevent the paint for washing out. Black color will help with contrast in the projection bring up the images ans blending the background.

Last but not least on this step was to create a lid for the upper box that houses the monitor and a case that would close up the lower part (base) of the display and would also allocate the sensor, the Arduino Uno and the powertail switch that will control the power for the monitor.

- Material used for this 2 parts was 3/8" thick Birch Plywood. You can use any material for this step. Simply take the measurements of the top opening and the 3 sides on the base and enclose them. Remember not to screw them/nail them just yet as we still need to do the wiring for the sensor.

Step 3: Acrylic CNC Cutting

Next step is to cut the acrylic. As part of the course requirements I have used a CNC machine to cut 1/8" thick clear acrylic based on the 3D model generated before. I have used the measurements and shapes shown on Image 1 to cut all 3 sides of the acrylic pyramid that will be reflecting the content from the screen and "into" the center piece.

- This step can still be done manually using a our model as a template and cutting the acrylic using a jigsaw. The sides don't need to be perfect, but close enough that a pyramid can be formed.

While performing this step, I have taken also the opportunity to cut a single rectangle shape that is 20" x 13" to use as a test piece for the next step which is generating the graphic/video projection.

Step 4: Design Modification

While performing the first projection tests with the display assembled and the 3D print in place, a change in the design needed to be made since there were several points to take in consideration:

- First, it was difficult to generate a proper projection from the sides given that the mountains of the center piece blocked part of the view of "Squamish" when viewed from the sides. Viewers were not able to see into the city and some of the projections pointing into it where off.

- Second, the surface (on the acrylic) for projection was smaller on a pyramid than on a plain rectangle from the front. If observed from the from of the display, viewers would get a better glimpse of the projection without modifying their position too much instead of having to go to either sides of the display to look to the side projections.

- Finally, I wanted to give the viewers the chance to interact with the 3D print and have a closer look to it since it is a very interesting piece that showcases the terrain of a well know area in British Columbia. I also wanted to give then the chance to place it inside the display and watch how the display becomes alive when placing the printed landscape.

Step 5: Final Assembly + Finishing

The final modification on the design and function of the display noted on the step before force to add 2 elements to the display and a major modification to the electronics:

- A square piece needed to be added in order to indicate where the 3D print needed to be placed.

- It also allocates a sensor that will switch the power on to the monitor and start playing the projection. This modification will be explained in the next step together with the first intended function of the sensor prior to the modifications.

- The second element added was a strip that would act as a slot to place the single side/ front acrylic face for the display.

Step 6: Electronics (Beta Testing)

In this step I will try to explain the electronic part of the build and its functions. This step can be broken into 2 stages given that there has been some modification to the design and interaction of the hologram display cabinet.

- Initially the display would only perform when viewers would approach it. As seen on image 5 in this step. The base of the display allocates in the front a IR sensor (image 4) that would be connected to an Arduino Uno board and would trigger the power on and off the monitor using a power switch tail connector (Images 1,2,3).

Above images of the simple circuitry for the Arduino / Powerswitch interaction and code below can be found at This code works for controlling the Powerswitch tail by inputting a value manually to let power trhrough or not on the device (on/off)

char incoming_char=0;

void setup() {

// initialize the digital pin as an output.

// Pin 13 has an LED connected on most Arduino boards:

//pinMode(7, OUTPUT);


pinMode(13, OUTPUT);

Serial.println("Setup has ended, entering loop()");


void loop() {

if (Serial.available())

{; // Get the incoming char

if(incoming_char == '1')


digitalWrite(13, HIGH); // Turn the Powertail on

Serial.println("Switch ON");


if(incoming_char == '0')

{ digitalWrite(13, LOW); // turn the Powertail off

Serial.println("Switch OFF");




Together with this second code provided by classmate Ateret Buchman, who utilized same principle on her 1st project, the sensor would read a value and trigger the power on and off the monitor. Challenges found with this method where the fine tuning of the sensor. It would either read values a bit further or too close from the ideal viewing position. When performing changes the sensor got pulled and I was not able to perform more tests.


****Code based on Ateret's ringing phone project****

Ateret's notes: Conditionals - If statement + blink This code reads the state of a IR proximity sensor (an analog input) and turns on an LED (or generates a ring) only if the analog read goes above a certain threshold level. It prints the analog value regardless of the level.

The circuit:

* potentiometer(PIR Sensor) connected to analog pin 0.

Center pin of the potentiometer goes to the analog pin.

side pins of the potentiometer go to +5V and ground

* LED (POWER SWITCG TAIL II) connected from digital pin 13 to ground

original codes created 17 Jan 2009 by Tom Igoe.


/ These constants won't change:

const int analogPin = A0; // pin that the sensor is attached to

const int ledPin = 13; // pin that the LED (PowerSwitch Tail II) is attached to

const int threshold = 100; // an arbitrary threshold level that's in the range of the analog


void setup() {

// initialize the LED pin as an output:

pinMode(ledPin, OUTPUT);

// initialize the sensor pin as an input:

pinMode(analogPin, INPUT);

// initialize serial communications:



void loop() {

// read the value of the sensor:

int analogValue = analogRead(analogPin);

// if the analog value is high enough, turn on the LED:

if (analogValue > threshold) {

digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1); // no wait

digitalWrite(13, LOW); // turn the LED off by making the voltage LOW

delay(2000); // wait for two seconds

} else {

digitalWrite(ledPin, LOW);


// print the analog value:


delay(1); // delay in between reads for stability


- After the making the decision of making the center piece more interactive, in theory in a next step further to finish this project a weigh sensor will be used instead of the PIR sensor to detect when the piece is placed inside the projector. turning on the monitor and playing the projection.

Step 7: Content / Video Projection - Object Allignment

This step illustrates the process of generating the content. It started most of the placement of the elements was done in an full screen Photoshop canvas. moving the elements and images around to properly fit them within the projection surface and the center piece.

Step 8: Content / Video Projection - Slides

This images illustrate the actual view of the source screen. In order to have it properly projected, the source monitor was displaying images mirrored. The placement of the monitor had also to be specific, the top had to be closer to the back of the display and the bottom closer to the viewer. This would allow the projection to show "normal" to the viewers but was a challenge when generating the content.

All slides and video was created using Adobe Premier for video editing, Adobe Photoshop for image editing and MS Powerpoint to generate a presentation.

Step 9: Hologram Effect Projection

These are some images of the final projection. Words and floating elements and videos placed on a black background work the best when interacting with the object.

For presentation purposes this has worked great. Please refer to the initial video to see the full content of the projection. This is still an ongoing project and a 3rd part is still to come with the proper electronics and better resolution of content.

Thank you for taking the time to look into this instructables and for the patience while it is being completed.

Gian Fernandes