Tinyos Tutorial

Tinyos Tutorial

TinyOS Sensor Network Programming 1 Lecture Overview 1. Hardware Primer 2. Introduction to TinyOS. 3. Programming TinyOS. 4. Hands on section. 2 Sensor node(mote): 1. Node in a wireless sensor network 2. Capable of performing some processing 3. Gathers information from sensors 4. Communicates with other connected nodes in the network. 3 Architecture of sensor node: 4 Sensor node: Two main parts 1. Microcontroller 2. Transceiver IITH Mote specifications: http://www.iith.ac.in/~raji/downloads/IITH- mote-webpage.pdf 5 Basic controller architecture 6 Purpose of controller Functions of a mote: - Collecting data from various sensors - Process data and extract useful information - Transmitter controlling - Local storage maintenance 7 Purpose of controller Data collections: - Collecting data from various sensors, simultaneously. - Data collected from individual sensors should have to be maintained properly. - Sequential sampling (Reduces data rate). - Adaptive sampling where one can adapt sampling rate based on some classification. 8 Purpose of controller Data processing: - Some applications require on board processing of the collected data. - Most of the adaptive sampling algorithms use on board processing due to les delay. Transceiver control: - Controller can force transceiver into sleep mode when it is not needed. - Can wake up transmitter, when there is some data to be transmitted. 9 Purpose of controller Local storage maintenance: - If the gateway is not in the range, then the data can be stored on to the local storage. - When the gateway comes into vicinity, it can transmit the stored data and free up the local storage. Power gating: - Some of the functional blocks which are not necessary at present can be switched off to conserve power and can only be turned on when needed. 10 How to select a controller? Things to keep in mind - Power consumption - Processing required - Mode of communication (Baseband and RF processing) - Priority of application (Medical or Pollution data) 11 Simple controller example ATMEGA128 uC - 8 bit architecture - 8 channel ADC (10 bit resolution) - TWI - 2 UART interfaces - SPI interface (To interface additional memory) - Can run TinyOS & Contiki. 12 Transceiver AT86RF230: Low Power 2.4 GHz Transceiver for ZigBee, IEEE 802.15.4, 6LoWPAN, ISM Applications. 13 IITH Mote(sensor node): ADC/IO port User button UART Power jumper Microcontroller(ATMEGA1281V) UART port Transceiver(AT86RF230) Reset button Programming port Programming jumper IITH Mote specifications: http://www.iith.ac.in/~raji/downloads/IITH-mote-webpage.pdf 14 Hardware setup to programming UART port con. Programmer con. 15 UC Berkeley Family of Motes 16 Lecture Overview 1. Hardware Primer 2. Introduction to TinyOS 3. Programming TinyOS 4. Hands on section. 17 What is TinyOS? An operation system An open-source development environment Not an operation system for general purpose, it is designed for wireless embedded sensor network. Official website: http://www.tinyos.net/ Programming language: NesC (an extension of C) It features a component-based architecture. Supported platforms include Linux, Windows 2000/XP with Cygwin. 18 Now add this at the end of the file deb http://hinrg.cs.jhu.edu/tinyos hardy main Install TinyOS 1.Install Ubuntu 12.04/13.04/14.04 or any higher versions. 2. Enable root user. 3. Switch to root user to install TinyOS. 4. Open terminal (Ctrl+Alt+T). 19 Installation procedure: 1. gedit /etc/apt/source.list Add this at end of the file deb http://hinrg.cs.jhu.edu/tinyos hardy main 2. apt-get update 3. apt-get install tinyos-2.1.1 4. gedit ~/.bashrc Add this at end of file #Sourcing the tinyos environment variable setup script source /opt/tinyos- 2.1.1/tinyos.sh 20 Compile and install program Terminal view. compile install 21 Program installation view on terminal 22 Lecture Overview 1. Hardware Primer 2. Introduction to TinyOS 3. Programming TinyOS 4. Hands on section. 23 Program files Every application needs 4 files 1. Make file (Makefile) 2. Configuration file (SensorAppC.nc) 3. Module file (SensorC.nc) 4. Header file (Sensor.h) (if application needs) Sensor is application name. check example application in TinyOS cd /opt/tinyos-2.1.1/apps/ (path) cd /opt/tinyos-2.1.1/apps/tutorials (path) To develop application gedit or eclips IDE can be used https://www.youtube.com/watch?v=IO5spZwKwRQ 24 Editors for writing a application Gedit: Create a folder with your application name. Open terminal Cntrl+Alt+T Open a document by using gedit command And save with your application name. gedit documentname create 4 files with mentioned extension in one folder. 25 How to write a application Programming structure: 1. Search interfaces required for your application. 2. Search components which provides those interfaces. 3. Use commands and events which will be provided by interfaces to develop algorithms. 26 Components components layer interface1 interface2 interface3 Interface layer Algorithm layer events commands 27 How to write application Makefile: compiler can compile program. “COMPONENT= SensorAppC include $(MAKERULES)” 28 Configuration file(SensorAppC.nc): File contains components which provides and uses interfaces. 1. Initialization of components. 2. Wiring of components with interfaces. Components example: MainC, LedsC, TimerMilliC. http://www.tinyos.net/tinyos-2.1.0/doc/nesdoc/micaz/ 29 Module file(SensorC.nc): 1.File contains Interfaces initialization and using interfaces. 2.Interfaces contains commands and events. 3.Commands and events are used to develop algorithm. 30 Component Syntax - Configuration configuration SensorAppC { } implementation { components MainC, SensorC, LedsC; Component components new TimerMilliC() as Timer0; Selection components new TimerMilliC() as Timer1; components new TimerMilliC() as Timer2; SensorC -> SensorC.Boot; Wiring the SensorC.Timer0 -> Timer0; SensorC.Timer1 -> Timer1; Components SensorC.Timer2 -> Timer2; together SensorC.Leds -> LedsC; } 31 Module syntax: #include "Timer.h" interface X as Y module SensorC() { uses interface Timer<TMilli> as Timer0; uses interface Timer<TMilli> as Timer1; uses interface Timer<TMilli> as Timer2; uses interface Leds; uses interface Boot; } = interface X as X implementation { event void Boot.booted() { call Timer0.startPeriodic( 250 ); call Timer1.startPeriodic( 500 ); commands call Timer2.startPeriodic( 1000 ); } event void Timer0.fired() { call Leds.led0Toggle(); Event } event void Timer1.fired() { call Leds.led1Toggle(); } event void Timer2.fired() { call Leds.led2Toggle(); } } 32 Lecture Overview 1. Hardware Primer 2. Introduction to TinyOS 3. Programming TinyOS 4. Hands on section 33 Try new applications 34 Further Reading Go through the on-line tutorial: http://www.tinyos.net/tinyos-1.x/doc/tutorial/index.html Search the help archive: http://www.tinyos.net/search.html NesC language reference manual: http://www.tinyos.net/tinyos-1.x/doc/nesc/ref.pdf 35 Thank you. 36.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    36 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us