2015-03-30 1 views
0

У меня проблема в contiki2.7 (я использую InstantContiki) с использованием движений Z1 и ZIGLET Z001 (температура & влажность). я попробовал код «тест-sht11.c» в примерах каталога/z1, чтобы получить температуру и влажность, но у меня есть неправильные результаты:Результаты неправильной температуры/влажности с использованием SHT11 ZIG001

Rime started with address 227.15 
MAC e3:0f:00:00:00:00:00:00 Contiki 2.7 started. Node id is set to 4067. 
CSMA ContikiMAC, channel check rate 8 Hz, radio channel 26 
Starting 'SHT11 test' 
Temperature: 615 degrees Celsius 
Rel. humidity: 2650% 
Temperature: 615 degrees Celsius 
Rel. humidity: 2650% 

Я видел, что драйверы I2C должны были быть отключены (http://sourceforge.net/p/contiki/mailman/message/29682840/), но он все еще не работает, у меня такие же результаты.

Код:


#include "contiki.h" 
#include "dev/sht11.h" 
#include <stdio.h> 

PROCESS(test_sht11_process, "SHT11 test"); 
AUTOSTART_PROCESSES(&test_sht11_process); 

PROCESS_THREAD(test_sht11_process, ev, data) 
{ 
    static struct etimer et; 
    static unsigned rh; 

    PROCESS_BEGIN(); 
    i2c_disable(); 
    sht11_init(); 

    for (etimer_set(&et, CLOCK_SECOND);; etimer_reset(&et)) { 
    PROCESS_YIELD(); 
    printf("Temperature: %u degrees Celsius\n", 
    (unsigned) (-39.60 + 0.01 * sht11_temp())); 
    rh = sht11_humidity(); 
    printf("Rel. humidity: %u%%\n", 
    (unsigned) (-4 + 0.0405*rh - 2.8e-6*(rh*rh))); 
    } 

    PROCESS_END(); 
} 

Я совершенно уверен, что это не аппаратная проблема (я пробовал с разными ZIG001 и различными Z1 пылинок). Спасибо за помощь, я в отчаянии ... Jibus.

ответ

0

Ответственное лицо в репозитории рекомендует использовать SHT25 вместо SHT11. Это новые файлы, которые могут не существовать, если вы застряли на старых contiki, так что вам придется их вручную. Если вы переключитесь на более новую версию, вы ее получите.

Если вы просто отбросьте файлы (.c и .h) рядом со старыми sht11 (без обновления contiki), не забудьте добавить sht25.c в Makefile (после sht11.c).

Чтобы использовать новую версию зондирования (см новых примеров для Z1):

PROCESS_THREAD(test_sht25_process, ev, data) 
{ 
    int16_t temperature, humidity; 

    PROCESS_BEGIN(); 
    SENSORS_ACTIVATE(sht25); 

    while(1) { 
    etimer_set(&et, CLOCK_SECOND); 
    PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); 
    temperature = sht25.value(SHT25_VAL_TEMP); 
    printf("Temperature %d.%d ºC\n", temperature/100, temperature % 100); 
    humidity = sht25.value(SHT25_VAL_HUM); 
    printf("Humidity %d.%d %RH\n", humidity/100, humidity % 100); 
    } 
    PROCESS_END(); 
} 

Также не используйте SHT11 для Z1 встроенного датчика температуры, как я, только для zigglet, который прилагается к он (не относится к ОП, но может помочь кому-то другому) ...