We love floofs, but rules are rules.
ssss
It all began at MakerChat0x2D — a month-long build series hosted by MakerGram, focused on the theme of Interactive Digital Signage. Every Thursday, makers gathered at TinkerSpace to brainstorm ideas, build prototypes, and share progress in a collaborative, hands-on environment.
During one of these Thursdays, I designed a digital signage concept called Motion Mirror - a playful interactive display where an animated character on screen mimics your head movements.
That project sparked a curiosity - What else Ican built?
Inspired by that, I began building NoPawZone over the following weeks—a fun and functional real-time pet detection signage system. It uses the Grove Vision AI Module V2 with a pretrained animal detection model to identify cats or dogs through a live video feed. Powered by the XIAO ESP32-S3 Sense, the detection data is streamed directly to a browser using the Serial Web API, triggering alerts.
🐶 What Is NoPawZone?NoPawZone is a digital signage system that detects if a cat or dog appears in the camera’s view. If a furry visitor is spotted, it instantly displays a playful but firm message:
"We spotted a floof! As much as we love pets, they gotta wait outside."
"A whiskered visitor detected! Sorry kitty, this space is pet-free."
It combines real-time detection, serial communication, and smooth frontend animation to make signage feel alive and responsive.
🔧 How It WorksThe detection is powered by the Grove Vision AI Module V2 running a pre-trained model from Seeed Studio that identifies dogs and cats. The module connects to a XIAO ESP32-S3, which acts as a serial bridge, sending detection results to the browser using the Serial Web API.
The browser reads the serial input, and the React-based frontend updates the screen in real-time with animations and context-aware messages.
🛠 Hardware- Grove Vision AI V2
- XIAO ESP32S3
- USB-C
Here’s the Arduino code that runs on the ESP32-S3 and prints the pet detection status via serial:
#include <Seeed_Arduino_SSCMA.h>
SSCMA Infer;
void setup()
{
Serial.begin(9600);
Infer.begin();
}
void loop()
{
if (!Infer.invoke()) // If inference was successful
{
auto boxes = Infer.boxes();
bool catDetected = false;
bool dogDetected = false;
for (int i = 0; i < boxes.size(); i++)
{
int confidence = boxes[i].score;
int label = boxes[i].target;
if (confidence >= 60)
{
if (label == 0)
catDetected = true;
else if (label == 1)
dogDetected = true;
}
}
if (catDetected && dogDetected)
Serial.println("both");
else if (catDetected)
Serial.println("cat");
else if (dogDetected)
Serial.println("dog");
else
Serial.println("nothing");
}
else
{
Serial.println("nothing");
}
delay(100);
}
🎯 Why NoPawZone?Instead of putting up static, easy-to-ignore “No Pets” signs, NoPawZone reacts to the presence of pets in real-time. The system enforces rules—but with a little heart and humor.
It’s perfect for:
- Cafés and food areas
- Clean rooms or labs
- Clinics and hospitals
- Co-working spaces with mixed policies
It makes public spaces more intelligent, expressive
Huge thanks to MakerGram ❤️🔥
Comments