These brief tutorials are intended to get you started with TinyOS. They show you the basics of writing, compiling, and installing TinyOS applications. They introduce the basic TinyOS abstractions: computation, communication, sensing, and storage. The later tutorials go a little deeper into some of the more advanced areas of TinyOS, such as handling interrupts, power management, and how platforms are organized.
Working Group Tutorials
- Network Protocols
- BLIP Tutorial (2.1.1)
- BLIP 2.0 (2.1.2 and svn
- Building a simple but full-featured application
Lesson 1 introduces the major concepts of TinyOS: components, modules, configurations and interfaces. It shows you how to compile and install a TinyOS program on a mote.
Lesson 2 explains the TinyOS execution model, looking more closely at modules. It explains events, commands and their relationships to interfaces in greater depth, introducing split-phase operations. It explains tasks, the basic mechanism in TinyOS for components to cooperatively share the processor.
Lesson 3 introduces the TinyOS communication model. There is an exercise that illustrates sending and receiving messages.
Lesson 4 introduces the the TinyOS toolchain for PCs and laptops to communicate with motes. It describes the concept of a packet source, the mig tool, and SerialForwarder.
Lesson 5 explains how to sample sensors in TinyOS. There is an exercise that periodically samples a sensor and displays the value on the leds.
Lesson 5.1 explains how to use lesson 5 to sample any adc in TinyOS. There is an exercise that periodically samples any adc and sends its value via serial port.
Lesson 6 details the boot sequence and, in doing so, answers the question, "But where is main()?".
Lesson 7 introduces the TinyOS storage model. Sample applications illustrate the use of the Mount, ConfigStorage, LogRead and LogWrite interfaces.
Lesson 8 introduces the TinyOS resource arbitration and power management model. There are two exercises in this tutorial. The first one illustrates how to gain access to predefined shared resources. The second one illustrates how to create your own shared resource. In both tutorials, the process for controlling the power states of the resource is presented.
Lesson 9 introduces the TinyOS concurrency model. Tasks are revisited and async code is introduced. This tutorial is currently unfinished.
Lesson 10 provides a better understanding of the difference between "make micaz" and "make telosb," including how these commands map into underlying files, directories, and definitions. It is not necessary for most TinyOS developers, but is included as a starter's guide for people who wish to understand the make system better or wish to design a new platform.
Lesson 11 introduces TOSSIM, a TinyOS simulator. TOSSIM allows you to compile your TinyOS applications into a simulation framework, where you can perform reproducible tests and debug your code with standard development tools.
Lesson 12 introduces two basic multihop protocols, Dissemination and Collection. Dissemination reliably delivers small data items to every node in a network, while collection delivers small data items from every node in a network to designated collection roots.
This tutorial introduces multihop data dissemination. Dissemination reliably delivers small data items to every node in a network
This lesson introduces another multihop protocol that allows sending data to an addressed node. It is based on the DYMO routing protocol.
Deluge is a system for efficiently updating the code image running on a network of motes running TinyOS.
This tutorial explains how to compile, configure, and commission a 6lowpan/IPv6 subnet using blip, the TinyOS IPv6 stack.
Information on the latest version of the IPv6 stack and associated protocols.
This tutorial introduces the IETF RPL IPv6 routing protocol implementation in TinyOS.
Lesson 13 describes the details of the TinyOS toolchain, including the build system, how to create your own Makefile, and how to find out more information on the various tools included with TinyOS.
Lesson 14 goes through the process of building a simple anti-theft application using many of the features and services of TinyOS 2. Lesson 14 is found in the tinyos-2.x/apps/AntiTheft directory. The powerpoint slides found there (also available in pdf form) go over the basic principles of TinyOS, and show how to build the accompanying AntiTheft application. Please start by reading the README.txt file in the AntiTheft directory.
To run the AntiTheft demo you will need mica2 or micaz motes, and some mts310 sensor boards (you can also use mts300 boards, though you will lose the movement detection functionality). If you do not have this hardware, the slides and AntiTheft code should still provide a good overview of TinyOS 2.
Lesson 15 describes the details of using the TinyOS printf library to print debug messages to your PC from a TinyOS application running on a mote.
This lesson demonstrates how to write low power sensing applications in TinyOS. At any given moment, the power consumption of a wireless sensor node is a function of its microcontroller power state, whether the radio, flash, and sensor peripherals are on, and what operations active peripherals are performing. This tutorial shows you how to best utilize the features provided by TinyOS to keep the power consumption of applications that use these devices to a minimum.
This lesson demonstrates how to use the TOSThreads library to create and manipulate user-level threads in TinyOS. It also walks through the steps of adding TOSThreads support to split-phase services.
This lesson introduces and illustrates how the CC2420 in-line security features can be enabled on a step-by-step basis.