This project is a “Work In Progress”. As it develops we will add more content. Feel free to make suggestions using the comments section at the foot of the page.
This project is about building a fully functional quiz game, complete with buttons for players, lights showing the current status, and a scoring system. The game will also query an online database to provide a large number of questions that can be asked during the course of the game. A block diagram showing the seperate elements of the game is shown below.
The Quiz has two teams each of four competitors and a ninth person acting as Question Master. Each competitor has a button to press and a light in front of them. Each team also has a bell to indicate a button has been pressed and a large illuminated sign showing the team name. Additionally, two large panels show the team scores.
When the game starts all of the individual lights i.e. competitor and team lights are on, making a total of 10 lit lamps. The easiest way to understand how the game operates is go through the slides in the User Interface section that follows.
The game is controlled by a screen for use by the Question Master, who is likely to be non technical. A key requirement then is that the system must manage all of the various elements: lighting, scoring etc. All the Question Master should have to do is read the question, wait for the answer and then use the ✓ and ✘ buttons (Ideally the screen will be on a touch sensitive device so that s/he can just touch the buttons). The game should then automatically calculate the scores and control the scoring and lighting subsystems.
In addition, it is inevitable that at some point the Question Master will press the wrong button, so an ‘Undo’ function needs to be incorporated.
The slide sequence below show the Question Master’s screen. Click on the first image and read the text at the foot of the slide that describes what is happening, use the forward and reverse arrows to view all the slides. It is intended that the neccessary code to create the screen will run on a Raspberry Pi.
The lighting system shows what is happening as each question is asked and answered. It controls 12 output signals (2 x 4 individual lights + 2 team lights + 2 bells). It also has to handle 8 input push buttons.
To reduce the number of physical boxes, each player’s lamp and button is combined into one unit.
There are a number of different hardware configurations suitable to achieve this. Two possible options are shown here.
This scenario is shown below. It consists of two gPiO boxes connected to a PiDApter and then to a Raspberry PI. This option requires ribbon cables extending from a PiDapter (a device for splitting the GPIO outputs from the RPi) to two gPiO boxes. This arrangement will work but is clumsy and will restrict the physical layout of the teams and Question Master.
A more elegant, and complex solution is to use Remote GPIO, a method of allowing the gPiO pins on a RPi to be controlled remotely. This would involve adding two wireless enabled Raspberry Pi’s – probably Pi ZeroW’s and wirelessly control them from the central RPi.
The scoring system is described in the Quiz Sequence and User Interface sections above. The scores are presented to the players and to the audience using large 250mm high 7 segment displays. These displays are driven by Arduino controllers, one for each team. Two sets of code need to be written; for the Arduinos to control the displays, and for the Raspberry Pi in overall control to communicate with the Arduinos.
The initial intention is to use the open trivia database which is an open source, free to use, database of trivia questions. To quote: ” The Open Trivia Database provides a completely free JSON API for use in programming projects. Use of this API does not require a API Key, just generate the URL below use it in your own application to retrieve trivia questions.”
The box below shows a live response generated by the open trivia database. The data in the box changes every few seconds.