Pressure Sensor =============== .. contents:: :local: .. sidebar:: See also * :doc:`/trainings/material/soup/linux/hardware/i2c/topic` * `BMP280 `__ Goal ---- To implement safety use cases in our door project, we use a pressure sensor to detect whether an obstacle keeps the door from closing. There are a number of sensors out there. `BMP280 `__ comes with a nice breakout, it looks like a good candidate to try. How --- I2C devices speak a protocol over SDA/SCL which is documented in the device's data sheet. Lets use ``/dev/i2c-1`` (a software representation of Raspberry's I2C pins) to implement that protocol in userspace - inside a class which looks roughly like so ... .. code-block:: c++ class BMP280 { public: BMP280(const std::string& i2c_dev, unsigned address); }; * ``i2c_dev``: the I2C device node, e.g. ``/dev/i2c-1`` * ``address``: the device's address on the bus Testing ------- This is not easily unit tested. Write a test program in ``tests/`` that uses an object of type ``BMP280`` to communicate with the device.