Bridging the Gap in Physical Therapy: Our Journey

Inspiration

Many patients recovering from injuries struggle to maintain proper form during at-home therapy, which leads to longer recovery times or even reinjury. Physical therapy check-ups can be difficult to schedule due to therapists' busy schedules and patients' time constraints. This gap between professional guidance and independent recovery often leaves patients unsure if they are performing exercises correctly. FitBud was born out of the desire to empower individuals to perform their rehab exercises with confidence, at home, while ensuring they maintain proper form and don't risk reinjury.

What it does

FitBud is a wearable band equipped with an accelerometer that tracks the user's movement during physical therapy exercises. It provides real-time feedback on key factors such as form, speed, and efficiency. The band is designed to monitor various types of physical therapy exercises, ensuring the user is executing them correctly. When the user’s movement is out of alignment, they receive an alert. Additionally, the wearable syncs to a web platform that records and tracks users’ data, allowing patients and therapists to access and review progress, ensuring the rehabilitation process stays on track.

Key Features:

  • Movement Tracking: Monitors the user’s movements during exercises to ensure proper form.
  • Real-Time Feedback: Alerts users if they are performing exercises too fast, too slow, or with improper form.
  • Web Platform: Provides a dashboard for patients and therapists to monitor progress.
  • Accessibility: Designed for use at home or anywhere the patient needs to practice.

How we built it and our ReadMe

Getting Started with Create React App

Our front-end was built using React and the project was bootstrapped with Create React App. Below is an overview of the key scripts and steps we used to build the app:

Available Scripts

In the project directory, you can run:

  • npm start: Runs the app in the development mode. Open http://localhost:3000 to view it in your browser. The page will reload when you make changes, and you will see any lint errors in the console.

  • npm test: Launches the test runner in interactive watch mode. This was important for ensuring our app’s functionality and stability during development.

  • npm run build: Builds the app for production to the build folder. This correctly bundles React in production mode and optimizes the build for the best performance.

  • npm run eject: This is a one-way operation. It removes the single build dependency and gives full control over the configuration files. We used this during specific cases where we wanted deeper customization of our Webpack and Babel setup.

For more details on how to build and deploy the app, you can refer to the full Create React App documentation.

Challenges we ran into

Hardware Integration

Integrating the accelerometer with our software was one of the primary challenges. Ensuring it accurately tracked movement in real-time without errors or delays took a lot of calibration and testing. We had to ensure the sensor was reliable in different environments, such as varying exercise intensities and user actions.

Front-End Development

Using Create React App to bootstrap our project was a great starting point, but developing an intuitive, responsive, and functional front-end involved overcoming several hurdles. Key challenges included:

  • State Management: We had to manage real-time data streams from the accelerometer and display them without lag. Using React’s Context API and useReducer helped us manage the state of the application more effectively.
  • User Interface: Designing an interface that was easy for patients of all ages and technical abilities to use was difficult. We made sure to keep the layout simple, but integrating complex features like progress charts and movement feedback took significant time and testing.
  • Data Visualization: Displaying the user’s performance, progress, and feedback in an easy-to-understand format required experimenting with libraries like Chart.js to create engaging and informative visualizations.

Testing and Optimization

One of the biggest hurdles we faced was ensuring that data was synced properly between the wearable device and the web application. We had to continuously refine our methods of collecting and displaying data, especially for users who might have inconsistent internet access.

Accomplishments that we're proud of

  • Successfully integrated the accelerometer with a wearable device and React-based web application.
  • Developed an interactive dashboard that allows both patients and therapists to track rehabilitation progress.
  • Delivered real-time feedback and alerts to users, helping them stay on track with their recovery.
  • Created a comprehensive system that combines hardware and software to bridge the gap between patients and therapists, allowing for a more accessible and guided rehabilitation experience.

What we learned

We gained valuable knowledge and skills throughout this project, including:

  • How to integrate hardware components (accelerometers) into a user-friendly software system.
  • The challenges of real-time data processing and how to handle it efficiently.
  • React fundamentals such as component management, state management, and performance optimization.
  • How to manage and debug a full-stack application, ensuring both hardware and software communicate seamlessly.
  • The importance of user-centered design and ensuring the interface is intuitive for all users, regardless of their tech-savviness.

What's next for FitBud

Looking ahead, FitBud has the potential to expand its reach even further. One exciting possibility is integrating with smartwatches like the Apple Watch or other devices that already incorporate accelerometers. We could create an app that syncs directly with these devices, allowing users to download it and track their physical therapy progress without needing an additional wearable. This would not only make the technology more accessible, but it would also eliminate the need for separate hardware, making it easier for users to access their rehabilitation tools anytime, anywhere.

Arduino Code:

include

include "MMA7660.h"

MMA7660 accelerometer;

void setup() { Serial.begin(9600); // Start serial communication at 9600 baud accelerometer.init(); // Initialize the accelerometer Serial.println("Accelerometer initialized..."); }

void loop() { int8_t x, y, z; // Raw values float ax, ay, az; // Acceleration values in g

// Get raw data accelerometer.getXYZ(&x, &y, &z);

// Get acceleration data accelerometer.getAcceleration(&ax, &ay, &az);

// Print acceleration data in the expected format Serial.print("X: "); Serial.print(ax, 2); // Print with 2 decimal points Serial.print(", Y: "); Serial.print(ay, 2); Serial.print(", Z: "); Serial.println(az, 2);

delay(100); // Adjust sampling rate (100ms) } 

Built With

Share this project:

Updates