Skip to content
Hauke Petersen edited this page Feb 16, 2016 · 32 revisions

Below is a list of project ideas proposed for GSOC 2015 (don't hesitate to come forward with your own idea, if you have one that motivates you most). There are three categories of project ideas:

System

Project S1: RIOT micropython port

Project Category: System

Brief explanation: "MicroPython is a lean and fast implementation of the Python 3 programming language that is optimised to run on a microcontroller." The goal of this project is to create a port of the micropython interpreter to RIOT, so that any RIOT board can be programmed using the ease and expressiveness of Python.

A prototype port has already been created which can be used.

Expected results: Port of the micropython interpreter to RIOT, integrated in RIOT's build system. Binding of micropython's libraries to RIOT's C API.

Knowledge Prerequisite: C, Python, git, some notions of programming theory, and embedded programming.

Project S2: Supporting RIOT in ns3

Project Category: System

Brief explanation: RIOT can already run as a process in Linux via the native port and several RIOT instances can be networked on the same Linux machine via dedicated tools (nativenet and desvirt). However, RIOT support within ns3 is expected to enable the community to simulate larger networks of RIOT instances and finer grained network characteristics -- before deployment of the exact same code base on real hardware.

Expected results: multiple, networked instances of RIOT can be simulated within ns3.

Knowledge Prerequisite: C, C++, Python, git, ns3.

Any of these are optional but not all of them.

Network

Project N1: Support for Bluetooth Low Energy aka Bluetooth Smart

Project Category: Network

Brief explanation: BLE (Bluetooth Low Energy) is a key element of the Internet of Things, as capable devices are already widely deployed. As RIOT comes already with base support for boards supporting BLE (e.g. the Nordic NRF51822), RIOT does not yet support a BLE stack. The goal for this project is to implement BLE support for RIOT.

Expected results: A running BLE stack that is able to connect to a smartphone.

Knowledge Prerequisite: C, git, prior knowledge about Bluetooth Low Energy is a plus but not required

Project N2: Implementation of LwM2M [to be removed]

Project Category: Network

Brief explanation: LwM2M is one of the leading application layer protocols used for M2M communication between constrained devices in the IoT. The goal of this project is to add support for this protocol to RIOT. It is up to the student to start from scratch or to port an existing implementation to RIOT, including a long term continuous integration plan.

Expected results: Support for LwM2M in RIOT, validated by cross-testing against at least one existing LwM2M implementation.

Knowledge Prerequisite: C, git, prior knowledge about LwM2M is a plus but not required

Project N2: Implement MQTT-SN

Project Category: Network

Expected results: MQTT-SN support in RIOT

Knowledge Prerequisite: C, git, networking basics

Application

Project A1: Advanced Network Visualization and Configuration Tool

Project Category: Application

Brief explanation: RIOT TV is a visualization tool for RIOT based on node.js, but so far rather static. the goal of this project is to collect the required data for visualization in a non-invasive manner and visualize a priori unknown topologies.

Expected results: Visualize different types of RIOT networks without changes to the operating system in flexible way

Knowledge Prerequisite: C, git, radio sniffers, node.js, graph visualization

Project A2: Intelligently Interacting Light Switches

Project Category: Application

Brief explanation: Use Actor programming on RIOT with the C++ Actor Framework CAF to build a distributed intelligent lightening system. With a simple hardware setup of lights (LEDs) and motion detectors across multiple rooms, create lightening along the path of a moving person. Intelligent lights communicate with neighboring lights using predictive intelligence and CAF message passing. Furthermore, when using colored LEDs, a desktop app can be written with CAF that changes the color either manually or depending on mood or desktop contents.

Expected results: A distributed light control system that mutually interacts and follows users.

Knowledge Prerequisite: C++, hardware control, predictive algorithms

Clone this wiki locally