2023 Group 11 – White Rabbit Top Hat

Group Members

Our brief was to make a ‘user-interactive theatrical prop’ that an actor can use to interject life into the scene and engage with the audience. Using an Arduino micro-controller, sensors and actuators, we wanted to design and make a wearable prop that could be used to better convey an emotion or action on stage.

Project Planning

project planning chart

Maker Manual

Materials used:

  • A broken umbrella
  • A baby jumpsuit/second hand fluffy material of your choice
  • A top hat
  • String
  • Wooden dow

Tools used:

  • Glue gun
  • Stanley knife
  • Wire cutters
  • Wood file

Recycled components:

  • The umbrella (utilising from a broken/unusable product)
  • The top hat (found second hand)
  • The material used for the ears – was a baby jumpsuit found in a charity shop
the part of the umbrella we used
where we got our material from

Circuit components needed:

  • Wires x 20
  • Micro servo SG90-HV x2
  • 6V cell x1
  • Push-button x4
  • 220 ohm resistor x4
  • Arduino and breadboard x1

Arduino breadboard layout:

Building Instructions

Making the bunny ear mechanism

  • – Locate hinge mechanism from umbrella (this can be seen in the picture above).
  • – Using wire cutters cut the mechanism so you have two pieces of metal connected by the hinge between them.
  • – Where the hinge is there should be a small hole which you can tie string through. This enables the hinge to be pulled via the string.
  • – Then get a wooden dowel and cut it to roughly 1 inch long.
  • – Use a file to make a notch in the dowel (slightly larger than the width of the string) and secure it at the bottom of the mechanism (with hot glue or duct tape). The string connected at the hinge should be behind the dowel, so the system acts as pulley.
  • – Now add two bits of card roughly 1.5 inches thick and 1 inch in height above and below the hinge. This will act as the frame which will retain the shape of the bunny ear underneath the fabric.
  • – Cut out 2 bunny ear shaped patterns that match the size of the mechanism and width of the cardboard.
  • – Glue these two bits of bunny ear together and fit it over the mechanism like a sleeve.
  • – Repeat this process again for the other ear.

Attaching the bunny ear to hat

  • – Cut a hole for the bunny ear to be pushed into the rim of the hat to maintain its position.
  • – Now with the bit of cardboard acting as the ear frame, cut along the ear where it would protrude sideways so that it can be seen.
  • – Cut on the hat where this cardboard lines up against it, and then slip the cardboard into the hat.
  • – Inside the hat cut along the seam of the cardboard and secure it with duct tape or glue.
  • – Do the same process for the other ear.

Attaching servo to bunny ear mechanism

  • – Locate the servo and attach the string from the bunny ear to the pivot.
  • – Make sure the string is pulled taught to allow for the string to move the hinge when pulled.
  • – Where the string is taught, mark the location of the servo and cut out a rectangle that matches the size of the servo (slightly smaller to ensure a secure fit).
  • – Place the servo inside the hole so that it stays in place.
  • – Brace the servo with duct tape so It doesn’t get pulled out under the tension of the string.
  • – Apply same process for the other servo/ear.

Building the circuit

  • Follow the breadboard layout shown above and attach the wires, buttons, and resistors to their correlating position on the breadboard (avoid connecting the servo wires to the board yet).

Attaching circuit to hat

  • – When the Arduino board is all connected attach it to the back of the hat with duct tape.
  • – Then get the cell and position it on the top of the hat and also fasten it with duct tape.
  • – Connect the Arduino board to a computer with a cable and run the code provided below then disconnect the cable.
  • – Connect the cell to the Arduino board.
  • – Pierce two holes in the hat for the servo wires to come out from and then connect these wires to the bread board (the wires are colour coded so match them to the correlating colour).

The Code

//creates two servo objects for the ear controls

#include <Servo.h>

Servo rightEar;

Servo leftEar;

//variables to save positions of servos

int pos = 0;

int leftPos = 0;

int rightPos = 0;

//button pin numbers

int defButt = 2;

int surpButt = 3;

int sadButt  = 4;

int confButt = 5;

//code setup

void setup(){

  //opens the serial line for testing

  Serial.begin(9600);

  //connects the servos to their pin

  rightEar.attach(9);

  leftEar.attach(10);

  //button pin setup

  pinMode(defButt, INPUT);

  pinMode(surpButt, INPUT); 

  pinMode(sadButt, INPUT); 

  pinMode(confButt, INPUT);

}

//main code loop

