For my final project I was inspired by a game I had a kid called Cube World.
The interesting thing about cube world and what I want reproduce is the interactive blocks. Basically each block fits magnetically together and once connected blocks can interact with each other, and so this is the goal for my final project
So I talked to Quentin, about my original idea for making these interacting cubes and my original plan was to use the samd21e because I have access to 5 sercoms. Four I could configure as UART and one left to use SPI or I2C to drive a display. However, Quentin told me that you could simulate UART with the PIO on the RP2040, and you needed two state machines for fully duplex UART so there are just enough state machines on the RP2040 to emulate 4 UARTs and you do not take processing time like you would just doing 4 normal software serials. After this I tested Serial PIO on my RP2040 and was able to get it working.
Also how I plan to connect this blocks together is with pogo pins and magnets as this will allow me to easily separate and connect different pieces without having to worry about alignment
The images above are for one of my weekly assignments but I wanted to highlight it because I used pogo pins in this project, so that I could get more oriented with them before I used them for my final project. So what I found here is that the pogo pins are actually much stronger than I thought and in this case I can solve the issue with a 3rd magnet. But I wanted to highlight that before I built out the entire modular display block I should do a small test with just a small pcb with the pogo pins and some magnets to make sure it will have enough force.
However, the design above is different from my project in the fact that in the above version there are blocks that have just pogo pins and there are blocks that have just pads. So I could not connect two blocks that have just surface pads together or just pogo pins. So I want a solution where I can connect any side of any block together.
After very helpful guidance from Quentin, Anthony and Leo I landed on the design above. If you have two of these blocks no matter what orientation you have these blocks in TX one block will always match with the RX of another block and a pogo pin will always be touching a surface pad
After consulting with Leo, I realized that it is probably not very feasible for me to work on this project and the puzzle piece project. So I am going to just focus on my programmable puzzle piece idea
So I had a lot of troubling soldering the pogo pins, because while they look like through hole components they end is not long enough to go through my the copper I talked to Anthony at office hours and he told me that I should make a custom footprint for the pogos that allows me to solder the pogo pins like surface mount components. So I went into KiCad and made a footprint that had holes with 2.54mm spacing and I then layered some smd pads on top of it
I ordered this spi display, but I was not very happy about the write times. It took on the order of a second to write to the entire screen which is not acceptable because I wanted to eventually wanted a video puzzle which needs much better write times to facilitate that. However, I need to inspect the example code that waveshare provided and try and see if there are optimizations I can make in terms of communicating with the screen and this screen dev board is built upon the NV3030b and I need to read that datasheet to see if I have options for optimizations but it scares me.
After being suggested to put kinematic couplings into my design (thanks to Anthony, Quentin and Nikhil). I thought it was finally time to give it a shot. A quick explanation of kinematic couplings for the unfamiliar, kinematic couplings is a set of 3 spheres on one piece and 3 grooves on a connecting piece and the balls are grooves perfecting constrain your piece because there are exact 6 points of contact which keeps your piece from moving or rotating. Since I am working in such a small space I wanted to play around with how small I could make these spheres and grooves. I tried multiple different sizes out, but I liked my results with 4 mm spheres and grooves the most and that still gives me enough space to route my pcb
In order to constrain the pogos in x and y. Nikhil had given me the idea to just reduce the hole sizes in my footprint
Thanks to Anthony, Jake, Quentin and especially my section leader Leo. I really ask a lot of questions all of the time and constantly changing my mind and these were the people that took on the brunt of my questions. (Also when I saw I ask a lot of questions that is an understatement, at Anthony's first office hours I sat there for 2 straight hours and ask him questions about the final project).