Kayla’s Status Report for 11/30

This week I updated the search functionality such that all recipes from the search results will be displayed in the UI in two columns with however many rows are necessary to show all recipes, and the user can scroll through the rows. This involved changing the frontend code as well as the data structure of the recipes so that they can be displayed in the UI in the described format. I also updated the ingredient recommendation algorithm to parse ingredients and isolate just the ingredient name by ignoring measurement terms and other extraneous words such as “fine” and “or.” For example, this would reduce “sugar pumpkin, halved from top to bottom, seeds and pulp removed” to “sugar pumpkin.” This change was made because the original algorithm checked that the user-given ingredient was a substring of the recipe ingredient, but that led to false positives where “sugar” would be a substring of the ingredient, but is not the ingredient name, so this parsing will increase the accuracy of the recommendations. I also added a button on each recipe card which the user would be able to click to select that recipe to cook. Next week, I will integrate this feature with Alena so that when a user selects a recipe to cook, the web app sends the recipe information to the glasses and voice commands.

I learned about SQL databases and how to use them. I did not have prior experience using databases, but I was able to learn via youtube tutorials, tech blogs that compare different databases and provide tutorials on how to set up and use them, and specifically the postgreSQL documentation, which helped me integrate the database into this particular web app. I’ve found that researching on the Internet and watching/reading about someone else doing it first help me learn and use new technologies and concepts.

Code

Search feature

Team Status Report for 11/16

What are the most significant risks that could jeopardize the success of theproject? How are these risks being managed? What contingency plans are ready?

  • Currently, the most significant risks to the project lie in the integration of our individual subsystems
  • The integration between the web app and the voice commands went relatively smoothly, however, integrating the microphone and LCD code onto one Raspberry Pi Pico has proven to be difficult due to different code languages (C vs Python). To mitigate this, we are discussing moving the LCD code over to C.
  • We will also eventually have to find a solution to our issue where all components are connected via wire. We are aiming for a wireless solution, so making the microphone wireless may be our biggest challenge in the weeks to come.

Were any changes made to the existing design of the system (requirements,block diagram, system spec, etc)? Why was this change necessary, what costsdoes the change incur, and how will these costs be mitigated going forward?

  • A recent change to our system is having the voice command processing happen on the Raspberry Pi (as opposed to the Raspberry Pi Pico W). We made this decision due to concerns over our latency when communicating voice command inputs to the web app. There are no significant costs to this change.

Glasses!

Glasses Tester!

Michelle’s Status Report for 11/16

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

  • This week, I worked on an initial “prototype” for the housing assembly.
  • I 3D printed Version 6 of the CAD model and redesigned some components as needed, including adding tolerances for holes and properly assigning space for all components.
  • With the iterations, this was the 3D printed model:
  • This model is able to attach to the side of the glasses and is relatively comfortable to wear (according to three people). The model does not yet include an LCD holder.

Is your progress on schedule or behind. If you are behind, what actions will betaken to catch up to the project schedule?

  • I am relatively on-time, except for the CAD model for the LCD holder, which may be post-interim-demo.

What deliverables do you hope to complete in the next week?

  • I will have the LCD holder (and pick an LCD to use – transparent or not).
  • I will also work on making our final assembly completely “wireless.” Right now, due to some logistical difficulties with making the microphone wireless, the Pico is connected to the Pi via a cable, which I aim to remove.
  • I also hope to have the CAD model perfected.
    • I will be first testing the weight of my design by measuring it on a scale.
    • I will also check how comfortable it is by having various users evaluate comfort based on time. I will ask them to wear it and complete various tasks over the span of 15, 30, 45, and 60 minutes.
    • I will also ensure that the LCD meets our latency and accuracy requirements by evaluating its performance over 3 one-hour sessions.

Kayla’s Status Report for 11/16

This past week I finished implementing APIs in the web app backend which are called from the frontend to access the database to search and add recipes. I also created a “New Recipe” form to the UI which the user can fill out to upload a new recipe to the database and added routing between the web app home page and the page with this new recipe form. I also set up a local PostgreSQL database instance and wrote code in the web scrapers and the backend APIs to create tables and add and retrieve recipe data from a PostgreSQL database. I also worked with Alena to integrate the web app with the voice commands and audio output by setting up APIs and using a Python interface within Alena’s code. This integration allows Alena to send voice command data from the user, such as ingredients, to the web app, and the web app can access the database and relay recipe information to be used in audio output. Next week, I will set up the web app and the database hosted on a Raspberry Pi and finish up the search feature to display search results in the UI.

