Team Status Report for 4/12

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 only significant risk that would jeopardize the success of the project is the connection of the 2nd set of blocks that we created. It seems to intermittently work where sometimes it is really smooth and doesn’t cause problems and at other times it is very difficult for one of the blocks to get an ACK. The plan for mitigation is to do continuous testing and try to isolate the problem first. The hypothesis currently is that it is due to the leveling of the female pogo pins that are on the grid and that once the grid is built, we will have a more stable and flat connection between the block and grid which will help with uploading the words. Another mitigation is to modify our algorithm slightly by potentially bypassing the block that appears to be having a problem and maintain a list of those blocks. It will continue uploading the rest of the blocks and will re-try the blocks that weren’t able to receive the word. If it still fails to do so, we may need user help with resetting the block by displaying on the webapp to tell the user to check the connection of a certain block position on the grid to reposition the block or simply turn it off/on. The other plan is to exponentially increase the delay for an ACK on several subsequent re-tries. This would be the worst case scenario if we are not able to fix the problem.

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.
The changes made to the existing design of the system is the need for a 3D printed part to hold the pogo pin on the grid. We wanted to ensure a very stable connection and for a flush look which is why we wanted to make a holder for the pogo pins. At techspark, the 3D printers are $0.48 per gram and each holder is 1 gram. So $0.48 x 16 = $7.68 which I will round to $8 in case I have to do 1 trial print.

This is also the place to put some photos of your progress or to brag about a component you got working
Since the last update, we were able to get all 16 blocks fabricated to completion which meant laser cutting the blocks, soldering the adapter and batteries, cutting out holes in the battery holder for the charging cable, and we decided on using hot glue to secure down the components in replace of tape which was a bit flimsy. Also we accidentally ordered a surface mount pogo pins instead of the through holes and so there was additional soldering where a total of 6 header pins were added to the surface mounts to provide stability and an electrical connection to jumpers. We had to do this for a set of 8 blocks. We also worked on creating another testbed for the 16 blocks as a proof of concept before we build a grid that is for 16 blocks instead of 8. We noticed that there was a lot of wiring on some mini-breadboards that we had and we felt that it felt bulky and decided to create a perf board to minimize the circuitry instead. As it was kind of late in the semester ordering a PCB may not come in time so perfboard was the best option, we may end up being able to move everything to a PCB towards the end if there is enough time. Also corresponding modifications were made to support all 16 blocks as well as a 1 word away feature on the webapp. Also, the grid CAD was created to plan the cutting of the wood that we purchased, with 16 blocks working we were finally able to create a grid to size and also worked on a 3D printed part pogo pin holder to ensure that everything fits. In addition we tested E2E with the 16 blocks and did some preliminary testing by changing the delay to receive an ACK which allowed us to reduce our total uploading latency from 22 seconds to only 3.2 seconds.
Link to Photos

Additional: Comprehensive update on what tests you have run or are planning to run. In particular how will you analyze anticipated measured results to verify your contribution to the project meets the engineering design requirements or the use case requirements?
Next week is reserved for testing and so we worked on creating a testing plan. So far we have been playing around with the delay values for the uploading_words algorithm and we were able to reduce our upload time. The verification tests that we plan on performing next week is game logic accuracy, weight and size of all 16 blocks, battery life – endurance trials, UART send and receive latency, hint retrieval latency and ability to retrieve all the hints through the Merriam Webster API. For the game logic accuracy, we will take 10 known puzzles and ensure that each will have a 100% correct answer checking when a submission takes place. We will measure and weigh all 16 blocks with a caliber and scale to ensure that it meets the requirement of <4”x4”x4” and <400g. For battery life, there will be 5 endurance trails with the block displays turned on to ensure that the average battery life can last at least 15 minutes for game play. We have currently been simultaneously testing this while we test our actual implementation of our code and the blocks last very long with like a week of gameplay each session being anywhere between 2 – 4 hours. For the UART tests, we will have 10 known words sent and read from each of the picos and ensure that the pico receives and displays the correct word as well as have the upload latency be <400 ms. The last test is for the virtual companion by loading 20 puzzles and looking at the hint retrieval latency as well as accuracy of Merriam Webster API to have that word in the API. We want a 95% retrieval of hints and an average of 3.2 seconds per puzzle. As far as validation testing, we have been performing these such as playing several games subsequently and trying different edge cases to ensure that those are handled properly.
Link to plan

