A full-stack smart parking system that combines Embedded Systems, TinyML, IoT communication, backend API development, and a modern React dashboard to provide real-time parking occupancy monitoring.
*Attained 75.33% for this project build/dissertation.
This project was developed as part of a final-year engineering dissertation and demonstrates the complete development pipeline from sensor acquisition to machine learning deployment and web-based visualisation.
The system uses an HC-SR04 ultrasonic sensor connected to an ESP32 microcontroller. Distance measurements are processed locally using a TinyML model generated with Edge Impulse. Occupancy predictions are transmitted via Wi-Fi to a Node.js backend and displayed through a React dashboard.
Unlike traditional threshold-based parking systems, the solution incorporates machine learning directly on embedded hardware, enabling low-latency and cloud-independent decision making.
- ESP32 microcontroller implementation
- HC-SR04 ultrasonic distance sensing
- LCD status display
- LED occupancy indicators
- Real-time sensor acquisition
- Edge Impulse model development
- Embedded machine learning inference
- Confidence-based classification
- On-device processing
- No cloud dependency
- Node.js REST API
- Express.js server
- JSON data handling
- HTTP communication
- Real-time status updates
- React dashboard
- Live occupancy monitoring
- Session tracking
- Duration charts
- Dark and light dashboard views
The system consists of four integrated layers:
-
Sensor Layer
- HC-SR04 ultrasonic sensor collects distance measurements.
-
TinyML Layer
- ESP32 executes a trained Edge Impulse classifier locally.
-
Backend Layer
- Node.js server receives and processes occupancy data.
-
Frontend Layer
- React dashboard visualises parking activity and system status.
HC-SR04 Sensor
│
▼
ESP32 Microcontroller
│
▼
TinyML Inference
│
▼
JSON Payload
│
▼
Node.js Backend API
│
▼
React Dashboard
│
▼
User Visualisation
- ESP32
- Arduino IDE
- HC-SR04 Ultrasonic Sensor
- LiquidCrystal_I2C
- Edge Impulse
- Embedded C++
- Supervised Machine Learning
- Node.js
- Express.js
- CORS
- React.js
- JavaScript
- HTML
- CSS
- Wi-Fi
- HTTP
- JSON
tinyml-smart-parking-system/
│
├── esp32-firmware/
│ └── smart_parking_tinyml.ino
│
├── backend/
│ ├── server.js
│ ├── package.json
│ └── routes/
│
├── frontend/
│ ├── src/
│ ├── public/
│ └── package.json
│
├── screenshots/
│ ├── system-architecture-diagram.png
│ ├── data-flow-diagram.png
│ ├── dashboard-dark-mode.png
│ ├── dashboard-light-mode.png
│ ├── edge-impulse-metrics.png
│ ├── feature-space-visualisation.png
│ ├── dashboard-duration-chart.png
│ ├── dashboard-multiple-sessions.png
│ ├── nodejs-backend-logic.png
│ ├── esp32-json-payload.png
│ └── system-live-action.png
│
├── README.md
└── .gitignore
All Project Demonstration Images and Diagrams can be found in the 'Screenshots' folder above.
The system was evaluated under a range of operating conditions including:
- Standard indoor operation
- Sensor tilt conditions
- Reflective surfaces
- Low-light environments
- Outdoor deployment
- Classification Accuracy: 93.3%
- Average Response Time: 648 ms
- Reliable occupancy detection across varied conditions
##Installation
npm install
npm start
npm install
npm run dev
Potential future developments include:
- Multi-space parking management
- Additional sensor integration
- Mobile application support
- Cloud database integration
- Predictive parking analytics
- Expanded TinyML training dataset
Patrick Loughran
Embedded Systems Engineering
Final Year Dissertation Project
Copyright © 2026 Patrick Loughran.
This repository is provided for educational and portfolio purposes.