Vicky’s Status Report for April 19

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:

  • Spray painting the 6 outer boards of the machine box and the “SweeTrivia” letters together with Min Ji. Laser cut the front, back, and left boards and the decoration letters.
  • Due to some code changes with Min Ji’s  rpi download implementation, the audio narration and dispense programs were taken out, so I added the backend narration control code and i2c communication code back in to fit the updated rest of the code base.
  • Implemented the sound effects for correct and incorrect answer selection for user engagement. Added 2 types of background music for the round over screen and the candy selection screen.
  • Worked on final presentation outline structure, hardware (page 5&6), testing (page 9&10), design tradeoff (page 11).

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

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

My progress is on schedule! I will work next week on:

  • The new coil is crazy expensive and did not work. Will go back to hand-made coil and try shaping it to make it more stable.
  • Finalize final presentation slides.
  • Glue the motors and coils and attach all hardware in place on the machine.
  • Shoot final video.
  • Debug the QR code upload with team.
  • Add shopping mechanism code.
  • Work on final poster.

Status Report for April 19

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

  • Sound effect and audio: we were having some conflicts before on getting the sound and audio to work together with the rpi download, Vicky fixed that by adding back the narrate and sound endpoint api-server.cjs. 
  • Rpi download: Min Ji added an customization question category and fixed the google cloud drive csv management and the rpi local download. Now the player can upload personal questions and directly check if they are included. 
  • Dispense program: Added back i2c communication code in the new api-server.cjs file, similar code as before in server.js only updated the host address. Arduino and motor wire connections are the same as before. 
  • Paint: We tried to enhance the look of the machine box by spray painting the MDF boards. The spray paint was hard to work with but we did multiple layers to achieve an even finish. 
  •  Board reprint: We laser cut new boards for the front, left and back panel for a clean edge that will hold on more tightly for the finger joints.

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

3. Provide an updated schedule if changes have occurred. This is also the place to put some photos of your progress or to brag about a component you got working.
No schedule changes. 

 

Min Ji’s Status Report for April 19

This week, I focused on repainting the left, top, and front panels as well as the letters. After painting them, I assembled all structural components, including the inner panels. The coils are not here yet, so I wasn’t able to glue them, but other than the coils, the box assembly is done.
For the software tasks, I successfully deployed the website to production at www.sweetrivia.me. The Rpi question download bug was fixed(had an incorrect Google Drive ID), and the QR code functionality on the website to link to the upload interface was attempted. I also completed preparations for the final presentation slides.

I am on track overall. The major deliverables, including the structural assembly, paintwork, website deployment, and challenge mode integration, have been completed as planned. The only issue still being resolved is the QR-code-triggered cloud download functionality on the RPi. I am planning to continue debugging into next week to ensure a seamless sync between the frontend and backend.

For the upcoming week, I plan to

  • Finalize the QR-code-based cloud download pipeline, ensuring that the RPi correctly pulls and processes the selected CSV from Google Drive
  • Prepare and present our final presentation
  • Polish UI/UX elements

 

Fei’s Status Report for Apr 12

This week, I worked on both the software and hardware aspects of our project. On the hardware side, although the structure is functional, the inner divider panel needed to be reprinted, as the original top panel was unstable and couldn’t close properly. I redesigned and reprinted the panel to resolve that issue. On the software side, I enhanced the challenge mode gameplay by introducing velocity changes to the bird after a certain amount of time to make it more engaging. I also completed several updates, including increasing the vertical gap between barriers, enlarging the score and lives-left displays, and updating the background to a new pink theme. In addition, I tried to implement the correct screen flow so that after each round, players are taken to a continue/exit screen—selecting “continue” starts another round with the score persisting, while “exit” leads to the candy selection page, which then returns to the home screen. I am currently on schedule with our project plan. For next week, I plan to focus on integrating the software with the vending machine hardware and collaborate with the team to add decorative elements to the vending machine.

Vicky’s Status Report for April 12

  1. 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).
    Audio narration fix: (Min Ji was working on the audio narration prior to this week and because she became stuck on the task, I took over the audio narration.) Confirmed espeak-ng on Raspberry Pi is installed and configured. Created Backend API Endpoint in server.js, added route /narrate to receive narration text from the frontend. Also I created NarrationControl.tsx that calls speakWithEspeakNg() and controls narrate time and content. Inserted narration state variable inside TriviaCard.tsx to ensure the screen does not respond to user touch until the narration is complete. video
    Ordered new coil, paint, and more compatible-shaped candy.
    Rpi Download:
    work together with Min Ji on rpi-download testing.
  2. Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?
    My progress is on schedule, I plan to implement my tasks according to schedule posted in team report.
  3. What deliverables do you hope to complete in the next week?
    Sound effects: when correct answer, wrong answer, game over, candy selection page, and candy dispense complete.
    Shopping mechanism: implement reduction logic eg. player has 40 points in total, can have multiple opportunities to select affordable candies such as 10+30 or 10+10+20

In particular, how will you analyze the anticipated measured results to verify your contribution to the project meets the engineering design requirements or the use case requirements?

Dispense: meets accuracy and time requirement in use case.

Webpage ux design: meets intuitive ux flow for user to input questions.

Audio: meets design requirements and achieves desired features in timing, voice type, clearness.

Min Ji’s Status Report for April 12

