Complete library for whole scientific

Dependencies:   BOX_1

Committer:
Alessio_Zaino
Date:
Mon Jun 10 13:11:48 2019 +0000
Revision:
1:dda01a024d6c
Parent:
0:f8a9cceb4186
j

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alessio_Zaino 0:f8a9cceb4186 1 /**
Alessio_Zaino 0:f8a9cceb4186 2 * Library for "BME280 temperature, humidity and pressure sensor module" from Switch Science
Alessio_Zaino 0:f8a9cceb4186 3 * https://www.switch-science.com/catalog/2236/
Alessio_Zaino 0:f8a9cceb4186 4 *
Alessio_Zaino 0:f8a9cceb4186 5 * For more information about the BME280:
Alessio_Zaino 0:f8a9cceb4186 6 * http://ae-bst.resource.bosch.com/media/products/dokumente/bme280/BST-BME280_DS001-10.pdf
Alessio_Zaino 0:f8a9cceb4186 7 */
Alessio_Zaino 0:f8a9cceb4186 8
Alessio_Zaino 0:f8a9cceb4186 9 #ifndef MBED_BME280_H
Alessio_Zaino 0:f8a9cceb4186 10 #define MBED_BME280_H
Alessio_Zaino 0:f8a9cceb4186 11
Alessio_Zaino 0:f8a9cceb4186 12 #include "mbed.h"
Alessio_Zaino 0:f8a9cceb4186 13
Alessio_Zaino 0:f8a9cceb4186 14 #define DEFAULT_SLAVE_ADDRESS (0x76 << 1)
Alessio_Zaino 0:f8a9cceb4186 15
Alessio_Zaino 0:f8a9cceb4186 16 #ifdef _DEBUG
Alessio_Zaino 0:f8a9cceb4186 17 //extern Serial pc;
Alessio_Zaino 0:f8a9cceb4186 18 #define DEBUG_PRINT(...) pc.printf(__VA_ARGS__)
Alessio_Zaino 0:f8a9cceb4186 19 #else
Alessio_Zaino 0:f8a9cceb4186 20 #define DEBUG_PRINT(...)
Alessio_Zaino 0:f8a9cceb4186 21 #endif
Alessio_Zaino 0:f8a9cceb4186 22
Alessio_Zaino 0:f8a9cceb4186 23 /** Interface for controlling BME280 Combined humidity and pressure sensor
Alessio_Zaino 0:f8a9cceb4186 24 *
Alessio_Zaino 0:f8a9cceb4186 25 * @code
Alessio_Zaino 0:f8a9cceb4186 26 * #include "mbed.h"
Alessio_Zaino 0:f8a9cceb4186 27 * #include "BME280.h"
Alessio_Zaino 0:f8a9cceb4186 28 *
Alessio_Zaino 0:f8a9cceb4186 29 * Serial pc(USBTX, USBRX);
Alessio_Zaino 0:f8a9cceb4186 30 *
Alessio_Zaino 0:f8a9cceb4186 31 * #if defined(TARGET_LPC1768)
Alessio_Zaino 0:f8a9cceb4186 32 * BME280 sensor(p28, p27);
Alessio_Zaino 0:f8a9cceb4186 33 * #else
Alessio_Zaino 0:f8a9cceb4186 34 * BME280 sensor(I2C_SDA, I2C_SCL);
Alessio_Zaino 0:f8a9cceb4186 35 * #endif
Alessio_Zaino 0:f8a9cceb4186 36 *
Alessio_Zaino 0:f8a9cceb4186 37 * int main() {
Alessio_Zaino 0:f8a9cceb4186 38 *
Alessio_Zaino 0:f8a9cceb4186 39 * while(1) {
Alessio_Zaino 0:f8a9cceb4186 40 * pc.printf("%2.2f degC, %04.2f hPa, %2.2f %%\n", sensor.getTemperature(), sensor.getPressure(), sensor.getHumidity());
Alessio_Zaino 0:f8a9cceb4186 41 * wait(1);
Alessio_Zaino 0:f8a9cceb4186 42 * }
Alessio_Zaino 0:f8a9cceb4186 43 * }
Alessio_Zaino 0:f8a9cceb4186 44 *
Alessio_Zaino 0:f8a9cceb4186 45 * @endcode
Alessio_Zaino 0:f8a9cceb4186 46 */
Alessio_Zaino 0:f8a9cceb4186 47
Alessio_Zaino 0:f8a9cceb4186 48 /** BME280 class
Alessio_Zaino 0:f8a9cceb4186 49 *
Alessio_Zaino 0:f8a9cceb4186 50 * BME280: A library to correct environmental data using Boshe BME280 environmental sensor device
Alessio_Zaino 0:f8a9cceb4186 51 *
Alessio_Zaino 0:f8a9cceb4186 52 */
Alessio_Zaino 0:f8a9cceb4186 53 class BME280
Alessio_Zaino 0:f8a9cceb4186 54 {
Alessio_Zaino 0:f8a9cceb4186 55 public:
Alessio_Zaino 0:f8a9cceb4186 56
Alessio_Zaino 0:f8a9cceb4186 57 /** Create a BME280 instance
Alessio_Zaino 0:f8a9cceb4186 58 * which is connected to specified I2C pins with specified address
Alessio_Zaino 0:f8a9cceb4186 59 *
Alessio_Zaino 0:f8a9cceb4186 60 * @param sda I2C-bus SDA pin
Alessio_Zaino 0:f8a9cceb4186 61 * @param scl I2C-bus SCL pin
Alessio_Zaino 0:f8a9cceb4186 62 * @param slave_adr (option) I2C-bus address (default: 0x76)
Alessio_Zaino 0:f8a9cceb4186 63 */
Alessio_Zaino 0:f8a9cceb4186 64 BME280(PinName sda, PinName sck, char slave_adr = DEFAULT_SLAVE_ADDRESS);
Alessio_Zaino 0:f8a9cceb4186 65
Alessio_Zaino 0:f8a9cceb4186 66 /** Create a BME280 instance
Alessio_Zaino 0:f8a9cceb4186 67 * which is connected to specified I2C pins with specified address
Alessio_Zaino 0:f8a9cceb4186 68 *
Alessio_Zaino 0:f8a9cceb4186 69 * @param i2c_obj I2C object (instance)
Alessio_Zaino 0:f8a9cceb4186 70 * @param slave_adr (option) I2C-bus address (default: 0x76)
Alessio_Zaino 0:f8a9cceb4186 71 */
Alessio_Zaino 0:f8a9cceb4186 72 BME280(I2C &i2c_obj, char slave_adr = DEFAULT_SLAVE_ADDRESS);
Alessio_Zaino 0:f8a9cceb4186 73
Alessio_Zaino 0:f8a9cceb4186 74 /** Destructor of BME280
Alessio_Zaino 0:f8a9cceb4186 75 */
Alessio_Zaino 0:f8a9cceb4186 76 virtual ~BME280();
Alessio_Zaino 0:f8a9cceb4186 77
Alessio_Zaino 0:f8a9cceb4186 78 /** Initializa BME280 sensor
Alessio_Zaino 0:f8a9cceb4186 79 *
Alessio_Zaino 0:f8a9cceb4186 80 * Configure sensor setting and read parameters for calibration
Alessio_Zaino 0:f8a9cceb4186 81 *
Alessio_Zaino 0:f8a9cceb4186 82 */
Alessio_Zaino 0:f8a9cceb4186 83 void initialize(void);
Alessio_Zaino 0:f8a9cceb4186 84
Alessio_Zaino 0:f8a9cceb4186 85 /** Read the current temperature value (degree Celsius) from BME280 sensor
Alessio_Zaino 0:f8a9cceb4186 86 *
Alessio_Zaino 0:f8a9cceb4186 87 */
Alessio_Zaino 0:f8a9cceb4186 88 float getTemperature(void);
Alessio_Zaino 0:f8a9cceb4186 89
Alessio_Zaino 0:f8a9cceb4186 90 /** Read the current pressure value (hectopascal)from BME280 sensor
Alessio_Zaino 0:f8a9cceb4186 91 *
Alessio_Zaino 0:f8a9cceb4186 92 */
Alessio_Zaino 0:f8a9cceb4186 93 float getPressure(void);
Alessio_Zaino 0:f8a9cceb4186 94
Alessio_Zaino 0:f8a9cceb4186 95 /** Read the current humidity value (humidity %) from BME280 sensor
Alessio_Zaino 0:f8a9cceb4186 96 *
Alessio_Zaino 0:f8a9cceb4186 97 */
Alessio_Zaino 0:f8a9cceb4186 98 float getHumidity(void);
Alessio_Zaino 0:f8a9cceb4186 99
Alessio_Zaino 0:f8a9cceb4186 100 private:
Alessio_Zaino 0:f8a9cceb4186 101
Alessio_Zaino 0:f8a9cceb4186 102 I2C *i2c_p;
Alessio_Zaino 0:f8a9cceb4186 103 I2C &i2c;
Alessio_Zaino 0:f8a9cceb4186 104 char address;
Alessio_Zaino 0:f8a9cceb4186 105 uint16_t dig_T1;
Alessio_Zaino 0:f8a9cceb4186 106 int16_t dig_T2, dig_T3;
Alessio_Zaino 0:f8a9cceb4186 107 uint16_t dig_P1;
Alessio_Zaino 0:f8a9cceb4186 108 int16_t dig_P2, dig_P3, dig_P4, dig_P5, dig_P6, dig_P7, dig_P8, dig_P9;
Alessio_Zaino 0:f8a9cceb4186 109 uint16_t dig_H1, dig_H3;
Alessio_Zaino 0:f8a9cceb4186 110 int16_t dig_H2, dig_H4, dig_H5, dig_H6;
Alessio_Zaino 0:f8a9cceb4186 111 int32_t t_fine;
Alessio_Zaino 0:f8a9cceb4186 112
Alessio_Zaino 0:f8a9cceb4186 113 };
Alessio_Zaino 0:f8a9cceb4186 114
Alessio_Zaino 0:f8a9cceb4186 115 #endif // MBED_BME280_H