Difference between revisions of "Sensor acquisition"

From Contiki
Jump to: navigation, search
(Step 2)
Line 25: Line 25:
 
:: <code>Light=38.26 lux (94)</code>
 
:: <code>Light=38.26 lux (94)</code>
  
Values inside the round brackets (ex 6764, 2259 and 94) are the actual sensor values and the calibrated values can be obtained by performing calculations on these sensor values. You can find the calculations at the below link
+
Values inside the round brackets (ex 6764, 2259 and 94) are the actual sensor values and the calibrated values can be obtained by performing calculations on these sensor values. You can find the calculations at
 
http://tinyos.stanford.edu/tinyos-wiki/index.php/Boomerang_ADC_Example
 
http://tinyos.stanford.edu/tinyos-wiki/index.php/Boomerang_ADC_Example
 
  
 
=== Step 3 ===
 
=== Step 3 ===

Revision as of 10:42, 3 August 2014

Back to Contiki Tutorials

Introduction

This article is about the Sensor Acquisition Program, which is used to show the Temperature, Humidity and Light Intensity in the vicinity of Tmote Sky.

Sensor Acquisition Program on the Tmote Sky!

Step 1

Using the opened terminal window compile and upload the Sensor Acquisition program on the Tmote Sky.

make TARGET=sky savetarget (This save the target for any future compilations)
make sensor-acq.upload (This will upload the code on the Tmote Sky)
make login (This will enable us to view the output. If permission error occurs, use sudo command at the beginning)

Step 2

Press the reset button on the Tmote Sky. The following message will appear on the terminal window

Temperature=28.04 C (6764)
Humidity=73.20% (2259)
Light=38.26 lux (94)

Values inside the round brackets (ex 6764, 2259 and 94) are the actual sensor values and the calibrated values can be obtained by performing calculations on these sensor values. You can find the calculations at http://tinyos.stanford.edu/tinyos-wiki/index.php/Boomerang_ADC_Example

Step 3

Press Ctrl-C to quit.


Code

PROCESS(sensor_acq_process,"Sensor Acquisition"); AUTOSTART_PROCESSES(&sensor_acq_process);

PROCESS_THREAD(sensor_acq_process,ev,data) {

     static struct etimer et;
     static int val;
     static struct sensors_sensor *sensor;
     static float s = 0;
     static int dec;
     static float frac;
     PROCESS_BEGIN();
     printf("Starting Sensor Example.\n");


     while(1)
     {

etimer_set(&et, CLOCK_SECOND * 2); SENSORS_ACTIVATE(light_sensor);

     	   SENSORS_ACTIVATE(sht11_sensor);
       

PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));


          val = sht11_sensor.value(SHT11_SENSOR_TEMP);
     	   if(val != -1) 
     	   {

s= ((0.01*val) - 39.60);

     	  	dec = s;
     	  	frac = s - dec;
     	  	printf("\nTemperature=%d.%02u C (%d)\n", dec, (unsigned int)(frac * 100),val);               
          }

val=sht11_sensor.value(SHT11_SENSOR_HUMIDITY); if(val != -1)

     	   {

s= (((0.0405*val) - 4) + ((-2.8 * 0.000001)*(pow(val,2))));

     	  	dec = s;
     	  	frac = s - dec;
     	  	printf("Humidity=%d.%02u % (%d)\n", dec, (unsigned int)(frac * 100),val);               
          }
          val = light_sensor.value(LIGHT_SENSOR_TOTAL_SOLAR);
     	   if(val != -1) 
     	   {
     		s = (float)(val * 0.4071);
     	  	dec = s;
     	  	frac = s - dec;
     	  	printf("Light=%d.%02u lux (%d)\n", dec, (unsigned int)(frac * 100),val);               
          } 

etimer_reset(&et);

   	   SENSORS_DEACTIVATE(light_sensor);
   	   SENSORS_DEACTIVATE(sht11_sensor);
     } //end of while
   
     PROCESS_END();

}



Back to Contiki Tutorials