Wireless Embedded InterNetworking (WEI)

Building the Internet of Everything

David E. Culler
Department of Electrical Engineering and Computer Sciences
University of California, Berkeley

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. 


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


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.


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
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.