Introduction: Make a Talking Skull With Arduino - a Halloween Project

About: We're a group of fun-loving, electronic DIY'ers with Smart-Prototyping.com. We hope to share useful guides and tutorials as well as the cool things we think up every-once-in-awhile. Enjoy!

Halloween is almost here and if you don’t have any ideas about how to scare your friends or trick or treaters, that won’t be a problem after reading this tutorial!

In this step-by-step tutorial, we’ll show you how to easily make your own Arduino controlled skull with scary sounds and red, glowing eyes. Building and playing with this project will give you practice with skills like programming, electronics, soldering, etc….

Materials you'll need:

You can buy the whole kit excluding the SD card, Halloween skull, and Arduino board here

This project also requires some tools:

  • A soldering iron (to solder the LEDs)
  • Scissors (to cut a hole in the back of the skull)
  • A drill is preferable but not necessary (to drill holes in the eye sockets)
  • Tape (to tape the LEDs to the eyes)

How does it work?

The main components of the radar sensor are a transmitter and a receiver. The transmitter sends off microwaves with a specific frequency. When these waves strike a moving object, their frequency will be altered and reflected. Once these reflected waves are received by the receiver, it will trigger the MP3 player and the LEDs inside the skull. The MP3 player will play a random track on the SD card while the LEDs in the eyes of the skull will light up.

Let's get started!

Step 1: Connect the Hardware

  • Daisy-chain the LEDs together by soldering the wires connected to the Out side with the other LED's In side. The 2nd LED’s Out side then gets connected to the Arduino and breadboard
  • Connect the power and ground rails on your breadboard to the 5V and GND pins on the Arduino Uno. After doing that, you can connect the power and ground of all your components to the power and the ground rails of your breadboard

Note: We use a larger breadboard here to show the connections better, it's better to use a small one to hide the connections

Here are the pin connections to make between the sensors, modules, and the Arduino:


Motion Sensor > Arduino Uno

3V3 > VCC (5V)

GND > GND

OUT > D8

Neopixel > Arduino Uno

VCC(power) > VCC (power)

GND > GND

Input (DIn) > D6

Mp3 Module > Arduino Uno

A1 > D0

A2 > D1

A3 > D2

A4 > D3

GND > GND

GND > GND

5V > VCC (power)

Your electronics are set up! Now we can move onto the software.

Step 2: Prepare Your Arduino

  • Connect your Arduino to your computer using a USB cable
  • Open your Arduino IDE (Install the IDE if you haven’t already at www.arduino.cc/en/Main/Software)
  • Verify that you have the correct board selected under Tools > Board
  • Verify you have the correct COM Port selected under Tools > Port

Step 3: Set Up the Software

  • Download the Adafruit NeoPixel Library as a .zip file
  • Import the Library
  • In the Arduino IDE, go to Sketch > Include Library > Add .zip library
  • Choose the file you just downloaded
  • You should see that the library was added successfully

Step 4: Upload the Mp3 Files and the Code

  • Find your desired sound-effects online and download the mp3s, we cut some free online tracks to get our chilling voices (credit to Mike Koenig for his recordings on soundbible.com)
  • Place the soundtracks onto the micro SD card and then place the SD card into the mp3 module


How does the MP3player’s code work?

In our program, A1, A2, A3, and A4 are each linked to one track. When the sensor is activated, the value of these pins is HIGH. Then the random function (audiorandom) will change the value of one of these four pins to LOW and the track linked to this LOW pin will be played. Name the tracks in order of the pins they're connected too i.e. A1 - 001.mp3, etc.

  • Next, upload the example code and test out your connections!

Here's the example code for you to upload. We have the delay set to 20 seconds, but you can change that if you'd like it to detect motion more or less often. You can use the code to get started right away or modify it to suit your needs. Remember, the LEDs are RGB so you can set them to any color and modify the timing of them coming on, etc. We also have the tracklist set to random, but you can program the tracks to play in any order.


A little coding reminder:

The setup() method is run just once after the Arduino is powered up and the loop() method is run continuously afterward. The setup() is where you'll do your initialization steps while in loop(), you will write the code you want to run over and over again.

Delay() pauses the program for the amount of time (in miliseconds) specified as a parameter. (There are 1000 milliseconds in a second.)

The serial monitor (Tools > Serial Monitor) is a feature of the Arduino IDE that’s very useful to debug your code or when controlling your Arduino from your computer. In our case, you can use it to see if your code is running well.

If your modules and sensors are working, then you can proceed to prepare the skull!

Step 5: Set Up the Skull and Hardware

In order to place all the components into the skull, we'll have to first cut off a portion of the back.

  • Cut an opening into the skull large enough to fit one of your hands. Hopefully, you have a hollow, plastic skull
  • Next, drill 3 holes in each socket where the LED lights will be able to shine through. We used a 4 bit which was just wide enough to drill these holes
  • Then tape the LEDs behind the eye sockets, aligning with the holes you drilled earlier. Make sure to place enough tape so the LEDs won't come off while you're messing with other components and pulling their attached wires

If you don't have a drill or a skull that would hide the gaping hole in the back of the head, you can use other tools to punch out the holes you need or hide the components elsewhere. There are many other ways to handle the skull portion so feel free to unleash your creativity!

If you want to fit everything inside the skull, you can use a smaller breadboard. Even the mini breadboard without the power and GND rails will work; just use two rows for GND. We put the motion sensor underneath the teeth since it works 360-degrees

And don’t forget the power source! If your project will be working away from a computer or socket, you’ll need a separate power source. It could be as simple as using a power bank or connecting a battery cell to the Arduino. We used a LiPo battery and a powercell.

Now that you’ve got your scary skull up and running, you're ready for Halloween! But if you’d like a challenge, you could also improve this project! Add a body, an ensemble, or some motors to make it move. And of course, challenge yourself to set up a spooky set!