Wen Hui’s Status Report for 4/26

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 worked on helping Nicole with the integration of the new webapp with the embedded controller, especially additional features like the 8 or 16 block options. There were also some modifications to the embedded controller code structure required, such as returning the grid positions that were missing / not ACKed so that the webapp can display to the user which block to adjust in order to ensure correct uploading.
  • Another feature I worked on this week was the autoscrolling of the row category LCD. Some of the category names are really long (eg.
    SINGULAR OF THINGS SEEN IN PAIRS) and exceed the width of the LCD which has 32 characters. I had to implement multiple screens of text on the LCDs so that it is able to cycle through all the words and display the full category name without overlapping. Since I have to run the autoscrolling for all the 4 LCDs and have the program running together with the actual main program, I implemented this using multithreading. I spawned a thread for each of the LCDs that were in charge of making sure the text on the LCDs were scrolling. The main thread will then update the message variable for each LCD depending on whether display_category is being called by the webapp. With all these changes, I made a class called lcd_controller that encompasses all these functions. This will allow the seamless integration of the embedded controller with the lcd on each row.
  • I also conducted testing on the font size for the LCD on the Picos. I tried loading words of lengths 1 to 25 (the maximum length of words in the database) and ensured that the word(s) showed without being truncated and were a reasonable font size to the user.

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 work on some final user testing next week, before focusing on deliverables like the video and report.

 

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

In the next week, I hope to work on getting a few more user testing done. I also plan to work on writing out the report in detail given the testing we have done. I will also work with my teammates to improve the aesthetic of our project and reflashing the Picos with a different display color that is more distinct to the user.

 

Team Status Report for 4/19

 

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?

Pogo pin defects

  • Some of the male pogo pins have slight manufacturing defects of or from soldering wires to the back of it. Some of the pins on the pogo pins are uneven and different height, hence even if the block is level with the grid, the pogo pins will not be well connected between the female pogo pins (on the block) and the male pogo pins (on the grid). This could be the reason why some of the blocks did not ACK back to the RPi during transmission of commands.
  • In terms of contingency plan, we have resoldered and swapped out the ones that are uneven on the grid with working ones. We also made sure to test every block with every position on the grid to make sure all possible combinations are working for pogo pins connections.

Sturdiness of the grid

  • The grid broke along the joints between two pieces during our testing process. We plan to reinforce it with wood glue again and potentially glue another piece of wood at the connection point between the two pieces of wood to ensure that the connection is secure.
  • Circuitry was also a possible point of failure. Since we have to use jumper wires to connect the LCD, buttons and male pogo pins to the RPi, the connectivity might not be the best and we encountered instances of the wires coming loose from the connection, causing malfunctioning hardware components. We have decided to solder the connection between two wires and tape them with electrical tape to reinforce it.

 

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 height of the grid was adjusted and there is more space for the Rpi and circuitry now. This is because the circuitry turned out to be more wire heavy than expected which doesn’t fit entirely under the lid of the grid. This is more of an aesthetic change so no major schedule changes is expected. We still plan to collect all the user testing data this week and have the lid ready by the final demo.

We also changed from a Flask app to a FastAPI app for the backend of the web app. This is because after constructing the final grid and seeing that there were still alignment issues with the pogo pins that caused issues with communications not being received, we decided we wanted to notify the user of specific problematic grid indices so that they can manually adjust the alignment of specific blocks. In order to expose this info to the user, the backend needs to initiate one-way communication with the frontend, which requires the use of something like web sockets. However, the asynchronous web socket frameworks available to Flask are incompatible with the RPi’s GPIO library due to monkey patching, so we changed the backend app to a FastAPI app instead, which supports python’s native asyncio web socket package through uvicorn, which is compatible RPi.GPIO. The cost of this change was time and effort in terms of code translating/rewriting, but we were able to get it done this week so there is no change in schedule resulting form this design implementation change.

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

  • Completed the production of grid and 16 blocks, together with soldered perf boards which have been tested to be working, combined with the new webapp. We also attached the pogo pins onto each 3d printed holder on the grid and glued them on. We also wired the buttons, LCD and pogo pins to the perf board and tested their functionalities individually. We have the ability to play the whole game without issues now! More photos can be found here.
  • Webapp has the added 1 away feature which tells users if their guess is one away from the correct guess.
  • Completed latency testing and webapp statistical analysis for hint retrieval on the entire dataset.
  • In the process of doing user study on ELLs and novice players this weekend.

 

 

