15
1 WiSe Lab @ WMU www.cs.wmich.edu/wise May 9, 2008 1 Introduction to Programming Motes Mohamed M. El Wakil http://mohamed.elwakil.net [email protected] Wireless Sensornets (WiSe) Laboratory Department of Computer Science Western Michigan University WiSe Lab @ WMU www.cs.wmich.edu/wise May 9, 2008 2 Agenda Wireless Sensor Nodes Components, Models Wireless Sensor Networks – Applications Handling a Sensor Node Antistatic strap, batteries, sensor boards, programming boards TinyOS NesC Application 1: Blink Application Syntax and semantics Compilation and burning – TOSSIM XBow MoteWorks XBow Programmers Notepad 2 Application 2: Sensing, and wire transmission application XBow MoteView Application 3: Sensing, and wireless transmission application – TOSBase WiSe Lab @ WMU www.cs.wmich.edu/wise May 9, 2008 3 A wireless sensor anatomy Small, but powerful computing devices. Processor, storage, wireless communication, and sensors. WiSe Lab @ WMU www.cs.wmich.edu/wise May 9, 2008 4 MicaZ (~2003) • Processor: Atmel 8MHz ATmega128L • Transceiver: IEEE 802.15.4 Program Memory: 128K bytes Measurements Flash 512K bytes • Power: 2 AA batteries • Sensors?

CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

1

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 1

Introduction to Programming Motes

Mohamed M. El Wakilhttp://mohamed.elwakil.net

[email protected]

Wireless Sensornets (WiSe) LaboratoryDepartment of Computer Science

Western Michigan University WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 2

Agenda• Wireless Sensor Nodes

– Components, Models• Wireless Sensor Networks

– Applications• Handling a Sensor Node

– Antistatic strap, batteries, sensor boards, programming boards• TinyOS• NesC

– Application 1: Blink Application– Syntax and semantics– Compilation and burning– TOSSIM

• XBow MoteWorks– XBow Programmers Notepad 2– Application 2: Sensing, and wire transmission application– XBow MoteView– Application 3: Sensing, and wireless transmission application– TOSBase

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 3

A wireless sensor anatomy

• Small, but powerful computing devices.

• Processor, storage, wireless communication, and sensors.

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 4

MicaZ (~2003)

• Processor:– Atmel 8MHz ATmega128L

• Transceiver:– IEEE 802.15.4

• Program Memory: – 128K bytes

• Measurements Flash – 512K bytes

• Power:– 2 AA batteries

• Sensors?

Page 2: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

2

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 5

MTS310 sensor board

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 6

Mica2Dot (~2001)

• Processor:– Atmel 16MHz ATmega128L

• Transceiver:– ISM Band with up to 38.4 KBaud

• Program Memory: – 128K bytes

• Measurements Flash – 512K bytes

• Sensors:– ?

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 7

Mica2Dot (~2001)

• Processor:– Atmel 16MHz ATmega128L

• Transceiver:– ISM Band with up to 38.4 KBaud

• Program Memory: – 128K bytes

• Measurements Flash – 512K bytes

• Sensors:– MTS510– Light, sound, and accelerometer.

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 8

Other Devices

• Mica2 (~2002)– 8MHz ATmega128– 4kB RAM, 128kB flash– 512kB external flash– 20kb/s 900MHz radio– 2 AA batteries

• Tmote Sky (2005)– 1MHz TI MSP430– 10kB RAM, 48kB flash– 512kB external flash– 250kb/s 802.15.4 radio– built-in sensors

Page 3: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

3

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 9

MicaZ: R&D Vs. OEM

0.95 x 0.95 in

24.13 x 24.13 mm

2.25 x 1.25 x 0.25 in58 x 32 x 7 mm

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 10

What can we do with them?

• Use them as to form a network of wireless sensor devices.

• Fine, but, what can we do with a network of wireless sensor devices?

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 11

Enemy Movement Tracking

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 12

Equipment Monitoring

Page 4: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

4

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 13

Volcano Monitoring

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 14

Lots of things!

• Borders monitoring• Buildings automation• Enemy movement tracking • Environment Observation

– North pole, Great Duck Island

• Radioactive, and poisonous materials detection

• Many others!

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 15

Wireless Sensor Network

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 16

MIT Technology Review – Feb. 03

WSN is one of the 10 Emerging Technologies That Will

Change the World

Page 5: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

5

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 17

