For our final project in Introduction to Physical Computing, our group (Leah, Abel and Varsha) was given the opportunity to work with an Osher student over the course of 5 weeks. Through our interview (documented here) we met our Osher student: Jane. She is a  retired English teacher, who likes to feed birds in her backyard. While feeding the birds using her bird feeders in the backyard, Jane had a problem with pests who would often come to eat the bird food that had spilled from her feeder. She also had an issue with larger animals and birds eating too much bird food from the feeder.  So, we focused on helping her solve this problem by building a prototype (documented here) of a bird feeder that would catch the bird food that fell off the feeder and release food only to the kinds of birds she wanted. This documentation will go over the final version of this project.

What we built


Our bird feeder (download zip of CAD here) uses the benefits of technology to help it solve Jane’s problems. It can be hung on a tree or post and has a 10 inch hollow cylinder to hold bird food. It uses weight sensors to determine which types of birds/animals sit on it and accordingly releases food if it is a bird that Jane wants eating from the bird feeder. Then, if bird food falls from the bird feeder it is caught by a dish handing off the bottom of the feeder. After the dish becomes heavier due to food accumulation, a LED at the top of the feeder will light up, signaling for Jane to empty out the dish.

Images of our project

Image of the assembled bird feeder

Body of the feeder

Lid of the bird feeder

Base of the feeder

Close up of the funnel dispenser mechanism

Bird food catcher

Tinkercad Interaction Piece

Physical Mockups

Below is the video of the dispenser opening and closing.

The video below shows how the lid unscrews from the feeder.

This video shows how the catcher is detachable from the base.

Below shows how the catcher moves in the wind (based off the prototype).

Mockup dish moving in the wind

Narrative Sketch

Jane comes home after dropping her daughter at work and goes to the backyard. She notices that the she doesn’t have to fill up her bird feeder as much as she did before she got this new bird feeder and sees less pests around the house. She enjoys her day outside.

Two days, later Jane does to the backyard again and notices that a light is glowing on top of the bird feeder, this means she has to empty out the dish at the bottom. She goes and grabs a cup and tilts the dish deeply to empty it out of food. She then puts that food back into the feeder and goes on with her day.

How we got here

There weren’t a lot of redesigns and edits on the technical side, but the physical design went through a lot of changes. Originally, the feeder was not designed with a funnel. Thus, seed would spill out whenever the dispenser mechanism opened. Below is what the feeder looked like before the funnel was added.

The feeder and dispenser without the funnel

To ensure the seed was slowly dispensed without making a mess I drew up the designs depicted below.

Drawing of how the funnel is supposed to work.

The feeder is designed such that the bottom of the feeder will not fill up past the funnel. The holes in the feeder are positioned such that they are just above where the seed will fill to. Thus, a bird can stick its head in and eat the seed when the dispenser opens. This ensures all the feed won’t spill out when it opens. Furthermore, the lid had to be redesigned. Since the prototype, it was planned that the lid will be attached via a hinge and latch.

The top of the feeder before I created the lid.

Upon finishing the feeder and about to start the lid, we changed the design to make it more sturdy. A screw on lid would be sturdier and less likely to detach while in use. The base of the feeder was also redesigned.

My original design of the base.

Originally, the base had a lot of detail. It looked nice, but it wasn’t necessary and it made it more difficult to attach the dish. Thus, the base was simplified in the final version.

The top of the feeder before I added the LED

The last edit made to the feeder was to add the LED. It was left to the end, so we added it on last minute. The original dish design is shown below.

We also changed the design of the bird food catcher because it would be difficult to empty out due to its thick shape.

First draft bird dish

It would also be more heavy than necessary for the bird house. The hooks will be difficult put in and take out if Jane ever wants to do that. Thus, it was redesigned to the final version seen in the final CAD model above.

Conclusions and Lessons Learned

“It’s hard to think about how this is better or worse than the many bird feeders on the market.  It really needs to be field tested.”

Since we did not have access to the lab or the relevant supplies, we were unable to test our project and determine how it compares to other feeders. We attempted to research and implement the best improvements we could think of. However, we sadly can’t say how this will face the real world.

I am concerned that the door sliding up and down might startle the birds and keep them from the feeder.

