Alexis’s Status Report for 3/29

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 integration test, error handling on the pico, font size changes, and on spraying the blocks. I was integration testing the website and grid with Nicole and we discovered an edge case where the web app seemed to have errored out while attempting to retrieve a definition for a word that does not exist in the Merriam Webster API. This sparked a move towards doing error handling across the board as we found some additional bugs during our Wednesday meeting with Professor Mukherjee and our TA Ankit. We discovered that there was an issue while the RPi 5 was uploading the words to the blocks and if any of the blocks are moved out of their position slightly during that transmission, there seems to be an bug where the buffer seems to append on the word retrieval during the upload and ACK phase which causes part of our command that we received from the RPi 5 to be displayed on the LCD and appended to the current word itself. I worked on doing error handling in regards to making the queries have a more strict format and dynamically removing any bad data we receive during a transmission from Rpi 5. This created a more robust system for us and handles potential edge cases where we receive bad data and shouldn’t be displaying it on the LCD. In addition, I added dynamic font size changes where words that have a length greater than 9 will decrease a font size down and then greater than 14 will decrease another font size down. This handles another edge case for lengthy words. In regards to the blocks I worked on spraying those with a frosted coat to cover the circuitry and they look great.

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

I am currently slightly behind schedule as I need to assemble and cut the grid but we were discussing the best routes to help guide the alignment of the blocks to the pogo pins with the additional magnets that we purchased. I did purchase the wood that we need for the grid this week but I need to make the dxf files for laser cutting and assembling. I will be working on this tomorrow (Sunday) and will laser cut by Monday.

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

I will have the grid assembled by next week. We also are expanding to 16 blocks and so I will be working on manufacturing those: soldering battery holders to adapters, soldering pogo pins onto perf boards + soldering on the wires for those, soldering the double sided male/female header pins, laser cutting the blocks, and spraying them.

Wen Hui’s Status Report for 3/29

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).

  • I was debugging the integration of the webapp with the embedded controller.
    • I added the code to successfully send color commands to all the Picos so we are able to play a full game with the uploading, submission and answer checking now!
  • I also helped with debugging the hardware issues related to the embedded controller-Pico connection.
    • I discovered a lot of issues such as some of the LCDs not working because of the overlapping pins with the LCD SPI. We just decided to change the pins to another set of UART0 pins.
    • During our testing on Wed, we also found a weird bug where the “@” and other command symbols will be appended to the LCD on the block because it wasn’t being parsed correctly. I added some robust text parsing and error checking to make sure the RPi and Pico only sends, receives and displays words that are alphabets and not part of the command.
    • I also added some code for button deboucing to prevent multiple submissions being detected when the button is pressed once. This ensures the correct number of mistake counts being tracked by the webapp.

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

  • As of today, my schedule is on track since we have completed MVP and it is working robustly. We will get started on building the grid now.

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

  • I will work on doing some tests on the latency next week since we have completed our MVP now.
  • I will also help with preparing the parts needed for 16 block expansion (soldering more picos etc).
  • I will also help with the grid construction after Alexis has a CAD design of the grid and we confirm how we are planning to construct it.

Team Status Report for 3/29

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?

  • The most significant risk that could jeopardize the success of the project is the physical hardware design. The pogo pin connections are sometimes not well aligned because the pogo pins are not level with the grid/block. This is temporarily mitigated by placing cardboard support on the grid beside the pogo pin to provide more support for a block to be placed. A more definite mitigation strategy will be to build a proper grid using wood which we are in the process of doing. The wooden grid structure will hold the pogo pins in place and we have purchased magnets as well to align the blocks to the grid when they are being placed.
  • Another risk that could jeopardize the success of the project is the circuitry design. The batteries on the block sometimes turn off after repeated use (more than 1 game) but the DMM detects it to still be 9V. We suspect there might be some inaccuraries in how the battery voltage is being shown and the actual functioning of the battery. This only happens when the battery is running low. To mitigate this, we plan to charge all the batteries to their full capacity before any extended testing instead of relying on the indicator to tell us how much power the battery has left.

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? Provide an updated schedule if changes have occurred.

  • For the grid, we decided to use plywood since it is more sturdy and can better withstand the repeated placement of blocks onto it and the submission button being pressed. We decided to purchase small magnets to be placed on the grid and the blocks for additional alignment as the magnets on the pogo pins might not be strong enough. This was a small amount of cost and did not make a big difference to the budget.

