Wireless Embedded InterNetworking (WEI)

Building the Internet of Everything

David E. Culler
Department of Electrical Engineering and Computer Sciences
University of California, Berkeley
www.eecs.berkeley.edu/~culler

The goal of this material is to provide faculty, students, and practitioners  interested in wireless embedded sensor networking with a hands-on understanding of the foundations of the field and the practical application of the technology. The material  focuses on modern, robust systems and networking software for integrating ubiquitous instrumentation of the physical world with leading-edge IP networking and Web Service capabilities.  It emphasizes the use of open standards at several levels - including the TinyOS 2.0 embedded operating system, IEEE 802.15.4 radio, 6LoWPAN adaptation, IPv6 networking, routing, and configuration, UDP/TCP transport, HTTP, REST/SOAP application layers – as they apply to ubiquitous embedded network devices and applications. 

Assumptions

Basic knowledge of networking, operating systems, and machine structures. C programming skills highly recommended.  We work directly with the I/O and ADC capabilities of microcontrollers, but will rely only an understanding of conventional microprocessors.  We write socket-level code and use higher-level networking tools.  Familiarity with HTML/XML and some Web development tools is encouraged.

Lecture Slide Material

·        Lecture 1: Overview of Wireless Embedded Internetworking (WEI)

o       Technology trends and application domains that drive the field.

o       History of the field – research and industrial perspective

o       Technical elements: Motes, TinyOS, Meshes, Routing, Sensing, Power

o       Relationship to automation, instrumentation, and IT.

o       Application domains and their characteristics

 

·        Lecture 2: WEI Hardware Technology – Motes and beyond

o       Mote architecture and development

o       Microcontroller design issues and trade-offs

o       Low Power CMOS radios: IEEE 802.15.4

o       Storage and its implications on algorithm design

o       Sensing, sampling, and control

o       Industrial offerings and their use in research

 

·        Lecture 3: WEI Operating Systems Design

o       TinyOS and alternatives

o       Structured event-driven processing

o       Hardware abstraction, modularity, robustness, and optimization

o       Embedded OS subsystem design

 

·        Lecture 4 – TinyOS Programming

o       Interaction of concurrency model and storage model

o       Role of threads and events

o       Design of an embedded network kernel

o       Programming language support

o       Safety and Reliability

o       Socket and Embedded Socket Programming

 

·        Lecture 5: Embedded Processing – Triggers, Actuation, and Sensing

o       Interacting with the physical world

o       Impact of Storage and power

o       Role of connectivity

o       Limited visibility

o       Scheduling, Interrupts, Atomicity

o       ADC design and use

o       Calibration, conversion, local signal processing

o       Integrating physical information with data processing

o       Representation, electronic data sheets

 

 

·        Lecture 6: 6LoWPAN – enabling IPv6 over IEEE 802.15.4

o       RFC4944, Compression

o       Implications and open issues.

 

·        Lecture 7: Low-Power Wireless Link Media Management

o       Media management protocols

o       Reliability

o       Idle listening

o       Burst bandwidth, delay, and low-power optimization

o       Topology formation and link estimation

o       Scheduling techniques

·        Lecture 8: Reliable, Low-Power Routing

o       Workloads and traffic patterns

o       Collection, dissemination, and point-point

o       Multipath for reliability

o       Limited storage complexity

o       Update rate and consistency

o       Impact of link characteristics

·        Lecture 9: Density Aware Protocols – Trickle

o       Mesh routing, dissemination, collection and aggregation

o       Trickle – simple robust consistency mechanisms

o       Time synchronization

o       Hierarchy

o       Defensive protocol design for reliability

o       Security

·        Lecture 10: Extending IPv6 to WEI

o       Address assignment, scope, translation, and management

o       Auto-configuration and unattended operation,

o       ICMPv6, ND

o       Routing and forwarding

o       Role of multicast

·        Lecture 11: Industrial instrumentation to Embedded Web Services

o       Automation, Process control, Industrial monitoring, home, lighting

o       HTML, XML, REST and SOAP for wireless embedded applications

o       Extending the internet Service Oriented Architecture

o       Zigbee ZCL, HART, BACnet, CIP, LonWorks

o       Dynamic Web pages from Physical Content

o       Databases for physical information

o       Integrating events and alarms with Web services

o       Rethinking instrumentation standards in an XML world

·        Lecture 12: Micro-Power Design

o       Micro-power: storage, generation, and regulation

o       Power sources, energy storage, regulation

o       Capacity planning and modeling

o       Application / Power subsystem co-design

Hand-on Laboratory Materials

·        Epic Interface Board and related technical documentation

·        TinyOS Kernel IPv6

·        Lab 1: IP and IPv6 Network Programming – Socket and Services

·        Lab 2: Embedded Internetworking over IEEE 802.15.4

·        Lab 3: Event-driven Programming in TinyOS

·        Lab 4: Triggers and Actuators

·        Lab 5: Embedded Sockets Programming

·        Lab 6: Embedded UDP/IP Reporting

·        Lab 7: Sensing

·        Lab 8: Embedded TCP/IP

·        Lab 9: Embedded SensorWeb

·        Lab 10: Internet Thing

·        Lab 11: Server Tier

·        Lab 12: Smart Client

·        Lab 13: Embedded Peer-to-peer

·        Lab 14: Open project

Installation

In my class I package up the Linux toolchain in a Virtual Machine and utilize VM Player from vmware.  Alternatively, here's how to build a cygwin environment.

Cygwin

Install cygwin and the packages that you like to have for development.  You will need python and you will want the networking utilities.

Go to http://www.tinyos.net/tinyos-2.x/doc/html/install-tinyos.html
Skip the Java SDK
Skip the newcygpkgs (or install them if you prefer)
Install the TI MSP430 Tools (base, python, binutils, gcc, libc). to create /opt/msp430
     I needed to use --nodeps --ignoreos <rpm> for these
Install NesC compiler
Install tinyOS tools
Install TinyOS 2.0.2 to create /opt/tinyos-2.x.  You don't need much of it, but you need tos/interfaces.
cd /usr/local/bin
ln -s /opt/msp430/bin/msp430-objdump.exe objdump

#This next part will change, but
download toski.tar from http://support.archrock.com/toski into your cygwin home directory
tar -xf toski.tar

# Now you are ready to build apps
cd toski
source toskirc            # to make the Makefile work

cd tos/Button            # or any other app
make epic                   # to compile
motelist           
make epic reinstall     # to download over USB
make epic install        # to compile and download

To utilize your wireless embedded internet devices as truly an extension of the internet you will need a LoWPAN router of some sort.

Tutorials

 

Resources