CSC270 Final Project 2019

From dftwiki
Jump to: navigation, search

D. Thiebaut (talk) 13:56, 31 March 2019 (EDT)

CSC270 Schedule Page | Projects

This page describes the final project for CSC270. Its deadline is the last day of exams, on May 10, 2019, at 4:00 p.m.


Image from

Wiki Space

Go to this wiki page for the CSC270 student project pages.


The project is in three different parts:

  1. A class presentation of the working hardware, on the last day of class (4/31/19),
  2. A wired harware including Arduino and Raspberry Pi controllers, and
  3. A Mediawiki page describing the project. The page will be hosted here, and should be finished before 5/10/2019 at 4:00 p.m.

Important Dates

  • 4/16/19: Your wiki page presents the main idea for your project, lists the main references that will be used, as well as the steps that will be taken to implement it. (20% of the grade)
  • 4/30/19: In class presentation of your working project. (40% of the grade)
  • 5/10/19, 4:00 p.m. final deadline for editing your project wiki-page, and fully working hardware delivered to your instructor. (40% of the grade)

Project Requirements

For this project, you should put together some hardware and software that will connect one Arduino to a Raspberry Pi, such that some of the sensors will be connected on the Arduino (or RPi), and the computation done on the RPi.
The main idea for this project is to create something suitable for display in a museum (possibly at Smith) or in the CS display case, in the Foyer of Ford Hall.

  1. You must work in a group of two people
  2. Your hardware should include
  1. An Arduino
  2. A Raspberry Pi
  3. A serial or I2C link between the two
  4. Working communication between the two controllers
  5. At least one input sensor
  6. At least one output device, normally connected to the Arduino, but Pi is ok
  7. All the sensors and display elements of the ELEGOO kit are available to you
  8. The projects should start automatically when the power is applied to the Arduino and the RPi. This will be useful if the project is in a glass case, and power is temporarily cut. The project should restart automatically when power is restored.

You may use parts of already existing and documented projects, but you need to show that your project differs significantly from the published projects. You should fully reference the published projects in your wiki.

Wiki Page

Your page should present your project fully, including the code written for the Arduino and for the Raspberry Pi. You are free to pick the programming language(s) you want for the different parts of the project. The more the better!
To include code, sandwich it between tags of the form:

<source lang="C">
your code here

To include python code, use <source lang="python"> instead.
You should also include photos of your project and of various important modes in which it may look different.
These links should be useful for learning how to create your wiki page:

Project Ideas

Here are some ideas of possible projects that might help you think creatively.

  • The Raspberry Pi solves the N-Queens problem and sends each solution to the Arduino, which displays it on some output device. Note that the ELEGOO kits contain 8x8 LED matrices. Putting 4 of them together could generate a 16x16 LED matrix...
  • The Raspberry Pi plays a game of life, and sends each generation to the Arduino to display. Same comment as above.
  • The Raspberry Pi uses a camera and detect the face of person in front of it. Makes the Arduino display an emoticon matching the person's face (smile, frown). This is a challenging project!
  • The Raspberry Pi accesses a page on some Web site (, for example), gets the current temperature, and sends it to the Arduino for display.
  • The Arduino monitors the position of the user's hands in front of two range finders, and sends this information to the RPi, which turns the information into music (see the Wiki page on the Theramin instrument for example).
  • The RPi monitors a switch or several switches activated by the user to define some kind of waveform. Upon completion, the RPi sends the information to the Arduino which starts generating this waveform, over and over. You can think of it as a programmable waveform generator, where the programming is done by the user pressing ON and OFF on a switch, defining sequences of time when the signal should be high, or low.


Projects that are well documented and fully match the requirements listed above will get an A, with varying amounts of points removed for non-operational projects, and/or poor documentation.
Half a point (A+) will be given to projects that incorporate well additional, working, complex operation in their implementation.

Weight of Individual Parts

  • Project proposal on 4/16/19: 20%
  • Presentation on 4/30/19: 40%
  • Final wiki page, 5/10/19: 40%

Additional Details

  • Added 4/18/19:
  • Add part numbers for your sensors. Include link to page with datasheet, or include datasheet of part taken from CSC270 Schedule page
  • Add URL for all library/software packages you will be using so that others could replicate your project easily.
  • Add a log of your progress at the bottom of your wiki page.
  • Make sure you record what libraries/software packages you install on your RPi, in case you have to reinitialize everything from scratch.
  • Added 4/19/19:
  • Make sure you add the full model number for the RPi, the Arduino, and whatever other device you are using. The datasheets in the ELEGOO kit section at the end of the CSC270 Schedule page should have the information you need.
  • Also keep track of what software packages you are installing. Include a section in your wiki page with the list of everything that must be installed (RPI, or laptop) for your program to work.
  • Added 4/25/19:
  • In your final wiki, make sure to have the exact part numbers for every piece of hardware you use. Arduino, RPi, etc. If you use a device/sensor from the ELEGOO kit, add a link to the pdf for this device. All the pdfs are linked at the bottom of the CSC270 Schedule page.
  • MAKE SURE ANY CODE YOU INCLUDE IN YOUR WIKI IS WELL DOCUMENTED. That means a header with your name, the date, a description of what the program does, and how to compile and run it.
  • If you're using Python, what version is required? Will your code work equally well with Python 3+ or Python 2.7?