Edison Aviles’s Status Report for 04/29

This week, my main focus was to continue working on manufacturing the board’s PCBs. I was able to manufacture and test all 8 PCBs that would be required for the full board. We began putting together all the circuits this week and plan to finalize the board manufacturing and testing within the next day or two. This will give us a few more days to fix any potential hiccups on the hardware side and continue integration with the software system. In terms of software, I was able to write a testing script to ensure the functionality of the board once it has been put together – the script loops through all the 64 hall effect sensor outputs and displays changes in the output voltage. This way we can guarantee that the board works as expected as we begin to integrate all the 8 PCBs. However, the majority of my time this week was spent on debugging the PCBs as well as finalizing any missing components – one problem I frequently encountered with the PCBs was fixing solder bridges on the 8:1 muxes, this was a very tedious and time consuming task since I had to manually remove the bridges using a soldering iron.

We’re a little tight on time with our integration schedule, but hope to finish what is left by early this week, this will give us enough time to prepare for the final demo and the rest of the deadliens coming up this week.

By next week, I hope to finish manufacturing and testing our board as well as integrating our hardware and software systems.

 

Edison Aviles’s Status Report For 04/22

This week I mainly focused on the fabrication of our PCB. I was able to manufacture and finalize testing on 3 out of the 8 needed PCBs. We were able to use a custom made stencil in order to accelarate the process of applying solder paste on our PCB before installing our surface mount components, however it still proved difficult since very tiny solder bridges were forming between our mux pins. I was able to fix some of the PCBs which had this issue and I wasalso  able to finish soldering the through hole components. I wrote a basic script which looped through all the channels of the PCB’s 8:1 mux and held magnets close to each sensor to ensure the sensors were working as expected and the mux was outputting the correct voltage changes.

Although I wasn’t originally assigned to work with our PCB’s fabrication, I decided to help Juan to potentially start integration of the entire system a little sooner. As for my personal schedule, the communication of the entire system is essentially complete. We are missing some minor details that will hopefully be resolved once integration begins.

For the following week I will continue helping with our PCB fabrication as well as begin integration of our hardware and software systems.

Edison Aviles’s Status Report for 04/08

This week, in order to prepare for our interim demo, I worked closely with Mukundh to solidify our communication between our RPi and Arduino. I updated our NodeJS backend communication logic to establish communication with Mukundh’s Python Serial Module Script in order to initialize the board’s calibration state before starting a game seek. I helped Mukundh debug, test, and verify his code while finalizing communication on my end. By interim demo, we had a full cycle of communication happening from the arduino, to the RPi and then to lichess. All this information would also be reflected on our custom website. Furthermore, I made some basic updates to the website’s UI and added the display of moves made by the different players. Now that we are approaching MVP, I’m starting to reinitialize focus on our post MVP goals, like our website. Mukundh and I focused on establishing the logic for move detection and communication with the arduino. Right now, we hard coded a list of moves (since we do not have our finalized hardware system yet), which the arduino cycles through and sends to the python serial module script, the script then formulates a JSON object and communicates it to the NodeJS file which then validates the move through our validation script and sends the move to Lichess if the move is valid.

In terms of our software schedule, we are making great progress to finish everything leaving a good amount of time to integrate our logic with the hardware system once it is finalized. I, along with Mukundh, will be spending the next week finalizing our move logic, as well as finalizing piece detection logic, while also writing tests in order to validate each of our individual sub systems.

Edison Aviles’s Status Report for 04/01

Throughout this past week I worked on various portions of our project. The first few days I focused mostly on finalizing the software logic with Mukundh. We worked on centralizing the entire software communication to our NodeJS system. The JS file is now the center of communication of all of our modules and lichess.org. Initially, when a game is started, a POST request is sent to lichess.org with some basic user information, once the game is started it is reflected on our custom website and communication with the arduino is started in order to await a move on the physical board. After a move is detected it is then sent to be validated through our python validation script, based on the result of the script we send the request to lichess and vocalize some information to the user in order to inform them if the move was valid or incorrect. If the move is correct it is reflected on the lichess.org platform and on our website.

Our PCBs were also delivered this week so I began attempting to solder some of the surface mount pieces on our board. However, I ran into a few road blocks considering the pins and patches for our muxes were incredibly tiny and required an advance level soldering skills in order to solder on the PCB whilst using a soldering iron. We decided to pivot and start looking into using the soldering ovens available in techspark. Furthermore, for the interim demo we decided to provide a proof of concept using a simpler circuit on a breadboard which highlights our piece detection logic as well as the rest of our software system.

By next week we hope to have an initial iteration of a full system where a user is able to play a game of chess with the incorporation of the entire system.

Edison Aviles’s Status Report 03/11

For the past two weeks, my main focus has been updating the web application logic to load and update the displayed FEN entirely based on communication from lichess.org. This proved to be difficult since the formatting of the JSON strings being received from lichess.org isn’t in the form of a FEN, it’s actually being sent as an array of moves made during that specific game, ordered from first move to latest move. From this list, I then have to calculate the actual FEN to then display. From here I continue to receive moves in the form of an array of all the moves made in the game and filter out the old moves in order to apply the new moves on the displayed board. Furthermore, I worked with Mukundh to finalize some final tocuhes of the move verification script using Stockfish. We added some classes and methods to mainstream the code and make it easier to understand. Apart from this, the team focused a lot of time on working on the system design report which was submitted last Friday.

In terms of software on the web application portion and Stockfish portion, the team is on track to finish everything on time. This next week we want to push communication between the web app, lichess.org, and the RPi in order to make sure we can play an entire chess game from the RPi and view the game from our web application.

In terms of new technologies used – In order to complete the software portion of the project, I’ve had to learn how to use various libraries including Chess.JS, React Chessboard, Stockfish, and Lichess.org’s public API. I will also have to learn how to use the RPi and the available drivers in order to use the RPi speakers. The team chose to use these specific technologies, mostly based on the fact they all have extensive documentation and have previously been used in similar projects to the one we aim to complete.