Team E6: waitr

Carnegie Mellon ECE Capstone, Spring 2022

Sophie Sacks, Sam Lavelle, Dina Razek

Weekly Status Reports

Dina Razek’s Status Report for April 30th, 2022

This week, I spent time wrapping up the final deliverables for our capstone project. I prepared heavily for the presentation, which included recording some videos that demoed our complete solution in steps, finalizing presentation content, and doing timed practice run-throughs. I also helped Sophie and Sam finalize the last step of our project – connecting Sam’s circuit to our web application. We were able to collect entry data from Sam’s circuit and exit data from the commercial RFID reader, which are properly combined to get a wait time submission. I also finalized the frontend for our demo, including both a predicted and live wait time on our home page. The live wait time updates from form or scan data while our predicted wait time is generated from our ML model.

My progress is currently on schedule. Next week, I hope to finalize the last deliverables, including the poster, video, and demo.

Sophie Sacks’s Status Report for April 30th

This week, I spent most of my time finishing up the project overall. Dina, Sam, and I worked together to connect the Arduino from Sam’s circuit to the RPi. I wrote the code on the RPi to read the ID card number from the serial monitor on the Arduino and then send the request with the ID number and the time to our web app server. We were able to successfully scan several different IDs on the RFID circuit and keep track of the entry and exit times on the web server backend. I also set up the backend to send both the live and predicted wait times to the frontend to be displayed on the web page.

My progress is currently on schedule. Next week, I hope to wrap everything up by finishing up the poster, preparing for the final demo, and writing the final report. I will also make any necessary final changes to the project overall.

Team Status Report for Apr. 30, 2022

This week, the team worked to connect our hardware component and software component by joining the RPi and Arduino. Having both of these devices, and having each go with a different component, worked well as it allowed us to fully test each before joining them. We were successful in connecting the Arduino and RPi, solving a few minor bugs that popped up along the way. We’re excited to now have a fully working system, and to show it at the final demo.

No changes were made to our system or schedule. Next week, we’ll work on our video and final report, and cleaning up any software or hardware as we look to our final demo.

Sam Lavelle’s Status Report for Apr. 30, 2022

This week I worked with the team to combine software and hardware components into one system, and prepare our final deliverables. We met up in the lab and connected the Arduino and RPi to create one system, and after some debugging, were successful. I had to tweak how the Arduino is grounded as it went from being connected to my laptop to the RPi, but it fortunately didn’t take too long to figure that out and get it working. I also worked on our poster.

As the semester comes to a close, we are on schedule to have our full system ready for the final demo. We also are on schedule with our deliverables.

Next week, I’ll prepare for the final demo by picking up the perma-board that just came in and hopefully getting some soldering done. I might have the working system to still use the breadboard so that the soldered board is free for people to get a closer look at our circuit, but we’ll see based on how far I get. I also want to make some sort of board that all our components attach to, so that the components and their wires are more organized for people to look at. In addition to final demo prep, I’ll be working on the final report and video with my team.

Dina Razek’s Status Report for April 23rd, 2022

This week, I focused efforts around testing and the final presentation. For testing, we calculated metrics that validate our design requirements and meet our use-case requirements, such as transmission time from RPi to server. I setup the presentation outline and built out the content for the complete solution and design trade-offs. I worked on our final report and ideated for our final demo plan. I also spent some time preparing for the presentation.

I am on schedule for this week. For next week, I hope to add any final touches to our web application frontend to facilitate the demo, to finalize the connection between Sam’s circuit and our web application, and to finish preparing our report, demo, and video.

Sophie Sacks’s Status Report for April 23rd

This week, I spent a lot of time working on our final presentation as well as adding some minor changes to the web application backend. For our presentation, I help set up the initial outline, worked on the complete solution slides, added to the design trade-offs slide, and added tests related to my portion of the project to the testing, verification, and validation slides. Additionally, I performed some tests on our RPi to web server connection by timing how long it took for a scan and its data to be sent to the web server backend. This time was always under 2 seconds (which was our goal), and the average time was 0.96 seconds. In addition to the presentation, I was also able to set up our web application to be encrypted with SSL. This required getting a domain name and obtaining the certificate so that our traffic could always be rerouted to https. By visiting https://waitr.link, you can view our web app running encrypted through our EC2 instance! I also added some logic to have both the live wait time to be viewed alongside the predicted wait time on the web app frontend.

