summaryrefslogtreecommitdiff
path: root/docs/library/zephyr.zsensor.rst
blob: 2a666bb82c1851e93214f4ff9a9450a251b283eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
.. currentmodule:: zsensor

:mod:`zsensor` --- Zephyr sensor bindings
=========================================

.. module:: zsensor
    :synopsis: zephyr sensor bindings

The ``zsensor`` module contains a class for using sensors with Zephyr.

.. _zsensor.Sensor:

class Sensor --- sensor control for the Zephyr port
---------------------------------------------------

Use this class to access data from sensors on your board.
See Zephyr documentation for sensor usage here: `Sensors
<https://docs.zephyrproject.org/latest/reference/peripherals/sensor.html?highlight=sensor#sensors>`_.

Sensors are defined in the Zephyr devicetree for each board. The quantities that a given sensor can
measure are called a sensor channels. Sensors can have multiple channels to represent different axes
of one property or different properties a sensor can measure. See `Channels`_ below for defined sensor
channels. Each channel may have multiple attributes that can be changed and/or queried.
See `Channel Attributes`_ below for defined sensor channel attributes.

Constructor
~~~~~~~~~~~

.. class:: Sensor(device_name)

    Device names are defined in the devicetree for your board.
    For example, the device name for the accelerometer in the FRDM-k64f board is "FXOS8700".

Methods
~~~~~~~

.. method:: Sensor.measure()

    Obtains a measurement sample from the sensor device using Zephyr sensor_sample_fetch and
    stores it in an internal driver buffer as a useful value, a pair of (integer part of value,
    fractional part of value in 1-millionths).
    Returns none if successful or OSError value if failure.

.. method:: Sensor.get_float(sensor_channel)

    Returns the value of the sensor measurement sample as a float.

.. method:: Sensor.get_micros(sensor_channel)

    Returns the value of the sensor measurement sample in millionths.
    (Ex. value of ``(1, 500000)`` returns as ``1500000``)

.. method:: Sensor.get_millis(sensor_channel)

    Returns the value of sensor measurement sample in thousandths.
    (Ex. value of ``(1, 500000)`` returns as ``1500``)

.. method:: Sensor.get_int(sensor_channel)

    Returns only the integer value of the measurement sample.
    (Ex. value of ``(1, 500000)`` returns as ``1``)

.. method:: Sensor.attr_set(sensor_channel, channel_attribute, val1, [val2])

    Set the given channel's attribute to the given value.
    ``val1`` may be a float, in which case ``val2`` is not given, or
    ``val1`` can be used for the value's
    integer part and ``val2`` for the value's fractional part in millionths.

    Returns ``None`` if successful, or raises ``OSError``.

.. method:: Sensor.attr_get_float(sensor_channel, channel_attribute)

   Returns the value of the sensor channel's attribute as a float.

   Many sensors do not support this or any other of the ``attr_get`` methods.

.. method:: Sensor.attr_get_micros(sensor_channel, channel_attribute)

    Returns the value of the sensor channel's attribute in millionths.
    (Ex. value of ``(1, 500000)`` returns as ``1500000``)

.. method:: Sensor.attr_get_millis(sensor_channel, channel_attribute)

    Returns the value of the sensor channel's attribute in thousandths.
    (Ex. value of ``(1, 500000)`` returns as ``1500``)

.. method:: Sensor.attr_get_int(sensor_channel, channel_attribute)

    Returns only the integer value of the channel's attribute.
    (Ex. value of ``(1, 500000)`` returns as ``1``)

Channels
~~~~~~~~

.. data:: ACCEL_X

    Acceleration on the X axis, in m/s^2.

.. data:: ACCEL_Y

    Acceleration on the Y axis, in m/s^2.

.. data:: ACCEL_Z

    Acceleration on the Z axis, in m/s^2.

.. data:: ACCEL_XYZ

    Pseudo-channel representing all three accelerometer axes.
    Used for :meth:`Sensor.attr_set` and the ``Sensor.attr_get_xxx()`` methods.

.. data:: GYRO_X

    Angular velocity around the X axis, in radians/s.

.. data:: GYRO_Y

    Angular velocity around the Y axis, in radians/s.

.. data:: GYRO_Z

    Angular velocity around the Z axis, in radians/s.

.. data:: GYRO_XYZ

    Pseudo-channel representing all three gyroscope axes.
    Used for :meth:`Sensor.attr_set` and the ``Sensor.attr_get_xxx()`` methods.

.. data:: MAGN_X

    Magnetic field on the X axis, in Gauss.

.. data:: MAGN_Y

    Magnetic field on the Y axis, in Gauss.

.. data:: MAGN_Z

    Magnetic field on the Z axis, in Gauss.

.. data:: DIE_TEMP

    Device die temperature in degrees Celsius.

.. data:: PRESS

    Pressure in kilopascal.

.. data:: PROX

    Proximity. Dimensionless. A value of 1 indicates that an object is close.

.. data:: HUMIDITY

    Humidity, in percent.

.. data:: LIGHT

    Illuminance in visible spectrum, in lux.

.. data:: ALTITUDE

    Altitude, in meters.

Channel Attributes
~~~~~~~~~~~~~~~~~~~

.. data:: ATTR_SAMPLING_FREQUENCY

    Sensor sampling frequency, i.e. how many times a second the sensor takes a measurement.

.. data:: ATTR_LOWER_THRESH

    Lower threshold for trigger.

.. data:: ATTR_UPPER_THRESH

    Upper threshold for trigger.

.. data:: ATTR_SLOPE_TH

    Threshold for any-motion (slope) trigger.

.. data:: ATTR_SLOPE_DUR

    Duration for which the slope values needs to be outside the threshold for the trigger to fire.

.. data:: ATTR_HYSTERESIS

.. data:: ATTR_OVERSAMPLING

    Oversampling factor.

.. data:: ATTR_FULL_SCALE

    Sensor range, in SI units.

.. data:: ATTR_OFFSET

    The sensor value returned will be altered by the amount indicated by offset: final_value = sensor_value + offset.

.. data:: ATTR_CALIB_TARGET

    Calibration target. This will be used by the internal chip's algorithms to calibrate itself on a certain axis, or all of them.

.. data:: ATTR_CONFIGURATION

    Configure the operating modes of a sensor.

.. data:: ATTR_CALIBRATION

    Set a calibration value needed by a sensor.

.. data:: ATTR_FEATURE_MASK

    Enable/disable sensor features.

.. data:: ATTR_ALERT

    Alert threshold or alert enable/disable.

.. data:: ATTR_FF_DUR

    Free-fall duration represented in milliseconds.
    If the sampling frequency is changed during runtime, this attribute should be set to adjust freefall duration to the new sampling frequency.

.. data:: ATTR_BATCH_DURATION

    Hardware batch duration in ticks.

.. data:: ATTR_GAIN

.. data:: ATTR_RESOLUTION