Difference between revisions of "F18: Catch me if you can"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Objectives & Introduction)
(About the game)
Line 34: Line 34:
  
 
==== About the game ====
 
==== About the game ====
* one player
+
* Player should collect the eggs into the basket which are shot from the canon.
* Press switch on the console (SJOne board) to start the game
+
* Press switch on the console (SJOne board) to start the game.
* Tilt the console left or right to move the basket
+
* Tilt the console left or right to move the basket.
 
* Collect the eggs
 
* Collect the eggs
* Avoid red objects
+
* Avoid red objects,if caught Game Over,else continue to collect eggs till the end of level
  
 
=== Team Members & Responsibilities ===
 
=== Team Members & Responsibilities ===

Revision as of 00:05, 5 December 2018

Grading Criteria

  • How well is Software & Hardware Design described?
  • How well can this report be used to reproduce this project?
  • Code Quality
  • Overall Report Quality:
    • Software Block Diagrams
    • Hardware Block Diagrams
      Schematic Quality
    • Quality of technical challenges and solutions adopted.

Project Title

Catch Me If You Can

Abstract

"Catch me if you can" is a fun game where the user must be attentive and agile enough to catch the randomly dropping eggs from above into a basket. This is all displayed in the LED matrix acting as the screen. The user shall gain and accumulate points equivalent to the eggs collected successfully and there shall be a limited score for each level. The system will consist of two SJ boards, the one board will be used as a game console with which user will try to catch the eggs by moving the board in the required orientation. The other board will control the display module that displays the graphics of eggs falling and also the basket movement. The display module shall communicate with the game console via RF Nordic transceiver. There will be various sounds produced by the display module board for various events during the game like an egg catch\miss or an intermediate milestone reached.

Objectives & Introduction

Objective

Introduction

The Project consists of three main modules:

Control Module: It consists of accelerometer on SJ one board. Calibrated board orientation is sent to the Display Module via Wireless Module.

Display Module: It is responsible for controlling 32*32 LED Matrix and Piezo buzzer interfaced to SJ One Board

Wireless Module: It is used to establish communication between Display and Control module.

About the game

  • Player should collect the eggs into the basket which are shot from the canon.
  • Press switch on the console (SJOne board) to start the game.
  • Tilt the console left or right to move the basket.
  • Collect the eggs
  • Avoid red objects,if caught Game Over,else continue to collect eggs till the end of level

Team Members & Responsibilities

  • Aquib Abduljabbar Mulani
    • Wireless chip TX driver/application and calibrating accelerometer.
  • Kailash Kumar Chakravarty
    • RGB LED 32x32 matrix driver and game display application code.
  • Nandini Mandya Shankaraiah
    • Audio output and Wireless chip RX driver/application.
  • Rishabh Sheth
    • PCB design.
  • Swanand Sapre
    • Console application code and Game level design.

Schedule

Week# Date Task Status Actual Completion Date
1 10/16/2018
  • Product Requirement Analysis & Order Required Parts.
  • Software Design and ownership of each module
Completed 10/25/2018
2 10/30/2018
  • Calibrating Accelerometer values for actual orientation
  • Project report update on the wiki.
Completed 11/05/2018
3 11/06/2018
  • Design schematics for console charging circuit & LED display circuit
  • Finalize parts and components for PCB design and develop footprints library for KiCAD (if not present)
  • Porting Adafruit LED driver into LPC
Completed 11/13/2018
4 11/13/2018
  • Develop algorithm for basket movement and dropping eggs using accelerometer values
  • Basic LED testing by activating individual and group of pixels
  • Develop game specific APIs to draw objects like basket on top of led driver
  • Project report update on the wiki.
Completed 11/16/2018
5 11/20/2018
  • Piezo Buzzer operation with different frequency
  • Order PCB for manufacturing and order missing components
  • Check Nordic Wireless Transmit part by sending accelerometer value
  • Project report update on the wiki.
