Give backyard pests a very clear hint
The project began with a practical problem: raccoons, squirrels and other pests spending too much time around the house. The concept is to combine computer vision, remote monitoring and a physical deterrent into one autonomous prototype.
Critter Bouncer uses a Raspberry Pi camera and a YOLO inference model to inspect live video for configured target classes. The current software is specifically watching for raccoons and squirrels.
When automatic mode is enabled and a target is detected, the application applies a cooldown rule and sends a serial command to an Arduino to activate the hardware. A browser-based control console provides the live annotated camera image, system status, target state, recent activity and manual activation.
The original BRD describes the physical deterrent as a high-velocity packing-peanut projectile, with the explicit constraint that the system should not damage people or structures.
See it. Classify it. Decide. Activate.
The current software forms a simple edge-AI pipeline running locally on the device, with the browser acting as the monitoring and control surface.
Capture
The Raspberry Pi camera supplies a continuous 640×480 image stream.
Detect
YOLO evaluates frames and identifies objects using a 0.50 confidence threshold.
Filter
Only configured targets — currently raccoon and squirrel — trigger the response logic.
Decide
Auto mode and a five-second cooldown determine whether activation is allowed.
Activate
A serial command is sent to the Arduino; the web console records the event.
A small full-stack robotics system
The Python application combines machine vision, camera handling, hardware control and the web interface in a single deployable service.
Ultralytics YOLO
Runs local object inference and produces the annotated detection frame.
Picamera2 + OpenCV
Captures Raspberry Pi camera frames and JPEG-encodes the browser image.
Arduino + Serial
Receives the activation command from the Raspberry Pi over a serial connection.
Flask
Hosts the console, status API, snapshot endpoint and manual/automatic controls.
Live State + Activity
Tracks camera health, targets, last detection, last activation and recent events.
Embedded HTML
The control console — including the logo — is embedded directly in the Python application.
Purpose-built enclosure
Designed in Fusion 360, prepared in Bambu Studio, and printed on a Bambu Lab X1 Carbon.
Custom physical design for this project
Critter Bouncer’s physical enclosure was modeled in Fusion 360 and printed for this project on a Bambu Lab X1 Carbon. The design was built to stay compact while still allowing access to components and charging ports.
Iterated around the hardware
As the system moved to high-speed brushless motors, the enclosure had to evolve to fit larger motors, LiPo batteries, battery controllers, and added ventilation requirements.
Designed to stay observable and controllable
Autonomous behavior is useful only when the operator can see what the system thinks it is doing. The current console exposes that state directly.
A polished operator console for live monitoring and control
The current Critter Bouncer interface turns the prototype into something that feels like a real product rather than a raw developer dashboard. It gives the operator immediate visibility into system health, camera state, live targeting and activation readiness.
The console combines a branded header, high-contrast status cards, a large live detection feed, clear manual and automatic controls, and an activity area that shows what the system has been doing most recently.
Annotated live feed
The browser refreshes the latest YOLO-annotated camera snapshot approximately five times per second.
Manual activation
An operator can issue an immediate activation from the web console.
Auto mode toggle
Automatic target response can be armed or disarmed remotely without stopping the application.
Cooldown logic
A five-second software cooldown prevents repeated automatic activations in rapid succession.
System status
The UI reports system state, camera availability, targets, cooldown state and auto-mode status.
Activity log
Recent detection, activation and mode-change events are retained for the current session.
Independent power systems
Separate dedicated battery systems power the compute/control electronics and the high-current motor system. That keeps Critter Bouncer untethered and easy to place wherever the action is - then monitor and control it over Wi-Fi from a phone or PC on the same local network.
Easy to find with Bonjour / mDNS
Critter Bouncer uses mDNS zero-configuration networking - commonly known as
Bonjour - so there is no need to hunt down an IP address every time you want
to connect. On the local network, it can advertise a friendly .local
address for easy access from a phone or PC.
FinchLabs Roost
Critter Bouncer's web interface is secured by FinchLabs Roost, providing user authentication before access to monitoring or control functions. Because putting an unsecured web server with projectile-launch capability in the backyard seemed like a genuinely bad idea.
Smart enough to know what it’s looking for
Trained in the Lab. Tested in the field
Critter Bouncer is designed to automatically trigger only when it detects defined target classes - currently raccoons and squirrels. If those classes are not detected, the system stays in watch mode.
That makes the system more selective, more predictable, and a lot smarter than simply reacting to motion alone.