
Where did Simon go?
A runner, a finder. An upgraded version of where did Simon Say Game.
Video Demo
Gallery
Inspiration
Simon says game is a classical game that we play with our friends during parties. There are many different formats of this game, some of them are related to body motions and some of them are related to pressing buttons in sequences. Unfortunately, due to covid 19, people can not party any more so we come up with this idea that we will have a Simon Says game device on each user's end and we use cloud services to connect two or more devices together so this game can be played anywhere as long as there is internet connection. Now with the help of these devices, people can still party and enjoy the fun of Simon says game remotely.
What it does
In this game, there will be two players. Player one will act as a runner, and Player two will act as a finder. When the game starts, Player One will use the joystick to control where he wants to go. He can move five steps in total. For each move, the corresponding LED, which indicates where user 1 is, will light up, both on the local keypad and on the cloud. When Player One finishes all his moves, the places he stepped through will be uploaded to the cloud. Then, player two will show up. Player two needs to find player one by pressing the exact same path that player one has walked through. The player's two sequences of input match player one's moves, he/she will win the game. Otherwise, player one will win the game.
How it works
BRAIN STORM AND HARDWARE SEARCH
-
The joystick will be the input to user and the keyboard will do output task to the user. The user will move the joystick to a certain direction and the other user's keyboard will show the direction of the joystick being moved.
-
MCU including Wifi (SAMW25) , ADAFRUIT NEOTRELLIS RGB DRIVER (3954) ADAFRUIT Mini 2-Axis Analog Thumbstick (2765)
SCHEMATIC DESIGN BY ALTIUM DESIGNER
-
The RGB driver is connected to MCU with I2C
-
The joystick is connected to MCU with analog input
-
The board takes a 5V input from wall plug thru barrel jack and provides 2 voltage rail 3.3V and 5V from the input. The 5V is taken from the barrel jack directly and the 3.3V is from TPS62827DMQR which is a buck converter that steps down 5V to 3.3V
PCB LAYOUT DESIGN BY ALTIUM DESIGNER AND PARTS SELECTION(BOM)
-
Board Size: 80mm * 80mm (we put the joystick onto the board so it takes up a lot of space)
-
4 Layer Board: Top Layer, Power Plane, Ground Plane, Bottom Plane
-
We build our own footprint for the joystick
-
Extra I2C and analog connector are available on the board for future development
-
The orientation of components on board is nicely arranged
-
Digikey is our main supplier
BOOTLOADER AND OTAFU
-
The Bootloader is stored at 0x0000 in the NVM, while the main firmware for the stored at 0x12000 in NVM.
-
The bootloader program is able to read the binary file in SD-card, erase the precious firmware starting at 0x12000, and write new firmware to the NVM.
-
Cyclic redundancy check (CRC) will be perform during the NVM write process to ensure the integrity of the updated firmware.
-
Extra I2C and analog connector are available on the board for future development
-
Over-The-Air Firmware Update (OTAFU) is available. It will be achieved by using the WIFI chip to download the firmware from the UPenn server, restart the system, then using the bootloader to load the new firmware
NODE-RED DASHBOARD
-
Node-Red Deployed on IBM Cloud
-
Using HiveMQ as the MQTT broker to achieved data exchange
-
Player status and inputs will be reflected on the Node-Red dashboard in real-time
-
Game administrators can use the node-red dashboard to reset the game or start another game.
CLI AND FIRMWARE IMPLEMENTATION
-
Using FreeRTOS for the embedded system to achieve concurrency
-
Using HiveMQ as the MQTT broker to achieved data exchange
-
Player status and inputs will be reflected on the Node-Red dashboard in real-time
-
Game administrators can use the node-red dashboard to reset the game or start another game.