Background

According to a study conducted in China and published in the National Library of Medicine, approximately 65% of schoolchildren have incorrect posture, and adolescent idiopathic scoliosis was determined to have links to incorrect posture. Even one of our teammates suffers from a form of scoliosis. Furthermore, as EngSci students, we are always sitting down and working, and we often exhibit extremely poor posture, which will undoubtedly affect our health in the future. However, such healthcare can be inaccessible and inconvenient, which is why we designed a product that places power in the hands of the patient to help fix their posture in a convenient, accurate, and measurable way.

We built a device to determine if a user is exhibiting poor posture. If they have poor posture, the device reminds the user through physical action. The posture problems that we aimed to fix were "turtle neck" (head sticking forward relative to the rest of the body) and slouching. The initial plan was to resolve both scoliosis and turtle neck by utilizing four accelerometers, one on each shoulder to measure asymmetry, on the neck, and the lower back, to measure the angle relative to the ideal posture. However, due to the lack of available accelerometers, we focused on solving turtle neck, as people most likely tend to hunch their necks when sitting down.

Details

The user’s posture was evaluated based on the data collected through the accelerometer. Using the gyrometer output for angular velocity in the x, y, and z dimensions, the initial angle is instantiated, and the current angle is calculated by summing the change in angle multiplied by time to the initial angle. However, due to the random yet significant gyrometric drift error, we had to set a minimum threshold for movement to ensure that the calculation is not affected. When the difference between the current and initial angle is greater than 20 degrees in any direction, the motor starts rotating, gently notifying the user to return to an ideal posture within 5 seconds. After the duration, the initial angle is reinstatiated, and the same process continues.

How we built it

Our design was largely dictated by our available materials. We used an ESP32 microcontroller, powered via a 9V battery. The DC motor is attached to a motor microcontroller which is then routed to the ESP32 so that it can be controlled via PWM based on script from the Arduino. The motor rotates a plastic fan attachment to prompt the user to correct their posture. We interpreted user position/orientation as the rotational velocity output from the gyrometer.

The App

We worked on a mobile app to track the user’s performance and usage of the device. The user’s performance measures how many times per day the user falls out of position, or in other words, how many times the motor is activated every day. This data is then graphed and displayed, showing a user’s progress with their posture, since as the number of such occurrences reduces, it implies that their posture is improving. In addition, the amount of time the user uses the device daily is collected and graphed. We also planned to create a feature in the app, where the user starts a streak whenever the daily usage passes 1 hour, and the app sends a notification to remind the user to use the device if the user was inactive for a day. These features motivate the use of the device and assist them to have a posture. Data from the ESP32 serial output is accessed by the app via communication on a Firebase database.

Greatest Challenges

The app development was significantly more time-consuming than we had expected, due to bugs and compatibility issues. Consequently, we were not able to implement as many features as we had planned.

Greatest Successes

Having the full electrical system ultimately work was very satisfying, and we were able to integrate it into a prototype that could potentially be applied in a real use case.

Future Improvements

For improvement, we would have liked to have carried through our original idea of attaching 4 accelerometers to each shoulder, back, and neck to detect further slouching in the back and towards the sides to combat scoliosis. We could also improve our algorithm for finding the angular displacement of the accelerometer, by constantly finding the three axis vectors of the accelerometer at every instance to calculate an accurate angular displacement from the initial axis vectors.

App Github: Victor-Weng/postureFix (github.com)

Share this project:

Updates