Inspiration
Our team is fascinated by the concept of using WiFi chips to establish communication between IoT devices. We believe that creating an online game utilizing this technology will provide us with a strong foundation in IoT fundamentals. Recently, it has become essential to develop more online connections for individuals who are unable to meet in person. As demand for this type of technology continues to increase, it is crucial for engineers like ourselves to become proficient in software, hardware, and internet integration. As a result, we have decided to create a basic online game as a starting point for our IoT design.
What it does
The objective of this project is to develop an IoT platform that enables two players to play a game called "Simon Says". The game incorporates a 4 by 4 keypad that allows users to identify and reproduce a series of flashing buttons. background information: The game of "Simon Says" involves two players taking turns over six rounds. The game starts with the first player pressing any one button to begin. Each turn consists of repeating the button sequence from the previous round and adding one more button to increase the difficulty. The game will end after six rounds. The two players will take turns playing in the game.
How we built it
The game rules specified a maximum of two players, which we incorporated into the physical design presented in the detailed system diagram. Using Altium, we added various functionalities to the schematics based on the SAMW25 microcontroller. Once the schematics were finalized, we selected components for the PCB and routed them while ensuring zero Resign Rule Check errors. We then sent the PCB design to the manufacturer while concurrently developing firmware for the system, including the CLI, bootloader, and OTAFU on Atmel Studio. While waiting for the PCB to be completed, we merged the hardware and software and utilized an MQTT broker to connect our boards to our Node-Red design. However, after we receive the boards, we found that only one board functions correctly. Thus, we decided to implement a PvE program rather than PvP, since we have only one board to run the program. To achieve the "computer play" section, we set up a random function that picks up any of the 16 grids on the keyboard, making it "pressed" and transmit to the broker. We found it works well, and the PvE program is what we deliver finally.
Challenges we ran into
It is the first time we trying to implement a multi-thread program that involves user input blocking, cloud data uploading and processing, and also the control between each thread. We had a hard time figuring out the mechanism, and we looked up the documents for a long time and also chat with peers that are also in our class.
Luckily, our program works fluently and we solved the problem of multi-threading, which is pretty inspiring.
Prototype Learnings
In the aspect of hardware, we learned the importance of design redundancies. It is hard to change or implement the broad once the design is frozen and manufactured, thus, we initially designed many redundant ports to make sure that we have at least an available connection for use. Also, we learned important skills in designing the PCB board. It is the first time we design a whole broad on our own, from the power circuit to all the customized components that we need. Thus, we need to learn a lot of knowledge in design and check rules, which enriched our experience in designing.
On the software side, we learned how to develop the program on a development board and transfer the program to our design. Also, we used MQTT rather than I2C or SPI to process the cloud data, which is a brand-new experience for us.
What we learned
- Choosing the proper components within budget and requirements.
- Designing schematics and PCB in Altium.
- Checking the schematics with appropriate design rules.
- Power design with different voltage segments.
- Write and debug programs into the hardware.
- Using the Node-Red to build an internet connection with the MQTT server, and the UI system.
- Debugging hardware problems with existing tools and devices, such as Jlink.
What's next for Team FF7-HD Remastered
Actually, what we decided to do initially was a game that shows on the LCD screen rather than the Simon's Say game. However, due to the memory limitation of the LCD, it is unable to show correct images on the LCD since there are hundreds of thousands of pixels and the rendering was way too slow. Then we considered using the keyboard to implement the Simon's say game. For the next step, after seeing the Node-Red, I'm wondering if I can design the online game on the node-red using its UI system and javascript, and use the keyboard or joystick to input the control command via MQTT connection. In this way, we can detour from the limitation of the LCD and make more complex games.
Log in or sign up for Devpost to join the conversation.