Handling Sensor Nodes• Antistatic wrist strap to avoid electrostatic

discharges

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 18

Programming Boards (MB510)

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 19

Steps

• Installing Batteries• Connecting the mote to the programming

board• Connecting a sensor board• USB-2-Serial Converter

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 20

TinyOS

• Open source OS for sensor nodes (motes)• Runs a single application• Eases hardware access

– Timers, Radio, Sensors, Storage, ….

• Based on NesC programming language– A flavor of C language

Page 6: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

6

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 21

Installing TinyOS v1

• Sun JDK 1.4• JavaX COMM• Cygwin• TinyOS, NesC (RPMs)• ~700MB• Windows Installer:

– http://www.tinyos.net/windows-1_1_0.html• Manual Installation:

– http://www.tinyos.net/tinyos-1.x/doc/install.html• toscheck

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 22

NesC

• The NesC is a pre-processor• A NesC program is built out of components• A component behavior is described via

interfaces.• An interface may be provided by a component or

used by a component.• The provided interfaces are intended to

represent the functionality that the component provides to its user.

• The used interfaces represent the functionality the component needs to perform its job.

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 23

Components

C1

C2

C3

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 24

NesC

• Interfaces are bidirectional:– They specify a set of functions to be

implemented by the interface's provider (commands) and a set to be implemented by the interface's user (events).

– Component A calls command C that belongs to component B.

– When C is done, component B triggers event E that belongs to component A

Page 7: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

7

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 25

• Components:– TimerC, ClockC, HPLClock

Example

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 26

NesC Programs

• Three files:– Make file– Module file– Configuration file

• A configuration file– Wires components in the module file and

provides a control flow

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 27

Modulesmodule C1 {

uses interface triangle;

}

module C2 {

provides interface triangle out;

uses {

interface triangle in;

interface rectangle side; }

}

module C3 {

provides interface triangle;

provides interface rectangle;

}

C1

C2

C3

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 28

Configuration 1

configuration config1 { }implementation {uses c2, c3;c2.in�c3.trianglec2.side�c3.rectangle;}

• User � Provider

C2

C3

Page 8: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

8

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 29

Configuration 1

configuration config1 { }implementation {uses c1, c2, c3;c2.in�c3.trianglec2.side�c3.rectangle;c1.triangle�c2.out;}

• User � Provider

C1

C2

C3

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 30

Configuration 2

component config2 {provides interface triangle t1;

}implementation {

uses c2, c3;t1 -> c2.out;c2.in -> c3.triangle;c3 <- c2.side;

}

• User � Provider

C2

C3

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 31

Interface StdControl• StdControl is a common interface used to

initialize and start TinyOS components.• Every component should provide this interface.

interface StdControl{command result_t init();command result_t start();command result_t stop();}• Calling init() of a module must make it call init()

on modules it uses. • Same applies to start and stop

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 32

Blink Application

• Causes the red LED on the mote to turn on and off at 1Hz

• Three files:– BlinkM.nc : the Blink module component and

implementation of its interface.– Blink.nc : The configuration component– Makefile: Make file

Page 9: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

9

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 33

Makefile

• COMPONENT=Blink• include ../Makerules

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 34

BlinkM.nc• module BlinkM• { • provides {interface StdControl;}• uses {interface Timer; interface Leds;}• }

