WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 1
Feb 2007WSN Training: XMesh Enabled Sensor App 1
XMesh Enabling a Sensor Application
Objectives
How to enable the sensing application with the XMesh multi-hop
networking service
Compare MyApp from lesson_3 (RF version) with MyApp in
lesson_4
Using XServe to display the sensor data message on a PC
Review
MyApp from MoteWorks/apps/tutorial/lesson_4/
WSN Training: XMesh Enabled Sensor App 2 Feb 2007
Required Hardware and PC Setup
1. Two MICA Motes: MICA2 (MPR4x0) or MICAz (MPR2600) or OEM
editions of MICA2 or MICAz (on reference boards)
2. One sensor or data acquisition board: MTS300 or MTS310,
MDA100 is OK too
3. One gateway board: MIB510, MIB520, or MIB600 and the
associated hardware (cables, power supply) for each
4. A Windows PC with MoteWorks installed
The steps that you’ll take to build the application will be as follows:
Build (compile) and download the application
Take a closer look at the code and auxiliary files
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 2
WSN Training: XMesh Enabled Sensor App 3 Feb 2007
About MyApp
What does MyApp do?
In terms of sensing it is exactly same as MyApp in lesson_3
But how it sends the data back to the base station is different
Uses the XMesh multi-hop networking service
What am I expected to learn?
Gain more familiarity with the multihop routing service in
MoteWorks
Navigate to the directory
/MoteWorks/apps/tutorials/lesson_4
WSN Training: XMesh Enabled Sensor App 4 Feb 2007
MyApp – The App Folder Files
What’s new?
The sensorboardsApp.h file
What is it used for?
Define packet structure
Defines the XSensor header
Defines the sensor data payload
So you can understand what the bytes mean in a serial data stream
Defines the default values for critical fields
SENSOR_BOARD_ID
“Tags” the packet so XServe can identify what application sent it.
Sensor data packets are put into the proper database table or flat
file by XServe
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 3
Feb 2007WSN Training: XMesh Enabled Sensor App 5
Review: MyApp
Steps
Review the Makefile
Review the Makefile.component
Review the Top-level application configuration
Review the Top-level module
Compile app and flash Motes
View data via XServe
WSN Training: XMesh Enabled Sensor App 6 Feb 2007
MyApp – Makefile
include Makefile.component
include $(TOSROOT)/apps/MakeXbowlocal
GOALS += basic freq route
include $(MAKERULES)
Notes
1. The GOALS statement lists three services -- basic, freq,
and route
RF channel and the routing power mode not specified. Default
values in Makexbowlocal will be used.
Of course, the freq and route power can be set later during
compile time
2. The basic service
Will provide the standard Crossbow routing services
Common practice to have basic in all XMesh applications
Unlike freq and route there are no additional parameters
with this service.
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 4
WSN Training: XMesh Enabled Sensor App 7 Feb 2007
MyApp – Makefile.component
COMPONENT=MyApp
SENSORBOARD=mts310
Notes:
1. No changes over MyApp in lesson_3
Feb 2007WSN Training: XMesh Enabled Sensor App 8
Review: MyApp
Steps
Makefile
Makefile.component
Top-level application configuration
Top-level module
Compile app and flash Motes
View data via XServe
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 5
WSN Training: XMesh Enabled Sensor App 9 Feb 2007
/MoteWorks/apps/tutorials/lesson_4/MyApp.nc
Configuration
/*
* MyApp.nc*/
#include "appFeatures.h"includes sensorboardApp;
/*** This configuration shows how to use the Timer, LED, ADC and XMesh components.* Sensor messages are sent multi-hop over the RF radio** @author Crossbow Technology Inc.**/
configuration MyApp {}implementation {components Main, GenericCommPromiscuous as Comm, MULTIHOPROUTER, MyAppM, TimerC,
LedsC, Photo;
Main.StdControl -> TimerC.StdControl;Main.StdControl -> MyAppM.StdControl;Main.StdControl -> Comm.Control;Main.StdControl -> MULTIHOPROUTER.StdControl;
MyAppM.Timer -> TimerC.Timer[unique("Timer")];
MyAppM.Leds -> LedsC.Leds;MyAppM.PhotoControl -> Photo.PhotoStdControl;MyAppM.Light -> Photo.ExternalPhotoADC;
MyAppM.RouteControl -> MULTIHOPROUTER;MyAppM.Send -> MULTIHOPROUTER.MhopSend[AM_XMULTIHOP_MSG];
MULTIHOPROUTER.ReceiveMsg[AM_XMULTIHOP_MSG] ->Comm.ReceiveMsg[AM_XMULTIHOP_MSG]; }
WSN Training: XMesh Enabled Sensor App 10 Feb 2007
MyApp Lesson_3 and MyApp Lession_4
Configurations
New!
n1
Slide 10
n1 replace by new diagrams
njain, 2/12/2007
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 6
WSN Training: XMesh Enabled Sensor App 11 Feb 2007
Changes to MyApp in lesson_4 from MyApp in
lesson_3
MyApp (lesson_3)
GenericComm component
Function: Sends a message
either directly through the UART
port or over the radio
If by radio: broadcast or to a
specific node address.
MyApp (lesson_4)
GenericComm replaced by
GenericCommPromiscuous
Function: Adds special radio
“snooping” capabilities required
by XMesh.
MULTIHOPROUTER component
(appears as
XMeshBinaryRouter)
Function: XMesh networking
service for multi-hopping
GenericComm service is
eventually used, but special
routing information is added,
which this is hidden from the
application
Feb 2007WSN Training: XMesh Enabled Sensor App 12
Review: MyApp
Steps
Makefile
Makefile.component
Top-level application configuration
Top-level module
Compile app and flash Motes
View data via XServe
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 7
WSN Training: XMesh Enabled Sensor App 13 Feb 2007
Creating the Top Level Module
The application’s module is located in the
MoteWorks/apps/tutorials/lesson_4/MyAppM.nc file.
How does this module differ from MyAppM.nc of lesson_3?
Uses the MhopSend interface instead of the SendMsg interface.
XMesh implements the MhopSend interface which looks a little
bit different
WSN Training: XMesh Enabled Sensor App 14 Feb 2007
nesC Interface – MhopSend Usage Summary
interface MhopSend {
command result_t send(uint16_t dest, uint8_t mode,
TOS_MsgPtr msg,
uint16_t length);
command void* getBuffer(TOS_MsgPtr msg, uint16_t* length);
event result_t sendDone(TOS_MsgPtr msg, result_t success);
}
The MhopSend interface specifies two command
Send
Send a message buffer with a data payload of a specific length.
getBuffer
Given a TinyOS message buffer, provide a pointer to the data buffer within it
that an application can use as well as its length.
and one event
sendDone
Signaled when a packet sent with send() completes.
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 8
WSN Training: XMesh Enabled Sensor App 15 Feb 2007
MoteWorks/apps/tutorials/lesson_4/MyApp.nc –
Specification
#include "appFeatures.h"
includes MultiHop;
includes sensorboard;
/**
* This module shows how to use the Timer, LED, ADC and XMesh components.
* Sensor messages are sent multi-hop over the RF radio
*
* @author Crossbow Technology Inc.
**/
module MyAppM {
provides {
interface StdControl;
}
uses {
interface Timer;
interface Leds;
interface StdControl as PhotoControl;
interface ADC as Light;
interface MhopSend as Send;
interface RouteControl;
}
}
WSN Training: XMesh Enabled Sensor App 16 Feb 2007
MoteWorks/apps/tutorials/lesson_4/MyAppM.nc –
Implementation (1 of 4)
implementation {
bool sending_packet = FALSE;
TOS_Msg msg_buffer;
XDataMsg *pack;
/**
* Initialize the component.
* @return Always returns
SUCCESS
**/
command result_t StdControl.init() {
uint16_t len;
call Leds.init();
call PhotoControl.init();
// Initialize the message packet with default values
atomic {
pack = (XDataMsg*)call Send.getBuffer(&msg_buffer, &len);
pack->board_id = SENSOR_BOARD_ID;
pack->packet_id = 1;
pack->packet_id = pack->packet_id | 0x80;
}
return SUCCESS;
}
The first change we see is a different
message packet being initialized in the
StdControl.init function.
The first change we see is a different
message packet being initialized in the
StdControl.init function.
This module calls the XMesh
Send.getBuffer command
which returns a pointer to the
payload area in the msg_buffer.
This module calls the XMesh
Send.getBuffer command
which returns a pointer to the
payload area in the msg_buffer.
Initialize the standard MTS310
packet with the default values.
Initialize the standard MTS310
packet with the default values.
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 9
WSN Training: XMesh Enabled Sensor App 17 Feb 2007
MoteWorks/apps/tutorials/lesson_4/MyAppM.nc –
Implementation (2 of 4)
/**
* Start things up. This just sets the rate for the clock component.
* @return Always returns
SUCCESS
**/
command result_t StdControl.start() {
// Start a repeating timer that fires every 1000ms
return call Timer.start(TIMER_REPEAT, 1000);
}
/**
* Halt execution of the application.
* This just disables the clock component.
* @return Always returns
SUCCESS
**/
command result_t StdControl.stop() {
return call Timer.stop();
}
/**
* Toggle the red LED in response to the
Timer.fired
event.
* Start the light sensor control and sample the data
* @return Always returns
SUCCESS
**/
event result_t Timer.fired()
{
call Leds.redToggle();
call PhotoControl.start();
call Light.getData();
return SUCCESS;
}
This section of the source code was seen
before in MyAppM.nc of lesson_3.
This section of the source code was seen
before in MyAppM.nc of lesson_3.
WSN Training: XMesh Enabled Sensor App 18 Feb 2007
MoteWorks/apps/tutorials/lesson_4/MyAppM.nc –
Implementation (3 of 4)
/**
* Stop the Light sensor control, build the message packet and send
**/
void task SendData()
{
call PhotoControl.stop();
if (sending_packet) return;
atomic sending_packet = TRUE;
// send message to XMesh multi-hop networking layer
pack->parent = call RouteControl.getParent();
if (call Send.send(BASE_STATION_ADDRESS,MODE_UPSTREAM,&msg_buffer,sizeof(XDataMsg)) !=
SUCCESS)
sending_packet = FALSE;
return;
}
/**
* Light ADC data ready
* Toggle yellow LED to signal Light sensor data sampled
* @return Always returns
SUCCESS
**/
async event result_t Light.dataReady(uint16_t data) {
atomic pack->light = data;
atomic pack->vref = 417; // a dummy 3V reference voltage, 1252352/3000 = 417 call
Leds.yellowToggle();
return SUCCESS;
}
The next difference is that the packet
must include the current routing parent
• This is obtained by making a call to
the XMesh command
RouteControl.getParent
The next difference is that the packet
must include the current routing parent
• This is obtained by making a call to
the XMesh command
RouteControl.getParent
Then send the message using the
Send.send command specifying the
base station as the destination and the
transport mode as MODE_UPSTREAM.
Then send the message using the
Send.send command specifying the
base station as the destination and the
transport mode as MODE_UPSTREAM.
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 10
WSN Training: XMesh Enabled Sensor App 19 Feb 2007
MoteWorks/apps/tutorials/lesson_4/MyAppM.nc –
Implementation (4 of 4)
/**
* Sensor data has been sucessfully sent through XMesh
* Toggle green LED to signal message sent
*
* @return Always returns
SUCCESS
**/
event result_t Send.sendDone(TOS_MsgPtr msg, result_t success) {
call Leds.greenToggle();
atomic sending_packet = FALSE;
return SUCCESS;
}
}
As with the MyApp application of
lesson 3 we receive the
Send.sendDone event that signifies
the message has been sent.
As with the MyApp application of
lesson 3 we receive the
Send.sendDone event that signifies
the message has been sent.
LED color Indication
Red 1 second timer event fired
Yellow Light sensor has been sampled
Green Sensor message has been sent back to base
station
Feb 2007WSN Training: XMesh Enabled Sensor App 20
Review: MyApp
Steps
Makefile
Makefile.component
Top-level application configuration
Top-level module
Compile app and flash Motes
View data via XServe
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 11
WSN Training: XMesh Enabled Sensor App 21 Feb 2007
MyApp – Compile and Install Program
1. Plug the Mote that will function as the sensor node into the
programming board.
2. Click on the lesson_4/MyApp.nc file in Programmer’s Notepad 2
3. Select Tools > shell. The make commands will be one of the
following
MIB510:
make
install, mib510,com<#>
where <#> is the COM port your MIB510 is attached
MIB520:
make install, mib520,com<#>
where <#> is the first COM port your assigned by your PC to the USB port
MIB600:
make install, erpb,
Note: = 1, 2, 3, etc.
WSN Training: XMesh Enabled Sensor App 22 Feb 2007
MyApp – Compile and Install Program
4. Next, plug the Mote that will function as the base station into the
programming board.
This Mote will be programmed with a special application named
XMeshBase located in the /MoteWorks/apps/xmesh/XMeshBase
folder.
5. Select the XMeshBase.nc file in Programmer’s Notepad
6. Select Tools > shell
7. When prompted for parameters, type in the appropriate compile
and install command
LED color Indication
Red 1 second timer event fired
Yellow Light sensor has been sampled
Green Sensor message has been sent back to base station
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 12
WSN Training: XMesh Enabled Sensor App 23 Feb 2007
Viewing Sensor Data in XServe
The next step is to verify that messages are being received at the base station
by running the XServe application on your PC to display the packets.
8. Open a Cygwin command prompt by double clicking on the icon located on
your desktop.
9. At the command prompt type
MIB510
xserve –s=com<#>
where <#> is the serial port to which your MIB510
MIB520 users:
xserve –s=com<#+1>
where <#> is the first COM port assigned to the MIB520
MIB600 users:
xserve –i=
where is the IP address of the MIB600
You should see output similar to the following screen shot
WSN Training: XMesh Enabled Sensor App 24 Feb 2007
Sample XServe output
WSN Training: XMesh Enabled Sensor App Feb 2007
Crossbow Technology, Inc. Proprietary 13
Feb 2007WSN Training: XMesh Enabled Sensor App 25
Q & A: XMesh Enabling a Sensor App
Objectives
How to enable the sensing application with
the XMesh multi-hop networking service
Compare MyApp in lesson_3 to MyApp in
lesson_4
Using MoteView to display the sensor data
message on a PC
Lab
Review the Makefile
Review the Makefile.component
Review the Top-level application configuration
Review the Top-level module
Compile app and flash Motes
View data via XServe
<<
/ASCII85EncodePages false
/AllowTransparency false
/AutoPositionEPSFiles true
/AutoRotatePages /All
/Binding /Left
/CalGrayProfile (Dot Gain 20%)
/CalRGBProfile (sRGB IEC61966-2.1)
/CalCMYKProfile (U.S. Web Coated \050SWOP\051 v2)
/sRGBProfile (sRGB IEC61966-2.1)
/CannotEmbedFontPolicy /Warning
/CompatibilityLevel 1.4
/CompressObjects /Tags
/CompressPages true
/ConvertImagesToIndexed true
/PassThroughJPEGImages true
/CreateJDFFile false
/CreateJobTicket false
/DefaultRenderingIntent /Default
/DetectBlends true
/DetectCurves 0.0000
/ColorConversionStrategy /LeaveColorUnchanged
/DoThumbnails false
/EmbedAllFonts true
/EmbedOpenType false
/ParseICCProfilesInComments true
/EmbedJobOptions true
/DSCReportingLevel 0
/EmitDSCWarnings false
/EndPage -1
/ImageMemory 1048576
/LockDistillerParams false
/MaxSubsetPct 100
/Optimize true
/OPM 1
/ParseDSCComments true
/ParseDSCCommentsForDocInfo true
/PreserveCopyPage true
/PreserveDICMYKValues true
/PreserveEPSInfo true
/PreserveFlatness true
/PreserveHalftoneInfo false
/PreserveOPIComments false
/PreserveOverprintSettings true
/StartPage 1
/SubsetFonts true
/TransferFunctionInfo /Apply
/UCRandBGInfo /Preserve
/UsePrologue false
/ColorSettingsFile ()
/AlwaysEmbed [ true
]
/NeverEmbed [ true
]
/AntiAliasColorImages false
/CropColorImages true
/ColorImageMinResolution 300
/ColorImageMinResolutionPolicy /OK
/DownsampleColorImages true
/ColorImageDownsampleType /Bicubic
/ColorImageResolution 300
/ColorImageDepth -1
/ColorImageMinDownsampleDepth 1
/ColorImageDownsampleThreshold 1.50000
/EncodeColorImages true
/ColorImageFilter /DCTEncode
/AutoFilterColorImages true
/ColorImageAutoFilterStrategy /JPEG
/ColorACSImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/ColorImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000ColorACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000ColorImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasGrayImages false
/CropGrayImages true
/GrayImageMinResolution 300
/GrayImageMinResolutionPolicy /OK
/DownsampleGrayImages true
/GrayImageDownsampleType /Bicubic
/GrayImageResolution 300
/GrayImageDepth -1
/GrayImageMinDownsampleDepth 2
/GrayImageDownsampleThreshold 1.50000
/EncodeGrayImages true
/GrayImageFilter /DCTEncode
/AutoFilterGrayImages true
/GrayImageAutoFilterStrategy /JPEG
/GrayACSImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/GrayImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000GrayACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000GrayImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasMonoImages false
/CropMonoImages true
/MonoImageMinResolution 1200
/MonoImageMinResolutionPolicy /OK
/DownsampleMonoImages true
/MonoImageDownsampleType /Bicubic
/MonoImageResolution 1200
/MonoImageDepth -1
/MonoImageDownsampleThreshold 1.50000
/EncodeMonoImages true
/MonoImageFilter /CCITTFaxEncode
/MonoImageDict <<
/K -1
>>
/AllowPSXObjects false
/CheckCompliance [
/None
]
/PDFX1aCheck false
/PDFX3Check false
/PDFXCompliantPDFOnly false
/PDFXNoTrimBoxError true
/PDFXTrimBoxToMediaBoxOffset [
0.00000
0.00000
0.00000
0.00000
]
/PDFXSetBleedBoxToMediaBox true
/PDFXBleedBoxToTrimBoxOffset [
0.00000
0.00000
0.00000
0.00000
]
/PDFXOutputIntentProfile ()
/PDFXOutputConditionIdentifier ()
/PDFXOutputCondition ()
/PDFXRegistryName ()
/PDFXTrapped /False
/Description <<
/CHS
/CHT
/DAN
本文档为【01_XMesh_EnabledApps】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。