CS 355 - Systems Programming Course Project - Spring 2018
Objective: design and implement an Internet of Things system based on Raspberry Pi.
The Internet of things (IoT) is described as the inter-networking of physical devices, vehicles, buildings, and other items--embedded with electronics, software, sensors, actuators, and network connectivity that enable these objects to collect and exchange data. An example of an IoT system could be smart camera with a proximity sensor that would take a picture when a motion is detected and upload it to a server.
In this course, you will implement an IoT system whose hardware component is based on the Raspberry Pi. This project will consist of five parts as described below.
A great number of IoT systems have already been implemented using Raspberry Pi. Instructables contains many examples, which can serve as an inspiration for your own project. You are not allowed to reuse any code found in these projects under any circumstances. Any projects that served as a basis or inspiration for your own ideas must be properly credited.
- Objective: Describe an IoT system that you would like to implement.
- A completed system must meet the following functional requirements:
- Observe the environment via its sensor(s);
- Make decisions based on these observations;
- Keep historical records of its observations and/or actions;
- Provide a usable interface to operate the system.
- A completed system must consist of:
- A Raspberry Pi;
- One or more sensors/devices attached to the Raspberry Pi;
- A remote service to store and process the data. Specifically, ThingSpeak platform must be integrated into the system for data storage, analysis, and visualization;
- A user interface.
- In addition to conforming to the criteria above, your system must be implemented using C. The entire project must be completed by the end of the semester.
- What to do: Write a 1-page description of your project outlining its functionality, operation, hardware and software needed, and any relevant high-level details of the system components and their interaction.
- Due date: 02/15/18, 3-minute in-class presentation + PDF
- Points: 5
- Objective: Design the hardware and software architecture of your IoT system.
- What to do: Provide a reasonably detailed design of how hardware and software components of your system will interact (2 pages max). Use diagrams and supplement them with text descriptions, as necessary. Explain how each component would help you achieve the previously identified functionality of your system. Indicate the data/request flow among the components. Indicate if any open source libraries will be used and provide full credit.
- Due date: 03/01/18, PDF
- Points: 5
Part 3: Simple IoT device
- Objective: Enable communication between the Raspberry Pi and the sensor(s)
- What to do: Implement the very basic functionality of your system. Show that the Raspberry Pi can communicate with the sensors by displaying the evidence of that interaction on the terminal. This interaction must fit with the proposed functionality of the system.
- Due date: 03/22/18, demo
- Points: 5
- Objective: Enable the system to take actions and make decisions based on the sensor data.
- What to do: Implement the full functionality of your system without the networked/remote component. All code must run on the Raspberry Pi and generate the output to the terminal and/or the file system.
- Due date: 04/12/18, demo
- Points: 5
Part 5: Networked smart IoT device
- Objective: Complete the implementation of the system by adding the remote component.
- What to do: Implement the full functionality of your system with the networked/remote component. The logic must be distributed between the Raspberry Pi and the remote component.
- Due date: 05/01-03/18, in-class demo
- Points: 5