Team Status Report for 3/15

  • 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 wired connection between the RPi Pico UART (RX and TX) and GND wires to the Pogo pins. A problem that we are facing right now is that steady and sturdy connection that will allow the RPi Picos on each block to communicate with the RPi 5 via the multiplexer that indexes each grid position. Right now we are doing thorough testing on the soldered connections and we’ll also make sure that no picos were damaged from desolder the old male header pins that we had when we were replacing it with the longer female header pins. The contingency plan is to verify all of our hardware as of right now and if that still doesn’t work we will move to directly soldering the wires to the picos instead of having them connected via header pins.
    • On the website end, we set up the Docker container that would ideally allow for the website to run on the RPi without too much set up. The only risk for that the Docker container potentially does not work and the mitigation for that is just to install all the dependencies locally on the RPi 5. Currently we have the local installed dependencies and a working web app running on the RPi 5.
  • 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. There isn’t a change to the updated schedule even though we are slightly behind but we are catching up over this weekend and on Monday as well to help stay on track.
  • This is also the place to put some photos of your progress or to brag about a component you got working
    • Press here for photos
    • We finished laser cutting all 8 blocks and designed/CAD a 3D component holder to keep help secure the components in place.
    • We set up the circuitry for 1 full row: 4 blocks with corresponding 4 grid slots, button, and row category LCD.
    • Docker container was created which will simplify set up on RPi 5.

 

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!

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

This week I help set up the infrastructure for 6 blocks where I soldered the battery case to the adapters and added on wires for GND, TX, and RX for the LCD to pogo pin. We received the rest of the items so I was able able to cut pref boards and solder all the pogo pin pairs onto their respective boards. In addition, I was able to laser cut the LCD opening at the top of the block as well as the pogo pin and USB-C charging port at the bottom. I first experimented with card board and did it on one block after creating the cuts on ink scape software that is compatible with the rabbit laser cutters in tech spark. From that experience I was able to extrapolate the best settings for the acrylic cubes that we had. For now based on how long it took to manufacture just a row of blocks I feel that a PCB is not needed at the moment and so I am focusing my efforts on other things such as CAD for the grid and for the holder of the components inside the block. On the software side, we discussed handshaking signals and functions that would be used / called between game controller and embedded controller to ensure that we are all on the same page as we are developing.

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 my progress! There is an added need for a 3D printed holder of components in the blocks but that will be accounted for with the time that was originally allocated for the PCB constrution.

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

I hope to finish laser cutting the rest of the blocks this week, come up with a CAD for the holder of components inside each block, and I would establish a full working row with the submit button in conjunction.

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

    • This week I worked with Wen Hui and Alexis to hash out the interfaces and handshaking signals between the embedded controller, game controller, and the web app. I wrote out the requirements for these functions in detail in this file here.
    • I cut out ports into the battery holders so that the charging ports were accessible.
      • Battery holder USB-C charging port cut-outs. Made with box cutter, wire cutters, pliers, and metal file for sanding.
    • I helped Alexis make laser-cut files for the bottom and side of the blocks, using measurements from our physical components.
    • I finished integrating the Merriam-Webster API into the web app. I wrote several functions to help make an API call and then parse the request to extract the specific information I needed from the complicated API response. The function I wrote can be found in this file here.
    • Most of my time this week was spent on writing my portions of the design report, formatting it, and cleaning up the diagrams for 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 progress is mostly on schedule. I tried to set up the web app on the RPi this week, but ended up deciding to switch to packaging it all as a Docker and then just running that on the RPi instead so that I wouldn’t have to worry about environment dependencies. In terms of testing, I manually tested the web app game logic and hint retrieval latency/robustness through many games, but have yet to do it quantitatively according to our written out testing plan as I wanted to do this once the web app was successfully running on the RPi.

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

    • Next week, I hope to be able to host the web app on the RPi 5 through Docker. Once hosted on the RPi, I hope to start our testing plans for the game logic accuracy and hint retrieval latency. I also plan to help with the mass-fabrication of the blocks.

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.