This document lists the goals and outcomes that this project should aim to accomplish.
To complete a project that envelops hardware, firmware, and (possibly) software design
To revise data structures/algorithms and visualise common sorting and pathfinding/search algorithms in an easily-understood manner
To revise microcontroller concepts and available peripherals—eg timers/counters, GPIOs, serial communication, shift registers/multiplexing for matrix displays, etc.
To (finally) follow one of my own PCB designs through to fabrication/assembly/seeing it work
To complete a project that is self-contained and accessible—ideally should not require any extraneous equipment—eg no special load/supply/test environment/etc.
To learn about the USB protocol
To learn more about another microcontroller—possibly the ESP8266/ESP32, or maybe a PSoC 6
To have something else that I can show off to demonstrate my knowledge and design ability
To have something that other students could potentially use to help learn about different algorithms
To apply my existing understanding of electronics and analogue design and build my confidence, whilst diving deeper and learning new concepts
To test my understanding of how displays/matrices are driven
To have something to help show off Electrical/Computer Engineering!!!
To understand and design how buck/boost converters work—if applicable
To write as much of my own driver firmware as possible, rather than relying on external/3rd party libraries