This week was dedicated toward getting our software and hardware components working together for a minimum viable product. After testing with the Raspberry Pi, I added to my code so that the Sudoku board would take inputs from the numpad. We were still having trouble getting the capacitive touch sensor to work consistently, so I could not test my code properly to get it to communicate with the Raspberry Pi and Pygame. We plan on meeting tomorrow before our demo day to work on this again and be able to select cells using the touch sensor instead of a mouse. Otherwise, we have put together the rest of our system and can begin final testing for our demo.
Moises Status Report 3/29
This week, I focused on building the 9×9 grid, which consists of a 9-inch by 9-inch piece of wood layered with copper foil tape and cardstock. I was able to connect both MPR121 and get them to read values accurately when separated. However, I didn’t initially account for the warping of the cardstock, which resulted in a non-flush integration of the materials. This caused inconsistent sensitivity and readings on the lower layer.
To address this for the interim demo, I decided to keep both grids as separate entities. In response to the warping issue, I also designed a potential enclosure to house the components and ordered acrylic sheets, as acrylic is more resistant to warping than wood. Additionally, I am considering 3D printing clamps to better secure and flatten the layered materials.
With regards to code, I modularized it a little bit more and stored the rows and cols being read as variables that can be used for other parts of the code. I also made it so although I am using interrupts, in order to not oversaturate the number of inputs, it checks this interrupt every couple of seconds (adjustable) leading to a lot cleaner results.
Michael Status Report 03/29
This week was a week before demo, so I put my focus into completing and making sure that the software I was in charge of was ready for demo week. Quite fortunately, significant progress was made in finalizing the interactive Sudoku program.
The primary development tasks included implementing the core functionality of the game using Pygame and integrating it with a Raspberry Pi for the final project demonstration. Additionally, the program was tested for visual clarity when projected onto a surface using a stand. The game now features a complete initialization process where a new Sudoku puzzle is generated using the py-sudoku library. Users can select different difficulty levels, which are adjustable to suit their preferences. The initial state of the puzzle is stored, ensuring that pre-filled cells remain unaltered during gameplay. User interaction is fully implemented, allowing players to select cells with a mouse click and input numbers using the numeric keys (1-9).
Players can clear entries using the backspace or delete keys. Visual feedback has been incorporated, with selected cells highlighted for easy identification. Errors are detected using custom logic, and invalid cells are highlighted with a distinct color to provide immediate feedback. Additional functionality includes game management options. Users can reset the puzzle to its initial state, generate a new puzzle with a different difficulty level, and even use the built-in solver from py-sudoku to automatically complete the puzzle. A helpful hint feature is also available, providing the correct number for a selected empty cell. Pre-filled numbers are displayed in black, while user-input numbers appear in gray. A winning message is displayed when the puzzle is successfully completed, and the current difficulty level is shown at the bottom of the screen.
On Thursday, the team conducted a successful test to ensure the Pygame program projected correctly onto the wall. The display’s visibility and alignment were adjusted using a stand, ensuring it was clear and properly positioned for the final demonstration. While the capacitive grid touch sensor requires further adjustments, most of the software components are nearing completion and are ready for the demo. Our team also aims to meet in Sunday in order to finalize all moving parts and make sure they are ready for demo, as well as deciding how we will verbally present our project for the demo.
Team Status Report 03/22
This week, the team attended an ethics lecture and participated in red teaming with other groups. Through these discussions, we explored potential risks associated with our Sudoku helper system, particularly the possibility of users becoming overly reliant on automated solving, which could reduce problem-solving engagement within the Sudoku community.
In terms of hardware, we made progress on improving the accuracy and reliability of the capacitive touch grid. The initial interference issues were because of the use of packing tape as the dielectric material. After testing alternatives, cardstock was found to be the most reliable solution. Using the two MPR121 ICs, a 3×3 functional grid was achieved. The next step will be scaling up to a 9×9 grid and developing methods for processing input data from the MPR121 ICs to enable precise point selection.
On the software side, the team made progress in both Sudoku logic and interface functionality. Using Pygame, improvements were made to the grid system, input methods, and visual feedback, including cell highlighting and keyboard controls. In exploring Sudoku-solving libraries, we tested the py-sudoku package. This will allow dynamic puzzle generation and solving without relying on a static set of boards, reducing repetition for users. Integration of this solver with existing projection code is planned for next week.
Moises Status Report 3/22
I’ve been focusing on improving the accuracy and reliability of the capacitive touch grid. I identified that the issue was likely caused by the dielectric material I was using—packing tape—which was too thin and didn’t fully separate the rows and columns. This caused interference, leading to false inputs.
To address this, I tested several alternative dielectrics and found that cardstock provided a more reliable solution. Using two MPR121 ICs, I successfully achieved proper functionality with a 3×3 grid of rows and columns.
Next, I plan to scale up to a 9×9 grid. Once that’s complete, I will focus on processing the input data from the MPR121 ICs to enable selection of specific points on the grid.
Winstone’s Status Report 03/22
This week was focused on our ethics lecture and discussion and getting the solution solver portion of our system functioning.
After last week’s preliminary reading on ethics articles and answering questions, there was an ethics lecture this week to continue getting us to think about the potential impacts of our project. We had the opportunity to do some red teaming with another group, which gave us a wider perspective on how our Sudoku helper might have negative consequences. In particular, how people might become over-reliant on our system which could hurt the Sudoku solving community.
I also looked into potential Sudoku solving packages to use for our system. I began testing py-sudoku, which allows me to generate a random Sudoku puzzle of desired difficulty and create a solution to it. This would allow us to avoid having to store our own set of boards and create a mechanism to prevent repeating a board that the user may have already solved. I have not been able to successfully integrate the package into my existing projection code, but I will get that done next week.
Michael’s Status Report 03/22
This week, I attended the ethics lecture and engaged in discussions with my own team as well as other teams about potential challenges that could arise if our technology were widely integrated into public use. One of the key points of discussion was the potential for over-reliance on automated Sudoku solvers, which could diminish traditional problem-solving engagement.
On the technical side, I continued refining the game’s logic and functionality using Pygame. The grid system and number input mechanics were improved, along with visual enhancements like cell selection highlighting. Keyboard controls were also integrated, allowing users to input numbers and clear cells more intuitively. A significant part of my pondering revolved around defining the difficulty levels for the game. I explored different approaches, such as basing difficulty solely on the number of pre-filled cells versus considering strategic placement to ensure a balanced challenge.
Moving forward, I aim to fine-tune these difficulty settings to provide a more engaging experience while also addressing previous feedback regarding the clarity of our project documentation. Further refinements to the user experience, such as smoother interactions and enhanced feedback mechanisms, are also on my agenda. As we continue development, I am keeping ethical considerations in mind, ensuring that our project encourages thoughtful engagement rather than passive reliance on technology.
Team Status Report 03/15
This week, our team made progress on multiple fronts, including refining our report, discussing ethical considerations, and advancing technical development.
Feedback on our design report highlighted the need for greater clarity in conveying our project’s goals and execution. While our presentation successfully communicated our ideas, the report did not fully capture the same level of clarity. A key takeaway was that our written work should stand independently as a strong argument, avoiding vague statements that could invite unnecessary scrutiny. Moving forward, we will work on improving the structure and precision of our final report to ensure it effectively represents our project.
Beyond documentation, we also explored the ethical implications of our Sudoku solver. Through team discussions and our ethics assignment, we considered how increased accessibility to digital solvers could lead to over-reliance on automation, potentially diminishing engagement with traditional puzzle-solving. This prompted us to reflect on the broader impact of our work, reinforcing the importance of responsible design choices.
On the technical side, the team worked on integrating different components of the system. Winstone developed and tested the projection code, successfully displaying a 9×9 Sudoku grid with a cursor and possible inputs. Moises focused on refining the touchpad functionality, shifting from polling to an interrupt-based system to improve responsiveness and accuracy. While the transition introduced new challenges, such as handling missed inputs, it ultimately led to a more efficient input system. Meanwhile, Michael implemented additional features, including an automatic solver and random puzzle generation, further enhancing the system’s functionality. As a team, we also tested the projection setup and discussed ways to improve the coordination between the projected grid and the physical board. Moving forward, our next steps will involve fine-tuning the touch sensor, optimizing user interactions, and ensuring smooth integration between all hardware and software components.
Michael’s Status Report 03/15
This week, we received feedback on our report, which was overall positive. However, one key criticism was that the clarity of our project, as presented, was not fully reflected in the written report. A particularly useful piece of feedback highlighted the importance of ensuring that our paper stands as a strong argument on its own, without raising unnecessary questions or criticisms. This means we need to be more precise in our wording to avoid ambiguity. On a personal note, I did not receive much criticism on the sections I worked on, which was reassuring.
In addition to the report, we worked on our ethics assignment, which encouraged us to think more deeply about the potential consequences of our project. One key concern we discussed was that if our Sudoku solver became too popular, it could lead to people becoming overly reliant on digital solvers and less engaged with traditional puzzle-solving methods. This assignment was a great opportunity to reflect on the broader ethical implications of our work and consider how technological convenience can sometimes have unintended consequences.
On the technical side, we made significant progress in assembling the projector and board setup. Winstone completed a version of the 9×9 grid with a cursor and possible inputs, which we projected onto the board. We had discussions about how to properly align the projection with the physical board to ensure smooth interaction. Meanwhile, I worked on implementing additional features, including an automatic Sudoku solver and a random puzzle generator. These features will further enhance the usability of our system and bring us closer to a fully functional prototype.
Winstone’s Status Report 03/15
This week I worked on the ethics assignment, met with my team for initial testing and integration, and continued working on my projection code.
The ethics assignment was designed to get us to think about what kind of impacts our project might have in society or the environment. Even a seemingly harmless system like ours that is designed to solve a puzzle can have some kind of harmful effect. It was interesting to read about the hidden effects of a design in Winner’s article.
During our meeting with the professor and TA, we received feedback on our design report. For our final report, we should focus on our writing and expressing our idea better. During the week, we also met up to connect all our peripherals to the Raspberry Pi and run some of our preliminary code on it. I was able to test my projection code and it worked well. We did not yet have our capacitive touch sensor working, so the projection was designed to work only with keyboard and mouse. I was able to write some code that will include signals from the MPR121 (touch sensor), which I will have to test as soon as the touch sensor is operational.