Micro P(ictionary)
Abstract
Welcome to MicroP(ictionary)!
This design project sought to create a Pictionary-like device using an UPduino iCE40 UP5K FPGA board and an STM32L432KC MCU board. Pictionary is a game where one player draws an image and the other player has to guess what is being drawn in a set amount of time. Micro P(ictionary) takes this into the digital world and allows a user to control an on screen brush to “draw” on a screen. The player is able to manipulate the brush’s size, color, and location in order to draw whatever designs they want. This is accomplished using a system of seven buttons for color, a potentiometer to control the size of the brush, a switch to control whether the brush was up or down, and a joystick to control the brush’s location on the screen.
The design uses an MCU and an FPGA to control a VGA monitor. The MCU reads 11 real-time inputs from a user, including both analog and digital signals, and sends SPI packets to the FPGA board. The FPGA interprets the incoming SPI packets, and uses them to manipulate a brush on the VGA screen using a set of digital to analog converters which control red, green, and blue signals.
By the end of the project, the device was capable of drawing on the screen and displaying a variety of colors. It had also previously demonstrated its ability to draw and control if the brush was up or down using the inputs of the MCU controller. This was captured in a photograph (Figure 2).
However, roughly an hour before the end of the project, while trying to reconfigure some of the analog components to decrease the noise seen in the circuit, part of the board was shorted out. As a result, last minute changes were made to showcase the VGA display to others. Updated code removed the ability for the user to input data into the MCU. The MCU instead randomly generated signals which were then sent to the VGA display using the same encoding as would have applied for analog circuitry. This was dubbed a “glorified screensaver” for observers.
The Github repository included in this report has two branches: main
, which contains the current FPGA and MCU code for what was used in order to get the device actually functioning before the board was shorted, and random-display
that demonstrates what was shown during the device’s Demo Day.
This report will detail
- Details on the layout of the MCU
- Details on the layout of the FPGA
- Details on the hardware
- Details on results
- Details on the team behind this project
Project Overview
MicroP(ictionary) is a game for lab students that want to play Pictionary online, but have to play using hardware instead. The goal of this project was to make a Micro P(ictionary) game with the following specs:
- 7 Buttons to control 7 different colors
- A potentiometer to control the thickness of the brush being used
- A brush up/down switch that controls whether the brush is drawing or not
- A joystick to control where we are on the board.
The project had two separate pieces; the MCU that collects and stores the current status of the brush (thickness and location), and the FPGA, which has an onboard RAM that stores the color left behind by the brush or simply shows the user their current location. The brush will always be orange. The MCU consistently sends SPI updates of the location of the user to the FPGA board, and the FPGA board then outputs this data onto the computer screen. When the user updates the color of the brush or decides to put the brush down, the system sends an additional SPI packet with the updated color and brush up/down information.
Prior to this issue, the device was able to draw x/y locations, as well as travel in a controlled manner about the screen.
A video prior to this was not captured demonstrating how the brush was able to travel about the screen and leave a trail: this video, however, displays how the brush’s current color was being captured and making it over to the VGA device, and how control of whether the color was changed via the brush up/down switch was changed.
The overview of this system can be seen in Figure 1.