This project will show you how to create a computationally enriched puppet that can detect magnetic fields. The puppet (who I call Compy) has two very sensitive GMR analog magnetic sensors that are located in her beak, these sensors are read by an Arduino Nano that actuates a 3×3 haptic display (Figure 3) based on the sensor readings.
While wearing Compy, you will be able to detect magnetic fields and identify their general direction and strength!
If you have any questions, want to keep up with my work, or just toss around ideas, please do so on my Twitter: @4Eyes6Senses. Thanks!
Step 1: Materials
1x Long back puppet (mine is from the Puppet Company)
9x ERM vibration motors
1x Arduino Nano
1x Protoboard (I got mine from Adafruit)
Heat shrink tubing
Hot glue gun
Needle and thread
Solder and soldering iron
Step 2: Soldering the GMR Sensors to the PCBs
– Make sure that your NVE GMR sensor and PCB are oriented correctly. This part is vital, so triple-check that the orientation is the same as figure 1, confirm that the dimple on the sensor is in the corner nearest to the logo and on the side with the smaller pins.
– Carefully solder the legs of the GMR sensor to the board (Figure 2). I suggest that you start with one leg on each side of the sensor so that it won’t move while soldering the rest.
– Solder the silicone wire to the pins on the PCB. Be VERY generous with the wire length, I did about 2 feet for each pin. I went with the color scheme red (VCC), yellow (A0 for sensor 1 & A2 for sensor 2), blue (GND), and green (A1 for sensor 1 & A2 for sensor 2).
– Attach heat shrink to the cables so that the cables are secure near the PCB pins (Figure 3 & 4).
– Attach heat shrink over some of the sensor and PCB so that the rest of the cables are secure to the board (Figure 5).
– Heat and secure the heat shrink.
Step 3: Embedding GMR Sensors Into the Puppet’s Beak
– Turn the puppet inside-out.
– Make a small incision at the top of the puppet’s head.
– Orient the PCB so that the sensor will be facing outward while inside the puppet’s beak.
– Use your fingers to carefully (make sure not to damage the connections between the cables and the PCB’s pins) slide the sensors into the puppet’s beak.
– Repeat until both sensors are in the beak and you are happy with their placement. Your puppet should look similar to figure 2.
– Sew the incision shut.
– At this step, my puppet looked like figure 3.
Step 4: Soldering the Vibration Motors
– Carefully strip some of the insulation from the vibration motor’s wire. Be VERY careful as it’s very easy to break the wire.
– Solder a wire (red to red or blue to blue) to the wire of the vibration motor. repeat until each wire on all 9 vibration motors has been extended. My wire length was around 8 – 10 inches.
– Isolate one wire from the other, either by adding electrical tape or heat shrink to the exposed wire on the newly soldered connection (between the silicone wire and the wire on the vibration motor). Repeat for each vibration motor.
– Add heat shrink to both wires on each vibration motor (Figure 1). Repeat for each vibration motor.
– At this step you should have 9 vibration motors that look similar to figure 2.
Step 5: Creating the Haptic Display
– Cut open the front section of the puppet (Figure 1).
– Cut the stiff felt so that it will cover the inner back of the puppet. Secure the stiff felt to the puppet with hot glue (Figure 2).
– Glue each magnet to the stiff felt so that it looks similar to figure 3.
Step 6: Populate Protoboard and Connect to Microcontroller
For the right sensor (orientation is for when wearing the puppet) solder the red wire to the Nano’s 5V, The blue wire to GND, yellow to A0, green to A1. Repeat for the left sensor but attach its yellow wire to A2 and green to A3.
The vibration motors are when it gets a little tricky.
The vibration motors are laid out as follows (Figure 4):
1 2 3
4 5 6
7 8 9
We want the corresponding motors to be connected to the following digital pins:
D2 D3 D4
D5 D6 D7
D8 D9 D10
– Wire the motors so that they correspond to the chart above (e.g., motor 1 red wire soldered to D2 on the Nano) with 100ohm resistors in series with each motor.
– Wire the motor’s blue wires to the protoboard’s ground bus.
At this point, your protoboard should look similar to figure 5.
Step 7: Hide Wires and Microcontroller
– Place the microcontroller into the wing of the puppet and cut a slit so that the cable can be connected to the Nano (Figure 1). I used hot glue to secure the controller to the puppet and the opening to the controller.
– Use hot glue to hide the wires under the felt square and secure them to the inside of the puppet (Figure 1 before & Figure 2 is the after).
– Cut some additional felt so that you can hide the wires that are connected to the vibration motors (figure 3).
Step 8: Upload Code
For the final step, you will upload the code to the controller. The code has several modes:
1. If both sensors are around the same values, the middle motors (258) will vibrate in an upward pattern.
2. If the right sensor has a higher reading than the left, that means there is a magnetic field to the right of the puppet. I want to actuate the motors so that they make an arrow and are actuated on a sequence, as shown
5(3rd) 6(2nd) 7(1st)
3. If the left sensor has a higher reading than the right, that means there is a magnetic field to the left of the puppet. I want to actuate the motors so that they make an arrow and are actuated on a sequence, as shown
5(1st) 6(2nd) 7(3rd)
4. If the left sensor is a very high value, I want to indicate this strong field by actuating the middle and left columns, like so:
5. If the right sensor is a very high value, I want to indicate this strong field by actuating the middle and right columns, like so:
6. If both sensors are registering a high value there is a strong magnet that being detected by both sensors. I want all vibration motors to actuate:
2 3 4
5 6 7
8 9 10
Step 9: Sew the Puppet Closed
– For the final step, you will sew the front of the puppet closed. I suggest you make the puppet as tight as possible so that the motors make good contact with the forearm.
– At this step, your puppet should look like figure 1.