This is also the place to put some photos of your progress or to brag about a component you got working

  • This week we reached out MVP! Here are some photos and videos showing the game flow.
  • We did a lot of testing and debugging this week to make sure the integration between the webapp and the embedded controller was robust.
  • We found out that the pogo pins were sometimes unreliable (as mentioned before) which is due to the levelling issue.
  • We also found an edge case where the webapp would crash when the there is a word in the puzzle that is not present in the dictionary. Hence, we added an error checking process.
  • We also found that the communication between the Pico and the embedded controller was not very stable against error handling so we added some code for more robust text parsing and error handling. 
  • We also managed to get all the LCDs on the block to change color when a correct submission is being made.
  • We also debug the button bouncing issue so the number of mistakes the webapp records is accurate now.

Nicole’s Status Report for 3/29

  • 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 successfully implemented my workaround for the SocketIO bug. My new solution was to just use the return status of the POST request from the frontend to trigger the page transition. This logic is cleaner, more simple, and less prone to failure.
    • I also helped to re-fabricate the blocks for testing after Alexis cut holes for the on/off switch.
    • Additionally, I have been testing the entire game flow E2E with the hardware and software (demo), and noting down bugs/errors that I find, so that we can continue with fine-tuning our integration of the hardware and software components.
    • I also fixed an edge case with the dictionary where if a word doesn’t appear in the dictionary, it causes a network error during puzzle uploading to the blocks.
  • 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 since we are pretty much done with our MVP (minus the grid construction). Now I just have to finish up the testing to see if we meet our design and user requirement specs.
  • What deliverables do you hope to complete in the next week?
    • Next week, I hope to start fabricating the next 8 blocks that we will need for our reach goal of 16 blocks. I’ll be soldering all the necessary parts together to make the internal circuit for the blocks. I will also try to finish up my testing on our MVP, and hopefully be able to help with grid design as well.

Wen Hui’s Status Report for 3/22

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).

  • Last week when testing we realized that some of the Picos were not functioning so on Monday I did a thorough testing of all the Pico and power pins combination to identify the Picos that are not working. I found that for 4 of the Picos the UART0 was not working (the TX/RX did not receive signal even when directly connected), so I came up with a backup plan of soldering female header pins to UART1 and changing the code to utilize UART1 for communication instead. Afterwards, I realized towards the end of the week during E2E testing that the UART1 pins I chose conflicted with the SPI pins used for the block LCD. Alexis and I tried to explore using alternative SPI pins but it took up too much time and was not successful. We ended up switching back to another set of UART0 and got all 8 blocks fully functioning. I tested them individually with the embedded controller test code and the blocks were able to load words, respond to query and change color.
  • Alexis built the placeholder positions for each of the male pogo pins on the plywood. After she built the prototype grid, I worked on testing the grid and adjusted some of the wiring and circuitry according to the embedded controller code. I also tested all the grid pogo pins to make sure they were working.
  • I also worked on editing the Pico code for the LCD in terms of receiving color commands. I also adjusted the display font size based on the word length which is something we realized after we started testing that some words were too long to fit on the screen.
  • I also started working on the embedded controller integration with the webapp which has already been loaded onto the RPi. I installed the necessary libraries and tested the POST request being sent from the embedded controller to the webapp backend when the button is pressed. I also configured two buttons using two different GPIO pins, and two category row LCDs for the grid by changing the I2C address of one of them. This ensures we have an entire hardware setup we need for our MVP fully functioning.

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

  • As of today, my schedule is on track since we have completed the prototyping of 4 blocks and moved on to 8 blocks very quickly. I have also completed all embedded controller code and put together all the hardware electrical components necessary for our MVP.

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

  • I hope to work on making sure the hardware is reliable since the blocks are not well connected all the time. However we have checked that all the hardware is working and the code is valid as well. I hope to ensure that there is more robustness in our product for gameplay purposes.

