# Introduction

## Overview

µracoli provides libraries, example code and demo applications for use on different platforms with Atmels 8-bit-AVR-microcontrollers and IEEE 802.15.4 radio transceivers AT86RF{230,231,212} as well as ATmega128RFA1.

µracoli provides the following software components:

- Radio Library
  The Radio library provides functions at two abstraction levels, (1) a set of basic functions for low level control of the radio transceiver, e.g. register read/write, frame buffer r/w, ... and (2) a set of high layer functions, e.g. transmit_frame() or set_radio_channel().
- IoUtil Library
  The IoUtil library provides utility functions that are usefull in a embedded applications, like UART communication and timer functions as well as general purpose IO control (LEDs, keys, one wire bus). However, the IoUtil library is not used by the Radio library, so it is just used for completion of the examples and demo applications. So the IoUtil library can be used in own applications but this is not mandatory.
- Examples
  These simple mini applications are used to, illustrate the use of the library functions. The examples can be used as starting point for the own applications.
- Demo Applications
  This standalone radio applications are generic tools that can be used out of the box, like a wireless UART.
- Contributions
  Here is demontsrated, how embedded µracoli radio applications are interfaced with PC applications, e.g. with Wireshark, Arduino, or a wireless bootloader application.

## Getting Started

Before you can start, check if you have:

- the necesarry tools installed
  The GNU AVR tools (WinAVR) are used for compiling the firmware, avrdude/avarice (AVR-Studio) are used for flashing and debugging it. Additionally you probably want to install python (prior version 3.0!, e.g. 2.4, 2.5, 2.6) and pyserial in order to run and create small applications. If you want to build all libraries and applications from scratch, scons is needed. Builduing the documentation requires doxygen and graphviz.
- Two or more supported radio modules (see Boards and Modules).
- A AVR programmer for flashing the firmware (ISP, JTAG ICE, Dragon, ...) is available.

In the next step, download the binary package that supports your radio modules. The recent µracoli software packages you'll find at http://uracoli.nongnu.org/. Unpack the package and change into it.

I order to test your hard- and software environment, run a example application and verify if your boards are able to communicate wirelessly. How to do this is described in section Basic Setup Check.

Now it depends, if you want to run a preconfigured application (see Running Applications) or if you want to write your own application (see Writing Applications).