• implementation {• command result_t StdControl.init()

– {call Leds.init(); return SUCCESS;}• command result_t StdControl.start()

– {return call Timer.start(TIMER_REPEAT, 1000);}• command result_t StdControl.stop()

– {return call Timer.stop();}• event result_t Timer.fired()

– {call Leds.redToggle(); return SUCCESS;}• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 35

Blink.nc

• configuration Blink {}• implementation • { • components Main, BlinkM, TimerC, LedsC; • BlinkM.Leds -> LedsC.Leds;• BlinkM.Timer -> TimerC.Timer[unique("Timer")];•• Main.StdControl -> TimerC.StdControl;• Main.StdControl -> BlinkM.StdControl;• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 36

Compilation and Burning

• Compilation– make micaz– make mica2

• Burning– make micaz install,0 mib510,com4– make micaz reinstall,0 mib510,com4

• TOSSIM– make pc– main –t=sec nodescount– main –t=10 2

Page 10: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

10

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 37

MoteWorks

• A complete software development environment for wireless sensor network applications.

• Based on TinyOS• Includes:

– Cygwin/NesC– Programmers Notepad– MoteView

• http://www.xbow.com/Products/productdetails.aspx?sid=154

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 38

Programmers Notepad

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 39

Sensing, and wire transmission

• A program that samples the light sensor and transmits its reading to the PC via the serial cable

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 40

Sensing, and wire transmission• init()

– Initialize the LEDs and the light sensor– Declare and initialize data packet

• start()– Start timer

• event fired()– Toggle red LED– Activate light sensor

• event dataReady()– Add the light sensor reading to the data packet– Send the data packet

• Deactivate the light sensor– Toggle yellow LED

• event sendDone()– Toggle green LED

Page 11: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

11

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 41

Concurrency in NesC

• Two threads:– Tasks– Events handlers

• Tasks:– Deferred start– Run to completion– Can not preempt other tasks

• Events handlers– Triggered in response to a HW interrupt, or user-

event– Can preempt other events or tasks

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 42

Call Vs. Signal Vs. Post

• Call– Invokes a command immediately

• Signal– Invokes an event immediately

• Post– Invokes a task for later execution and returns

immediately

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 43

atomic keyword

• Atomic blocks are executed asynchronously.

• It must be used when accessing global variables

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 44

Provides/Uses

• includes sensorboardApp;• module MyAppM {• provides {interface StdControl; }• uses {• interface Timer;• interface Leds;• interface StdControl as PhotoControl;• interface ADC as Light;• interface SendMsg;• }• }

Page 12: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

12

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 45

Global Variables

• implementation {• bool sending_packet = FALSE;• TOS_Msg msg_buffer;• XDataMsg *pack;

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 46

init()

• command result_t StdControl.init() {• call Leds.init(); • call PhotoControl.init();

• atomic {• pack->xSensorHeader.board_id = SENSOR_BOARD_ID;• pack->xSensorHeader.packet_id = 2;• pack->xSensorHeader.node_id = TOS_LOCAL_ADDRESS;• pack->xSensorHeader.rsvd = 0;• }• return SUCCESS;• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 47

start()

• command result_t StdControl.start() {

• return call Timer.start(TIMER_REPEAT, 1000);

• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 48

stop()

• command result_t StdControl.stop() {• return call Timer.stop();• }

Page 13: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

13

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 49

fired()

• event result_t Timer.fired()• {• call Leds.redToggle();• call PhotoControl.start();• call Light.getData();• return SUCCESS;• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 50

dataReady()

• async event result_t Light.dataReady(uint16_t data)

• {• atomic pack->xData.datap1.light = data;

• post SendData(); • call Leds.yellowToggle();•• return SUCCESS;• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 51

SendData()

• void task SendData()• {• call PhotoControl.stop();• if (sending_packet) return;• atomic sending_packet = TRUE;•• if (call

SendMsg.send(TOS_UART_ADDR,sizeof(XDataMsg),&msg_buffer) != SUCCESS)

• sending_packet = FALSE;

• return;• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 52

sendDone()

• event result_t SendMsg.sendDone(TOS_MsgPtr msg, result_t success)

• {

• call Leds.greenToggle();

• atomic sending_packet = FALSE;

• return SUCCESS;

• }

Page 14: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

14

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 53

Receiving the data

• Mote View

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 54

Sensing, and wireless transmission• void task SendData()• {• call PhotoControl.stop();• if (sending_packet) return;• atomic sending_packet = TRUE;•• if (call

SendMsg.send(TOS_BCAST_ADDR,sizeof(XDataMsg),&msg_buffer) != SUCCESS)

• sending_packet = FALSE;

• return;• }

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 55

TOSBase

• Captures all the packets that it can hear and report it back to the UART

• Forwards all incoming UART messages out to the radio

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 56

Resources

• TinyOS Tutorials– http://www.tinyos.net/tinyos-1.x/doc/tutorial/

• NesC Reference– www.tinyos.net/api/nesc/doc/ref.pdf

• MoteWorks Getting Started Guide– http://www.xbow.com/Support/wUserManuals.aspx

Page 15: CS603 Intro to Programming Motes - wmich.edugupta/teaching/cs603... · 3 WiSe Lab @ WMU May 9, 2008 9 MicaZ: R&D Vs. OEM 0.95 x 0.95 in 24.13 x 24.13 mm 2.25 x 1.25 x 0.25 in 58 x

15

WiSe Lab @ WMUwww.cs.wmich.edu/wise

May 9, 2008 57

Questions