COOPER: the dashcam that sees it coming.
A Raspberry Pi 5 dashcam that spots people and vehicles, predicts where each one is heading, and lights a warning before one of them enters your lane.
Scroll to see
Problem
Forward-collision warning is standard on new cars. Millions of older ones have none.
Rear-end and pedestrian collisions often come down to a second or two of inattention. Getting that warning usually means buying a newer car or paying for an aftermarket system that may need professional installation. COOPER closes that gap: a Raspberry Pi, a camera and two LEDs that watch the road and warn the driver before a collision, for far less than either costs. It plugs into the car’s power and mounts on the windshield or dash, with no wiring into the car’s systems.
It doesn’t drive, brake or steer, and it doesn’t record footage — it’s a warning light, not a replacement for an attentive driver.
- Detects
- people & vehicles ahead
- Predicts
- collision risk, live
- Runs
- on-device, no internet needed
See
It starts with a frame: brightness values, and nothing that knows what they are.
A 5 MP OV5647 camera on a Raspberry Pi 5 looks down the road through the windshield, powered by the car, and never moves. COOPER reads it 640 × 480 pixels at a time, and every frame goes through the same loop.
- Sensor
- OV5647, 5 MP
- Field of view
- 63° × 49°
- Frame
- 640 × 480
Detect
Boxes snap onto what matters, and each one keeps its name.
YOLO11n runs on the Pi 5’s CPU at a 320 px input, with no accelerator. It finds people and vehicles, and ByteTrack gives each one an ID that survives from frame to frame. COOPER doesn’t pick a favourite: every object on the road gets its own track, its own motion model and its own predicted path.
- Model
- YOLO11n, 320 px
- Tracker
- ByteTrack
- Classes
- people, cars, buses, trucks, motorcycles
Predict
Watch where it’s going, not where it was.
Every object gets its own constant-velocity Kalman filter, run in image space, so motion is relative to the car. Each frame it predicts (slide the object along its velocity), then updates (blend that guess with the new box, trusting whichever is less noisy). What’s left is a smooth position and velocity for each one.
The velocity draws a path 1.5 s ahead, checked against my lane: a trapezoid over the road just in front of the car. Something coming straight at us barely moves sideways, so COOPER also watches its box grow: height over growth rate is the time to contact.
Warn
Two lights, before it happens.
Yellow: a predicted path will enter my lane soon, like a car about to cut in, or something ahead is closing in under 2 s. Red: something is in my lane now, and red overrides yellow. A level lights after two frames in a row and holds half a second, so one noisy box can’t make it flicker. The dashboard shows the live video, every predicted path and the risk level, and can beep in step with the LEDs.
- Yellow
- path enters my lane
- Red
- in my lane now
- Horizon
- 1.5 s
Build
One board, one camera, two lights.
The Pi 5 does all of it on its CPU: detection, tracking, prediction, the lane check and the video stream. The two LEDs sit on its GPIO pins, and the car powers everything. Nothing moves — COOPER started as COOP, a motorized tracking camera, and we removed the motor to point the same vision and prediction pipeline at collision warning instead.
- OV5647 camera5 MP, 3.6 mm, 75° diagonal
- Camera mountfixed, facing the road
- Yellow LEDa path will enter my lane
- Red LEDsomething is in my lane
- Lidthe LEDs show through it
- Raspberry Pi 58 GB, vision and risk
- Casecar power in over USB-C
Built with: board to browser
Raspberry Pi 5
Python
Picamera2
YOLO11 · Ultralytics
PyTorch
NCNN
OpenCV
NumPy
Flask
gpiozero
systemd
Cloudflare
three.js
anime.js
JavaScript
Blender
pytest
GitHub Actions
Privacy
Everything runs on the Pi. Nothing is recorded.
Detection, tracking, prediction and risk all run on the device, and the warnings never depend on an internet connection. Each frame is processed, sent to any open dashboard, and discarded — no video recording, no saved images. COOPER knows a person or a car is there, not who they are: it doesn’t read faces or license plates.
By default the dashboard is reachable only from devices on the same network as the Pi. Making it reachable over HTTPS from anywhere is opt-in, sits behind Cloudflare Access so only approved email addresses can see it, and only passes video while someone is actually watching.
- Stored
- nothing, ever
- Dashboard
- same network, by default
- Remote view
- opt-in, behind login
Next
A rehearsal tool already proves the logic. The next step is real driving.
A synthetic road already tests COOPER end to end: a car cutting in, a pedestrian crossing, the car ahead braking, and a car in the next lane that must never light an LED. Next: validate against the Waymo Open Dataset, comparing COOPER’s time-to-collision estimates against lidar ground truth; add a buzzer on the unit alongside the LEDs (the dashboard already beeps); detect the lane from road markings instead of calibrating it by hand; improve detection at night and in rain; and road-test the thresholds in real cars.
Gallery
From the bench.
Drag or scroll to turn
- COOPER in action
- The full design in CAD
- CAD: the camera mount
- CAD: the Pi 5 in its case
- The printed case, opened
- Cut-outs for power and HDMI
- Cut-outs for Ethernet and USB
- Vents over the Pi
- Wiring the GPIO
- Camera mounted, powered up
- Testing: someone in the lane
- Testing: red means now
Team
Three people, built in parallel.
Everything runs on a laptop with a webcam and mocked LEDs, so the software and the hardware never had to wait for each other.
- David Hernandez Backend Backend development including vision, tracking, and prediction.
- Diego Avila CAD & hardware CAD and hardware. Also put together and wired the finished project.
- Diego Tabares Presentation & design Presentation, pitch, and elements of website design.