Skip to content

Commit

Permalink
Merge pull request letscontrolit#5080 from tonhuisman/feature/P172-ad…
Browse files Browse the repository at this point in the history
…d-bmp3xx-spi-mode

[P172] Add BMP3xx using SPI interface
  • Loading branch information
TD-er authored Jul 13, 2024
2 parents 2c80c74 + 1a79d27 commit c44c85c
Show file tree
Hide file tree
Showing 13 changed files with 307 additions and 1,512 deletions.
109 changes: 109 additions & 0 deletions docs/source/Plugin/P172.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
.. include:: ../Plugin/_plugin_substitutions_p17x.repl
.. _P172_page:

|P172_typename|
==================================================

|P172_shortinfo|

Plugin details
--------------

Type: |P172_type|

Name: |P172_name|

Status: |P172_status|

GitHub: |P172_github|_

Maintainer: |P172_maintainer|

Used libraries: |P172_usedlibraries|

Description
-----------

As a successor to their BMP280, Bosch made the BMP388 and the even higher resolution BMP390 temperature and air pressure sensors.

The main improvements compared to the BMP280 are:

* Lower power consumption
* Higher possible sample rate
* Option to store a number of samples in the 512 byte buffer to burst read
* Higher resolution
* Less noise


.. note:: This plugin uses the same code as plugin P154: :ref:`P154_page`, only connected via the SPI interface instead of I2C.

Configuration
-------------

.. image:: P172_DeviceConfiguration.png

* **Name**: Required by ESPEasy, must be unique among the list of available devices/tasks.

* **Enabled**: The device can be disabled or enabled. When not enabled the device should not use any resources.

Sensor
^^^^^^

* **GPIO -> CS**: Select the GPIO pin that is connected to the CS pin of the board.

Since this chip supports both SPI and I2C, the pin naming may be slightly confusing:

* SCL: SPI Clock (CLK)
* SDA: Data In (MOSI)
* SDO: Data Out (MISO)
* CS: Chip Select (CS).
* INT: Not used.

Device Settings
^^^^^^^^^^^^^^^

* **Detected Sensor Type**: Shows either ``BMP38x`` or ``BMP390`` or a number if an unknown sensor ID is detected. (Only shown when the plugin is active.)
* **Altitude**: Optionally set the offset from sea level (in meters) of the sensor to convert pressure measurements to sea level pressure.

Data Acquisition
^^^^^^^^^^^^^^^^

This group of settings, **Single event with all values** and **Send to Controller** settings are standard available configuration items. Send to Controller is only visible when one or more Controllers are configured.

* **Interval** By default, Interval will be set to 60 sec. The data will be collected and optionally sent to any configured controllers using this interval. If the Interval is set lower or equal than the required 10 * Heater time, the plugin will not start!

Values
^^^^^^

The plugin provides the ``Temperature`` and ``Pressure`` values. A formula can be set to recalculate. The number of decimals can be set as desired, and defaults to 2.

In selected builds, per Value are a **Stats** and **Hide** checkbox available, and a coordinate axis combo, that when Stats is checked, gathers the data and presents recent data in a graph, as described here: :ref:`Task Value Statistics: <Task Value Statistics>`

Currently the extra features offered by the sensore are not configurable in this plugin.
These may be added later.

The internal filtering in the sensor is fixed to these settings:

* Temperature: 8x oversampling
* Pressure: 4x oversampling
* IIR Filter Coefficient: 3
* Sample rate: 50 Hz


.. figure:: P154_HighResolutionTemperatureStatsExample.png
:alt: Example of the high temperature resolution of a BMP388
:width: 50 %
:align: center

Example of the high temperature resolution of a BMP388


Change log
----------

.. versionchanged:: 2.0
...

|added|
2024-07-13 Initial release of SPI version.

Binary file added docs/source/Plugin/P172_DeviceConfiguration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/source/Plugin/_Plugin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,7 @@ There are different released versions of ESP Easy:
":ref:`P168_page`","|P168_status|","P168"
":ref:`P169_page`","|P169_status|","P169"
":ref:`P170_page`","|P170_status|","P170"
":ref:`P172_page`","|P172_status|","P172"


.. include:: _plugin_sets_overview.repl
Expand Down
2 changes: 1 addition & 1 deletion docs/source/Plugin/_plugin_categories.repl
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
.. |Plugin_Energy_AC| replace:: :ref:`P076_page`, :ref:`P077_page`, :ref:`P078_page`, :ref:`P102_page`, :ref:`P108_page`
.. |Plugin_Energy_DC| replace:: :ref:`P027_page`, :ref:`P085_page`, :ref:`P115_page`, :ref:`P132_page`
.. |Plugin_Energy_Heat| replace:: :ref:`P088_page`, :ref:`P093_page`
.. |Plugin_Environment| replace:: :ref:`P004_page`, :ref:`P005_page`, :ref:`P006_page`, :ref:`P014_page`, :ref:`P024_page`, :ref:`P028_page`, :ref:`P030_page`, :ref:`P031_page`, :ref:`P032_page`, :ref:`P034_page`, :ref:`P039_page`, :ref:`P047_page`, :ref:`P051_page`, :ref:`P068_page`, :ref:`P069_page`, :ref:`P072_page`, :ref:`P103_page`, :ref:`P105_page`, :ref:`P106_page`, :ref:`P122_page`, :ref:`P150_page`, :ref:`P151_page`, :ref:`P153_page`, :ref:`P154_page`, :ref:`P167_page`, :ref:`P169_page`
.. |Plugin_Environment| replace:: :ref:`P004_page`, :ref:`P005_page`, :ref:`P006_page`, :ref:`P014_page`, :ref:`P024_page`, :ref:`P028_page`, :ref:`P030_page`, :ref:`P031_page`, :ref:`P032_page`, :ref:`P034_page`, :ref:`P039_page`, :ref:`P047_page`, :ref:`P051_page`, :ref:`P068_page`, :ref:`P069_page`, :ref:`P072_page`, :ref:`P103_page`, :ref:`P105_page`, :ref:`P106_page`, :ref:`P122_page`, :ref:`P150_page`, :ref:`P151_page`, :ref:`P153_page`, :ref:`P154_page`, :ref:`P167_page`, :ref:`P169_page`, :ref:`P172_page`
.. |Plugin_Extra_IO| replace:: :ref:`P011_page`, :ref:`P022_page`
.. |Plugin_Gases| replace:: :ref:`P049_page`, :ref:`P052_page`, :ref:`P083_page`, :ref:`P090_page`, :ref:`P117_page`, :ref:`P127_page`, :ref:`P135_page`, :ref:`P145_page`, :ref:`P147_page`, :ref:`P164_page`
.. |Plugin_Generic| replace:: :ref:`P003_page`, :ref:`P026_page`, :ref:`P033_page`, :ref:`P037_page`, :ref:`P081_page`, :ref:`P100_page`, :ref:`P146_page`
Expand Down
Loading

0 comments on commit c44c85c

Please sign in to comment.