Nicole’s Status Report for 3/22

  • 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 prepared wires to solder onto the buttons and soldered the remaining power adaptors onto the remaining battery holders. I also helped test each of the pogo pins after soldering to make sure they had solid connections (doing a simple power test using a power source and a DMM to measure voltage). Additionally, I helped to build the circuitry for the grid and organize the connections from the RPi to the rest of the components.
    • I also helped Wen Hui in integrating the embedded controller with the web app, and was able to get uploading words to the blocks and button submission (link) for both rows to work, all through the web app.
    • After trying multiple methods to try and fix the SocketIO issue between the web app backend and frontend, I still was not able to resolve the issue. However, I came up with a new contingency plan or solution wherein I just make a button on the frontend appear after the post request to the backend returns successfully, so the user can manually transition to the gameplay page. This works because the problem right now is that the backend function returns successfully, so we are ready to start the new game, but the frontend never receives the socket signals that make it transition to the next screen, so the user is stuck on the loading screen unless they know the url of the next page and manually go there themselves. By adding a button, the user can start gameplay manually when the set stage is successfully completed.
  • 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 a bit behind where I’d like to be due to the bug I was unable to fix. However, now that I have a new workaround idea that should be fairly straightforward to implement, I should be able to get back on track with integration testing and web app quality testing on the RPi. 
  • What deliverables do you hope to complete in the next week?
    • Next week, I hope to implement my new workaround for the web app SocketIO bug that I was unable to solve. I also plan to continue integration testing to make sure that the hardware can reliably work with the web app. Additionally, I want to add some instrumentation to the code so that we can see how much time each stage is taking, and assess whether we are meeting our design and user requirements.

 

 

 

 

 

Team Status Report for 3/22

  • 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?
    • The most significant risk that could jeopardize the success of the project is the reliability of the communication between the RPi Picos and the central RPi. A problem we see right now is that in the uploading words stage when setting up a new game, sometimes a block or multiple blocks does not ACK back to the RPi and instead just echos the word that was sent to it, which prevents us from even playing the game at all since that block(s) is out of commission. We already tested the pogo pin connections to make sure that these are fine, and we also tested each block individually by wiring it directly to the RPi, all of which seemed to work. However, there is a chance that some internal connections inside the blocks have degraded with all our manhandling during testing, so we plan to double check the pogo pin connections and direct wiring tests for the problematic blocks. If the hardware is the issue, we will re-solder the pogo pins directly to the Picos with wires, instead of using female header pins. If the issue is not a hardware issue, then we will examine the code that manages the receiving of ACKs and restructure it to be able to receive messages more reliably.  
    • On the website end, we are facing a problem where SocketIO signals from the backend are not being received properly by the frontend, so we end up with indeterministic behavior where sometimes we automatically transition from the loading page to the gameplay page, but sometimes get stuck on uploading even though everything is ready to begin gameplay. We are currently debugging to see if this is an implementation issue or a CORS issue, but our contingency plan is to implement a button on the frontend that appears once the post request to the backend has returned successfully. That way, the user can transition manually to the next page in the case that the socket signals don’t work out.
  • 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? Provide an updated schedule if changes have occurred.
    • There were no changes made to the existing design of the system, except that we used a different set of UART0 pins (that work) on the Picos that weren’t working with the initial UART0 pins we chose (perhaps due to bad soldering of the female header pins). This change does not affect communication between the RPi and the Picos though. 
    • Our schedule remains the same. We have completed our MVP (although it’s a little ugly), and now we will move on to testing for reliability in the various subsystems and their interactions.
  • This is also the place to put some photos of your progress or to brag about a component you got working
    • Click here for photos and videos
    • We finished prototyping a basic grid and completed all the circuitry for it.
    • We were able to upload words to all 8 blocks in 1 function call, using our “upload_words” embedded controller function.
    • We were able to test the button submission on the grid for both rows, and found that it works successfully with the web app. We just have to modify the embedded controller logic a bit to take care of button debouncing, so that the web app doesn’t get triggered multiple times for 1 button press.
    • We were able to get both row LCDs working on the grid.