This week, I focused on three major subsystems: Raspberry Pi audio narration, synchronization between the website and Raspberry Pi, and user interface finalization for both Challenge and Standard Modes. Each component has been implemented and tested.

  • Raspberry Pi Audio Narration: I made an attempt on implementing the speech functionality using pyttx3 on the Raspberry Pi after confirming that previous options such as espeak-ng and Google Cloud TTS were not viable. The audio narration still had some issue and Vicky took over.
  • Website-to-Raspberry Pi Synchronization: I took over from Vicky and worked on the website-related tasks. I developed a complete data pipeline that allows the Raspberry Pi to download new CSV files from Google Drive, parse the contents, and append only new questions to the local questions_and_choices.json database. This process avoids duplication by checking previously synced filenames. I also categorized questions upon import and ensured filtering logic, particularly for the new “Customization” category, was respected during gameplay.
  • Standard Mode Customization Integration: I created a new “Customization” category and implemented the filtering logic so that only relevant questions appear when this category is selected. I also built a new page to handle this mode in the same structure as the existing standard gameplay. I confirmed that questions in this category render correctly and are narrated on the Raspberry Pi.
  • Challenge Mode UX Improvements: I finalized the post-game flow by adding a screen prompting users to either exit or continue. If “continue” is selected, the previous score is preserved and the game resumes; if “exit” is selected, the user is redirected to the candy selection screen. I also added logic to automatically return to the home screen if the score reaches zero. It works the same as the standard mode.
  • Hardware – Aesthetic Polishing: I painted the outer wooden structure of the vending machine to give it a clean and arcade-like appearance for the demo and final presentation.

 

I am currently on schedule with my contributions and slightly ahead in some areas. There are no outstanding tasks from this week, and no additional catch-up work is needed at this time.

 

In the upcoming week, I plan to do the following:

  • implement the logic for generating a QR code that links to the website and allows users to download question sets and assist with deploying the website to support this functionality
  • begin preparing our final presentation slides and submit them for review and feedback by Tuesday and Wednesday.

Team Status Report for April 12

Team questions:

1. What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready? (by vicky)

  • Audio narration now works: the rpi was able to connect to an external bluetooth speaker and output audio, but the narration generated by the tts program was not outputting audio on the rpi). We have modified our use of espeak-ng, configured in on rpi, added backend API endpoint for narration, created NarrationControl.tsx component to call speakWithEspeakNg() and added narration state variable inside TriviaCard.tsx to control narration flow. 
  • Machine body finger joints: the finger joints are not precisely matched due to laser cutting error margins. We managed by gluing the edges so the panels are fixed in place.
  • Customized questions website upload & rpi download: We are currently working towards enabling players to input their own questions that can be added to the pool of trivias. 
    • Datapath
      • Website question input -> csv uploaded to cloud google drive (done)
      • Cloud google drive -> download csv to ‘SweeTrivia’ code base (done)
      • Read csv and add to .json file with all questions (done)
    • UI/UX
      • Homescreen: [Make my own question] -> [QR code of website] [download question set] [Back] -> home screen
      • Deploy website to make QR code. 

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

Yes, some minor changes were made to the existing design of the system. On the software side, we are introducing a UX improvement to the Raspberry Pi’s question download process to make it more intuitive and stable during gameplay. This adjustment is necessary to improve user experience and ensure consistent communication between the game logic and the RPi. The added development and testing time are the main costs of this change, but we plan to mitigate them by distributing tasks efficiently and prioritizing integration early next week.

On the hardware side, we are adding cosmetic upgrades such as painting the vending machine for a more polished final look. Additionally, we are planning to replace the current copper coil used for dispensing candy. The existing coil is too flexible and fails to push out the product effectively. Replacing it with a sturdier material will improve dispensing reliability. While these changes involve some additional material costs and build time, we will manage them by sourcing affordable materials and coordinating team work sessions to stay on schedule.

3. Provide an updated schedule if changes have occurred. This is also the place to put some photos of your progress or to brag about a component you got working. (by vicky)

  • Post MVP tasks:
  1. Sound effects and music
  2. Shopping mechanism in candy selection page
  3. Customized questions narration & narration in challenge mode
  • Updated schedule
Tasks Due
Shopping mechanism in candy selection page SUN, 4/14
Question randomization (300 basic questions + customized questions) SUN, 4/14
Get rid of emoji / download new font SUN, 4/14
Add sound effects & kahoot-style music TUE, 4/15
Final presentation slides WED, 4/16
LED strips for internal lighting Day before demo
Machine panel painting  SUN, 4/14
UX new game flow for customized category: 

  • Play: Categories [special questions] -> …  -> candy selection
  • Download: [Make my own question] -> [QR code of website] [download question set] [Back] -> home
MON, 4/14
QR code and deploy website MON, 4/14

 

Now that you have some portions of your project built, and entering into the verification and validation phase of your project, provide a comprehensive update on what tests you have run or are planning to run.  (by vicky)

  • Tests
Already Run Planning to Run
Rpi touchscreen standard mode game flow (homescreen -> … -> candy dispensed finished -> back to homescreen) touch input Audio output of sound effects and background music between narrations.
Rpi touchscreen challenge mode game flow Remote synchronization of question base after website deployment
Dispense from candy selection, serial communication from rpi to arduino. Activate correct motor & update correct dispense status. Randomized question
Audio narration with python tts (did not proceed)
Audio narration with espeak-ng, speed 100-150, female voice type 2. 
Webpage question upload to google drive
Code base csv download  and append to .json

Git Repo