Project Overview
The Parking Tracker project aims to provide a comprehensive solution for real-time monitoring and management of parking spaces. By leveraging advanced sensor technologies and cloud-based data processing, the system enables users to find available parking spots quickly and efficiently.
I oversaw the entire project, including team management, task allocation, and sprint planning using Jira. I developed the core architecture for the mobile application and database, and designed and implemented the complete infrastructure, including creation of the PCB, device casing, wireless communication protocols, and data collection and processing systems.
Key Features
- Real-Time Parking Availability
- Search interface for targeting specific locations
- Turn-by-turn navigation to selected parking spot
- In-app payments for parking (planned/future)
- Magnetometer-Based Vehicle Detection
- LoRaWAN Communication
- Mobile App Functionality
- Efficient Power Management
- Physical Design Optimization
- Gateway Simulations for Testing
- Cloud-Based Data Management
Technical Implementation
1. SENSOR DEVICE
Hardware Components
Magnetometer: QMC5883L (3-axis, 2 mG resolution)
Microcontroller: ATtiny1616 (ultra-low power)
Wireless Module: Ra-01SC (LoRa, 410–525 MHz, SPI)
PCB: 4-layer SMT board (26×38 mm) for minimal EMI, large battery compartment
Power: Long-life battery (5–8.5 years), optimized by periodic wake/sleep cycles
Circuit Design
I²C between microcontroller and QMC5883L
SPI between microcontroller and LoRa module
PCB optimized with:
- Outer layers for signal traces
- Inner power planes for EMI reduction
Housed in a custom 3D-printed waterproof casing with locking mechanism
Communication Logic
Sensor samples magnetic field periodically
On state change (free → occupied or vice versa):
Sensor sends: [parking_id, status, battery_level] over LoRa
If no state change occurs, periodic "heartbeat" is sent every few hours
2. GATEWAY
Mode: Temporary Single-Channel LoRa Receiver (can later be replaced by full LoRaWAN)
Function:
- Receives LoRa packets from sensors
- Publishes to RabbitMQ message queue for further processing
Stack:
- Implemented using an ESP32
- Connected to the internet to forward data
3. BACKEND INFRASTRUCTURE
Message Broker:
RabbitMQ: Collects raw sensor messages, buffers them
Data Processing System:
Pulls from RabbitMQ queue
Processes status updates, battery reports
Writes structured updates to Google Firebase Firestore
Database:
Cloud Firestore (Firebase):
- Stores parking space status
- Real-time synchronization with clients
4. MOBILE APPLICATION
Framework:
Flutter (cross-platform mobile framework)
Integrated with Firebase for:
- Realtime database sync
- User authentication (Google Sign-In)
Features:
- Map-based UI with real-time markers for parking availability
- GeoFlutterFire used for spatial queries (e.g. nearby free spots)
- Search interface for targeting specific locations
- Turn-by-turn navigation to selected parking spot
- In-app payments for parking (planned/future)
5. SIMULATION & TESTING
Due to hardware limitations, a virtual gateway was developed
Simulated:
- 75% occupancy rate
- Average parking session: 1.5 hours
- Live changes in parking status based on simulation inputs
TECHNICAL CHALLENGES
- Signal attenuation from sensors under vehicles (requires additional repeaters or full LoRaWAN coverage)
- Conflict resolution for multiple users targeting the same spot (requires further algorithm development)
- Real-time sync demands (handled via Firebase, but still edge cases possible)
What I Learned
- Improved understanding of LoRa communication and hardware design
- Enhanced skills in backend infrastructure and mobile app development
- Practical experience in real-time data synchronization and cloud-based systems
Future Improvements
- Full LoRaWAN infrastructure
- Expansion to multi-level parking
- Vehicle type detection
- OTA (Over-the-Air) firmware updates
- Improved conflict resolution logic