You will work independently to design and implement your own custom lab, your own creative embedded systems invention, on the ATmega1284 microprocessor. This invention can be a game or some useful device prototype. You can build upon components from previous labs and new components if you wish. Buying a new component is not required. As much as possible, your implementation should involve concurrent synchSMs implemented with no variations from the structured techniques from the lecture and course book. You may use RIBS to help generate C code.
If implementing a game, the game should include
a way of accumulating and displaying a score,
a way of winning and/or losing,
informational messages to the user, and
a button that can be pressed at any time to start over (a soft reset to the game).
(Some examples from summer session can be found here and here, also just search YouTube for “UCR EE/CS 120B”).
Custom lab “Build-Upons”
A full “Build-Upon” score requires at least 3 individual “Build-Upons”. These “Build-Upons” can come from two general domains: hardware and software. You may build-upon previous lab exercises, or create new software and/or use new hardware.
Hardware: Use a non-trivial hardware component (new component or reuse an old component in a new way). For example, the lab kit’s LCD has the ability to write to each pixel on the screen, not just a single character at a time (½ complexity). Another example is re-purposing your speaker to be a microphone.
Software: Points can also be awarded for non-trivial state machines. For example, implementing a fast fourier transform (FFT) in software. Some game logic requires one or more non-trivial concurrent state machines.
A software and hardware example is having the microcontroller communicate with another device via USART, such as a desktop/laptop or another microcontroller.
Prepare a 70-110 second video (no shorter, no longer). Upload to YouTube with the EXACT title format:
“UCR EE/CS 120B Spring 2019 — Firstname Lastname — Custom lab title summarizing functionality”
Your video should be publicly viewable. The video should demo your invention, highlighting all of your “Build-Upons”. (When searching for jobs, considering linking to this video from your resume/web-page/facebook-page/etc. A Google recruiter actually reached out to a former student for an interview because of one of these videos).
Prepare and submit a proposal for your custom lab plan, including the possible “C” plan, possible “B”, and possible “A”.
Demo day and progress check-offs
There will be one progress check-off after about a week to make sure you are on the right track. Then there will be the final demo day where you get to show off your final project to your TA’s and fellow classmates.
The first check-off is to demonstrate your progress, including at least 1 “Build-Upon”, by the beginning of the second week (By Thursday 5/30). This should be a working prototype. You can demo earlier.
The second check-off is to demonstrate your complete product on the last day of class (Friday 6/6).
Custom lab grade breakdown
Custom lab “Build-Upons” (must demo final product to get these points
Correct functionality when played (including when a user interacts unusually)
Implementation using structured techniques (from lecture and course book)
Project check-offs (2)
*Attendance in lab
*Custom lab folder and submission
*Create a Google doc folder
*Make sure the folder is sharable with the link (no login required); test with someone else in the class to make sure it is shared properly.
*Idea is to create something you can link to from your personal homepage, for future job searches.
*Add to the folder your custom project report named REPORT_lastname.
*High level description of custom lab (derived from your proposal).
*User guide (Rules, controls, and any special considerations).
*Technologies and components used in custom lab (AVR Studio 6, ATmega1284, etc.).
*Link to demo video.
*Link to each source file and a few-word summary of file’s purpose.
*Short description for a resume which shows the technologies you learned.
*Add to the folder image/drawings explaining how components were connected to the microcontroller (e.g. which pins you used).
*Add to the folder all source files (.sm, .c, .h).
*Be sure to cite sources, include IEEE and Internet found code.
*Submit URL of custom lab folder on iLearn as a link.