Let’s Talk Tech – 3) ‘The Spirit-Box’

No, not the band, but a device that paranormal investigators claim allows them to scan radio frequencies and catch EVPs (Electronic Voice Phenomena). This is based on the suggestion that paranormal entities can communicate with the world via FM and AM frequencies. Aside from how convenient it is that they would know how to do that </sarcasm>, you can search for EVPs with very little outlay.

You can currently purchase an ‘all singing, all dancing’ ghost-box or spirit-box for about a £100. They have different modes for scanning up and down through the radio frequencies, where you can hope to catch a word or two of communication in the few milliseconds it lingers on a frequency. However, I’m going to share a couple of alternatives, which I use on stage.

“Wait! What? Of course scanning through the FM or AM bands will mean we encounter voices,” I hear you protest. Yes, you will hear voices. It’s a radio. And the purpose of radio is to transmit sounds. At teatime, those sounds maybe the twang of Sara Cox on Radio 2, or the Shipping forecast, or if you’re really lucky, a few lyrics from Taylor Swift, who by her own admission “put narcotics into all of my songs, and that’s why you’re still singing alooooong”1 If that isn’t spooky, then what is?

So you’re probably realising just how accessible this medium of ghost hunting kit can be. Indeed, I laughed when I saw this:

Now, I can’t blame SpiritShack for upselling a bog-standard radio as a ‘manual control Spirit-box’. Apparently, you have a customisable scanning speed. Sure you do, it’s a transistor radio… with a dial. Some people bought it and thought it was good for ghost hunting2. I’m sure it was; and for other things too, like listening to Taylor Swift instead. For ghost-hunting, the best thing you can do with this is tune it to a frequency where you can’t hear either Sara Cox, or Taylor Swift, and hope that a passing entity will know that 93.0 MHz, (for instance), is clear, that you are listening for them, and they then possess the ability to transmit on that exact frequency with something intelligent to say to you.

That could take patience and a long time. Yet according to most ghost hunting TV programmes, the spirit box produces literally stacks of ‘class A’ EVPs, with coherent conversations being held. Which is because people tend to use something that scans through the airwaves. You could turn the dial on the ‘Swiftie-b, uh, Spirit-box’ above. Or you could buy one of the automated ones.

Me? I made one. Cost about £30 and I got a whole bunch of stuff I can reuse. So I’m going to share with you how to do the same. I got the basis of this from an inventive gentleman named Bill Chappell.

Bill3 was the tech guy who designed much of the kit used in the popular paranormal show, ‘Ghost Adventures’. He coined the names for the ‘Paranormal Puck’ and the ‘Ovilus’; devices which detect energy and draw on a library of words to translate it into speech.

Despite semi-retirement, he kindly shared his designs and Arduino sketches for a scanning radio. As his website slowly decays into disuse, and his previous attempts to create a repository for open source paranormal hacks stalled 10 years ago, I wanted to salvage the plans and share them with you here.

Stage 1: The Shopping List

Firstly you will need an Arduino UNO board.4 They are a basic computer. You create a piece of code on another computer and transfer it across to the Arduino via a USB cable. Once there, your program will run providing you give it power. Pay attention to the plug-in sockets along the top and bottom of the board; you will use these to connect other stuff.

Secondly you will want a ‘TEA5767 stereo radio module’. They look quite tiny compared to the Arduino and should be readily available from most online retailers. Again, if it looks like the one opposite, you’re in the right place. There should be two 3.5mm sockets, one for the aerial and one for a set of headphones or an external speaker.

This is the speaker I got. Cost about £5 from eBay, but you can use anything. You can use headphones, but on a vigil, you’ll want to be aware of your environment and the NOISE that comes out of the radio module can be really irritating after even a short while. So why torture yourself when you can irritate everybody else around you, I say. Go for something you can recharge rather than having to keep replacing the batteries in.

Finally, remember those sockets and note the pins on the radio module? You need a simple way to connect them together. Sure you can solder, but for now, I recommend breadboard, jumper leads. This also means I can reuse the components above for other stuff, when I want to tweak the design of my Spirit-box. Go for a mix of male-male, male-female, female-female to stand you in good stead for future projects.

