Inspiration:
As Queen's students, we are swamped engaging in studies and extracurricular activities, so our time is valuable to us. Whether it be looking for a desk to study at in the library, finding available workout areas in the gym, or waiting in line for a coffee, we encounter delays every day, which are unpredictable and impede us from following our schedules and spending time on what's important. Frustration with seeming to always go places right when they are busiest inspired the creation of our tool - Bzzy!
What it does:
Bzzy uses nodeMCU firmware to listen to devices that are searching for a wifi connection. Using this, an approximate amount of people in an area can be calculated. Our website is a dashboard displaying the locations in our network, the occupancy at each location, and safety status relative to covid regulation. The location 'Qhack Room' is our live demo which constantly displays the number of people in our area to our web server.
How we built it:
Bzzy’s hardware is made using an ESP8266 microcontroller. It is capable of monitoring the area for wifi packets and extracting the sender’s MAC address to identify unique devices in the area, as well as sending the data as an HTTP request to the webserver. All the firmware for the “bzzy node” is written in C/C++.
The webserver uses Python Flask to handle the data exchange with the bzzy node, the database management, and any analytics. We use JavaScript and Node.js for the frontend of bzzy.
Challenges we ran into:
Originally we planned to filter nearby devices by their manufacturer to have a more accurate estimation of nearby cell phones. However, we discovered that some phones now have MAC address randomization, which makes an OUI lookup ineffective. To solve this issue, we decided to simply take an estimation based on the total amount of devices. Ideally, we would use analytical techniques to determine which devices are fixed within a range of the node and those that are dynamic.
Accomplishments that we're proud of:
Our team consists of three electrical engineers and one complex applied mathematics engineer, and none of us are very proficient in web design. We are, therefore, proud that this weekend all of the teammates learned a lot of valuable skills in web design, working with HTML, CSS, SQL, and javascript. Another accomplishment we are proud of is how we were able to create a complete project within the weekend, starting from the C++ code running on our live nodeMCU to the website showing off our results.
What's next for Bzzy:
Bzzy has a lot of room for growth in terms of analytics. Monitoring areas over extended periods will allow us to create stochastic distributions of when places are busy. Then, Bzzy reports can be interpreted against how busy a place is on average, at its busiest and emptiest.
In addition, further study will only increase Bzzy's ability to estimate the exact number of people in an area based on how many wifi packets are intercepted.
Bzzy would be perfect for implementing in a university setting, where many buildings are under the same organizational body. With Bzzy, Queen's could inform its students on the peak usage hours of each building, supporting them in being organized and efficient.
Log in or sign up for Devpost to join the conversation.