From f0090825beb6da2b0fb11670327d98f1c337baac Mon Sep 17 00:00:00 2001 From: Alexander Wachter Date: Mon, 8 Oct 2018 16:27:33 +0200 Subject: [PATCH] samples: sensor: ens210: Implement sample for ens210 Sample code for AMS (Austria Micro Systems) ENS210 temperature and relative humidity sensor. Signed-off-by: Alexander Wachter --- samples/sensor/ens210/CMakeLists.txt | 11 +++++++++ samples/sensor/ens210/README.rst | 34 +++++++++++++++++++++++++++ samples/sensor/ens210/ens210.overlay | 15 ++++++++++++ samples/sensor/ens210/prj.conf | 3 +++ samples/sensor/ens210/sample.yaml | 8 +++++++ samples/sensor/ens210/src/main.c | 35 ++++++++++++++++++++++++++++ 6 files changed, 106 insertions(+) create mode 100644 samples/sensor/ens210/CMakeLists.txt create mode 100644 samples/sensor/ens210/README.rst create mode 100644 samples/sensor/ens210/ens210.overlay create mode 100644 samples/sensor/ens210/prj.conf create mode 100644 samples/sensor/ens210/sample.yaml create mode 100644 samples/sensor/ens210/src/main.c diff --git a/samples/sensor/ens210/CMakeLists.txt b/samples/sensor/ens210/CMakeLists.txt new file mode 100644 index 00000000000..4d9acb8693e --- /dev/null +++ b/samples/sensor/ens210/CMakeLists.txt @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.13.1) + +set(DTC_OVERLAY_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ens210.overlay") + +include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE) +project(ens210) + +FILE(GLOB app_sources src/*.c) +target_sources(app PRIVATE ${app_sources}) diff --git a/samples/sensor/ens210/README.rst b/samples/sensor/ens210/README.rst new file mode 100644 index 00000000000..206f06a62f9 --- /dev/null +++ b/samples/sensor/ens210/README.rst @@ -0,0 +1,34 @@ +.. _ens210: + +ams ens210 Relative Humidity and Temperature Sensor +################################################### + +Overview +******** + +This sample application demonstrates how to use the ams ens210 sensor to +measure the ambient temperature and relative humidity. + +Building and Running +******************** + +This sample application uses the sensor connected to the i2c stated in the +ens210.overlay file. +Flash the binary to a board of choice with a sensor connected. +For example build for a nucleo_f446re board: + +.. zephyr-app-commands:: + :zephyr-app: samples/sensors/ens210 + :board: nucleo_f446re + :goals: build flash + :compact: + +Sample Output +============= + +.. code-block:: console + + device is 0x20001174, name is ENS210 + Temperature: 28.28881222 C; Humidity: 25.25689737% + Temperature: 28.28912472 C; Humidity: 25.25799105% + Temperature: 28.28959347 C; Humidity: 25.25760045% diff --git a/samples/sensor/ens210/ens210.overlay b/samples/sensor/ens210/ens210.overlay new file mode 100644 index 00000000000..7bfce6b16a7 --- /dev/null +++ b/samples/sensor/ens210/ens210.overlay @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2018 Alexander Wachter + * SPDX-License-Identifier: Apache-2.0 + */ + +&arduino_i2c { + status = "ok"; + clock-frequency = ; + + ens210: ens210@43 { + compatible = "ams,ens210"; + reg = <0x43>; + label = "ENS210"; + }; +}; diff --git a/samples/sensor/ens210/prj.conf b/samples/sensor/ens210/prj.conf new file mode 100644 index 00000000000..6842996e3de --- /dev/null +++ b/samples/sensor/ens210/prj.conf @@ -0,0 +1,3 @@ +CONFIG_I2C=y +CONFIG_SENSOR=y +CONFIG_ENS210=y diff --git a/samples/sensor/ens210/sample.yaml b/samples/sensor/ens210/sample.yaml new file mode 100644 index 00000000000..a027787843a --- /dev/null +++ b/samples/sensor/ens210/sample.yaml @@ -0,0 +1,8 @@ +sample: + description: Demonstration of the AMS Temperature and Humidity Sensor driver + name: ENS210 sample +tests: + test: + harness: sensor + tags: samples + depends_on: i2c arduino_i2c diff --git a/samples/sensor/ens210/src/main.c b/samples/sensor/ens210/src/main.c new file mode 100644 index 00000000000..77e071eec80 --- /dev/null +++ b/samples/sensor/ens210/src/main.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018 Alexander Wachter + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +void main(void) +{ + struct device *dev; + struct sensor_value temperature, humidity; + + dev = device_get_binding(DT_AMS_ENS210_0_LABEL); + if (!dev) { + printk("Failed to get device binding"); + return; + } + + printk("device is %p, name is %s\n", dev, dev->config->name); + + while (1) { + sensor_sample_fetch(dev); + sensor_channel_get(dev, SENSOR_CHAN_HUMIDITY, &humidity); + sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temperature); + printk("Temperature: %d.%06d C; Humidity: %d.%06d%%\n", + temperature.val1, temperature.val2, + humidity.val1, humidity.val2); + + k_sleep(1000); + } +}