From Breadboard to Breakthrough
[This Week’s Update]
A journey of transformation—turning a university prototype into a modern IoT therapy device with mobile BLE control and clinical analytics. A Video will be out soon. This only took so long as I was waiting to make the video however the construction occuring in our house has been extended by a week.
Introduction
What began as a humble Arduino servo controller for my Bachelors, has evolved into a somewhat professional-grade rehabilitation exoskeleton for your hand powered by an ESP32 microcontroller. Featuring wireless control, real-time analytics, and scalable infrastructure, this project showcases how engineering can elevate a concept into an (almost) clinical-ready system.
-
Original Arduino Code Architecture
-
New ESP Code Architecture

🛠️ Phase 1: Humble Beginnings with Arduino
The original concept used an Arduino Uno and a breadboard-packed setup. It controlled three micro servos via a button and offered minimal feedback through two LEDs. While functional, it had several limitations:
-
Bulky and fragile
-
Limited feedback and UI
-
No data logging
-
Poor scalability and reliability
Despite its simplicity, this version laid the foundation for all future iterations.
🚀 Phase 2: ESP32 + FreeRTOS = True Multitasking
The shift to the ESP32 was pivotal. With dual-core performance, built-in WiFi/BLE, and FreeRTOS support, this upgrade enabled:
-
Concurrent BLE communication and servo control
-
Real-time command processing
-
Efficient power and task management
-
Multithreaded servo operation and analytics logging
FreeRTOS let me isolate critical tasks—like servo actuation and communication—onto dedicated cores, improving both performance and reliability. I’ve actually become quite fond of FreeRTOS.
📱 Phase 3: BLE Mobile Control with React Native
Goodbye button mashing, hello BLE.
I developed a cross-platform mobile app using React Native and TypeScript. It connects to the ESP32 over BLE, offering:
-
Session management (auto start, manual end)
-
Real-time status and command feedback
-
Seamless scanning and reconnect logic
-
Debugging tools for error tracing
BLE commands are handled via a custom GATT service, allowing direct triggering of servo patterns or emergency stops.
🧠 Phase 4: Real-Time Data Infrastructure
Data brings insight. With Dockerized backend components, I built a full analytics pipeline:
-
Mosquitto for MQTT messaging
-
MariaDB for data storage
-
Grafana for clinical-grade dashboards
-
phpMyAdmin for DB management
This setup enables live tracking of therapy metrics, including success rates, movement quality, system health, and session history.
🧩 Phase 5: 3D Printing and Wearable Integration
To move beyond the breadboard, I created 3D-printable components:
-
Hand exoskeleton (servo-fitted and adjustable)
-
ESP32 mounting base
-
Wearable splint integration
Printed in PLA and flexible filament, these components drastically improved form factor, durability, and comfort.
🔬 Future Pipeline: Advanced Sensor Integration
Designed for extensibility, the architecture supports future hardware:
-
Pressure sensors for grip strength
-
MPU-6050 IMU for motion tracking
-
MAX30102 for heart rate & oximetry
These will interface via InfluxDB for high-frequency data capture, enabling machine learning-based therapy optimization in the future. These components have been ordered and should be here within a week… I hope.
⚔️ Engineering Challenges & Solutions
-
BLE Reliability: → Solved with reconnection logic, state management, and robust error handling.
-
Servo Power Issues: → Introduced staggered actuation patterns and task synchronization to reduce current spikes.
-
Real-Time Data Logging: → Implemented MQTT-based publishing with MariaDB backend and Grafana dashboards.
-
Complex Session Management: → Automated start/end logic with session-specific analytics.
-
Cross-Platform Complexity: → Used PlatformIO, Expo, and Docker Compose for manageable multi-platform development.
📈 Performance Snapshot
Feature Arduino ESP32 System Response Time ~500ms <100ms Control Interface Single button BLE mobile app Data Logging None Real-time MQTT + DB Form Factor Breadboard 3D-printed wearable Analytics Not available Clinical dashboards
🧠 Technologies Utalized
-
Embedded: ESP32, FreeRTOS, NimBLE, PlatformIO
-
Mobile: React Native, TypeScript, Expo, BLE
-
Backend: Docker, MQTT, MariaDB, Grafana
-
Hardware: 3D printing, servo integration, sensor interfacing
🧭 Final Thoughts
This project is a case study in engineering evolution—from a simple prototype to a robust, scalable, and clinically useful rehabilitation tool (in theory). It integrates best practices across hardware, firmware, mobile, and backend development.
Whether you’re building your first IoT project or scaling for real-world deployment, the lessons from this journey are universal: embrace modularity, prioritize usability, plan for analytics, and always design with the end-user in mind. I recommend you give this project a try and build it yourself. You can rund the server on any machine, just install docker or better yet use an old laptop or PI you have laying around.
Anyway I hope you enjoyed reading about my journey from a simple Arduino-based servo controller to a sophisticated ESP32-powered rehabilitation device with wireless mobile control, real-time data logging, and comprehensive clinical analytics. If you have any questions or comments, feel free to reach out!
Thanks for reading my ramble, see you next week (or two).
Enjoy Reading This Article?
Here are some more articles you might like to read next: