I want to present my haunted ouija board, whose hidden purpose is access control. When you move the planchette over the board, some letters trigger a vibration of the planchette. But only if you know the secret password will you be able to unlock the hidden stash whose lock is controlled by the board. This is achieved using some RFID and wireless technology, read on to find out the details!
Disclaimer: all wooden components shown in this tutorial were provided to me by the person who asked me to design the electronics. FIXME UPDATE THIS
In this design, the ouija board itself is plain and ordinary but for RFID tags glued to its back so that they exactly overlap the letters. Then comes the planchette, which is hollow and filled with electronics - an Arduino Pro Mini with an RFID reader, an NRF24L01 radio module for wireless connectivity and a lithium battery with a charger. In addition, embedded in the planchette are charging pads and a reed switch for turning the electronics off when not in use, conserving the battery.
The system comes complete with a radio receiver that controls an electronic lock. The lock itself is just an example of one of many actuators that can become outputs for the system - it might be a solenoid pushing an object, an electromagnet releasing some item, and so on. The receiver uses a relay whose both Normally Open and Normally Closed contacts can be used to connect actuators. Other features of the receiver include an optional switch, used as a backup way to open the stash if the planchette stops working or you forget the password - not neccessary, but useful in some circumstances. There are also status LEDs and a double spring connector for charging the planchette, mating the holes in its cover.
Get an ouija board (I had a good experience with a 3mm plywood one) and some RFID tags, preferably small and self-adhesive. They have to be compatible with the RFID reader you'll put in the planchette - check the frequencies, you want e.g. 125kHz tags for an 125kHz reader. Then attach the tags to the back side of the board, directly below the letters so that when you put your RFID antenna on a letter, the reader will be able to scan the corresponding tag. This might take a few attempts to get right. You don't need to put a tag underneath every letter, but you need at least those that you want to use in your password. For the rest of this tutorial we will call the letters with tags underneath "active", and those without a tag - "inactive".
Gather all the electronic components:
And a planchette, hollow and with a fitting cover:
You probably want to mill a planchette for yourself on a CNC mill or 3d print it, although it is also possible to cut it in layers on a lasercutter and then stack the layers. In this tutorial I will use a CNC-milled version with a hand-cut cover which was then attached to the body with screws.
It's always a good idea to first check whether all the components fit your enclosure:
We want the RFID reader's antenna to fit the planchette's opening without obstructing the view. The Arduino should be more or less centrally located, with the radio module to its left, and the battery and related components to the right. The reed switch is not pictured here, but should be placed near the voltage converter and LiPo charger to make wiring easier.
As we progress with this build, we will remove any unneccessary connectors and goldpins that make it easy to make a temporary connection, but not so for a permanent solder joint. For example I took my RFID reader and removed the white connector that came attached to its PCB, revealing proper solder pads:
I did the same with the NRF24L01 radio board:
After soldering, it's worthwhile to make the PCBs as flat as possible, neatly trimming the solder joints with small wire cutters:
This will make attaching these modules to the flat surface of the enclosure a little easier.
In general, I recommend putting the entire circuit together on a breadboard or connecting all the modules together with quick remove wires, as it allows us to check whether all our components work together smoothly. When soldering the final version of this build, you might be willing to replace the temporary connections one by one with soldered ones. In my case this method resulted in a spaghetti of wires...
...but it also allowed all connections to be thoroughly tested, probably better than soldering it all to find that it doesn't light up for no apparent reason. Come to think of it, you might want to ditch soldering the connections whenever it's not neccessary, and it will still work, just less sturdily.
This is just the beginning, don't use any glue on your components yet. Take a look at the schematic for the planchette electronics:
If your Arduino Pro came with no goldpin headers, you want to solder them now. Trim them, too. Check if you can upload your code to it properly with the FTDI header
We want to connect the RFID reader to Arduino first. My reader uses UART to talk to the Arduino - two things to keep in mind if yours works like this. First, you only need to connect the power (VCC and GND) and transmit (TX) pins of the reader to your Arduino. We won't be transmitting anything from our microcontroller to the reader (we just want the tag ID), so no need for a two-way connection. Second, the UART is what most Arduinos use for programming, so I strongly advise you to make the reader's TX pin disconnectable. I used a removable jumper and two angle goldpins:
If your reader uses a different bus, like SPI or 1-Wire, you probably only need to connect the appropriate wires together, and make a ton of changes in the software.
For the next step, we will need a steady hand for our soldering. As our circuit works on 5V and the NRF24L01 radio modules use 3.3V (altough they handle 5V communication with no problems), we want to feed their VCC with 3.3V, preferably taking up minimal space. With 5V on VCC, the NRF24L01 might still work - for an hour, a day, a week - but it will fail eventually, usually pretty quickly. As the Pro Mini has no 3.3V output, we have to put a voltage regulator in our circuit, coupled with a small electrolytic cap. First we solder wires to 6 of the 8 pads on the NRF board (skipping VCC and IRQ). Then we connect the voltage regulator. I chose 1117-3.3 in an SMD casing, whose pinout and pin spacing align perfectly with my NRF board when viewed from behind:
The last part to add is an electrolytic cap between NRF's GND and VCC - I went for a 22uF/16V one. Together, it all looks like this:
Make two of these - you'll need another one for the receiver module. Then solder your 7 wires to the Arduino - it's really useful to use colored ribbon cable here (and quite everywhere!).
Let's not forget the vibration motor:
I'm taking my chances here not using a transistor to drive it (it takes less than the 40mA that an ATMega pin can supply), instead getting away with just a snubber diode. A more thoughtful approach would be to make a simple transistor switch circuit.
WARNING: LiPos are dangerous - they unleash energy readily and sometimes violently, and in case of a short circuit the only thing between you and all this energy is a tiny Power Control Module (PCM) embedded in the battery. Keep that in mind.
Finally, let's provide some decent power to this project. We want a LiPo battery, preferably over 1000mA, a charger module, a 5V step-up voltage converter if it's not built into the charger and a 3-pin reed switch handling at least 400mA. For charging the planchette we're going to use flat pieces of bare metal embedded in the planchette's cover, accessible through two small holes in the cover. This way, when we put the planchette back to its designated storage place, the metal plates will connect with the springs, allowing for charging without disassembling the planchette. For the metal plates, I went for the nickel-plated bits used in battery containers. I cut them to get two squares and soldered long wires to them, so that I could remove the cover of the planchette with ease once I attached the plates. Keep in mind that you want to glue the plates to the cover - probably you want hot glue for that - only when everything else is done and all other components are glued to the planchette body. Your final result should look something like this:
For a while now, let's focus on the reed switch which will allow us to put the planchette in charging mode when it's not in use. A reed switch is basically the half of the relay that does the switching, the other being the electromagnet - in our setup we'll use a regular rare-earth magnet. I bought this huge 1A switch:
And it works perfectly, though it's louder than your average relay. Like a relay, it has common (COM), normally open (NO) and normally closed (NC) pins. Before we start with the switch, we want to solder all the GNDs together - in the battery, the step-up module and the charger module. Then we connect the NC pin of the reed switch to the step-up's VIN. After that, the NO goes together with the charger's BAT+. Finally, we connect the COM of the reed switch to the battery's positive terminal - be warned, the circuit will turn in instantly when a connection is made, even when it's not soldered. In order to prevent this we have to put a magnet next to the reed switch. When a magnet is there, the battery is connected only to the charger, rather than the Arduino and others, and nothing happens as long as the charger has no voltage on its inputs. This is why we make these connections at the very end, so that the magnet doesn't interfere with our soldering. The only thing left to do is connecting the Arduino's GND and VCC to the step-up.
Now with the entire circuit soldered, we can start gluing the components in place. With a lot of vibration in the enclosure, we want either two-part epoxy or RTV silicone, I went down the epoxy road. Start with the RFID antenna:
If your antenna looks like mine, remember to coat the super-thin enameled wires in a big blob of your adhesive, so that they don't rip up because of vibration. If you find it difficult to make the wires go where they should, use a clamp or some magnets like I did:
With the other components, the work is straightforward, only keep in mind that it might be a good idea to glue the NRF board to the wall of your enclosure. Try to attach the charger module to the enclosure so that the USB port is still accessible for emergency charging. Before you glue the reed switch, think of your storage for the planchette - if the magnet is not very, very strony, you want to place the reed switch as close to the magnet as possible. In my case this was the upper part of the right wall of the enclosure, so I had to secure it in place with electrical tape while the epoxy was curing.
Now, after you use hot glue to attach the metal plates for the charger to the wooden cover, the planchette is done. Attach the cover with screws, at least three. Upload the code to the Arduino if you haven't done it already and check if it vibrates when approaching the active letters on the board.
Let's now work on the receiver. For the electrical part, we need an Arduino Pro Mini with a soldered goldpin header for programming (mentioned in step 4), a relay module, an NRF24L01 with a 1117-3.3 regulator attached (described in step 5), a separate 7805 linear regulator (extremely inefficient!) with proper capacitors, and two LEDs, one yellow and one green, as well as a DC barrel jack compatible with a wall wart of your choice. An optional feature is a microswitch with ~50cm cable. Before you start working on this step, you should have your actuator (e.g. solenoid lock) ready. Also prepare a charging board, e.g. by securing two nickel springs from a battery container on a piece of plywood so that they fit the holes in the planchette. A sketch of such a board is here:
Solder two wires to them, remembering the polarity of the charger on the planchette. You can upload the receiver code to your Pro Mini now.
On to the soldering. The connections are far simpler here than in the planchette, yet still a pretty decent schematic:
Turns into this:
The photo clearly lack the 1117 regulator and capacitors on the 7805, as it was taken when the work was in progress - you have to have them.
Having made the electrical connections, we can turn our attention to the enclosure. Make one rectangular hole (to fit the barrel jack) and 7 circular holes, like this:
Put the wires through the holes as described:
Now add the electronics, fitting the barrel jack and the LEDs into appropriate holes. Don't use any glue yet. Put the actuator's wires inside the screw terminals of the relay module:
And secure them with a screwdriver. Your result should look like this:
Do the same with the charging board wires, only you might be willing to solder them directly to the 7805. When it's done and there is no stress on the wires you can attach all components to the board with hot glue, keeping in mind that the LEDs and the barrel jack should be particularly well-secured and that wires going out of the enclosure should be left without any glue. Plug in your wall wart and you should see lights turn on.
If the planchette is within range (3-5 metres, maybe more), the green light should blink every few seconds, giving you the heartbeat of the systems. If it doesn't, something is wrong either with the receiver or the transmitter in the planchette. The yellow light will turn on once the planchette notices that it's battery is running low. Also, after the planchette is reset, i.e. after the magnet approaches the reed switch and then is taken away, both LEDs will blink on the receiver three times. If all is ok, attach the enclosure cover and install it properly on the intender location.
It's done! Now if the user knows the password and uses the planchette to point at proper letters in the correct order, the planchette will send a radio signal to the receiver, which will toggle the relay. In my case, the relay opens an electronic lock for 5 seconds, revealing a hidden stash, but your possibilities are endless here. Watch it in action:
What will you use it for?
Your RFID reader might be too sensitive or not sensitive enough when sensing the tags through the planchette's body and the board - you can tweak this in many ways, the easiest is to experiment with board thicknesses.