Abstract
For this final project, we were tasked with creating a plaything for children in Pre-K and elementary school to interact with at the Children’s Museum. We wanted to create a ping pong ball launcher under the guise of a pelican. Children would be encouraged to toss ping pong balls into the large bucket bill of the pelican which would open and close randomly so that getting the balls into the mouth would become a game. If a child successfully “fed” the pelican, the pelican would reopen its mouth and shoot the ping pong ball back. 

In order to create realize this idea, we developed two iterations over four weeks. We tested each iteration at the Children’s Museum and received great feedback.

Objectives

At the beginning of construction, there were many features we wanted to add:

  • Randomly opening and closing mouth 
  • Consistently ejected ping pong balls
  • Rapid fire launch of ping pong balls
  • Mouth will be reliably open when returning ping pong balls 
  • Points tracker
  • Sound

Design Process

Iteration 1

Implementation

Our first iteration of this idea had a working ping pong launcher and randomly opening mouth. These two portions worked well separately but did not work together cohesively. The ping pong balls ran down a track out the back of the mouth and were launched outside of the mouth. Since the ping pong ball launcher was the main feature of the device, we spent a lot of time trying to get that portion of the project to work first. Due to time constraints, although we got the ping pong launcher working, the rest of the structure became more afterthoughts and we were unable to integrate the ping pong launcher portion into the head. 

Outcomes

The children had a lot of fun playing with the plethora of ping pong balls. Instead of being compelled to throw the balls into the mouth, they would often deposit the balls directly or dump several at once.

Many children were rather rough with the pelican, and it fell apart a few times but was easily reassembled on the spot. The large head on a small body was not very stable and thus something to be improved on in the second iteration.

Iteration 2

Implementation

We designed a larger mouth and planned for spaces to integrate the ping pong launcher appropriately. Behind the bucket mouth, there was a smaller cavity where the ping pong balls were collected and then placed for launching at a higher level.

Launching mechanism

Since we added the device to move the ping pong balls to the higher level, we were required to shift how our motors were connected to the shield board. We had four motors total —  a servo for the beak, two DC motors for the launcher and an additional DC motor for moving the collected ping pong balls. We ended up wanting to control the DC motor transporting the collected ping pong balls, but the shield board only supported controlling two DC motors from DCA and DCB. However, we realized that since the launcher motors did not need to be controlled, they could simply be wired to power and ground.

We had many difficulties getting the balls to launch consistently out of the mouth. Sometimes the wheel would not pick up the ball to move it to the launcher and become jammed. In order to resolve this, we programmed the wheel to move backwards a little bit to get the ball to fall back into a better position for it to be lifted.

#include <Servo.h&gt;

#define MOT_A1_PIN 6
#define MOT_A2_PIN 5

long count;
Servo s;

int s_pin = 2;

bool backwards = false;

void setup() {
  s.attach(s_pin);
  s.write(180);
  
  pinMode(MOT_A1_PIN, OUTPUT);
  pinMode(MOT_A2_PIN, OUTPUT);

  digitalWrite(MOT_A1_PIN, LOW);
  digitalWrite(MOT_A2_PIN, LOW);
}

void loop() {
  count = millis() % 2500;
  if(count == 1800)
  {
    digitalWrite(MOT_A1_PIN, HIGH);
    digitalWrite(MOT_A2_PIN, LOW);
    s.write(180);
  }
  if(count == 1900)
  {
    digitalWrite(MOT_A1_PIN, LOW);
    digitalWrite(MOT_A2_PIN, LOW);
  }
  if(count == 0)
  {
    digitalWrite(MOT_A2_PIN, HIGH);
    digitalWrite(MOT_A1_PIN, LOW);
    s.write(rand() % 90 + 90);
  }
}

Outcomes

The children still had a lot of fun playing with our project, but this time when the balls were launched out of the mouth, it often seemed like more of a surprise to children than in the first iteration because the launching mechanism was more hidden. 

We also observed some unintended interaction with the device. The children would often try to aim for the hole in the back of the mouth that the balls were being relaunched out of instead of just aiming to throw it in the main large cavity.

This time, the pelican received little to no damage because it was built sturdier and stood on a wide base

Future Work

For a future iteration of the project, we would attempt to resolve our two main issues: the balls being launched straight back into the mouth, and the balls getting stuck and clogging the mouth. For the former, most likely a simple constraint above the launcher would force the balls out at a higher velocity, thus resolving that problem. For the latter, we would have to determine a way to empty the mouth of all the balls. To do this, there could either be a hatch on the bottom or front of the mouth that would allow the balls escape, or the bottom of the mouth could be mounted on a servo and rotated up, pushing the balls out of the top of the mouth.

Contribution

Below are the main responsibilities each of us took.

Julian: CAD, Arduino code

Sophia: designing and dimensioning on paper, wiring

Both: construction/assembly and decoration