Default state, right before the hand temperature is recognized
Encased hardware: infrared thermometer, ultrasonic rangefinder, Arduino Uno with WiFi101 shield
"Good to go!"
"Possibility of fever!" simulated with hot water
Falling ill from time to time is a fact of life. Unfortunately, many of us have encountered situations where we found ourselves at work or school despite being sick, putting our own and others’ health at risk. We might feel obligated to go to work or school, not have the time to take our own temperature, or simply be unaware of our illness. We noticed that some airports employ infrared cameras to detect sick passengers who might spread contagious illnesses. While they can be effective at identifying those with fevers, these cameras are expensive and must be manually monitored. We figured we could improve on this idea with an inexpensive and fully automatic fever detection system that can be widely deployed in schools and workplaces. Our product can quickly read the temperature of everyone who walks through the entrance doors. It’s even more timely and convenient than a traditional thermometer, as it reads temperatures nearly instantly as soon as anyone walks past a sensor. We hope that having such a system in place will promote a healthier culture that encourages resting when sick.
What it does
It tells you if you are too hot. Temperature hot, that is. If the sensor detects that you are at an unusually high temperature, a nearby kiosk displays a warning, stating that you may have a fever. From this kiosk, you can just press a button and get an Uber ride home. A workplace can also integrate a list of its employee’s names and addresses into the system. A user can then simply enter in his name, and the Uber will be automatically routed to his home address.
How we built it
The device works around two sensors: an HC-SR04 ultrasonic rangefinder, and a RadioShack pocket infrared thermometer. While the former was designed to work with our Arduino microcontroller, the RadioShack IRT lacked documentation, was designed to be used as a handheld device, and as such had to be taken apart and reverse engineered to work with the Arduino. The Arduino utilized these two data sources to take a temperature reading whenever anyone passed close enough to the infrared thermometer (closer than 55cm). The Arduino then sent the temperature reading over WiFi to a Ubuntu server running Python Flask on Amazon AWS. The Flask server hosted a RESTful API which would collect this information and store it in an sqlite database for later retrieval. The API also supplied data for webpages that provided both kiosk and administrative views. The kiosk view was designed to be shown near sensors to present information to passing users. If a fever was identified, the page would present the passing user with health suggestions as well as the ability to order an Uber to take them home (via Button integration). The administrative page provided real-time statistics and temperature readings as well as a dynamic graph showing the numbers of feverish people over the past several days. Both views updated live via socket.io.
Challenges we ran into
Working with a retail undocumented infrared thermometer was a risk as we had little knowledge available on the subject, and the centrality of the sensor to the project made the possibility of failure to extract data stressful. However, using what information we could find combined with some trial and error and the help of a digital multimeter, we were able to get this central component working. We realized that the reading for the same object could vary based on its distance to the IRT, so we collected some several thousand data points over varying distances and with a linear regression were able to derive an approximate formula for the surface temperature based on measured temperature and distance to object. For Button, we encountered many unexpected challenges with getting it to work smoothly and consistently; most of the challenge came from incorporating data obtained from ajax calls and rendering the Button with updated attributes.
Accomplishments that we're proud of
We feel great about having put a lot of things we were unfamiliar with together into a tangible product.
What we learned
This project had many firsts for us. We learned many of the tools and technologies we needed from scratch, such as Flask, Arduino, SQL, 3D printing, and ultrasonic range finders. We also learned how to break down an unfamiliar tool to get data we need.
What's next for Too Hot
We would love to add more functionality and increase the reliability by adding inputs/indicators of well-being through tools like camera, heartbeat sensor.