Lab 9: Choose Your Own Project

Overview

For this lab you are encouraged to implement a project of your choice. Do something fun and interesting with your system. Here is how it works.

Group

Choose whether you will do this project individually, or as a group. You can work in groups up to size 3; however, the larger the group, the more you are expected to accomplish. When you complete the proposal you will be able to indicate your group.

Requirements

  1. Your project must run on the ECEN 330 board.
  2. It should interact with hardware devices, such as GPIO (buttons/switches/LEDs), interval timer, interrupt controller, touch screen, or custom hardware devices.
  3. Create a project that has some complexity, but is not too large in scope. For example, your project might be sized similar to the tic-tac-toe or missile command lab, and contain similar complexity.

Deliverables

Category Percentage
Proposal 15%
Project Implementation 70%
Demo Video 15%

Proposal

In Learning Suite, complete the Lab 9: Proposal.

In the proposal (1 page max), describe your idea and the features of the project. Define the scope of your project, what you intend to implement, and any hardware devices involved. Outline any key challenges you foresee and risk mitigation strategies. You won’t be graded on spelling, grammar or presentation. It just needs to be clear that you have spent some time thinking through your project idea.

If you are working in a group, ALL group members must submit a copy of the proposal. For group proposals, list the names of the group members and their individual responsibilities within the group.

Project Implementation

Your submitted project will be graded against two main criteria:

  • Project Difficulty & Creativity (25 points): Your project does not need to be overly complex or large to receive full points. Consider the existing multi-week labs (missile command, tic-tac-toe) when choosing the scope of your project. Your idea doesn’t need to be completely original or novel. Something that is fun and interacts with hardware would be great. If your idea is very similar to one of the existing labs, you will likely lose some points here.

    Note: If you don’t want to choose your own project, you can choose to do the provided Whack-a-Mole or Simon lab. However, if you do so, you will receive a maximum of 20/25 in this category.

  • Project Functionality (45 points): You will be graded in this category based on the following criteria:

    1. Your project must compile and run on the ECEN 330 ZYBO board (Working only on the emulator isn’t enough).
    2. It should interact with hardware devices, such as GPIO (buttons/switches/LEDs), interval timer, touch screen, or custom hardware devices.
    3. The project is a complete and working implementation and reasonably completes what you planned out in your proposal.
    4. Your program should run smoothly and be bug free.

    Note: You will not be graded against the coding standard for this lab. Try not to be too sad about this. :-)

Submission

All code should be placed in the lab9_project directory. You will need to create a CMakeLists.txt file to compile your executable. Be sure your executable is named lab9.elf, otherwise the grader will not be able to locate it. You can use the hardware drivers from previous labs that you created in the drivers folder; however, they shouldn’t be modified. Like the previous labs, use ./check_and_zip.py lab9 to zip up your project submission.

Demo Video

Create a short video (2 minutes max) demonstrating your project and major features, as well as mentioning any major issues or concessions made during your design process. Explain what you actually implemented and any open source software used.

Complete this assignment by submitting a link to your video (uploaded to YouTube, Google Drive, Box, etc.). Please use the assignment Submission Notes to paste the link to your video in Learning Suite. Do not submit a video file directly (.mov .mp4) to Learning Suite. Make sure your video link is shareable and viewable by anyone with the link.

FAQs

Q: Can I use a custom piece of hardware, like a video game controller?

A: Yes, but make sure to show its functionality in your demo video. Explain the optional hardware and the complexity that was involved in supporting it (so you can get credit for your work). Make sure the software still works somewhat without the hardware so that we can try it out without your custom hardware (for example, if there’s no game controller connected, use the buttons on the board).

Q: How should we share code between group members?

A: I suggest you create a private GitHub repository. You can go to https://github.com/byu-cpe/ecen330_student and click Use This Template to create a private repository with all of the starter 330 code. Then copy over any of the driver modules (e.g. buttons, switches) you implemented into this repository.

Q: How do I know if my project is difficult enough?

A: Designing projects from scratch is difficult. I think most people will probably try and implement too much, and find themselves running out of time to get it done on time. Pick a project that has some meaningful complexity (like many objects in missile command, or a smart computer player in the tic-tac-toe lab), but keep it fairly simple overall.

Q: Can I use publicly available code (open source libraries, ECEN 390 sound driver code, etc.) in my project?

A: Yes, you can use existing code that you did not write. In your demo video, be sure to mention any parts of code you didn’t write yourself.

Q: Advice?

A: Make sure your project runs and does something meaningful, even if you don’t get your entire project done in time.

That means you should work incrementally, and save progress regularly. Once you have something working, make sure it works well, and then save a copy before moving on to add more functionality. Git works well for this.

Q: If we’re using the Whack-a-Mole or Simon lab, how should we structure our lab proposal?

A: The proposal can be short:

  1. State simply your intention to implement the Whack-A-Mole or Simon game following the lab requirements and then describe any deviations you plan to make.
  2. Describe how you will approach the project. Will you use the milestones as described in the lab or will you structure it differently? You are free to implement the game as you see fit within the project directory.
  3. Outline any key challenges you foresee and risk mitigation strategies.