Vescueye is a real-time vein monitoring system designed to assist surgeons in tracking facial artery conditions using near-infrared imaging and temperature sensors. It integrates a Raspberry Pi-based embedded system, AWS cloud services, and cross-platform applications for data visualization and management.
- Real-time Monitoring: Continuous vein imaging and temperature capture via Raspberry Pi
- Cloud Integration: AWS IoT Core for secure device-cloud communication
- Data Storage: Image and data storage in AWS S3 and MongoDB
- Admin Dashboard: Web-based interface for device and patient management
- Mobile Interface: Dedicated app for doctors to view patient flap conditions
- Vein Analysis: Automated vein continuity scoring using computer vision (OpenCV)
| Layer | Technology |
|---|---|
| Hardware | Raspberry Pi 3B, MLX90614, VL53L0X, Pi NoIR |
| Backend Server | Node.js, Express |
| Database | MongoDB (Atlas) |
| Cloud Platform | AWS S3, AWS IoT Core |
| Web Frontend | React (Admin Dashboard) |
| Mobile App | React Native (Doctor Interface) |
| Image Processing | Python (OpenCV, NumPy) |
- Unit Testing: Comprehensive testing using the Jest framework for backend logic and validation functions
- API Testing: Thorough endpoint testing with Postman to verify functionality, authentication, and data flow
- Tested with human hand and hot mug scenarios
- Real-time sensor values logged via Python
- Accuracy verified against digital thermometer (Β±0.5Β°C)
- Tested at 10cm and 20cm object distances
- Readings verified under multiple lighting conditions
- Consistent performance across various environments
- Human Hand Test: Achieved scores above 8.5, demonstrating clear and connected vein patterns
- Low-Vein Object Test: Skin areas like back of arm or wrist yielded scores below 3, confirming system sensitivity
- Pink Region Detection β Color filtering to isolate skin region
- Vein Pattern Detection β Adaptive thresholding for dark vein visibility
- Mask Generation β Morphological operations to connect broken lines
Continuity Score Formula: Number of vein lines + their connectedness
(Fewer broken segments β higher score)
- Raspberry Pi 3B or higher
- Node.js (v14 or higher)
- Python 3.7+
- AWS Account with IoT Core setup
- MongoDB Atlas account
# Clone the repository on Raspberry Pi
git clone https://github.com/cepdnaclk/e20-3yp-Vescueye.git
cd vescueye/pi
# Install Python dependencies
pip install -r requirements.txt
# Configure AWS IoT certificates
# Place your certificates in the certs/ directory
# Run the main script
python3 main.py# Navigate to backend directory
cd backend
# Install dependencies
npm install
# Configure environment variables
cp .env.example .env
# Edit .env with your AWS and MongoDB credentials
# Start development server
npm run dev# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Start the development server
npm start# Navigate to mobile directory
cd mobile
# Install dependencies
npm install
# Start Expo development server
npx expo startcode/
βββ backend/ # Node.js server code
β βββ controllers/
β βββ models/
β βββ routes/
β βββ middleware/
β βββ test/
βββ web-frontend/ # React admin dashboard
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ services/
β βββ public/
β βββ assets/
β βββ context/
β βββ styles/
βββ mobile/ # Doctor mobile app
β βββ src/
β β βββ screens/
β β βββ components/
β β βββ navigation/
β βββ assets/
βββ firmware/ # Raspberry Pi code
β βββ test/
β βββ scripts/
βββ images/ # Architecture diagrams, testing screenshots
βββ README.md
- AWS IoT Core: Secure device communication using X.509 certificates
- Data Encryption: Data encrypted at rest on S3 and MongoDB
- Authentication: JWT-based authentication for web and mobile access
- HTTPS: All API communications secured with SSL/TLS
POST /api/auth/login- User loginPOST /api/auth/forgot-password- Password ResetPOST /api/auth//signup- User Signup
GET /api/users/patients- List patientsPOST /api/users/patient/register- Add new patientGET /api/users/patient/:id- Get patient by idGET /api/users/flap/search/:id- Get Flap data
GET /api/users/doctors- List patientsPOST /api/users/doctor/register- Add new patientPOST /api/users/assign-patient- Assign new patientPOST /api/users/doctors/patients- Get Assigned patients
| Component | Purpose | Interface |
|---|---|---|
| MLX90614 | Non-contact temperature sensing | I2C |
| VL53L0X | Distance measurement | I2C |
| Pi NoIR Camera | Near-infrared imaging | CSI |
| Raspberry Pi 3B | Main processing unit | GPIO/I2C/CSI |
# Backend Configuration
PORT=3000
NODE_ENV=development
JWT_SECRET=your_jwt_secret
# Database
MONGODB_URI=mongodb+srv://username:[email protected]/vescueye
# AWS Configuration
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_IOT_ENDPOINT=your_iot_endpoint
# S3 Configuration
S3_BUCKET_NAME=vescueye-images- Camera not detected: Ensure Pi NoIR camera is properly connected to CSI port
- Sensor reading errors: Check I2C connections and addresses
- AWS IoT connection failed: Verify certificates and endpoint configuration
- Database connection issues: Check MongoDB Atlas whitelist and credentials
# Check I2C devices
i2cdetect -y 3
# Test camera
raspistill -o test.jpg
# Check IoT connectivity
python3 /test/<test_module>.py- Image Processing Speed: ~1-2 seconds per frame
- Temperature Reading Frequency: 0.2Hz
- Distance Sensor Accuracy: Β±3mm
- Vein Detection Accuracy: (Not Done Properly Yet)
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -m 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Tharindu β [email protected]
- Tharushika β [email protected]
- Chamuditha β [email protected]
- Janith β [email protected]
For support and questions:
- Create an issue on GitHub
- Contact the development team
Β© 2025 Vescueye Team. All rights reserved.



