1 - Splash
2 - Login
2 - Login (b)
3 - New User Intake
3 - New User Intake (b)
4 - Dashboard (entry)
4 - Dashboard (b)
4 - Dashboard (c)
5 - Notification Sample
5 - Notification Sample (b)
6 - Notification Sent to Doctor
Building our Arduino hack
Learning to build charts in R
OMG ... is this updating in real time????
Xinxin Luo, Niharika Sane, Divya Gupta, Manali Palwankar, Meghan Boyce, and Jess Bird.
We met Friday night at like 10:30 pm ... at the event.
None of us had a team, and we were sitting in the Team Development activity room. Manali had an idea that got us all excited ... why not invent some kind of hardware hack to track heart rate metrics for those who struggle with anxiety and PTSD?
Soon six of us were gathered around a laptop making a plan: sensor => arduino => bluetooth => the cloud => database/API => analytics on the data => front-end visualization => UX on mobile => user. We had to build the entire stack ourselves. Most of us hadn't done much coding before.
We walked ... all six of us ... downstairs to the hardware lab and started investigating. By 4 am we were all still hard at work building all different parts of the project: researching medical measurements, investigating charting libraries, wireframing UX, building medical algorithms, scaffolding UI ... combining sensors, resistors, wires, led's ... and trying to figure out how to get the data off the board. It was a connection straight from real life => technology => back to real life again. Full circle.
This was kind of a source of inspiration for us.
We called it Mood Ring because ... color change jewelry being cool didn't end in elementary school and it always worked.
We were so invested we just kept staying ... even though some of us have school and lives and all that ... until finally some of us had to leave on Saturday. The remaining three of us finished out to represent!
What it does
While anxiety impacts every person differently, our research suggested a person could benefit from being able to track and anticipate triggers using heart rate metrics. Combined with a (wearable ... some day) sensor, this could help a patient begin to develop self-care habits that help control symptoms and improve quality of life. And of course, the metrics could also be available to their doctor or therapist to alert them of difficulties.
We wanted to build a user experience connected with our sensor that would make it unique and suited just for mental health-conscious users.
We built a sensor-driven board => that sends data to a python script => that writes it to the Google Firebase API => that is retrieved by the mobile React user experience => that renders a chart that moves in real time with the data from the sensor! The app alerts the user if it suspects a problem, and it allows the user to save notes about triggers.
How we built it
We just tackled the problem head on from different angles. A few of us concentrated on analytics and metrics, one of us built the UX, another one of us focused on the hardware, another one did the wireframing, some did the medical research ... we kind of filled in everywhere doing anything ... and generally loved the thing that took the most time ... debugging the connections between all the different stuff.
We used all this tech: Grove Piezo Vibration sensor, Arduino 101, some resistors and wires, Arduion Console, Python on Anaconda in Jupyter, Google Firebase and its API, Node.js and React, Chart.js, and R charting.
Challenges we ran into AND What we learned
Since none of us had really done this before, we had to start from ground zero. I think what we learned most was that debugging is a real thing.
We had to research a solution, decide which one to use, then research how to use it, then implement the research and use it ... then connect it to the next piece. It was pretty thrilling because we went from no knowledge at all to expert over and over again.
There was one point when we spent nearly half a day trying to get Python to install locally, import a basic module correctly, extract data from the arduino's port, and write the data to the cloud. Half a day. Half. A day.
The hardest code in the world to run.
! python get-pip.py ERROR: python does not recognize module 'python'
(Or something like that...)
I didn't think we would be able to connect everything in the end ... but we did!
Accomplishments we're proud of
Each level of connection was exciting. Watching the sensor spit out data in real time was a huge thrill. Then watching Firebase accept it in real time was magic ... then watching the UI render it ... and the most exciting thing ... watching a chart update in real time. When you've struggled for dozens of hours struggling to build ways to get electronics to talk to one another, that perfect sync is nothing short of amazing.
Some of us had never pushed to GitHub before. By the end of the event, we had.
What's next for Mood Ring: a heart rate tracker for anxiety
We could definitely expand our product in a few ways. Adding a user permissions scheme with differentiated roles would allow doctors to track multiple patients ... and patients could check in with their doctor and decide to share notes in real time.
Also, fixing the UI to have more robust functionality instead of a lot of wireframing. Would be good.
We could definitely use a better sensor ... one that's designed for heart rate and has a solid API that syncs to the cloud. Building out that connection ourselves was ... hard. Almost funny kind of hard.
We also wanted to put more focus into writing nuanced medical algorithms. We wanted to look into analyzing user data against a data set that would allow us to identify problematic patterns and warn users. We also felt like the data collected by our app could help with research to support mental health.
In the end, we did it because we all cared so much about it. That translated into an amazing experience. We might have stayed up all night and slept on the benches of a diner too ... just for good measure.