Programming Embedded Interfaces

LSU CSC4999 s16 (Spring 2005)

Instructor:   Dr. Brygg Ullmer, LSU CS & CCT
TA:   Rajesh Sankaran (informal)
Time:   MWF 10:30am, Coates 237

This course qualifies as a technical elective for EE/ECE students.

jump to description | prerequisites | timeline | example code

class projects
Remote Video Recorder

Ankush Agarwal
Santosh Verma

This project provides network control over a Sony digital video recorder (with a 120GB internal disk), together with an LED-illuminated faceplate for monitoring the status of recordings.
eNote

Karun Kallakuri
Srikanth Jandhyala
Vijay Bulusu

This Bluetooth-linked device monitors for e-mail from different classes of colleagues (work, friends, and family), and indicates these via LEDs, vibrator, and tones.
Lights Out

Trevor Foley
Rajneesh Kambham
Stephen Triche

A 4x4 matrix of lights and touch sensors is linked via network to an open-ended Java-based set of games and visualization backends.
iLogger

Petr Filipchyk

Intelligent tags record the passage of tagged objects (dogs, people, devices, etc.) through spaces instrumented with infrared beacons, and uploads these logs through Bluetooth/network gateways.
Nomadic

Chirag Dekate
Dayong Huang
Santiago Pena
Dylan Stark

RFID-tagged cellphones/mobile devices and cards are used to authenticate users to the Grid, as well as to launch and visually monitor jobs on supercomputing resources (using LED arrays corresponding with CPU load, memory consumption, etc.).
class photo

description
The number of computers on desks and laps is dwarfed by those embedded in the physical world. For example, new cars may incorporate 50 or more embedded processors -- most controlling interfaces to sensors, displays, actuators, networks, and people -- and there are likely far more embedded processors in operation than people on earth.

In this course, students will examine the concepts and practice, and work hands-on with programming embedded interfaces to sensors, actuators, displays, networks, people, and grids. In the process, they will gain proficiency in programming languages and approaches ranging from very low to very high levels of abstraction (including C, Java, Tcl, Prolog, and the basics of Assembler). Students will also gain familiarity with example hardware and application domains relevant to embedded interfaces, including wireless sensor networks and distributed user interfaces.

The course will be supported by cutting-edge software and hardware technologies under development at LSU. In addition, we intend to collaborate with a similarly-themed course in Germany, allowing practical experience with application areas such as wide-area sensor networks and distributed user interfaces. Heavy use of video conferencing will provide a means both for remote collaboration, as well as for observing the consequence of remote actions.

For example, in the first day of class, we will demonstrate how eight wires, eight lines of code, and less than $8 of parts can be used to construct a pair of synchronized lamps in Germany and the US, with each light switch controlling both lights (useful for communications, monitoring, and other purposes).

Working in small teams, students will learn to physically assemble and deploy working embedded processors and interfaces (no prior electronics experience is necessary); to program these interfaces; to connect these sensors with physical and virtual sensors and displays; and to use these in real applications. One class per week will be a hands-on laboratory, and a final project will be required.

sensor and display blades examples blades attached to tiles
examples of blade-based projects
Example of tools used within this course. Students will experiment and build projects with sensor and display "blades," which enable easy Internet-based control of technologies such as MP3 decoders, servomotors, capacitive sensors, and many others. Videos of related projects co-developed by the instructor: DataTiles (at Sony), parameter wheels (at MIT).

prerequisites
Prior programming experience is expected. As the course will involve hands-on projects, class size may be limited. Participation by advanced undergraduates is possible, by permission of instructor.

timeline
This timeline is tentative, and likely to change. The tentative plan is one week per topic. This includes two days of lecture (MW), and one of laboratory (F).
  • Introduction and overview

  • Embedded interfaces to sensors
  • Intro to the PIC microcontroller

  • Embedded interfaces to actuators and displays
  • Intro to the Rabbit microcontroller

  • Embedded interfaces for facilitating human interaction
  • High-level programming of embedded interfaces

  • Embedded interfaces to networks
  • Planning and resources for projects

  • Embedded interfaces to grids
  • Final project presentation

example code
The following gives a flavor for the high-level programming of embedded interfaces which will be used in this course. This eight-line example implements the distributed synchronized lamp example described above (in conjunction with supporting RFID cards).
#EtherLamp code (simplest version)
#By Brygg Ullmer, Frederic Konkel, and Miriam Konkel, Digital Artifact
#Written September 13, 2004

#(one line is ommitted, per a pending hardware patent filing)

SWITCHBLADE ARRAY:
 physical: $here:1.1 $there:1.1
 press:    ledBlade toggle $lights

INIT: BEGIN
 set here   [%self%      get localAddress]
 set there  [%behavCard% get remoteAddress]
 set lights [list $here:2.1 $there:2.1]
END

contact: Dr. Brygg Ullmer (ullmer@cct.lsu.edu)