Other things: Get a 9 volt battery and a connector to match it. Also check that you have the appropriate cable or adaptor that you need to connect your Arduino to your computer. They sometimes ship with a cable, but it may not be suitable for your computer USB socket.5 It would be useful to find a small tray big enough to hold all these things on, yet remain portable. Think of those plastic trays your takeaway food comes in. Note: If your tray is metal find something to electrically insulate it with, as there are a lot of metal connectors on your components, and we don’t want to short anything out.

Stage 2: The Hardware Assembly

Okay, important stuff now. BUILD AT YOUR OWN RISK. The components you will be assembling and using, carry live electric current, contain small parts, and may be sharp. If you aren’t confident in handling the risk in any part of this, ask someone for help.

The hardware build is really easy. Using the jumper leads you purchased, connect the following pins:

  • Arduino GND to Radio GND Black Wire
  • Arduino 3.3v to Radio +5v Red Wire
  • Arduino SLC to Radio SLC Orange Wire
  • Arduino SDA to Radio SDA Yellow Wire

Now you can plug in your aerial and speaker to the radio unit. They are clearly marked. You won’t hear anything yet for two reasons: 1) Your spirit-box does not have any power, and 2) We haven’t told the Arduino what to do yet. That is stage three.

Stage 3: The Software

Download the software you need to program your Arduino. Depending on your computer, you can get the right version for your usual platform. Install it and run it. Before we plug in our Arduino and write code for our spirit-box, we need to install some extra libraries relating to our radio module, so that the software can tell the Arduino what it is.

  • In the ‘Tools’ menu of the software, click on ‘Manage Libraries’.
  • When the Library Manager window appears, type TEA5767 in the search bar. The Window will show a couple libraries.
  • Click on ‘ArduinoTEA5767’, then click ‘Install’.
  • Now go to the ‘File’ menu, and click on ‘Examples’.
  • Scroll down to ArduinoTea5767.
  • Select ‘SimpleFixedFrequency’.

The Arduino IDE Editor should open this file. You have the basic software installed, and have a ‘sketch’ open and ready to port across to your Arduino… an Arduino that isn’t yet plugged in. It’s time to start connecting things together. Using whatever USB cable you need, to connect your Arduino to your computer.

We also need to tell the software exactly which USB port we’ve plugged it in to. This is why I always recommend working with only one Arduino at a time.

  • In the ‘Tools menu, select ‘Port’.
  • Find your Arduino and select it.

We’re ready to check our code and port it across to your Arduino. Check your hardware end, making sure all your cables are plugged in and the jumper leads are all in the correct places on the board and radio module. It should look like this (obviously depending on your version of the board and the colour of your cables):

  • From the Arduino IDE Screen Press the ‘Check Mark’, which compiles the code for the Arduino.

If successful your screen will look like this:

  • From the Arduino IDE Screen Press the ‘Right Arrow’, which sends the program to the Arduino.

As your Arduino now has code and power supplied via your USB, you may be startled to realise it has come to life. If you get no sound, check you’ve switched the loudspeaker on, that it has charge, and the volume is up.6 What can you hear? It is likely just static, unless you have a local station broadcasting on 93.0 MHz. Take a look at your code! Try changing the value in the line that says radio.setFrequency(93.0); to something between 88 and 108. Then, compile and resend the code again. If you know the regional frequencies of radio where you live, you too can be listening to Sara Cox on Radio 2 (somewhere between 88 and 91) or Taylor Swift (pretty much every station at the moment). Yes, what you’ve made is a digital version of the manual tune Ghost-box at the start of this post, for about the same cost if you’ve bought everything new. However, it’s worse in two ways; we can’t yet retune it and it’s tethered to the computer.