There are a few other tests that we have to look at tradeoffs such as with accuracy and speed as well as a comparison of 8 and 16 blocks. For uploading words we will be varying the delay and recording the latency as a result of that delay value. We will also play around with UART baud rate as well to look at the latency.
We also worked on creating a survey (google form) for user studies so that we have it set up for next week and we can just test with people. We will be recruiting 10 novice NYT Connections players and 10 ESLs to play the game and provide their feed back through the google form. We will have them play a NYT Connections puzzle first through the original mode (online) and then we will have them play Connexus and gather their input / feedback. We would ideally like to see that Connexus outscores NYT Connections by 1 point in each of the main categories that we have: ease of Use, game completion rate, level of enjoyment, and frustration toward game.

Wen Hui’s Status Report for 4/12

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 adapting the current code for the embedded controller by integrating another UART line for the next 8 grid positions. Initially I changed the UART controller class to be able to handle the internal switching of the position numbers (8-15) and (0-7) but it wasn’t able to work with the embedded controller. I ended up just creating two instances of the UART controller class and was able to transmit to all 16 positions using this new code design.
  • I also worked on the circuitry for the test bed to expand it to 16 blocks. I used a new breadboard and added two multiplexers, expanded the I2C lines and added two button circuit (with GPIO pins). This circuit is connected to the original circuit.
  • With the new circuitry for testing, I tested the code for the 16 blocks full game and it worked! However, the wire connections were not very reliable so we are working on building the real grid now using plywood.
  • Also, I worked on soldering all the connections that I designed on the breadboard onto an actual perf board for more secure connection and easier testing moving forward. We were deciding between options like using copper board or creating a PCB but we decided that the wait time for those options would be too long. Using a perf board is more secure that a breadboard as the wires would not be coming off as easily while allowing us to have a fast and easy way to create it.

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

  • My schedule is on track. I am currently working with the rest of my team to get the final version of the test bed working. In the meantime, we are also making plans for the testing and verification stage of our project.

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

  • Next week, I hope to work on testing to make sure everything is working properly. I have done some preliminary testing to make sure that the sub-components of the embedded side of things are working, but I plan to do more thorough testing for the latency of each step of the game (uploading, submission etc), tuning the parameters to find the balance between accuracy and efficiency.

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. 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? Verification is usually related to your own subsystem and is likely to be discussed in your individual reports.

I worked on the embedded components of the project. To verify the functionality, I will first test all the connections between the pins/header pins I soldered to ensure there is the proper required connection and the power and ground are not shorted. Following that, I will run a basic testing program to make sure that data transmission between the blocks and the grids are working as expected for each phase (upload words, querying words and displaying correctness). This ensures that the new perf board that I soldered for the two sets of 8 rows works as the breadboard version did. I have already done the basic testing but will work on the end to end testing next week.

Next, I will run a latency test by measuring the time taken from when the upload_words function is called, until all the blocks have completed the uploading of the words (taking into account the 3-try repeat for each block). I will adjust the delay time between subsequent retries from the current implemention of 0.5 seconds to as low as possible until the accuracy is no longer 100% to find the trade-off between accuracy and efficiency. I will also measure the latency for the submission process. I will take the time starting from the detection of a button press (using the callback function) till the display_category function is called and all the colors of the blocks in one row are updated. This will be the submission latency. I will also utilize a similar adjustment process to find a relationship between accuracy and efficiency trade-off.

I will also work on testing the battery life duration which we have done informally previously. We kept using the blocks regularly without charging them and found that they were able to last for about a week before they ran out of charge. This met our requirement of >15 minutes which is the duration required for one game of Connections.

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