Parts

Generic Keypad (GPIO)

Uses an array layout.  Columns are set to high and one at a time one column is set to low so you can poll the correct key. When a key is pressed, the input data register of that row is set to 0. Comparing this with which column is set to 0, we can figure out which pin was pressed.

ILI9341 LCD Display (SPI)

Uses SPI between the STM32 board and this display. When we want to display something, the dc pin is set to high for data mode, then the CS pin is set to low while data transfers. Finally the CS pin is set to low when the transfer is complete.

Servo Motor(GPIO)

4 pins are controlled using GPIO. By setting certain pins to high or low, this creates a magnetic field from the inductors which causes the motor to spin. Constantly changing the polarity of the inductors causes the motor to spin a certain direction.

HC-05 Bluetooth Module (UART)

This uses UART interface between this module and the STM32 board. The bluetooth module sends out a bluetooth signal to communicate with a user device. When a user device sends back data, the bluetooth module converts this data into UART format in which the STM32 board can read.