Wen Hui’s Status Report for 4/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).

  • I also re-flashed all the Picos with the new code which includes error handling in cases where the received word does not include valid alphanumeric characters. It turns out that when an invalid string to be parsed is sent to the Pico, an exception is thrown and the Pico is unable to continue even if the right data is sent to this. Hence this requires us to turn on/off the Pico. With this modification, all the Picos can function with multiple repeat games without having to be turned off.
  • I verified the functionality of all the connections of each pogo pin on the grid and had to replace some of the jumper cables on the grid that were not producing electrical connections. One of the Picos also had a malfunctioning UART pin so we had to resolder that as well. This helps to ensure that any errors that could arise is due to the perf board itself instead of the grid.
  • I completed the soldering of the perf board PCB and integrated it with the 16 block test bed on Monday. There were a lot of issues encountered when soldering the perf board especially with weak connection for some of the pins, causing bad data to be transmitted or the blocks to not ACK all the time. I also encountered a strange error where block positions 0 and 2, and 1 and 3 will get uploaded at the same time. After repeated debugging, to figure out if it was the blocks, pogo pins or the perf board circuitry that was the issue, I found out that it was due to a malfunctioning GPIO pin in the RPi that was controlling the mux, causing there to be some lag when selecting the UART lines. After switching out the MUX select pins, I was able to implement successful uploading of words to all 16 blocks. (Refer to test video)
  • After Alexis laser cut the plywood for the grid, I helped with testing the electrical connections and debugging the circuitry to ensure that it all still worked with the actual grid instead of the test bed.
  • I also worked on the latency testing but modifying the embedded controller code to be able to specify the duration of latency delay to allow us to vary it for testing purposes.

 

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 work on getting all the quantitative results for latency testing over the weekend in time for the final presentation.

 

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

In the next week, I hope to implement some extensions and aesthetic improvements to the project. I wish to ensure that the colors of the LCD on the Picos are visible. I also hope to try out multithreading to allow multiple words to be uploaded to different blocks concurrently, speeding up the process of the uploading phase.

 

As you’ve designed, implemented and debugged your project, what new tools or new knowledge did you find it necessary to learn to be able to accomplish these tasks? What learning strategies did you use to acquire this new knowledge? We recognize that there are quite a few different methods (i.e. learning strategies) for gaining new knowledge — one doesn’t always need to take a class, or read a textbook to learn something new. Informal methods, such as watching an online video or reading a forum post are quite appropriate learning strategies for the acquisition of new knowledge.

I was working on the embedded controller portion of the code, including the Rpi and Pico. I had to find out how to control all the components via Python such as the Sparkfun LCD, detecting button press, UART communication with each block and the RGB Waveshare LCD.

I referred to online documentation about Sparkfun LCD for the LCD portion of the code. I also looked at Medium articles and watched online videos to figure out how to enable UART1 on the RPi. For the serial communication between the RPi and Pico, I looked into online forum posts for references on how to structure my code, potential suggestions for waiting for the serial transmissions and delays necessary to ensure that sufficient time was given for UART transmission. I also looked into online forum for error handling processes. I also searched up Arduino forum to figure out the button circuit to use for our submit buttons. For the button callback function, I looked into the Rpi HQ guide online for how to integrate the button into the RPi program without blocking the rest of the program flow.

I also had to debug the perf board after soldering it, hence I looked into the datasheet for the MUX to figure out which pins have to be connected to ensure the MUX is working well. I also looked into online forums to figure out possible ways that could prevent a block from ACK-ing, deriving the solutions of: poor connection between ground of Pico and UART and loose wires of TX/RX.

 

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.

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.

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.