This could scare away the birds, but we believe that the motor speed can be set to a low enough value with PMW to avoid this.

I think the food mechanism is very smart and it is a very cute design. But I wonder if the bird standing area is too small, and whether the weight sensor will affect all the food slots and how do you separate them?

The weight sensor will affect all the food slots since food can be dispensed by any weight sensor.

I like the research that red is the best color. I think a common concern is making sure only birds are able to be on the platform.

Since the sensor provides an analog value, we planned on determining the threshold for a bird to prevent food from being dispensed for another animal.

  • We did not face any difficulties from working remotely as group members. Each member was able to work together well online since the parts were split up. However, we did have challenges with completing this project remotely from our client. We did not get the opportunity at the beginning of the project to see her garden due to Zoom difficulties and were limited during our first interview, which was over the phone.
  • One major takeaway was figuring out the questions to ask to find out problems we could build a solution for. This was a challenging aspect of the project since you have to understand the person’s routines. By understanding the client’s interests, we narrowed the scope to gardening. This experience showed us the important of understanding the routines and interests to help come up with a solution to a problem.
  • Our project is physical and has to be used outside with animals. Due to the limitations of Tinkercad, we were unable to completely test the functionality of our project. We had many comments about this, so it may have been better to come up with a solution that could be easier to test. Tinkercad is better than no simulation, but it is slow and is missing many parts. If we were to do this again, we would definitely build a physical project because of the simulation limitations.

Technical Details

Tinkercad final schematic

Image of the breadboard

Circuit schematic

 * Bird Feeder
 * Tinkercad Circuit:
 * Description: This code is the software we provide to power our final project bird feeder.
 * We substituted force sensitive resistors with potentiometers since Tinkercad does not have
 * force sensitive resistors. This code reads input from 4 potentiometers that represent whether
 * a bird is at one of the food openings. It also takes input from a 5th potentiometer that represents
 * whether the food plate is full. If a bird is detected and the plate is not full, food will be dispensed.
 * This code will spin the motor for one second. If the food plate is full, then a light will turn on to
 * indicate that it must be cleared before more food can be dispensed. The status of the sensors will be
 * checked every 500ms.
 * Pin mapping:
 * pin   | mode   | description
 * ------|--------|------------
 * A0     input     potentiometer/force resistor(bird) 1 
 * A1     input     potentiometer/force resistor(bird) 2 
 * A2     input     potentiometer/force resistor(bird) 3 
 * A3     input     potentiometer/force resistor(bird) 4 
 * A4     input     potentiometer/force resistor(food)
 * 3 .    output    food dispense motor
 * 12     output    LED output when food plate full

const int MOTOR_PIN = 3;
const int POT1_PIN = A0;
const int POT2_PIN = A1;
const int POT3_PIN = A2;
const int POT4_PIN = A3;
const int POT5_PIN = A4;
const int LED_PIN = 12;

unsigned long timer = 0;
const int INTERVAL = 500;

const int MOTOR_SPIN = 1000;

unsigned long last_on = 0;

void setup()
  pinMode(POT1_PIN, INPUT);
  pinMode(POT2_PIN, INPUT);
  pinMode(POT3_PIN, INPUT);
  pinMode(POT4_PIN, INPUT);
  pinMode(POT5_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);

void loop()
  bool bird1 = analogRead(POT1_PIN) < 512;
  bool bird2 = analogRead(POT2_PIN) < 512;
  bool bird3 = analogRead(POT3_PIN) < 512;
  bool bird4 = analogRead(POT4_PIN) < 512;
  bool bird_detected = bird1 || bird2 || bird3 || bird4;
  bool plate_empty = analogRead(POT5_PIN) > 512;
  if (millis() >= timer){
    if(bird_detected && plate_empty) {
      if (millis() >= MOTOR_SPIN + last_on) {
        digitalWrite(MOTOR_PIN, HIGH);
        last_on = millis();
      } else {
        digitalWrite(MOTOR_PIN, LOW);
    } else {
      digitalWrite(MOTOR_PIN, LOW);
    if (!plate_empty) {
      digitalWrite(LED_PIN, HIGH);
    } else {
      digitalWrite(LED_PIN, LOW);
    timer = millis() + INTERVAL;