So, let’s make it portable. Using your 9 volt battery, you can power your Arduino easily by attaching the leads on the battery connector (-ve and +ve respectively) to the GND and VIN sockets in the POWER section of the Arduino board. You’ll find these sockets to the right of the power cables you’ve attached to your radio module. Once the battery is attached, you can disconnect the USB and use the battery terminals to switch your Spirit-box on and off. Now you know why I recommended a tray. However, it still has less function than the cheap radio described above. We need to give it real value!

Stage 4: The Scanning Code

We need to send it a new sketch that scans the frequencies instead of sitting on just one. Copy and paste the following code into your Arduino IDE window, then compile and send as before. You’ll find the IDE puts the colours in by itself. If the colours don’t match, there may be an error in the code and you can quickly see it. Remember that the language used for sketches is case-sensitive, so look closely to find mistakes when code doesn’t work as expected. I’ll go through the business end of the code in a moment.


// TEA5767 Example
// By Simon Monk
// Scanning for open Ghost Box

#include <Wire.h>           // SLC SDA communications for radio module
#include <TEA5767Radio.h>.  // Radio library tells the Arduino how to interface the radio module

TEA5767Radio radio = TEA5767Radio();  // Define radio model

void setup(). // setup files
{
Wire.begin();  // start IC2 communications
}

void loop()
{

 for ( float r = 88.00; r <= 108.00;r = r+.1) // loop and scan from 88 to 108 stepping .1 MHz
 {
  radio.setFrequency(r);  // Set radio to new frequency
  delay(200);  // wait here for .2 seconds
 }
}

The code is similar to what you had before, but this time, the sketch increments from 88.00 to 108.00 in steps of 0.1 MHz, and lingers on each step for 200 milliseconds or 0.2 of a second. But you can change it to suit your wishes. To change the range and increment, adjust the values in the line that begins for ( float r = 88.00; r <= 108.00;r = r+.1)… To change the time at which it waits on each frequency, change the line that defines delay(200);… where a full second would be 1000. My personal preference is for the delay to be much shorter, but I’ll let you decide what works best for you.

How you plan to use these is up to you. I personally believe this can be a great way to introduce making and coding into any audience. Both of these activities can help develop skills required for the future of any kid. I learned to code as a kid, and I still use the same approach when planning and designing things now. If this sounds like you, and you’ve enjoyed this project, try something else. Get a book on how to program an Ardunio in C++; build up a collection of components as well as a book of projects. Be inspired by what you want to learn to do, before a teacher or a boss tells you to do something for them. I’m not afraid to patiently learn, because I find the results satisfying. I love the creative problem solving; the excitement of trying something; the joy when something finally works how I want it to. Finally, I love to share stuff and encourage others to also be curious. I guess that’s why I’m still typing… but it may also be I like working while listening to Taylor Swift.


  1. Yes, Jon proudly outed himself as a Swiftie during the COVID19 pandemic, safe in the knowledge that most people couldn’t hurt him for it. He remains one today, and cried all the way through Cruel Summer on the recent Eras tour. Oh, the song referred to here is ‘Who’s Afraid of Little Old Me?’ ↩︎
  2. Although they must need tiny fingers based on the measurement of the actual device being in millimetres. It’s not even on Temu! ↩︎
  3. The guy with the white hair, by the way. I’m not saying the others dye, but… ↩︎
  4. The one pictured is an original, or you may choose one of the ‘UNO’ alternates on Amazon; your choice is only based on your budget as they are all gateways to programming an Arduino. ↩︎
  5. Older Arduinos used the bulky USB ‘B’ socket you may have seen on printers. For good reasons, decisions have been made for all new devices to adopt the standard USB ‘C’ connection you may be familiar with on your mobile phone, or indeed new ‘version 4 Arduinos’. However, we update our computer hardware less frequently than our mobile phones and so your new Arduino may come with either a cable that does, or does not fit, whatever USB your computer has. Hence, search for a suitable cable or adaptor for the computer end. One day, there will be one cable to rule them all, and it may be that your current phone cable is perfectly good for what you need to do today. ↩︎
  6. Next step would be to disconnect your Arduino from the USB and carefully check that the jumper cables are all connected exactly as described above. ↩︎