Completed 11/22/2018
6 11/27/2018
  • Design PCB for Console & Display and generate Gerber files, finalize PCB manufacture
  • Start and Stop switch, which controls the power to the system and displays Welcome and Good Bye screen
  • Generating different tones using PWM on Piezo buzzer
  • Check Nordic wireless receive part
Completed 12/1/2018
7 11/30/2018
  • Integrating calibrated accelerometer, switch functionalities and wireless transfer on console board
  • Once Integrated check the LED display response to the varying inputs from the game console
8 12/04/2018
  • Display the score of the user upon request
  • Final testing product with varying inputs of gaming console|
9 12/11/2018
  • Complete Wiki Report and Final Demo

Parts List & Cost

Sl No Parts Seller Quantity Price
1 SJOne LPC1758 Microcontroller Board Preetpal Kang 2 $160
2 RGB LED Matrix Panel - 32x32 Sparkfun 1 $55.6
3 Piezo Buzzer Amazon 2 $1.5
4 Accelerometer On board 1 NA
5 Switches On board 4 NA
6 Portable Power Supply Local seller 1 $5
7 RF Nordic On board 1 NA
8 BOM / PCB components Sparkfun - $20

Design & Implementation

Hardware Design

Discuss your hardware design here. Show detailed schematics, and the interface here.

PCB Design

KiCAD 5.10.0 software was used for PCB design. We created two PCB's, one for LED display to connect display connector and piezo buzzers

The steps involved in the PCB design process are discussed below:

PCB Schematic Design

As a first step, we designed a circuit. We created parts which are missing in KiCAD library

Hardware Interface

Hardware design diagram above gives an overview of the entire system which consists of the main 2 SJ-One controllers: 1 board for the player and 1 board used as the display node

  • The Player uses the onboard accelerometer on SJ-One which is interfaced to the board using the I2C protocol. The accelerometer values are then used to determine the basket position on the screen.
  • As we are implementing a wireless game, the accelerometer values are transmitted using yet another onboard module, the Nordic wireless module which interfaces with the wireless module on the display node controller.
  • The Display node SJ-One board is used to control a 16*32 RGB LED Matrix. This matrix displays the basket and multiple eggs falling from top of the screen in the game. The basket location and movement is decided by the on-board accelerometer values that we received wirelessly from the player board.
  • RGB LED Matrix displays three screens: Start Screen, Game Screen, End Screen which displays the final score of the player and the highest score as well. The hardware description of the LED matrix is explained later in this section.

Software Design

Tasks within LPC Board 1 (LED display):
Input_handler : This task takes the Accelerometer values as inputs from other LPC board and determines the exact corresponding position of the basket.
Display_handler: This task is responsible for displaying the contents into the LED matrix display at a certain rate. Note: Actual screen refreshing takes place at a much higher rate.
Tasks within LPC Board 2 (Console):
Data_sender : This task continuously sends the raw accelerometer values to LPC board 1.
Game_handler : This task is responsible for handling events like game start, game pause, game end via on board switches.

Implementation

Porting Adafruit driver into LPC :
1. LPC GPIOs were accordingly mapped and made as output for LED matrix connections.
2. Basic shapes, patterns and text were drawn.
3. Game specific APIs were developed for objects like basket, egg, cannon.

Testing & Technical Challenges

Issue #1

Porting Adafruit driver into LPC As we used the existing Adafruit library,we had to map the LPC GPIOs to LED matrix pins.

Issue #2

Piezo Buzzer sound frequency not varying at higher speed.

Issue #3

In Nordic Wireless, the transmitted data was received only once. This was because we used vTaskStartScheduler(). We must use scheduler_start() function to use Nordic Wireless.

Conclusion

Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?

Project Video

Upload a video of your project and post the link here.

Project Source Code

References

Acknowledgement

Any acknowledgement that you may wish to provide can be included here.

References Used

List any references used in project.

Appendix

You can list the references you used.