From ac0cbe3c4ed367ed6e45cdd87f0df1bf85730cea Mon Sep 17 00:00:00 2001 From: Marek Matej Date: Tue, 6 Dec 2022 01:03:42 +0100 Subject: [PATCH] samples: esp32: temp: CPU die temperature sample Add die temperature measure sample for ESP32 targets esp32s2_saola, esp32c3_devkitm. Signed-off-by: Marek Matej --- .../sensor/esp32_temp_sensor/CMakeLists.txt | 8 ++++ samples/sensor/esp32_temp_sensor/README.rst | 31 ++++++++++++ .../boards/esp32c3_devkitm.conf | 1 + .../boards/esp32c3_devkitm.overlay | 11 +++++ .../boards/esp32s2_saola.conf | 1 + .../boards/esp32s2_saola.overlay | 11 +++++ samples/sensor/esp32_temp_sensor/prj.conf | 3 ++ samples/sensor/esp32_temp_sensor/sample.yaml | 13 +++++ samples/sensor/esp32_temp_sensor/src/main.c | 47 +++++++++++++++++++ 9 files changed, 126 insertions(+) create mode 100644 samples/sensor/esp32_temp_sensor/CMakeLists.txt create mode 100644 samples/sensor/esp32_temp_sensor/README.rst create mode 100644 samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.conf create mode 100644 samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.overlay create mode 100644 samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.conf create mode 100644 samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.overlay create mode 100644 samples/sensor/esp32_temp_sensor/prj.conf create mode 100644 samples/sensor/esp32_temp_sensor/sample.yaml create mode 100644 samples/sensor/esp32_temp_sensor/src/main.c diff --git a/samples/sensor/esp32_temp_sensor/CMakeLists.txt b/samples/sensor/esp32_temp_sensor/CMakeLists.txt new file mode 100644 index 00000000000..565056c91a3 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/CMakeLists.txt @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.20.0) +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project(esp32_temp_sensor) + +FILE(GLOB app_sources src/*.c) +target_sources(app PRIVATE ${app_sources}) diff --git a/samples/sensor/esp32_temp_sensor/README.rst b/samples/sensor/esp32_temp_sensor/README.rst new file mode 100644 index 00000000000..57f57737aa7 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/README.rst @@ -0,0 +1,31 @@ +.. _esp32_temp_sensor: + +ESP32 Temperature Sensor +######################## + +Overview +******** + +This sample periodically reads temperature from the ESP32-S2 and ESP32-C3 +Internal Temperature Sensor and display the results. + +Building and Running +******************** + +In order to run this sample, make sure to enable ``esp32_temp`` node in your +board DT file. + +.. zephyr-app-commands:: + :zephyr-app: samples/sensor/esp32_temp_sensor + :board: esp32s2_saola + :goals: build + :compact: + +Sample Output +============= + +.. code-block:: console + + Current temperature: 22.6 °C + Current temperature: 22.8 °C + Current temperature: 23.1 °C diff --git a/samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.conf b/samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.conf new file mode 100644 index 00000000000..13ed95d4291 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.conf @@ -0,0 +1 @@ +CONFIG_NEWLIB_LIBC=y diff --git a/samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.overlay b/samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.overlay new file mode 100644 index 00000000000..52a0900aa48 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/boards/esp32c3_devkitm.overlay @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Application overlay for creating temperature sensor device instance + */ + +&coretemp { + status = "okay"; +}; diff --git a/samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.conf b/samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.conf new file mode 100644 index 00000000000..13ed95d4291 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.conf @@ -0,0 +1 @@ +CONFIG_NEWLIB_LIBC=y diff --git a/samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.overlay b/samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.overlay new file mode 100644 index 00000000000..52a0900aa48 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/boards/esp32s2_saola.overlay @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Application overlay for creating temperature sensor device instance + */ + +&coretemp { + status = "okay"; +}; diff --git a/samples/sensor/esp32_temp_sensor/prj.conf b/samples/sensor/esp32_temp_sensor/prj.conf new file mode 100644 index 00000000000..96b6d9efbfb --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/prj.conf @@ -0,0 +1,3 @@ +CONFIG_SENSOR=y +CONFIG_PRINTK=y +CONFIG_CBPRINTF_FP_SUPPORT=y diff --git a/samples/sensor/esp32_temp_sensor/sample.yaml b/samples/sensor/esp32_temp_sensor/sample.yaml new file mode 100644 index 00000000000..01e15581864 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/sample.yaml @@ -0,0 +1,13 @@ +sample: + description: Usage of ESP32 temperature sensor + name: esp32_temp_sensor +tests: + sample.sensor.esp32_temp_sensor: + tags: sensors + tags: tests + filter: dt_compat_enabled("espressif,esp32-temp") + harness: console + harness_config: + type: one_line + regex: + - "Current temperature: [1-5][0-9].[0-9] °C" diff --git a/samples/sensor/esp32_temp_sensor/src/main.c b/samples/sensor/esp32_temp_sensor/src/main.c new file mode 100644 index 00000000000..6aef8ab92a2 --- /dev/null +++ b/samples/sensor/esp32_temp_sensor/src/main.c @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +#if CONFIG_SOC_ESP32 +#error "Temperature sensor is not supported on ESP32 soc" +#endif /* CONFIG_SOC_ESP32 */ + +void main(void) +{ + const struct device *const dev = DEVICE_DT_GET_ONE(espressif_esp32_temp); + struct sensor_value val; + int rc; + + if (!device_is_ready(dev)) { + printk("Temperature sensor is not ready\n"); + return; + } + + printk("ESP32 Die temperature sensor test\n"); + + while (1) { + k_sleep(K_MSEC(300)); + + /* fetch sensor samples */ + rc = sensor_sample_fetch(dev); + if (rc) { + printk("Failed to fetch sample (%d)\n", rc); + return; + } + + rc = sensor_channel_get(dev, SENSOR_CHAN_DIE_TEMP, &val); + if (rc) { + printk("Failed to get data (%d)\n", rc); + return; + } + + printk("Current temperature: %.1f °C\n", sensor_value_to_double(&val)); + } +}