Projects:2015s1-12 An Open-Source Local Area Network (LAN)

From Projects
Revision as of 13:04, 19 August 2015 by A1607975 (talk | contribs)
Jump to: navigation, search


Introduction

Team

Members:
Robert Long
Oscar Evans
Luke Hub-Mayner Warner
Leigh-Anthony Noye

Supervisors:
Andrew Allison
Braden Phillips

Project Information

We will develop an Open-Source Local Area Network (LAN), based on the Arduino platform, and using the C programming language. The purpose of this network is to serve as a simple low-cost platform for teaching principles of real-time and embedded systems. There are three stages of development:
1. Get the Arduino up and working with an LCD display and a number pad, and program it as a glass type-writer, with modes for the alphabetic characters, after the fashion of many mobile telephones. Students will need to use multiple processes (threads) to control the display and the keypad, and to buffer characters.
2. Get Two, or more, Arduino microcontrollers exchanging text on an I2C bus. At this stage there is no collision detection or addressing.
3. Provide an application layer which allocates addresses to clients. If I send a text as: "#57 Mr. Watson - Come here" I want to see your number then the message: "Mr. Watson - Come here" appears only on the display of client #57, and no other client. (There is still no encryption or security, just the convenience of an address.)

Background

As mentioned throughout this wiki article, the overall aim of this project is to develop a platform that can be used to teach basic real-time concepts in a limited embedded system. < br />

For this reason, the c programming language has been chosen as the main language in this project. C provides a low enough level of abstraction for students to be able to appreciate the underlying effects of real-time paradigms, without becoming wrapped up in something like assembly code.

Aim

This project aims to produce an open source local area network (LAN). It is to be based on the Arduino platform and use the C programming language. This must operate over an I2C bus on the Arduino units with each unit to have its own bus connecting to a centralised server. Each client unit must also have its own display and keypad for input/output interaction with users. The purpose of this is to create a simple, low-cost platform for teaching principles of real-time and embedded systems. This system is to include an application layer which allocates addresses to clients however there will not be any security or encryption included.

Motivation

The University of Adelaide course, Real Time and Embedded Systems, utilises the C pro- gramming language to teach real-time and concurrency methodologies. To ensure this is effective as possible it is best to use teaching tools which are grounded in familiar tools. This is why the example of a LAN implemented in Arduino units using C is a compelling choice. Likewise I2C is a well-developed and extensively used bus protocol. Exposing stu- dents to these tools and protocols which are actively being used in industry is an invaluable experience. In previous years, the course has utilised desktop computers to teach the C in practicals and the Pic microprocessors as a teaching tool for the embedded systems theory. The outcome of this project will enable the two sets of theory taught by the course to be concatenated thus removing current disjointed approach of practicals.

Significance

With several closed source networking options available, providing a simple open source alternative is an advantage. Physical implementation is left to the user, and such this system might find itself in large remote sensingand monitoring situations.
Some examples might include:
1. Vineyard water table level monitoring.
2. Mine environment variable sensing.

Approach/Architecture Design

Potential Issues

4. References and Standards

We are currently implementing the threads using Protothreads, a low-overhead, stackless approach.
The Universal Graphics Library (u8glib), is a general graphics library for communication with various (read many) standard graphical screens. We chose this as a simple and easy to use library, we many options available for extension if required.
Communication will be through the I2C protocol. This protocol is simple to follow, and a good introduction for students with limited exposure to embedded communication.