zephyr rtos 동작환경에서 dht11 센서를 사용하는 sample 코드를 검색했는데 찾지 못해서 만들었습니다.
zephyr에는 dht드라이버가 포함되어 있는데 아래 경로에서 찾을 수 있습니다.
zephyr/drivers/sensor/aosong/dht
동작환경
zephyr OS : v4.0.99
nRF Connect SDK v3.0.1
동작로그
개발환경
nRF54L15-DK Board + DHT11 sensor
prj.conf
# 센서 API 활성화
CONFIG_SENSOR=y
# DHT 드라이버 활성화
CONFIG_DHT=y
# printk() 함수를 사용하기 위한 설정
CONFIG_PRINTK=y
# printk() 함수에서 부동소수점을 출력하기 위한 설정
CONFIG_CBPRINTF_FP_SUPPORT=y
app.overlay ( """""" dio-gpios 설정값 주의"""""")
/ {
/* 1. C 코드에서 'dht0'라는 별칭으로 쉽게 접근할 수 있도록 설정합니다. */
aliases {
dht0 = &dht;
};
/* 2. DHT 센서 장치를 정의합니다. */
dht: dht_sensor {
compatible = "aosong,dht";
dio-gpios = <&gpio1 11 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
status = "okay";
};
};
main.c
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <zephyr/sys/printk.h>
/* DeviceTree 별칭 'dht0'로부터 센서 디바이스 구조체를 가져옵니다. */
static const struct device *dht_dev = DEVICE_DT_GET(DT_ALIAS(dht0));
int main(void)
{
/* 1. 센서 장치가 준비되었는지 확인합니다. */
if (!device_is_ready(dht_dev)) {
printk("Error: DHT sensor is not ready.\n");
printk("Please check the overlay file and prj.conf settings.\n");
return 0;
}
printk("✅ Starting the DHT sensor example on the nRF54L15-DK\n");
printk("----------------------------------------\n");
while (1) {
/* 2. 센서로부터 새로운 데이터를 가져옵니다. */
if (sensor_sample_fetch(dht_dev) != 0) {
printk("Error: Failed to retrieve sensor data. Please check your connection.\n");
k_sleep(K_SECONDS(2));
continue;
}
/* 3. 필요한 데이터 채널(온도, 습도)의 값을 읽어옵니다. */
struct sensor_value temp, humidity;
sensor_channel_get(dht_dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
sensor_channel_get(dht_dev, SENSOR_CHAN_HUMIDITY, &humidity);
/* 4. 결과를 콘솔에 출력합니다. (sensor_value_to_double 함수 사용) */
printk("temperature: %.2f C\n", sensor_value_to_double(&temp));
printk("humidity: %.2f %%\n", sensor_value_to_double(&humidity));
printk("----------------------------------------\n");
/* DHT 센서는 응답이 느리므로 최소 2초 이상 대기합니다. */
k_sleep(K_SECONDS(3));
}
return 0;
}
빌드 후 flash하면 아래와 같이 동작하는 것을 확인할 수 있습니다.
동작영상
'nRF54L15' 카테고리의 다른 글
zephyr pms7003 driver 사용하기 (0) | 2025.09.22 |
---|