Week 1
- Helped create Project Specifications
- Familiarized myself with OSHE processes
- Did research on potential parts we would need to purchase
Week 2
- Briefly researched libraries to use with the components
- Decide on software to use for the project
Week 3

- Narrow down library choices so we can start programming once the board comes in and familiarize self with the library choices
- Need to find appropriate libraries to:
- Operate Piezobuzzer
- Display over VGA
- Interface with MicroSD over SPI
- Easily use NES Controller
- Need to find appropriate libraries to:
- Document library choices and share/confirm with the group
- Refresh my C knowledge, learn how to use NUCLEO software
- Other possible tasks are blocked by the ability to test with the board and devices
Concerns
- We don’t have much done and are waiting on parts to start doing things. Other members are working on what they can without the parts, I can only do research and familiarize myself with the appropriate libraries and software.
Reflection
This list was made after our team’s meeting in the middle of the week, and thus not all tasks were completed. Without the board, I cannot test connectivity to the software, and the software seems to be difficult to work with (and obtain). ST’s website says that the IDE provides libraries for common activities such as VGA libraries and SD over SPI, but the software struggled to load the example programs. Will have to look into this this week, and it should be easier since we expect the boards this week. As such, the entire todo list will carry over to next week, as I need to verify that the IDE can actually support what we need the board to do, and figure out how to use said software with external libraries (and use the software in general). The only addition to the todo list I will add is checking if the university has resources for using these boards, as when I asked around, these seem to be a common board used in classes.
Week 4
To do:
- Research STM32CubeIDE software
- Verify this is the correct software to use with the board
- See if other projects/courses/etc. use this board, and get information on how to (properly) use the IDE
- Verify the software has builtin libraries for display and SD over SPI tasks
- Successfully connect the software to the board
- Verify this is the correct software to use with the board
- Familiarize self with development tools and environment
- Above task should help familiarize myself with the IDE
- Find libraries for the following
- Piezobuzzer
- NES controller
- Make and test a small program that verifies I can program the board using the software (learn by doing)
- Turn LED on board on/off
- Some other hello world-esqe program
Concerns
I have exams, club management tasks, and a lot of other things going on this week. I will try to make OSHE a priority when possible, but I’m on my own in terms of figuring out how to use the ST software correctly (unless I can find university resources). Still will be a lot of research based tasks until I know how to interact with the board.
Week 5
NOTE: Limited availability due to Winter Carni

To do:
- Get and be able to use input from the NES Controller
- Help the others research and implement VGA
- Note: Do we need to use a VGA Arduino shield to satisfy time constraints from project spec?
- Find out how to run ARM code off of SD Card
Reflection
We received the parts finally! I spent a lot of time in the lab attempting to figure out how to interface with the SD card first and learned that the board can be programmed and flashed using the Arduino IDE (ST supports this?). Pins from both the ARM chip and the Arduino headers can be used. This should make it immensely easier to develop for the board and allows support for more libraries. Since programming microcontrollers is new to me, I made programs to blink the onboard LED (in both the STM32CubeIDE and the Arduino IDE) Given this, I was able to connect the SD card reader we bought to the board and interact with it using SPI. I was able to get info on the specs and contents of an inserted SD Card. Research was done on how to run code off the SD card, but that has been put on hold in order to prioritize the upcoming due dates on the project spec.
Concerns
Winter carnival will cut lab access and time short for this week. I will prioritize working with the team to get VGA working to satisfy the project spec. Concerningly, the project spec says that ALL programming needs to be done by next week. That will be an issue.
Week 6 – CDR Week
Reflection
Lots of progress has been made in figuring out how to interface with each individual component. I finally got some output out of the NES controller, after finding a programming error in my code. Lots of clarifications were done this week, and it has made the goal way clearer (for me, at least). We now are able to read the SD card, get some inputs from the NES controller, push and run code on the board, and more, all using the Arduino IDE. Lots of progress has been made, and once we implement VGA, we can work on combining all the individual parts together to make the device!
To do:
- CDR Presentation
- Write code to show button presses from the NES controller ✓
- Determine if NES controller problems can be solved via code or by a new 4021 Shift Register (or a new controller)
- Figure out why the STM32 stops running code (and blinks LED) after a few seconds when plugged in
Concerns
Currently, the NES Controller thinks that the D-Pad Right button bit is always pressed, and the buttons are shifted by a bit (ex. pressing B on the controller shows up as pressing A on the software side). The latter can be fixed by software, but while researching the odd behavior on the controller, I came across articles that mentioned that the 4021 Shift Register in the controller may be causing issues, or some other hardware bug.
I’m also having issues where the board runs code for a bit but then flashes an LED and the code stops running. I found limited documentation and solutions from ST, but it hasn’t fixed the issue. I need to figure out how to fix this ASAP as this will cause problems when trying to run a program for longer than a few seconds.
Week 7
Reflection

