53 #define DHT11_SIGNAL_HIGH (1) 59 #define DHT11_SIGNAL_LOW (0) 65 #define DHT11_SIGNAL_START_PHASE1_DURATION (40) 71 #define DHT11_SIGNAL_START_PHASE2_DURATION (80) 77 #define DHT11_SIGNAL_START_PHASE3_DURATION (80) 83 #define DHT11_SIGNAL_RESPONSE_PHASE1_DURATION (50) 89 #define DHT11_SIGNAL_RESPONSE_BIT_0_DURATION (28) 95 #define DHT11_SIGNAL_RESPONSE_BIT_1_DURATION (70) 104 #define DHT11_TICKS_GUARD (1) 113 #define DHT11_US_GUARD RTIMERTICKS_TO_US(1) 119 #define DHT11_DATA_SAMPLES (40) 125 #define DHT11_DATA_SIZE (5) 131 #define DHT11_SAMPLING_RATE_SECONDS (1) 157 clock_time_t last_read;
172 dht11_humidity_integer(
void)
178 dht11_humidity_decimal(
void)
184 dht11_temperature_integer(
void)
190 dht11_temperature_decimal(
void)
196 dht_signal_duration(uint8_t active, uint32_t max_duration)
198 rtimer_clock_t elapsed_ticks;
199 rtimer_clock_t max_wait_ticks = US_TO_RTIMERTICKS(max_duration) +
DHT11_TICKS_GUARD;
207 if(elapsed_ticks > max_wait_ticks) {
211 return RTIMERTICKS_TO_US(elapsed_ticks);
215 dht_signal_transition(uint8_t active, uint32_t max_duration)
217 return dht_signal_duration(active, max_duration);
221 dht_verify_checksum(
void)
223 return ((
dht.data[0] +
dht.data[1] +
dht.data[2] +
dht.data[3]) & 0xFF) ==
dht.data[4];
240 gpio_hal_arch_pin_set_output(
dht.port,
dht.pin);
241 gpio_hal_arch_clear_pin(
dht.port,
dht.pin);
243 gpio_hal_arch_set_pin(
dht.port,
dht.pin);
244 gpio_hal_arch_pin_set_input(
dht.port,
dht.pin);
281 if(data_signal_duration[i] == -1) {
294 dht.data[j] = (
dht.data[j] << 1) | 1;
296 dht.data[j] =
dht.data[j] << 1;
306 if(!dht_verify_checksum()) {
318 return dht11_humidity_integer();
320 return dht11_humidity_decimal();
322 return dht11_temperature_integer();
324 return dht11_temperature_decimal();
339 configure(
int type,
int c)
348 case SENSORS_HW_INIT:
370 SENSORS_SENSOR(dht11_sensor,
"dht11", value, configure, status);
#define DHT11_DATA_SAMPLES
Number of data requests.
#define DHT11_STATUS_OKAY
DHT11 status okay.
#define DHT11_STATUS_TIMEOUT
DHT11 status timeout.
#define DHT11_VALUE_TEMPERATURE_INTEGER
DHT11 value type for temperature integer part.
#define DHT11_DATA_SIZE
Number of bytes in data.
#define DHT11_SIGNAL_START_PHASE2_DURATION
Duration of signal start phase 2 according to data sheet.
#define RTIMER_BUSYWAIT_UNTIL(cond, max_time)
Busy-wait until a condition for at most max_time.
DHT 11 sensor header file
uint8_t gpio_hal_port_t
A data structure that represents ports.
#define DHT11_CONFIGURE_GPIO_PORT
DHT11 Configuration type for GPIO Port.
unsigned long clock_seconds(void)
Get the current value of the platform seconds.
#define DHT11_CONFIGURE_GPIO_PIN
DHT11 Configuration type for GPIO Pin.
#define DHT11_US_GUARD
Sensor timer drift in us from rtimer.
#define DHT11_SAMPLING_RATE_SECONDS
DHT11 maximum sample rate is 1 Hz (1 second)
#define RTIMER_NOW()
Get the current clock time.
#define DHT11_SIGNAL_START_PHASE1_DURATION
Duration of signal start phase 1 according to data sheet.
#define DHT11_STATUS_CHECKSUM_FAILED
DHT11 status checksum failed.
#define DHT11_VALUE_TEMPERATURE_DECIMAL
DHT11 value type for temperature decimal part.
#define DHT11_SIGNAL_START_PHASE3_DURATION
Duration of signal start phase 3 according to data sheet.
#define DHT11_SIGNAL_HIGH
GPIO High.
#define DHT11_VALUE_HUMIDITY_DECIMAL
DHT11 value type for humidity decimal part.
uint8_t gpio_hal_pin_t
GPIO pin number representation.
#define DHT11_VALUE_HUMIDITY_INTEGER
DHT11 value type for humidity integer part.
static dht_t dht
DHT struct.
#define DHT11_SIGNAL_RESPONSE_BIT_0_DURATION
Duration of signal response if bit is set to 0, according to data sheet.
#define DHT11_SIGNAL_RESPONSE_PHASE1_DURATION
Duration of signal response phase 1 according to data sheet.
#define DHT11_SIGNAL_LOW
GPIO Low.
#define DHT11_TICKS_GUARD
Sensor timer drift in ticks.
static uint8_t dht_read(void)
#define DHT11_SIGNAL_RESPONSE_BIT_1_DURATION
Duration of signal response if bit is set to 1, according to data sheet.
Header file for the GPIO HAL.
#define RTIMER_BUSYWAIT(duration)
Busy-wait for a fixed duration.