Inspiration

COVID-19 is a global pandemic that has reshaped the world over the past 6-8 months, and contact tracing is an important method of containing the spread of COVID-19. Utah has a contact tracing app, called Healthy Together, that cost the state $6.35 million to develop. Our team wanted to come up with a cheaper solution, with a hardware module option, that could be used around the world.

What it does

Our project helps users anonymously contact trace in order to help stop the spread of COVID-19. The user's Android phone is regularly scanning for nearby Bluetooth signals that have a signal strength high enough to be within 6 feet. If a signal is within 6 feet, the MAC address and time stamp are saved and sent to the webserver.

When a user tests positive for COVID-19, they will report it in the app. Once a positive case is reported, all devices that user has come in contact with within the last 7 days will be notified that they may have been exposed to COVID-19.

This project expands upon the traditional contact tracing app by adding a hardware module. This hardware module also scans for Bluetooth signals that are within 6ft, and allows the user to upload that information when they connect to the hardware module.

How we built it

The phone application was built using Java Kotlin, connects to a webserver that was written in python and flask, and is hosted using the Google Cloud Platform. The webserver updates the remote database via SQL queries. The remote database is also hosted in Google Cloud and uses MySQL. The two tables we are using are Contact, for storing the users MAC, the timestamp, and the contact's MAC address, and Exposed, which stores the MAC addresses of all people that have been exposed to a positive case, and the timestamp of contact.

The hardware module was built using an STM32 embedded board connected to a Bluetooth module over UART. The Bluetooth module uses an inquiry mode to scan for Bluetooth signals and signal strengths. If the signal strength is high enough to be within 6 feet, the MAC address is stored locally on the board. A user can flip a switch on the hardware module board to change to connect mode, which allows the user to upload the local MAC addresses from the board to the phone, where they can sync with the remote database.

Challenges we ran into

The teams initial plan was to use the Google/Apple Exposure Notifications API, but, in order to use it, you have to be a registered public health authority. This forced us to pivot into coming up with our own solution.

We originally wanted to develop an app for both iOS and Android, but ran into a problem that iOS does not share MAC addresses. In order to keep the scope within reason for the weekend hackathon, we just developed the app for Android.

The app was supposed to connect directly to the remote database and send queries itself, but we ran into issues with getting them connected. To solve this, we added the webserver as a middle point to connect the application and the database.

Accomplishments that we're proud of

Our team is proud of our ability to persevere through the 48 hour hackathon, especially since it was the first hackathon for three of our members. Another proud accomplishment was getting all of the pieces we had worked on independently to integrate and work together correctly.

What we learned

The team was able to learn a lot from this hackathon. No one had done Android or mobile development before, and we learned the workflow and skills for that. We also learned about the Google Cloud Platform, and how to use it for both a webserver and a remote database. On the hardware side, we learned how use Bluetooth LE on both phones and the independent Bluetooth modules.

What's next for COVID-19 Contact Tracing with Hardware Module

Some of the things we would do to expand the usability of our contact tracing app is to check how long a user is within 6ft of Bluetooth signal, flush the remote database after 14 days, have a way of verifying positive COVID-19 tests, and adding an app for iOS.

Share this project:

Updates