My progress is currently on schedule. Next week, I hope to help out with our final poster as well as finish getting the Arduino and RPi connected so that our project solution can finally be complete. I also want to make sure that there is nothing else needed on the web app backend before the final demo.

Sam Lavelle’s Status Report for Apr. 23, 2022

This week I was out of town, so progress was again slow. However, I was able to do good work on Monday, and research some things during my trip. On Monday, I picked up the ADALM and got the circuit working with it. There were some bumps as I transitioned from the in-lab scopes to the ADALM, but I was able to do some research to figure everything out, and in the end everything worked great. I’m happy with this progress because it also allows for us to keep everything plugged in and connected when storing the system. While on my trip, I looked into different soldering options. I found the Perma-Proto board, which I think will be perfect for what we need – it has connected rails like a Protoboard, but allows for soldering components into place for a secure, permanent fit. I will submit the order while at the airport, and hopefully it will come sometime next week!

The schedule for me was all jumbled when I got sick, but I think I’ll be able to get back on track in the final weeks before we present. We may not have two perfectly soldered boards, but I feel confident that we will be able to have a good hardware demo.

Next week I’ll prepare to make the second/permanent circuit. This will involve forming a second coil and taking inventory of all the additional circuit components I’ll need, as well as ordering duplicates of any devices. I plan to order and take inventory on Monday, so that I can begin the building process as soon as possible.

Sam’s Status Report for Apr. 16, 2022

This week I wasn’t able to accomplish anything with the circuit, as I was ill. I began to feel well enough to start making up work for all my classes on Friday, and I think I’ll be able to go to class on Monday to continue troubleshooting my circuit. The ADALM I ordered came in, and I’ll use that to debug.

At this point, I just need the circuit to work reliably so that we can focus on getting the info from the Arduino to the RPi, thus closing the loop on our system. I don’t know why it suddenly stopped working, but hopefully the ADALM is helpful in figuring out what the issue is. I’m a bit frustrated, as the circuit has been built for months now, but issues with uncalibrated machines and Arduinos have me stuck at the breadboard stage. I still hope to sodder something for our final product, so I’ll try to order what I need for that this week – this may even solve the issue, as it could be a broken connection within my protoboard.

Team Status Report for April 16th

This week, the team worked on the connection between the second Raspberry Pi and the web application as well as circuit development. We were able to make significant progress on sending scan data from the RFID reader to the web application through the RPi. We also managed some issues we faced with our circuit, and are working on fixing the voltage situation with the Arduino. Below is a picture of setting up our second RPi.

There were no changes to the existing design of the system. The entirety of our web application is functioning with only some slight adjustments remaining. In addition, our circuit is almost working without connection to the software after obtaining a new Arduino. Finally, we will need to modify some code in order to account for the Arduino being used in our built RFID reader, but will work on that final connection soon.

No major changes have been made to the schedule or lists of tasks necessary to complete the project. We are extremely close to the final solution coming together and are beginning to prep for all of the final deadlines.

Sophie Sacks’s Status Report for April 16th

This week, Dina and I were able to successfully set up the second RPi for our system. We need two since we will have two scanners, so we need one RPi each in order to connect back to our web application. After the long setup process (since our RPi Zero W is pretty slow), I was able to add in logic in our software backend that handles a second scan of the same ID number. Now, when someone scans their ID on either of the scanners (since our web app can’t tell the difference), our backend checks if the ID number is a part of the Entry model table. If it is, then the entry time and exit time are added to the WaitTime model table and the old Entry object is deleted. If not, then the ID number and entry time are added to the Entry model table. In addition, I migrated our database backend to SQL instead of SQLite because this will better handle our data as well as concurrency issues of multiple people using the web app at once. Finally, I also added logic to use a live wait time at the top of the website if it is available within two minutes of the current time. Otherwise, the predicted value from the ML neural network will be used. A code snippet of this logic is shown below.

# use live wait time, otherwise use prediction
if (WaitTime.objects.filter(id=1).exists() and (datetime.now(utc) - WaitTime.objects.latest('exit').exit) <= timedelta(minutes=2)):
wait = WaitTime.objects.latest('exit')
wait_time = int((wait.exit - wait.entry) / 
timedelta(minutes=1))
else:
wait_time = ml.predict([datetime.now(eastern)]).pop(0)

My progress is currently on schedule. Next week, I hope to get our web application encrypted with SSL so it is more secure. I also hope to finalize getting Sam’s circuit connected to the rest of our system so we can have a final working product with all of the components connected!