====== Junior Core Laser Tag Project ======
This is the wiki page for the Laser-Tag Project that is part of the Junior Core experience.
===== Quick Links to Milestones and Tasks =====
* [[Milestone 1]]: (Queues and Analog Board Verification)
* [[Milestone 2]]: (Implement Filters in Matlab) [[milestone_2_task_1|Task 1]], [[milestone_2_task_2|Task 2]], [[milestone_2_task_3|Task 3]]
* [[Milestone 3]]: (Implement Filtering Code, State Machines, in C) [[milestone_3_task_1|Task 1]], [[milestone_3_task_2|Task 2]], [[milestone_3_task_3|Task 3]]
* [[Milestone 4]]: (Add the Guns and Analog Boards with Testing and Statistics)
* [[Milestone 5]]: (Implement a Complete Laser Tag Game with Sound)
* [[Milestone 6]]: (Creative Project: Augment or Modify the Laser Tag System)
----
===== Class Overview =====
In this course you will construct a complex, multi-player laser-tag system that will help to integrate your knowledge and experience from the other three Junior-Core courses: ECEn 340 (Analog Circuit Design), ECEn 380 (Signal Processing), and ECEn 330 (Programming Embedded Systems). The theories, concepts and lab exercises from these three courses combine to complete an entire system. The analog designs from ECEn 340 provide the shot-firing LED, shot-detecting photo-diode and associated analog electronics to interface with the ZYBO board. The theories and algorithms that you learned about in ECEn 380 provide the signal-processing necessary to detect **when** a player has been shot and also to determine **which** player was the shooter. Finally, the programming exercises and embedded system experience from ECEn 330 will help you write the necessary 'C' code to create a final working system.
The process of creating the laser-tag system is broken into several milestones. This helps students to schedule their effort and to focus on specific portions of the system during implementation. Please see the [[milestones|milestones page]] for more details.
----
===== Laser Tag Overview =====
For an understanding of how the lasertag system works at a high level, see the [[laser_tag_overview|Laser Tag Overview page]].
----
===== System Organization =====
The [[system_organization|embedded system organization page]] provides a general overview of the system that you will construct this semester. The [[system_packaging|system packaging page]] shows the system components and cabling. Finally, you can view data flow in your system in this [[data-flow-diagram]].
----
===== Linux Requirement =====
The embedded software for the laser tag system builds upon the environment and code base used in ECEN 330. You will need access to a Linux system with an attached ZYBO board to implement and test the software you will write. Unlike 330, it is not possible to use the 330 emulator to test your code in this project class. One major reason for this is the current lack of support for emulating the analog-to-digital converter (ADC). For a list of possible build environments, please see the [[linux_options|Linux options page]].
----
===== Project Setup =====
Download this archive file ({{:ecen390.tgz|ecen390.tgz}}) and extract it into your home directory (or another project directory if you prefer). After extracting it, you will have a new directory called ecen390. The command to extract the archive is:
tar -xzf ecen390.tgz
The ecen390 project directory contains everything necessary to work on the lasertag system. To setup the CMake build system, type the following commands:
cd ecen390/build
cmake ..
To build your project, type ''make'' from the ecen390/build directory:
make
To download and run your project on the ZYBO board, type the following from the ecen390/build directory:
make run
----
===== Tutorials =====
[[Tutorials|Tutorial]] content will be added as necessary.
----
===== YouTube Channel =====
Videos that demonstrate the results of laboratory exercises or that demonstrate best practices are available at [[https://www.youtube.com/channel/UCoDVeJylUjZCQW9TZ3dNS8w/feed|this channel]].
{{ ::youtube390channelscreenshot.png?400 |}}
----
===== Groups =====
Groups from all years past are archived below.
[[Groups 2016]]
[[Groups 2017]]
[[Groups 2018]]
[[Groups 2019]]
[[Groups 2020]]
[[Groups 2021]]
----
===== ABET Notes for Faculty =====
ECEn 390 needs to provide the following data annually for ABET purposes.
* Communication (3): YouTube videos from students that illustrate their creative project. The links to these videos are to be archived on the group pages (see what was done in 2019, 2018, for example).
* Teamwork (5): Assessment of goals and milestones of project. For this, export the grades for the status reports from Learning Suite. These reports are submitted one per group and are used to ensure that all members of the group are progressing well throughout the semester.
* Experiments and Analysis (6): Students submit a statistical analysis of their system as a part of Milestone 4. For ABET, just export the grades for this from Learning Suite.