After reading several posts online regarding issues with the NES controller, I found a fix for the issues I was having. The first input is actually returned when the latch is set to high, so I just modified the code to account for this. The NES controller is now read properly, and button inputs can now be used in the future to interact with the games created for this console. In terms of the STM32 stopping running, it seems that this behavior stopped? I am not sure if it’s temporary, but for now, this can be tabled until after VGA is complete (as it’s blocking most of our tasks).
To do:
- Help with VGA (this is currently blocking most of my tasks)
- Document how to work with each component
- Document how to set up the dev environment I use
- Load SD card assets to STM32 ram (and access it in some way)
Concerns
I want to start linking everything I’ve learned and worked on together to begin the final steps of the project (hooking up all the components together, demo sample, etc.). However, we need to finish finding out how we will implement VGA before I can do this. I could start already, however I do not know what is exactly needed from VGA, and code that I may write may be have to be rewritten or redone if I attempt to write code without knowing how the VGA needs to work from a code standpoint.
Also, now that we know the SD card will hold game assets instead of the game itself, I need to figure out how to write code for manipulating memory and the SD card.
Week 8 & 9
Reflection
Lots has happened, and we decided to use a VGA shield in order to finish the project by the deadline. Unfortunately, VGA shields apparently are not very common, and many well documented ones are either out of production, or made to order, which we wouldn’t be able to get before the project deadline. Because of that, we looked into an HDMI, AV, and other display types, but there are not many that are available for the Arduino or Nucleo-64 (in our price range or time range). We have decided to use a TFT display since it is easier to purchase, and they were readily available in the lab. I was able to make it work on the Arduino Uno but am struggling to use the display on the Nucleo, even though it should be compatible with Arduino code (using the same pins).


To do:
- Make the screen work on the STM32 Nucleo-64
- Start programming everything together
- Familiarize myself with the display’s library
Concerns
This just needs to get done, and it needs to get done soon. If I am able to get the screen working, everything should be able to come together nicely. Once the display works, we can start to bring all the things we’ve been working on together into the final proof of concept.
Week 10
Reflection
Unfortunately, not much tangible work was able to be completed this week, due to time constraints between all members. I should be able to make much more progress this week as I should have more time to spend in the lab.
To do:
- Make the screen work on the STM32 Nucleo-64
- Plug in and interface with each device (when they are all connected on the board)
- Start programming everything together
- Familiarize myself with the display’s library
Concerns
No change from the concerns from last week, only a shorter timeframe to do it in.
Week 11
Reflection

A lot of progress was made this week! As soon as I got the TFT screen working on the Nucleo, I hooked up all the components to the board. After programming the board to interact with all of the components, I was able to make a boot screen and a program to test the controller inputs. We moved from the SD card module we had to the SD card module on the TFT Display breakout we were using. We are now able to load bitmaps from the SD card and display them. We are able to also play tones from the piezo buzzer, and receive controller inputs from the NES Controller, all in one program. I also made wire harnesses for all the components to prevent confusion in the case some wires get unplugged (since multiple people handle it)
To do:
- Help others with their tasks as needed
Concerns
This week I managed to finish a good portion of the project spec, and the only thing remaining is the case. We are now on pace to finish everything by Week 12!