Wen Hui’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).

  • I worked on enabling the other UARTs on the RPi5 by changing the configuration files /boot/firmware/config.txt. I also refactored the code to be generalizable such that in the future when we expand to more rows, we would be able to easily specify which UART to use. 
  • I also soldered the remaining pogo pins and Pico needed for the blocks in order to have sufficient resources for one complete row of testing.
  • After Alexis built the circuitry for 4 sets of pogo pins (pos_0 to pos_3) simulating one row in the grid, I worked on testing each of the Pico + LCD circuits to make sure they are functioning well. Each of the pogo pins on the grid can be accessed by indexing through the multiplexer. I managed to get two Picos with all the required functionalities working (receiving word from RPi, receiving query for word, changing color of LCD). I also tested the loading of one word to a Pico from one position (eg. pos_0) and reading the word from the Pico from another position (eg. pos_3). This verifies that the code we have written for the Rpi and Pico are correct.
  • One of the pogo pins on the Rpi did not seem to be functioning so I soldered a new set and now the grid circuitry has been verified to be completely functioning.
  • During the process of testing, I discovered some potential points of failures:
    • Some of the wires for the UART communication were coming loose during the testing process, causing the UART communication between the Pico and RPi to be unstable.
    • Some of the Picos were only able to receive from the RPi but were unable to send ACKs back. I tried checking the connectivity of the wires by making sure the TX/RX were connected correctly to the right pins. The soldering and wiring also seemed well-connected. I suspect that there might be issues with how the female header pins have been soldered onto the Pico which I will test in more detail.
    • There is also latency in setting the LCD color and word, hence I refactored the code such that we only update the LCD when we receive a word or a color from the RPi instead of setting it every iteration of the while loop so as to reduce the UART read latency.
    • There is also latency in the UART communication. Some Picos are able to respond within 0.1s but some Picos require a longer delay time. As such, we might have to experiment with different delay timings in between UART retries to ensure it works for all blocks in the same manner.

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 slightly behind because we are supposed to have built the 4 block prototype to completion by Sunday but we are having issues with getting all the Picos working. I would try to find 2 more Picos out of the remaining Picos we put together that are working so that we have one complete row of blocks for testing purposes.

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

  • In the next week, I hope to finish building the 4 blocks entirely by early next week. I hope to then more on to end-to-end testing by integrating with the webapp code which Nicole has ported over to the Rpi. I will have to integrate the embedded controller code into the webapp codebase.

Team Status Report for 3/8

A was written by Wen Hui, B was written by Alexis and C was written by Nicole.

Part A: … with consideration of global factors. Global factors are world-wide contexts and factors, rather than only local ones. They do not necessarily represent geographic concerns. Global factors do not need to concern every single person in the entire world. Rather, these factors affect people outside of Pittsburgh, or those who are not in an academic environment, or those who are not technologically savvy, etc.

Connexus has a virtual companion that provides hints to the user during gameplay. This simplifies the process of searching through the internet for American culture references and word definitions themselves. It helps to bridge the gap in this digital game of Connections for users who might not be technologically savvy or well versed with the internet enough to search for hints on their own. Our game is built such that the user can just interact with the physical game without having to open their own digital devices at all, making it inclusive to individuals of different technological skill levels. Additionally, Connexus helps to make Connections more accessible to everyone, even for people who might have low attention spans when interacting with digital devices or those who are more tactile learners. Our game makes Connections a game that stimulates the player’s sense of touch instead of just sense of sight, allowing them to be more engaged and focused in the game.

 

Part B: … with consideration of cultural factors. Cultural factors are encompass the set of beliefs, moral values, traditions, language, and laws (or rules of behavior) held in common by a nation, a community, or other defined group of people.

Connexus was created to address the frustrations of new and non-native players by offering an interactive, educational, and culturally adaptable gameplay experience that NYT Connections currently is lacking. This game is designed for more inclusivity across cultures by bridging language gaps while still maintaining the challenge and fun of the original game especially for English Language Learners (ELLs). It addresses the need for accessibility and engagement by helping players who would struggle with ambiguities in word meanings due to multiple word definitions, cultural references or elitist knowledge assumptions as the creator of the game mentions. This is accomplished with the virtual companion that will retrieve hints from an API and also it supports customizable puzzles that allows for players to come up with their own puzzles either for educational use or for fun. By allowing for a personal twist, you can create different cultural contexts as well which would make the game more inclusive. Also, Connexus provides physical and movable blocks that would shift from a purely digital interface to a more engaging gameplay that would be beneficial for different learning styles.

 

Part C: … with consideration of environmental factors. Environmental factors are concerned with the environment as it relates to living organisms and natural resources.

Connexus doesn’t have too many significant environmental considerations other than the power consumption and physical materials. Each block has an on-board microcontroller and LCD display that needs to be powered by a battery. In order to reduce the amount of waste that our project generates in the form of dead batteries (which could be harmful to the environment if not disposed of correctly), we opted to use rechargeable batteries with an on/off switch. This way, the same batteries could be used over and over again until they run out of recharge cycles, and energy can be conserved when not in use by switching the batteries off. 

