Back to Projects

EcoKiosk

AI-Powered Recycling Station That Rewards Students

EcoKiosk

Try the Simulator

Experience the EcoKiosk flow — tap Get Started to begin.

🌿
🍃
🌱
♻️ 🌍 🌿
♻️

Hello!
Welcome to EcoKiosk

Recycle plastic bottles & earn school reward points!

What's your name?

Type your full name below to earn points.

Scanning Bottle

Scanning bottle...

Deposit Your Bottle

♻️

Please deposit your plastic bottle

+1

Congratulations!

You earned a recycling point!

EcoKiosk is an AI-powered recycling station that makes recycling rewarding. A student holds up a plastic bottle to the camera, the AI verifies it's real recyclable material, they type their name on the touchscreen, and they instantly earn school reward points. The whole process takes about 10 seconds. The goal is simple: make recycling feel less like a chore and more like an achievement.

~10s
Per Scan
400ms
AI Inference
<$150
Hardware Cost
75%+
Confidence Threshold

The Problem

It started with a simple observation: students at my school don't recycle. Every lunch period, plastic bottles go straight into the trash. It wasn't apathy — it was indifference. Recycling offered nothing in return. Texas recycles only 23% of its waste, 12 percentage points below the national average. Nationwide, only about 5% of plastic actually gets recycled. The infrastructure exists, but the motivation doesn't.

How It Works

1

Hold Up Plastic

Student presents a recyclable item to the camera

2

AI Verifies

YOLOv8 model classifies the plastic type in real-time

3

Enter Name

Student types their name on the touchscreen

4

Earn Points

School reward points are instantly awarded

Detectable Plastics

Resin Code Name Examples
PET (1) Polyethylene Terephthalate Water bottles, soda bottles
HDPE (2) High-Density Polyethylene Milk jugs, detergent bottles
PP (5) Polypropylene Yogurt containers, bottle caps

How I Built It

EcoKiosk has three layers: hardware, software, and AI.

Raspberry Pi 5

Main computer running the kiosk application

Pi Camera Module 3

Captures images for real-time AI classification

ELECROW 5" Touchscreen

Displays the interface and accepts user input

3D-Printed Enclosure

Houses all components in a durable, portable shell

Python + PyQt5

Application logic and touchscreen UI

YOLOv8 + OpenCV

Real-time object detection with INT8 quantized weights

Tech Stack

Python PyQt5 OpenCV YOLOv8 Raspberry Pi 5 INT8 Quantization 3D Printing Edge AI

Challenges I Overcame

Inference Speed

Running YOLO on a Raspberry Pi 5 was slower than expected — over 2 seconds per frame initially. I optimized it down to ~400ms:

  • Reduced input resolution from 640x640 to 320x320
  • Used INT8 quantized weights instead of FP32
  • Ran inference on every 3rd frame instead of every frame

Lighting Variability

The model worked in my room but struggled in the school cafeteria — fluorescent lights, sunlight, and shadows created inconsistent conditions.

  • Augmented training data with synthetic lighting variations
  • Adjusted camera exposure and white balance dynamically
  • Added brightness normalization step before inference

False Positives

Early versions triggered on hands, food wrappers, and empty frames.

  • Increased confidence threshold from 0.5 to 0.75
  • Required detections to persist for at least 1 second
  • Restricted valid detections to center 60% of the frame

User Experience

The first version had too many steps. Testing with real students showed they just wanted to tap once and leave. I removed all confirmation dialogs and made the flow fully automatic.

What I Learned

Edge AI Is Different

Deploying on a Raspberry Pi means thinking about memory, power, and speed constraints that don't exist on a laptop. Optimization isn't optional.

UX Is Everything

A technically impressive system that feels slow or confusing won't get used. I spent as much time on the interface as on the AI.

Hardware Debugging Is Humbling

Software errors give stack traces. Hardware errors give silence. I learned to check connections, measure voltages, and trust nothing.

Real Data Beats Assumptions

Testing in my room said the model worked. Testing in the cafeteria said it didn't. I should have tested in real conditions earlier.

What's Next