]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
Added README file explaining how the applicatin works, its organizational structure...
authorklueska <klueska>
Mon, 3 Mar 2008 03:11:27 +0000 (03:11 +0000)
committerklueska <klueska>
Mon, 3 Mar 2008 03:11:27 +0000 (03:11 +0000)
apps/tutorials/LowPowerSensing/README [new file with mode: 0644]
apps/tutorials/LowPowerSensing/Sampler/Makefile

diff --git a/apps/tutorials/LowPowerSensing/README b/apps/tutorials/LowPowerSensing/README
new file mode 100644 (file)
index 0000000..3b9f9ce
--- /dev/null
@@ -0,0 +1,206 @@
+========================================================================
+README:  LowPowerSensing Application
+Created: 2-March-2008
+Author:  Kevin Klues (klueska@cs.stanford.edu)
+========================================================================
+
+This README is intended to give an overview of the organizational
+structure of the LowPowerSensing Application application as well as 
+how to best utilize and customize some of the features it contains.  
+This document is divided into three sections.  The first section 
+contains an overview of how the application is organized and what it 
+is capable of doing.  The second section gives instructions on how to 
+install the application and interact with it from your PC.  The third
+section demonstrates how to customize the application to meet your 
+particualr needs.
+
+------------------------------------------------------------------------
+Organizational Structure and Overview
+------------------------------------------------------------------------
+
+The LowPowerSensing application is actually made up of three separate 
+mini-applications: one mote base station application, one mote sampling 
+application, and one java based application used to interact with the 
+mote applications.  The code for all three applications is divided up 
+among several directories:
+
+LowPowerSensing
+./Base
+./java
+./sampleLog
+./Sampler
+./tmote_onboard_sensors
+./universal_sensors
+
+The code specific to the base station aplication is contained under
+the 'Base' directory, and code for the sampling application is found 
+under 'Sampler'.  Code shared between them is found either in the top 
+level directory (LowPowerSensing) or in the subdirectories 'sampleLog',
+'tmote_onboard_sensors', and 'universal_sensors'.  Code for the java 
+application is found in the 'java' directory.
+
+Now the application itself is fairly straightforward.  The sampler
+application periodically takes some sensor readings, logs them to flash,
+and waits for requests from the base station to stream out the contents 
+or its flash over the radio.  Requests originate from end users of the 
+java application and simply get forwarded on to a mote running the 
+sampler application through the base station application.  Conversely,
+whenever the base station receives any packets from the sampler 
+application, it forwards these packets back to the java application for
+further processing.  Any number of motes running the sampler application 
+can exist simultaneously, and data can be requested from them using a 
+unique address assigned to each of them.  
+
+What sensors are sampled, the periodicity of sampling, and the check 
+interval for performing LowPowerListening the are all configurable 
+options that can easily be set by the user at compile time.
+
+This application is admittedly *not* robust in the sense that no reliable 
+transfer protocol is implemented for the exchange of data, data can only
+be retreived from one mote at a time, and there is no code anywhere to 
+recover from node failures at any point in time.  This application is 
+intended more for demonstration purposes, and as a starting point for 
+developers learning how to write low power sensornet applications. Enjoy!
+
+------------------------------------------------------------------------
+Installation Instructions and Running the Applications
+------------------------------------------------------------------------
+
+The default configuration of the LowPowerSensing applcation has been 
+designed to compile and run on any platform that supports 
+LowPowerListening and has a LogStorage component defined for its 
+external flash (i.e. telos, mica2, micaz, eyesIFX, etc.).  For purposes
+of illustration the instructions below are given for installation on the
+telosb platform, but should be applicable to other platforms as well.
+
+To run the LowPowerSensing application with its default configuration 
+do the following:
+
+1) Install the base station application on a mote and connect it to your
+PC via whatever serial interface you normally use to communicate with it.
+IMPORTANT: the base station mote must be installed with address 0
+
+cd Base
+make telosb install.0
+
+2) Install the sampler application on a mote.  You can install this 
+application on any number of motes, remembering to change the TOS_NODE_ID
+of each installation instance (in the example below I use 5, 10, and 20, 
+but any number is acceptable as long as its not 0).
+
+cd Sampler
+make telosb install.5
+make telosb install.10
+make telosb install.20
+
+3) Compile and run the java application.  You first need to start up an 
+instance of serial forwarder to do so.
+
+cd java
+make 
+java net.tinyos.sf.SerialForwarder -comm serial@/dev/ttyUSB0:telosb &
+java LowePowerSensingApp
+
+After starting the java application you will be presented with a user 
+prompt that looks like:
+
+Enter 's' to request samples
+>> 
+
+Just type 's' and hit enter in order to request samples from one of your 
+sampler motes.  After doing so, you will be presented with a prompt for 
+the address of the mote from which you are requesting data. You should 
+enter the TOS_NODE_ID of one of the motes you installed the sampler 
+application on before.  
+
+Enter Address:
+
+Once the address has been entered, a request message will be sent from 
+the java application through the base station mote and out to the 
+mote running the sampling application.  Once the sampler mote receives
+this request, it will start streaming back any data it has logged to flash
+since the last time a request was received.  If this is the first request
+message it is receiving, it will send all of the samples back that it has
+logged since the time it was booted up.  
+
+------------------------------------------------------------------------
+Changing the default Configuration
+------------------------------------------------------------------------
+
+The LowPowerSensing Application is set up by default to use a software
+based Sinusoidal generator sensor with a sampling period of 3s, and an 
+LPL check interval of 2s. The code for using this sensor can be found 
+in the 'universal_sensors' directory.  The pattern followed by the set 
+of files found in this directory can be used to setup other types of 
+sensors for sampling by the LowPowerSensing application.  If you take a 
+look in the 'tmote_onboard_sensors' directory you will see the exact 
+same set of files as you do in the 'universal_sensors' directory.  Of 
+course, these files are set up to use the set of sensors found onboard
+the tmote sky motes: namely a temperature sensor, a humidity sensor, a 
+photo active sensor, and a total solar sensor.  Because the files in 
+each directory are named identically, we can tell the LowPowerSensing 
+application which set of sensors to expect completely at compile time 
+by simply setting a few compiler flags.
+
+So if you happen to have a tmote laying around and you want to sample 
+its onboard sensors instead of using the default sinusoidal sensor you 
+need to do the following:
+
+Open up the makefiles for both the the Sampler and Base station 
+applications and change this line:
+
+CFLAGS += -I.. -I../sampleLog -I../universal_sensors
+to
+CFLAGS += -I.. -I../sampleLog -I../tmote_onboard_sensors
+
+Additionally, to allow the java application to recognize the new types 
+of sensors being sampled you need to change this line in the makefile 
+of the java directory:
+
+SENSOR_DIR = universal_sensors
+to 
+SENSOR_DIR = tmote_onboard_sensors
+
+And thats it.  You should now be sampling the oboard tmote sensors 
+instead of the sinusoaidal one.  If you wish to create a custom set of 
+sensors to sample using the LowPowerSensing application (such as those 
+from one of the mica sensorboards), just follow the pattern found in 
+the 'universal_sensors' and 'tmote_onboard_sensors' and then change 
+the compiler flags appropriately.
+
+Additionally, if you wish to change the LowPowerListening check 
+interval or the sampling period of the Sampler application you can 
+eitheropen up the 'LowPowerSensingConsants.h' file and directly change 
+them there, or pass new values for them at compile time through the 
+makefile (all values are in binary milliseconds i.e. 1s is specified as 
+1024 not 1000).
+
+To change them via the makefile add lines such as the following to
+your makefile in both the Base and Sampler application directories
+(its important that its in both makefiles for the LPL check interval,
+but only necessary in the Sampler application if you are only changing 
+the sampling period):
+
+PFLAGS += -DSAMPLING_INTERVAL=10000
+PFLAGS += -DLPL_INTERVAL=3000
+PFLAGS += -DSAMPLING_INTERVAL=10000  -DLPL_INTERVAL=3000
+
+And that should be it.  The rest of it involves sifting through the code
+and figuring out how the application does what it does.  If you have any 
+questions feel free to email me (Kevin) at klueska@cs.stanford.edu .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
index b77d82a6a5afbabaaac2e8449bc3630d24b97464..2fcb1d27ab0ffdce47fb48ba791eaae11e5940ef 100644 (file)
@@ -1,5 +1,5 @@
 COMPONENT=LowPowerSensingPeriodicSamplerAppC
-CFLAGS += -I.. -I../sampleLog -I../universal_sensors
+CFLAGS += -I.. -I../sampleLog -I../tmote_onboard_sensors
 CFLAGS += -DCC1K_DEFAULT_FREQ=CC1K_914_077_MHZ
 
 include $(MAKERULES)