F18: Catch me if you can
Contents
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 |
|
Completed | 10/25/2018 |
2 | 10/30/2018 |
|
Completed | 11/05/2018 |
3 | 11/06/2018 |
|
Completed | 11/13/2018 |
4 | 11/13/2018 |
|
Completed | 11/16/2018 |
5 | 11/20/2018 |
|
Completed | 11/22/2018 |
6 | 11/27/2018 |
|
Completed | 12/1/2018 |
7 | 11/30/2018 |
|
||
8 | 12/04/2018 |
|
||
9 | 12/11/2018 |
|
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 two SJ-One controllers: one board is used as Control Module and other board is used as the Display Module.
- The Control Module uses the onboard accelerometer on SJ-One which is interfaced via I2C protocol. The calibrated accelerometer values are then used to determine the basket position on the LED Matrix.
- The Display Module SJ-One board is used to control a 32*32 RGB LED Matrix.This matrix displays the basket, eggs shot from the cannon.The movement of the basket is as per the orientation value received from the Control Module, through Wireless Module. It also consists of Peizo buzzer which is controlled via PWM pin.
Display Module
RGB LED Matrix:
Piezo Buzzer:
Control Module
Accelerometer:
Wireless Module
The nRF24L01+ is a single chip 2.4GHz transceiver with an embedded baseband protocol engine, suitable for ultra low
power wireless applications. The nRF24L01+ is designed for operation in the world wide ISM frequency band at 2.400 - 2.4835GHz. The register map, which is accessible through the SPI, contains all configuration registers in the nRF24L01+ and is accessible in all operation modes of the chip. The nRF24L01+ supports an air data rate of 250 kbps, 1 Mbps and 2Mbps. The high air data rate combined with two power saving modes make the nRF24L01+ very suitable for ultra low power designs. The embedded baseband protocol is based on packet communication and supports various modes from manual operation to advanced autonomous protocol operation. Internal FIFOs ensure a smooth data flow between the radio front end and the system’s MCU. Enhanced ShockBurst reduces system cost by handling all the high speed link layer operations. |
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. A lot of trials and different frequency combinations were required to make the sound work properly.
Issue #3
In Nordic Wireless, the transmitted data was received only once despite the transmitter transmitting data continuously. This was because vTaskStartScheduler() API was used by us. The scheduler_start() API was required to be used for Nordic Wireless to function properly.
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. [1] Nordic wireless datasheet
Appendix
You can list the references you used.