Introduction: Moving Phantom

About: I´m a Portuguese guy that loves making projects in the area of electronics, radio, mechanics and programming.

Hi guys!

Today I am bringing to you a project that I had been working for the Halloween. I know, I am a bit late, but I want to share my ideas and experiences with you and, may be, for the next year you can make something similar.

Step 1: The Idea

Basically, my idea was pretty simple. I wanted to make something different from the projects that already existed and also cool. I came up with the idea, after several days of thinking and developing, of making a moving phantom. Basically, a bed sheet, pulled by to motors on the "arms"- I don´t know if we can call to the "arms" of the phantom arms - to make them move, a light bulb that would highlight the phantom in the darkness of the night. We connect everything with an arduino and a PIR will sense if someone is walking in front of the phantom. When someone pass, the light will turn on and the phantom will stat moving his "arms". Simple but very interesting. Did you like the idea? Let´s move on!

Step 2: Tools & Skills

Well, you don´t need any special tools, like a press. Just a hammer, screwdrivers and that kind of stuff. Since I worked with wood and aluminum foil , I used also a handsaw, a screwing machine and sheet shears. You should be prepared to work safely with these tools so you don´t injure yourself. Aluminum foil can be really messy and dangerous. You should also be able to program on arduino.

Step 3: Materials

Like I said before for the tools, I am not going to describe all the materials I used because there are many things you can change here. The objective of this instructable is to explain what I did and to give you an orientation if you want to make something similar. Be creative and change whatever you see you can do better.

Materials for arduino are:
-Arduino(of course. It can be any version)


-L298N driver

-Relay Switch

-LED bulb

-2 DC motors

-Power supply for motors and Arduino

Step 4: The Background

The first thing we need to make is a background to our phantom, since we don´t want to show what is behind everything.

Step 5: The Base

The first thing I started to think was the base. Since we don´t want the structure falling because of the wind, we need something very heavy to stabilize everything . I came up with the solution of using what we call in my country, a crowfoot. I don´t know what is the exact translation to English but you can see what it is on the images.

Step 6: The Support

Since we want something to hold the bed sheet and the other systems, I used a wood stick that was placed on the base. On the next steps I am going to show it.

Step 7: Wood Perpedicular Placed

I placed 2 perpendicular wood boards to the main one to secure the background.

Step 8: Trash Bags

I cut a black trash bag to make a rectangle. With some strong staples and an electric stapler, I hold the rectangle on the 2 parallel boards.

Step 9: Motors Base

Using aluminum foil, I made the 2 motors bases. With 2 screws, I fixed them to the higher wood board. With hot glue, I held the motors to them.

Step 10: The Motors

The motors I used are simple DC motors that work with 12V volts. This makes it easier when it comes to batteries. I tested the motors with the basic gear they have but, when pushing the cable that holds the "arms" (More about that later), often the cables got in a really big confusion when rolled up in the gear. I found a pretty simple solution: pulleys. I switched the gear of the motors by pulleys like I show in the pictures, and the problem was solved. Thanks to the small but enough friction the cable roll up in the pulley.

Step 11: Cables

The cables that hold the "arms" are, simply, fishing rod. It is almost imperceptible and very strong, very appropriated for our project.

Step 12: The "body"

Wait a sec...Do ghosts have bodies? Hum...that is a really interesting question and everybody knows the answer: of course not. So how do we call it? The skin? Forgetting this philosophical question, the "body" of the ghost is basically a bed sheet. A VERY OLD one, if possible, to give more realism. You don´t have to sew anything. The natural form of the bed sheet is OK.

Step 13: "Arms"

To make the "arms" roll up something heavy to make sure the weight will give a form to our ghost. Also, thanks to the gravity, the DC motors can really push the "arms" and bring them down.

Step 14: The Face

Well, it is not exactly a face, but more a support to hold the light and make a face form on the bed sheet. I made it using aluminum foil, as you may see on the pictures. I made 2 holes to simulate the eyes. TIP: Make them look oval. Inside the support I placed the LED light (I used a 10W one. You don´t need something very powerful because it is going to be used at night. If you are going to use something like this in a very bright zone, use something like 30/40 watts. Remember to use LED, since everyone wants to save the world) using hot glue. I pushed the cable to the back of the black background. Using wire, hold well the face to the background, making holes on it. With non-transparent tape, make sure the higher part of the face don´t let any light pass so the light is only channeled to the eyes. Connect the LED bulb cable (the positive one) to the relay and connect to the other port of the relay another one (that will be the continuation of the positive). Leave the negative as it is, as connect them to a plug. Use an extension if your power plug is too far from the position where you will leave the ghost.

Step 15: PIR

The PIR basically is a movement sensor based on infrared changes. When somebody is walking in front of it, the output will be 1, so our arduino will understand that a person is passing. It often comes with 2 yellow circles, that regulate the sensor. You should create a arduino test code and regulate the PIR so you have the best results. There are lots of information about that online. I placed the PIR on the higher part of the structure, a bit inclined to the front.

Step 16: L298N

L298N driver module can directly drive motors in a range of 3 to 30V, and provide a 5V output interface to your arduino (My mega do not accept 5V so I didn´t use it). It has maximum amperage of 2A, which is enough to our system. You should notice on your own driver that is written the input is 12V. This is the normal value but there is no problem in using the range of 3 to 30V. Be careful with your finger while using these modules. They are controlled by 4 pins and in the case of stepper motors there is a library that is super easy to work with, making our job a lot simpler. Connect the 2 motors to the right and left connectors. If is difficult to you, there are lots of images explaining that on the web. Looking at the L298N by an aerial position, on the bottom there are 3 connectors (on the left of the ones to the arduino connection) that are tagged. Connect your power supply of the motors (in my case the 12V battery) to them. One should stay without connection.

Step 17: Arduino Connections

Now, lets connect our arduino to the different sensors and actuators. We have to connect the L298N, the relay switch, the PIR and the battery of arduino.

First of all, connect your 12V battery to your arduino. If you have a 12V converter, use the power plug you brought to the led. The V+ of the relay connect to the 5V of arduino, and the GND to the Arduino GND. The middle pin connect to the Arduino pin 12.

The PIR works the same way, but you should use the 3V arduino pin for power and the data pin is connected to the pin 2 of arduino.

The L298N is easy to connect as well. Place it in front of you (the chip should be in the back of the board) and you will see 6 pins. 2 of the are blocked and you should remove that "plug". From the left to the right: connect to arduino pin 10, 9, 8, 7, 6, 5.

That´s it. Very simple. Use a wood board to fix the arduino and this stuff. I fixed the board to the main stick.

Step 18: Code!

Here is the code I used on this project.

Code of Phantom Project

int pirPin = 2; // PIR Out pin
int pirStat = 0; // PIR status
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;
int relay = 12;
void setup() {
pinMode(pirPin, INPUT);
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW);
void bulb(){ //turn on the light bulb
digitalWrite(relay, HIGH);
void motors(){
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 100); //speed
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 100); //speed
delay(4000); //time of moving in one direction
//changing direction
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
void motors2(){
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
void loop(){
pirStat = digitalRead(pirPin);
if (pirStat == HIGH) { // if motion detected
else {
// no motion

Step 19: Final Product and Thoughts

And it is done. A very simple project that everyone with simple skills can do. These are the images of the final "product". This project can, of course, be better. I had many ideas but 2 of them are: adding a big cooler in the bottom to give the impression the ghost if flying and using a raspberry Pi instead of arduino and play a music file with big speakers like the sound of ghosts. Thanks for reading!

Until the Next Project!

Halloween Contest 2019

Participated in the
Halloween Contest 2019