Projects:2015s1-12 An Open-Source Local Area Network (LAN)
Contents
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.