A real-time ESP32 IMU dashboard using MPU6050, WebSockets, and Chart.js, built as a PlatformIO project. It uses FreeRTOS under the hood to run sensor data acquisition on a dedicated core task.
A real-time graph showing accelerometer and gyroscope data in action.
- FreeRTOS filtered MPU6050 data streaming.
- Low-pass filter for smoothing noisy sensor data.
- Dual-line chart visualization: Accel & Gyro.
- Fast WebSocket communication using
ESPAsyncWebServer. - Responsive Chart.js interface.
- Structured as a PlatformIO project.
- ESP32
- MPU6050
- Micro USB cable
- WiFi network
git clone https://github.com/smashembedded/mpu6050-dashboard.git
cd mpu6050Create a file at include/wifi_credentials.h
#pragma once
#define WIFI_SSID "YourSSID"
#define WIFI_PASSWORD "YourPassword"Make sure your dashboard HTML is placed in data/index.html
pio run --target uploadfspio run --target uploadpio device monitorAfter connecting to WiFi, open a browser to:
http://<ESP32_IP>/Check the serial output for your device's IP address.
- ESP32 reads and filters MPU6050 data at ~40Hz.
- Accumulated in batches of 10 and sent via WebSocket.
- Browser receives data as a JSON array and updates two real-time charts.
Check platormio.ini:
- ArduinoJson
- ESP Async WebServer
- AsyncTCP
- Adafruit MPU6050
- Adafruit Unified Sensor
Install the PlatformIO IDE (VS Code extension recommended)
Contributions, bug reports and feature suggestions are welcome!
Feel free to open an issue or submit a pull request.
GitHub Sponsors coming soon!
⭐ this repo or follow me to stay updated.
[Reach out on Twitter or via email.].
Apache License 2.0 © Smash Embedded See the Apache License for full terms.
- Chart.js for interactive charting.
- ESPAsyncWebServer.
- Adafruit MPU6050 Library.
- Vanepp for providing the ESP32 Fritzing model on the forum.


