Inspiration
The vulture population in India has declined by over 99% in the past two decades, primarily due to diclofenac and other toxic chemicals in animal carcasses. This silent ecological collapse threatens the entire ecosystem, as vultures play a crucial role as nature's cleanup crew. Traditional monitoring methods are slow, expensive, and require laboratory analysis, making real-time threat detection nearly impossible.
We were inspired to create Vulkyrie - a portable, IoT-powered solution that can detect harmful chemical concentrations in the field, providing immediate warnings to conservationists and wildlife officials. Our goal is to enable rapid response to threats and help protect the remaining vulture populations in Rajasthan and beyond.
What We Learned
Building Vulkyrie taught us valuable lessons across multiple domains:
Hardware Integration: Working with ESP32 microcontrollers and TCS3200 color sensors required understanding GPIO pin configurations, frequency scaling, and sensor calibration
Machine Learning: Training a Random Forest Regressor model to predict chemical concentrations from RGB color values, including data augmentation techniques to improve model accuracy
Full-Stack Development: Integrating hardware sensors with a Node.js backend, PostgreSQL database, and React frontend to create a cohesive system
Geospatial Visualization: Using React Leaflet to create interactive maps that display real-time threat data and safe zones for vultures
API Design: Creating RESTful endpoints for data ingestion from IoT devices and retrieval for visualization
How We Built It
Hardware Layer We developed a portable detection device using: ESP32 microcontroller for processing and communication TCS3200 color sensor to analyze RGB values of chemical test solutions Custom C++ firmware that triggers a 30-second reaction time, then reads RGB values and predicts concentration levels
Machine Learning Pipeline
- Data Collection: Gathered color readings (RGB values) for different concentration levels (NEGATIVE, LOW, MODERATE, HIGH)
- Data Augmentation: Applied noise injection to triple the dataset from 24 to 72 samples for better model generalization
- Model Training: Implemented a Random Forest Regressor with 15 estimators, achieving accurate concentration predictions
- Model Deployment: Exported the trained model and scaler using joblib for potential future integration
Backend Architecture Express.js REST API running on Node.js PostgreSQL database to store device readings with geolocation data Endpoints for: GET /api/device - Retrieve all reports ordered by timestamp POST /api/device - Submit new sensor readings with location data
Frontend Dashboard React 19 with Vite for fast development and building React Leaflet for interactive map visualization Real-time display of: Sensor readings as markers on Rajasthan map Safe zones (wildlife sanctuaries) as green polygons Danger levels color-coded by concentration
System Flow
- Field operator presses button on ESP32 device
- Device waits 30 seconds for chemical reaction
- TCS3200 sensor reads RGB values
- ESP32 predicts concentration using embedded logic
- Data (with GPS coordinates) is sent to backend API
- PostgreSQL stores the reading
- React frontend fetches and displays on interactive map
Challenges We Faced
Sensor Calibration: Getting accurate RGB readings from the TCS3200 required extensive calibration and understanding of frequency scaling. We settled on 20% frequency scaling to balance accuracy and measurement speed.
Data Scarcity: With limited training data (only 24 initial samples), we implemented data augmentation techniques to improve model robustness without overfitting.
Hardware-Software Integration: Bridging the gap between C++ embedded code and JavaScript web services required careful API design and error handling.
Real-time Data Synchronization: Ensuring the map updates correctly when new sensor data arrives, handling both array and single-object responses from the API.
Geographic Accuracy: Mapping coordinates correctly in React Leaflet and ensuring markers appear at the correct locations in Rajasthan.
Model Deployment: Deciding between embedded prediction logic (current implementation) vs. server-side ML inference - we chose embedded for offline capability.
Despite these challenges, we successfully created a working prototype that demonstrates the potential for IoT and AI in wildlife conservation.

Log in or sign up for Devpost to join the conversation.