I will test the web app latency using Chrome DevTools, which collects data such as DNS lookup time, time to first byte, and frontend rendering time in Network, Performance, and Lighthouse categories. The measurements collected by Chrome DevTools will allow us to verify the web app latency requirement. Additionally, for the recipe recommendation requirement of 95% or more recipe recommendations consisting only of ingredients explicitly listed by the user, I will include unit tests for the recipe recommendation function. These tests will provide the recommendation function with a list of ingredients and a category and will sift through the recipe recommendations returned to verify this accuracy requirement.

Web app repo

Alena’s Status Report for 11/16

This week I finalized the voice command algorithm including adding support for getting and posting requests and interfacing with Kayla’s web app code to send ingredients lists and receive recipes, refactored my original design to take better care of extraneous voice inputs by using a switch statement, and added a lot of extra functionality for the recipe process. I gave the user a lot more leeway into different choices they can make throughout the cooking process. In terms of hardware, I set up the Raspberry Pi 5 and installed all of the required libraries for the voice commands and the microphone. Then I was able to successfully run the voice command algorithm with the Pico microphone that I configured, and the entire system works as expected. Integration with Kayla is essentially finished.

I spent a lot of the first half of the week trying to figure out how to make the mic wireless, but I ran into countless issues figuring out how the lwip (lightweight tcp/ip protocol) on the pico W would work for sockets/sending and receiving information. Eventually I decided that I would spend time this coming week + over break to figure that out, and if not then take an approach with BLE (bluetooth). Also, Michelle and I are running into issues with our integration because we used different platforms for our picos (micropython and C/C++), so we are going to have to work on that as well. But otherwise, progress is pretty on track.

My next steps are to integrate the pyttsx3 responses into speaker output, integrate my code with Michelle’s, and figure out how to make the mic wireless.

Team Status Report for 11/9

Integration of the glasses and the web app is a risk, we plan to have the two raspberry pis communicate using TCP, but we have limited knowledge and experience with TCP and implementing this may be more involved or take longer than we expect. The contingency plan for the integration is to host the web app in AWS (AWS Amplify or EC2) and use HTTP calls for communication between the web app and the raspberry pi pico w on the glasses. No schedule changes.

Kayla’s Status Report for 11/9

This week I implemented web scraping for a different recipe website, America’s Test Kitchen. We will be scraping recipes from America’s Test Kitchen instead of Allrecipes because the recipe urls for America’s Test Kitchen are all the same except each recipe has a unique number on the end of the url, which allows for automated scraping of every recipe available on the website, whereas this is not possible with Allrecipes. This is a bit behind what I wanted to have, but tomorrow our team will meet to work on integration together, and during the week I will work on storing and retrieving data from the database. I also hope to update the web app UI to use America’s Test Kitchen recipes and implement the search feature. Code will be the deliverable.

The code for web scraping America’s Test Kitchen is here

Alena’s Status Report for 11/9

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

  • This week, I worked on the microphone integration with the voice commands. I was able to get the microphone to initialize and act as a USB microphone to my laptop, as well as have my voice commands algorithm recognize my input mic.

Is your progress on schedule or behind. If you are behind, what actions will betaken to catch up to the project schedule?

  • I am behind schedule in terms of the mic because it took a while to initialize, but now I need to look into the Pi to Pi communication and somehow reconfigure the mic so that instead of being a USB/UART connection, it acts as a wireless mic.

What deliverables do you hope to complete in the next week?

  • In the next week I hope to have the TCP/Wi-Fi integration for the mic completed, as well as added enhancements to the voice command algorithm.

Michelle’s Status Report for 11/9

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

  • This week, I worked on looking into BLE and TCP. Upon further inspection, I believe that BLE will not be the best option, as it is primarily designed for 1 Mbps communication, which may not be sufficient for our applications.
  • I also continued making progress on the semi-final CAD design (with fasteners accounted for).
  • I looked into soldering the power SHIM onto the Raspbe

Is your progress on schedule or behind. If you are behind, what actions will betaken to catch up to the project schedule?

  • I am behind schedule, but will likely get right back on track as soon as I 3D print this final iteration of the design.
  • Once I finish the physical design, I can make progress on all device integration with my teammates.

What deliverables do you hope to complete in the next week?

  • I will have the physical glasses integrated with most, if not all, hardware components. I also hope to have the simplest version of Rpi to Rpi communication done.

Team Status Report for 11/2

Integration of the glasses and the web app is a risk, we plan to have the two raspberry pis communicate via wifi, but it may be more involved or take longer to implement than we expect. The contingency plan for the integration is to host the web app in AWS (AWS Amplify or EC2) and use HTTP calls for communication between the web app and the raspberry pi pico w on the glasses. No schedule changes.