We both realized that not only are our postures subpar, but we often aren't aware of how bad they really are. We wanted to build a device that could make us more aware of when we are leaning too far in one direction and notify us in real-time to fix ourselves (hence the title).
What it does
Our project is a wearable device that a user straps on his or her back. It measures a user's shoulder alignment and their back arch. It will produce a unobtrusive vibration when the user has non-optimal posture for too long. It also records the user's orientation from the moment they start wearing the device. The user can see a graph of how their posture has improved over time through a web interface. In addition, there is a calibration button that allows user to customize the device to their own posture specifications.
How we built it
We used the Photon microcontroller (programmed in C) as the primary processor. We hooked up peripherals (accelerometer, vibrating motor, push-button switch) to the microcontroller, which communicated with a REST API created with Node.js. We read accelerometer data via I2C, performed calculations on the raw data, and published the measurements to a Heroku server though the Photon's cloud interface. This allowed us to be able to publish data to the web server from wherever there is a valid WiFi connection through just battery power (and no wired connection). If hooked up through a personal smartphone WiFi hotspot, it can function from anywhere. The webapp uses D3.js for data visualization.
Challenges we ran into
When we started doing this project, we wanted to use an Arduino with an external wifi chip but it proved to be overkill for what we wanted to do. Its power consumption was too high and the microcontroller was too bulky to be an effective wearable. That's we decided to move to the new platform Particle. Also, it was a huge learning curve figuring out how to set up and program on Particle boards, as this is a new platform for us. It was also a challenge trying to get the Photon to communicate with our Node.js API. In addition, we spent a lot of time experimenting with various angle combinations (and interpreting accelerometer data) to determine valid ranges for acceptable posture.
Accomplishments that we're proud of
We are very proud that our project integrates the hardware and software seamlessly. It is the first IoT device we have ever built, and we were glad that it turned out to be a success.
What we learned
Our team learned that the expression "a complex system that works is made up of simple systems that work" is very accurate. We approached each element of our project one step at a time, and tested often throughout the development process. It was valuable to learn that a task that seems trivial (connecting to WiFi, reading peripheral data) is actually very complicated under the surface when the abstraction is unraveled.
What's next for Fix Yourself
We are looking forward to allowing users to track, on average, how far they are away from ideal posture. Instead of having just a graph which could be difficult to interpret, we can give the user 1 data point for a specific time period called the Posture Goodness ValueTM.