Как считывать показатели температуры, влажности и освещенности с помощью contiki-OS?

Я хотел бы знать, как измерить температуру, свет и влажность с помощью программы contiki.

Я использую пылинку TelosB (небесную пылинку), поэтому эти три датчика встроены в саму пылинку.

PS: работаю на Contiki-OS 2.7


person ThunderPhoenix    schedule 10.01.2014    source источник


Ответы (1)


Чтобы использовать датчики света и температуры, вам необходимо добавить следующее:

#include "dev/sht11-sensor.h"
#include "dev/light-sensor.h"

Затем вы можете использовать следующие функции:

static int
get_light(void)
{
  return 10 * light_sensor.value(LIGHT_SENSOR_PHOTOSYNTHETIC) / 7;
}

static int
get_temp(void)
{
  return ((sht11_sensor.value(SHT11_SENSOR_TEMP) / 10) - 396) / 10;
}

Например, минимальное приложение для отображения значений этих датчиков будет таким:

#include "contiki.h"
#include "dev/sht11-sensor.h"
#include "dev/light-sensor.h"
#include "dev/leds.h"
#include <stdio.h>

//Declare the process
PROCESS(send_sensor_info_process, "Print the Sensors Information");

//Make the process start when the module is loaded
AUTOSTART_PROCESSES(&send_sensor_info_process);

/*---------------------------------------------------------------------------*/
static int
get_light(void)
{
  return 10 * light_sensor.value(LIGHT_SENSOR_PHOTOSYNTHETIC) / 7;
}
/*---------------------------------------------------------------------------*/
static int
get_temp(void)
{
  return ((sht11_sensor.value(SHT11_SENSOR_TEMP) / 10) - 396) / 10;
}
/*---------------------------------------------------------------------------*/

//Define the process code
PROCESS_THREAD(send_sensor_info_process, ev, data)
{
  PROCESS_BEGIN();
  SENSORS_ACTIVATE(light_sensor);
  SENSORS_ACTIVATE(sht11_sensor);
  printf("Light: %d \n", get_light());
  printf("Temperature: %d \n", get_temp());

  PROCESS_END();
}
person PabloCorbalan    schedule 05.02.2014
comment
Можете ли вы объяснить эти формулы: 10 * light_sensor.value(LIGHT_SENSOR_PHOTOSYNTHETIC) / 7 и ((sht11_sensor.value(SHT11_SENSOR_TEMP) / 10) - 396) / 10? - person ThunderPhoenix; 19.11.2014
comment
Вы можете получить эти формулы в таблицах данных датчиков, доступных в пыли TelosB. Например, датчик температуры — это датчик SHT11 Если вы проверите это, есть формула, которая объясняет, как вычислить температуру с помощью датчика, например: T = d1 + d2*sensorReading Вы можете получить значения d1 и d2 в таблице, доступной в таблице данных. Вы можете получить формулу датчика освещенности в соответствующей спецификации датчика. - person PabloCorbalan; 21.11.2014