void loop() {

  //if statement setups, depending on the button pressed

  //each button correlates to an emotion

  if(digitalRead(defButt) == LOW){

    // Serial.println(“DEFAULT”);

    defaultEmote();

  }

  if(digitalRead(surpButt) == LOW){

    //Serial.println(“SURPRISED”);

    surprised();

  }

  if(digitalRead(sadButt) == LOW){

    // Serial.println(“SAD”);

    sad();

  }

  if(digitalRead(confButt) == LOW){

    // Serial.println(“CONFUSED”);

    confused();

  }

}

//the “default” position which the actor would set the ears to

void defaultEmote(){

  //the servo angle that pulls the ears raised

  pos = 145;

  //writing that angle to the servos so they move to the correct angle

  leftEar.write(pos);  

  rightEar.write(pos);             

}

//fully raised ears, showing surprise

void surprised(){

  pos = 270;

  leftEar.write(pos);  

  rightEar.write(pos); 

}

//ears all the way down, showing sadness

void sad(){

  pos = 50;

  leftEar.write(pos);  

  rightEar.write(pos); 

}

//one ear goes up and the other down in a small cycle, showing confusion

void confused(){

  //separate angles for left and right ear

  int rightPos = 0;

  int leftPos = 270;

  //for loop that cycles one ear up and down twice as a small animation

  for(int i = 0; i < 2; i++){

    leftEar.write(rightPos);  

    rightEar.write(leftPos);

    //pause between ear changes

    delay(1500);

    leftEar.write(leftPos);  

    rightEar.write(rightPos); 

    delay(1500);

  }

}

Design And Making Process

When deciding what we wanted to make for out theater prop we all recalled pantomimes, stories and comic book cliches which would be familiar and wildly recognised as well as fun and interactive. We thought of birds circling ones head when being dizzy or knocked out, a glowing, beating or broken heart, a mask that would have LEDs or moving parts, a ratatouille movie inspired chef hat, and an iconic Alice in wonderland top hat. We all got excited by the idea of decorating a mad hatter/white rabbit prop and having folding bunny ears that would correspond with the emotion of the actor on stage.

The sketches of our different initial ideas
Here were the different emotions we wanted to portray by the ears with the top hat.
original mechanism design

Our first idea for the mechanism was to have four servos, two per ear. The ones on the base of the hat would move the hat left and right, while the ones in the middle of the ear would fold up-and-down.

Creating And Testing The Mechanism

When looking at the servos which we wanted to use, and considering the weight of them, the power that would be needed by the base servo and the internal supporting structure of the ear to stand up right with the second servo would be reasonably large and unpractical. We therefore adapted the design shown in the sketch above to have one servo to control the entire ear.

This is what pushed us to start considering a different mechanism using strings and pulleys. We looked into different hinges and found that the folding system of an umbrella worked very well with our desired mechanism.

the pulley system pulled manually

We attached the string from this mechanism to a servo and with simple code were able to test that the mechanism would work when combined with Arduino.

the pulley system connected to the servo

We moved onto adding the ear material to the mechanism skeleton. After prototyping with scrap fabric we were confident that the servo had enough power to support the added weight, and therefore moved onto using a fluffy white material, which we recycled from baby jumpsuit found in a charity shop, to begin making.

The combined sock and mechanism connected with the servo

We found that the bunny ear sock lost its shape with only the thin metal mechanism inside and so we incorporated a cardboard skeleton to retain the ear form despite movement.

How we connected the mechanism to the top hat

As well as the bunny ear material, we were also able to find a top hat from a charity shop. Here is Carl modelling it for us.

Carl with the top hat

First, we marked on the brim of the hat where we wanted to position each ear and made a small hole to poke the metal skeleton of the mechanism into. At this point, we also added a small wooden dow with a notch in it at the bottom of the metal ear component to regulate the movement of the string when it was being pulled.

Next, we added the material component of the ear and braced it to the side of the top har to add further support and to make sure the ear wouldn’t be pulled by the force of the servo, since if the ear moved it would compromise the tension of the string operating the pulley. We did this by cutting a slit through the material, revealing the cardboard frame we had implemented earlier, and, using a Stanley knife, cut through the hat to thread this cardboard into the main body of the hat where we then secured it with gorilla tape.

The cardboard in this photo both acts as a frame for the ear shape and is used to brace the ear and mechanism to the side of the hat.

Once the ear was firmly attached to the hat, we connected the servo to the Arduino board and marked where we should secure it to the hat in order to best ensure complete and reliable movement of the ear. We then cut the shape of the servo out of the hat with the Stanley knife and fitted the servo inside.

