Inspiration
Eating is something most of us do without thinking, but for people with limited arm mobility, every bite can depend on another person. That dependence takes away independence and dignity at mealtime. Commercial feeding robots exist, but they are expensive, so many families go without one. For this hackathon's "Social Good" theme, we asked: what is the simplest, cheapest arm that could feed someone safely?
What it does
FeedBot is a low-cost assistive feeding arm. After a one-time setup, it feeds the user automatically:
- Calibrate: A dial turns to aim the arm at the bowl, then presses FEED to lock the position.
- Scoop: The arm swings to the bowl, dips the spoon, and lifts a bite.
- Deliver: The arm turns to the user and glides in slowly. An ultrasonic sensor stops it about 10 cm from the face, and it backs off if it gets too close.
- Retract: When the user presses RETRACT, the arm returns to the bowl for the next bite.
There is no camera, Wi-Fi, or internet connection, and the user stays in control of when each bite ends.
How we built it
- Controller: a single STM32 Nucleo F446RE board, programmed in the Arduino IDE.
- Motion: three SG90 servos: a base swivel (yaw), a shoulder (pitch), and a wrist (spoon). The arm is built from popsicle sticks on a cardboard base to keep it light and cheap.
- Sensing: an HC-SR04 ultrasonic sensor measures the distance to the user's face, with a median filter to reject noisy readings.
- Controls: FEED, RETRACT, and E-STOP buttons, status LEDs, and a potentiometer that is used only once, for bowl calibration.
Challenges we ran into
- Wrong servos: Our first servos were continuous-rotation, which can't hold an angle. We switched to positional SG90s.
- Limited torque: SG90s are weak, so we kept the links short and the structure light. Our torque estimate showed the shoulder had only a small safety margin, so we limit each bite to a small portion.
- Power: The board couldn't drive three servos, and our power source had no accessible terminals, so we moved to a bench supply.
- Servo range: One servo swept only about 40° until we found the cause: software angle limits and the SG90's pulse range.
- Mounting: The wrist horn was attached 90° off, which is too big for software to fix, so we remounted it mechanically and added a trim value for fine adjustment.
- Slow, safe motion: We first misread the speed setting (a bigger delay means slower), then tuned the movement to be gentle near a person's face.
Accomplishments that we're proud of
- A working three-joint feeding arm built from cheap, everyday materials.
- Automatic spoon leveling, so food stays level while the arm moves.
- A safety-first design: an E-STOP that freezes the arm, slow approach speeds, distance-based stopping, and servo angle limits.
- Fitting the whole controller into a single board with no camera or internet.
What we learned
- Hardware debugging is mostly about power and grounding before code.
- Mechanical alignment matters: a horn mounted a few teeth off can't be fully fixed in software.
- Designing around offsets from a neutral pose makes calibration much faster.
- Assistive devices need safety and user control built in from the start, not added at the end.
- Small servos force good design: keep links short, weight low, and loads small.
What's next for FeedBot
- Print the arm in PLA with proper servo mounts to replace the popsicle-stick prototype, and use food-safe materials for the spoon.
- Test and tune with real users and caregivers.
- Add a caregiver dashboard that logs meals.
- Use stronger servos and add a bowl sensor to detect when the food is gone.
- Explore additional ways to trigger a feed for users who can't press a button.
Built With
- arduino
- stm32
Log in or sign up for Devpost to join the conversation.