Additionally, the RPi that is hosting the web app will be consuming power as it makes API calls to the dictionary API and coordinates the hardware and software components of our system. These processes consume power, so we want to minimize the communication that the web app has to make with external APIs and the hardware subsystems (i.e. blocks). Writing efficient code based on interrupts and requests as opposed to constantly polling for responses is one way we plan to minimize communication. Furthermore, we “prefetch” all the dictionary API calls/responses at the start of the game and then access these locally in the program, as opposed to making repeated API calls every time a user navigates to a word’s “hint” page, so as to minimize our interaction with the external API. All these measures are in an effort to not waste unnecessary power.

 

Weekly Questions

• 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 primary risk we anticipate would be the multi block integration with the grid. We have only tested our code logic with one block’s circuit since the rest of our components had not yet arrived. If there are issues with using the multiplexer to interface with multiple UART lines, we will have to explore alternatives. The risk can be managed by modifying the program to utilize other communication protocols like I2C instead. If the latency is too high, the complexity of the UART communication algorithm can be simplified.

Another risk is the secure placement of parts within the block. In each block, there will be the Pico, LCD, battery components and pogo pins. It is important to secure the components to maintain the electrical connection. Initially, we soldered wires directly from the pogo pin wires to the LCD breakout board, but the wires would break easily. Our solution was to solder female pins onto the other side of the Pico breakout board to allow us to plug in wires for the pogo pins. We aim to test the completed blocks with this layout to see if the connection remains secure. Otherwise, our mitigation would be to make 3D printed holders for the components within the blocks to hold them in place.

 

• 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?

For the design, we were initially going to use wood to make the grid. However, we looked into procuring wood but realized that it was too expensive for our budget. We decided to switch to using cardboard instead since it was easier to build and cheaper to procure, while still maintaining the rigidity we need for the grid. The cost for our project will be reduced with this change.

 

• Provide an updated schedule if changes have occurred.

For our schedule, we are on track and there has not been major changes. We are not going to build the actual grid yet, but instead focus on prototyping a platform to place the grid pogo pins on for testing. The plan now is to focus on having fully built blocks to test the end to end functionality of multiple blocks with the grid circuit.

 

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

In the past week, we have fully built one block including laser cutting all the cutouts for the pogo pins and charging port, and placing all the soldered components into the block. We have also soldered all the components to prepare them for the remaining blocks, only being left with the laser cutting of the blocks before they can be fully tested.

On the software side, we have fleshed out the design for the Embedded Controller, Game Controller and Web App functions and how they interface with one another. We have also written out all the code functions we need for the RPi and Pico and tested a single Pico with the RPi.

We also have a functioning webapp with Merriam Webster API integration and was able to simulate submission and loading of words from the webapp side. There is also exposed API endpoints for the embedded controller to trigger when the submit button is pressed.

Everything is ready for a primary end-to-end integration and testing next week!

Wen Hui’s Status Report for 3/8

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 finished the designing and coding of the embedded controller and UART controller (helper class within embedded controller to handle UART communication by abstracting away the processing of retrying + delays) on the RPi. I wrote the functions send_query, send_word and send_color within the UART controller that handles sending of the respective commands to the Pico. I wrote the functions on the embedded controller which interfaces with the game controller (the game controller will be written by Nicole along with the web application). I thought about and wrote the embedded controller submission logic by integrating GPIO with a callback function that sends a POST request to an endpoint that is specified by the web application. I tested the multiplexers which were newly acquired and integrated it to embedded controller logic for selecting the grid position to read/write from. 
  • All the code for the embedded controller to handle game play and user interaction is complete. I also finished testing all the functions within the Rpi within the limited capacity of a block and a grid circuit built on a breadboard.
  • I also helped with the replication of the other 7 blocks by soldering header pins onto components such as pogo pins and Picos.
  • I started looking into the design for the grid system and asked Techspark about wood materials for laser cutting. We found that purchasing wood is too expensive so we are switching to using cardboard instead.

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 with an upcoming task of testing 2 blocks once they are fully built with an independent power source within the block.
  • We have decided that I will focus on prototyping the code for a single block first before working on the grid design. I intend to test the grid circuit on the breadboard for now while I ensure that all the blocks we make are functioning.

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

  • I hope to start testing the integration of the embedded controller with the game controller (especially for submit button). I will test if the POST request is being sent from the embedded controller to the game controller.
  • I also hope to test out a fully built block and whether it interacts well with the grid breadboard circuit.