The tension of the string connecting the servo and the ear was the most important factor regarding the mechanism performing to how we wanted. We experimented to find the best string length which, when at full extension, did not have a force large enough to break the servo. Even when the pivoting limb of the servo did not pop off under the tension of the string, the main body of the servo would begin to be pulled out of the hat and even distort the shape of the hat. When wearing it, the contracting hat would apply pressure to the user and so we considering different techniques of bracing the hat in order to maintain its shape and to make it more comfortable.

At first we tried using criss-crossing wooden dowels inside the hat to add some internal support to the hat, not only did it fail to solve the issue with the servo, but the dowels itself were distorting the geometry of the hat and made it sit uncomfortably and awkwardly on the head. Since having a self contained prop which the actor can actually wear on stage was biggest priority while making we did not use the criss-crossing dowels. Instead we tried securing the servo differently to the hat. We glued the servo to be adjacent to the hat instead of perpendicular, allowing there to be a balancing force against the tension of the string. This stopped the servo being pulled as much as it had been before, however it did not remove all issues with the servo pivot popping off under extreme tension, and so we had to be careful not to overuse the mechanism at one go and increase the delay of the servo moving.

sketch of how we braced the servo
Diagram presenting how we braced the servos by securing them differently

Attaching the arduino board and the battery to the hat

Since we wanted to make this prop self-contained, we removed our laptops as the power source and replaced it with a battery pack. To do this we had to solder the connecting cables between the cell and the arduino board to elongate the wire so it could reach .

where we had to solder

We used gorilla tape to secure the breadboard at the back of the hat so that it wouldn’t be seen from the front and placed the battery pack on the top. Ideally we would have wanted to hide the breadboard and the battery pack so create an overall sleeker design, but due to the lack of time and the size of the hat we were working with we were limited with how we could conceal these components, and is something we would change in a future iteration.

Mapping the buttons to the emotions

Once everything was attached to the hat we focussed our attention on adding signifiers on the buttons to match the corresponding emotions. We considered the position, colour and symbol on each button to enhance the intuitive interaction of the sensors.

Consideration of Position:

Assuming most users will be right handed, we placed the default, most used button furthest to the right in order for it to be in easiest reach for the user behind their head. We then ranked the emotions according to what we assumed would be most to least used emotion from right to left. The most left button, furthest out of reach would then be the least used while the most used button will be easiest to access.

Consideration of Colour:

Mapping colour and emotion can be reasonably controversial. Having ‘sad’ as blue was the most obvious choice. We decided on yellow for ‘surprised’ as it is a bright, strong colour for a sudden and strong emotional response. For ‘confused’ we chose green, and for ‘default’ we chose black.

Consideration of Symbols:

We did not assign default a symbol. Surprised had an exclamation mark, ‘!’. Confused was a question mark ‘?’, and sad was ‘:(‘.

Summary of testing conducted

When testing the hinge mechanism, we played with different powers of servo to accommodate the strength needed to pull the string. We had a very large servo initially but then opted for the smaller servo that comes in the Arduino kit as its reduced size allowed for the hat to be worn more comfortably whilst still providing the power we required.

Additionally, the tension of the string between the ear and servo was changed so that the hinge could be fully extended and closed. Furthermore, with the different emotions we gave different angles of rotation to display different emotions more clearly.

Shortcomings

Our aim with this project was to make the hat wearable as well as expressive for it to be a functional theatre prop. While we were able to do this, the arduino board including all the wires remain exposed and so take away from the fully automated, ‘Wizard of Oz’ magic which can be impressive. The user has to reach to the back of the hat in order to initiate a change in the ear movement, this action may hinder their performance and be a distraction to the audience. Ideally we would want wires that could run down the actor’s sleeve to buttons where the ears can be quietly controlled in their hand. Since the buttons are also out of sight from the user, even though the buttons are labelled, they would have to memorise the positioning of each emotion, and since these emotions have no natural cognitive mapping this would require memory work and could be a point of failure.

The ears of the bunny are also not completely straight and angle inwards. This was to do with the positioning of the ear against the hat. When the ‘confused’ function would be activated the ears would sometimes clash and prevent movement.

Also over time the servos began to get weaker and struggled to pull the mechanism efficient. A potential solution to this would be using more robust, powerful servos. This could be implemented into a next iteration where the hat would be bigger and we would have more space to conceal a bigger servo.