Alexis’s Status Report for 3/22

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 getting the upload 4 words to the row working and creating a test bed for a grid set up. While I was trying to get a row working I felt that our testing setup was inefficient and a bit messy so I decided to layout the initial grid. I worked on creating all the slots for the blocks and wiring everything up so that we can test code more easily and also show our proof of concept. Also I finished soldering the rest of the wires for another 5 sets of male (grid) pogo pins as well as 3 more female (block) pogo header pins. With this set up, it helped us to identify and create a testing plan as well so that we can figure out what components may not be working as intended. We found a few pogo pins that needed to be resoldered as well as some picos’ UART lines were broken and we had to switch to a different set. We ended up using UART0 on pins 16 and 17 and I worked on soldering on the female header pins and wiring those to female pogo pins, which allowed us to get a 2nd row of blocks working. I tested our embedded controller and ensured that we were able to get all 8 blocks working with our upload_words function. I also worked on filling out our testing sheet and testing components individually via continuity test to isolate any parts that need to be re-done. I originally had wanted to work on laser cutting and the 3D component holder this week but instead switched gears to the grid set up as I felt that was more of a priority for us to be able to reach our goals.

Please click below to see videos of the set up.
Pictures / Videos of Progress

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

I am currently on schedule and a little bit ahead as I was able to get to the building of a prototype grid that is a good test bed to test/finish out the software side of our project.

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

I will print out the 3D component holder, laser cut the on/off switches, and work on thoroughly testing our code end to end (E2E).

Alexis’s Status Report for 3/15

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 laser cutting all 8 blocks for the ports that were needed. I decided not to do the on/off switch for the battery cut out yet because I wanted to design the CAD for the component holder first before deciding on where it would be as I wasn’t sure of the battery would be elevated or not. I learned and experimented with the Epilog laser cutters in Techspark as these had visual layovers to ensure the correct cutting position which would be more accurate than the rabbit laser cutters. I also had to try different power settings in order to find the right one for our thickness as well as what gave us the cleanest cuts. I found that for laser cutting the LCD on the lid 6% speed, 10% power, 70% frequency, and 2 repetitions gave me the best results. For the bottom ports (pogo and micro-C) a speed of 6%, 5% power, 70% frequency and 4 repetitions.

Aside from that I help to set up the circuitry for the remaining 4 slots and am working on integrating and testing. I am also investigating the connections between pico, LCD, UART, and GND since Wen Hui found some loose wires that tampered with the communication. I am working towards getting that full row set up.
CAD + Grid Pictures

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

I am currently slightly behind schedule as we needed to get a full row working this week. I am working over the weekend to catch up so that we are back on track and will hopefully have the full row and submit button working by Sunday.

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

I will print out the 3D component holder, laser cut the on/off switches, finish a row that is fully implemented, and start working on the next row.

Nicole’s Status Report for 3/15

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 trying to Dockerize the web app so that I could easily run it on the RPi. I was able to get the docker to run on my personal laptop, but dockerizing the web app seemed to make a specific non-deterministic bug become more apparent related to socket signals being sent and received between the frontend and backend. I was able to get the web app up and running locally on the RPi by installing all the packages and libraries directly onto the RPi, but I hope to get the docker working so that the environment can be more stable. I made some frontend changes to the web app on the RPi to adapt to the RPi’s screen size in the browser.
  • I identified a non-deterministic bug relating to socket signals being sent between the frontend and backend and am currently trying to diagnose the cause of this fault, as well as possible solutions, which may require re-implementing the communication between the frontend and backend.

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 a bit behind where I’d like to be due to the bug I found. I had to stop my testing due to this bug. I am currently in the middle of debugging and am trying a few different approaches to make the communication between the frontend and backend more reliable. I will try to fix this bug as soon as possible so that I can continue testing and get back on schedule. However, I should still be able to help Alexis and Wen Hui with integrating the web app with the embedded controller since this specific bug is not necessarily a blocker.

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

  • Next week, I hope to fix the bug I found and then resume the testing and validation of the web app on the RPi. I suspect that once this bug is fixed, the docker will also work. In that case, if time permits, I will work on getting the docker to run on the RPi.