Sample program on how to use the LIS2MDL sensor on the RAKWirelss iTracker module

Committer:
knaresh89
Date:
Mon Feb 12 05:04:29 2018 +0000
Revision:
0:a8bfd25ff975
Sample program on how to use the BME280 sensor on the RAKWirelss iTracker module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
knaresh89 0:a8bfd25ff975 1 /**
knaresh89 0:a8bfd25ff975 2 ******************************************************************************
knaresh89 0:a8bfd25ff975 3 * @file BME280_SPI.h
knaresh89 0:a8bfd25ff975 4 * @author Toyomasa Watarai
knaresh89 0:a8bfd25ff975 5 * @version V1.0.0
knaresh89 0:a8bfd25ff975 6 * @date 11 March 2017
knaresh89 0:a8bfd25ff975 7 * @brief This file contains the class of a BME280 Combined humidity and pressure sensor library with SPI interface
knaresh89 0:a8bfd25ff975 8 ******************************************************************************
knaresh89 0:a8bfd25ff975 9 * @attention
knaresh89 0:a8bfd25ff975 10 *
knaresh89 0:a8bfd25ff975 11 * Licensed under the Apache License, Version 2.0 (the "License");
knaresh89 0:a8bfd25ff975 12 * you may not use this file except in compliance with the License.
knaresh89 0:a8bfd25ff975 13 * You may obtain a copy of the License at
knaresh89 0:a8bfd25ff975 14 *
knaresh89 0:a8bfd25ff975 15 * http://www.apache.org/licenses/LICENSE-2.0
knaresh89 0:a8bfd25ff975 16 *
knaresh89 0:a8bfd25ff975 17 * Unless required by applicable law or agreed to in writing, software
knaresh89 0:a8bfd25ff975 18 * distributed under the License is distributed on an "AS IS" BASIS,
knaresh89 0:a8bfd25ff975 19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
knaresh89 0:a8bfd25ff975 20 * See the License for the specific language governing permissions and
knaresh89 0:a8bfd25ff975 21 * limitations under the License.
knaresh89 0:a8bfd25ff975 22 */
knaresh89 0:a8bfd25ff975 23
knaresh89 0:a8bfd25ff975 24 /**
knaresh89 0:a8bfd25ff975 25 * Library for "BME280 temperature, humidity and pressure sensor module" from Switch Science
knaresh89 0:a8bfd25ff975 26 * https://www.switch-science.com/catalog/2236/
knaresh89 0:a8bfd25ff975 27 *
knaresh89 0:a8bfd25ff975 28 * For more information about the BME280:
knaresh89 0:a8bfd25ff975 29 * https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf
knaresh89 0:a8bfd25ff975 30 */
knaresh89 0:a8bfd25ff975 31
knaresh89 0:a8bfd25ff975 32 #ifndef MBED_BME280_SPI_H
knaresh89 0:a8bfd25ff975 33 #define MBED_BME280_SPI_H
knaresh89 0:a8bfd25ff975 34
knaresh89 0:a8bfd25ff975 35 #include "mbed.h"
knaresh89 0:a8bfd25ff975 36
knaresh89 0:a8bfd25ff975 37 #ifdef _DEBUG
knaresh89 0:a8bfd25ff975 38 extern Serial pc;
knaresh89 0:a8bfd25ff975 39 #define DEBUG_PRINT(...) pc.printf(__VA_ARGS__)
knaresh89 0:a8bfd25ff975 40 #else
knaresh89 0:a8bfd25ff975 41 #define DEBUG_PRINT(...)
knaresh89 0:a8bfd25ff975 42 #endif
knaresh89 0:a8bfd25ff975 43
knaresh89 0:a8bfd25ff975 44 /** Interface for controlling BME280 Combined humidity and pressure sensor
knaresh89 0:a8bfd25ff975 45 *
knaresh89 0:a8bfd25ff975 46 * @code
knaresh89 0:a8bfd25ff975 47 * #include "mbed.h"
knaresh89 0:a8bfd25ff975 48 * #include "BME280_SPI.h"
knaresh89 0:a8bfd25ff975 49 *
knaresh89 0:a8bfd25ff975 50 * Serial pc(USBTX, USBRX);
knaresh89 0:a8bfd25ff975 51 * BME280_SPI sensor(D11, D12, D13, D9); // mosi, miso, sclk, cs
knaresh89 0:a8bfd25ff975 52 *
knaresh89 0:a8bfd25ff975 53 * int main() {
knaresh89 0:a8bfd25ff975 54 *
knaresh89 0:a8bfd25ff975 55 * while(1) {
knaresh89 0:a8bfd25ff975 56 * pc.printf("%2.2f degC, %04.2f hPa, %2.2f %%\n", sensor.getTemperature(), sensor.getPressure(), sensor.getHumidity());
knaresh89 0:a8bfd25ff975 57 * wait(1);
knaresh89 0:a8bfd25ff975 58 * }
knaresh89 0:a8bfd25ff975 59 * }
knaresh89 0:a8bfd25ff975 60 *
knaresh89 0:a8bfd25ff975 61 * @endcode
knaresh89 0:a8bfd25ff975 62 */
knaresh89 0:a8bfd25ff975 63
knaresh89 0:a8bfd25ff975 64 /** BME280_SPI class
knaresh89 0:a8bfd25ff975 65 *
knaresh89 0:a8bfd25ff975 66 * BME280_SPI: A library to correct environmental data using Boshe BME280 environmental sensor device
knaresh89 0:a8bfd25ff975 67 *
knaresh89 0:a8bfd25ff975 68 */
knaresh89 0:a8bfd25ff975 69 class BME280_SPI
knaresh89 0:a8bfd25ff975 70 {
knaresh89 0:a8bfd25ff975 71 public:
knaresh89 0:a8bfd25ff975 72
knaresh89 0:a8bfd25ff975 73 enum spi_mask {
knaresh89 0:a8bfd25ff975 74 BME280_SPI_MASK = 0x7F
knaresh89 0:a8bfd25ff975 75 };
knaresh89 0:a8bfd25ff975 76
knaresh89 0:a8bfd25ff975 77 /** Create a BME280 instance
knaresh89 0:a8bfd25ff975 78 * which is connected to specified SPI pins
knaresh89 0:a8bfd25ff975 79 *
knaresh89 0:a8bfd25ff975 80 * @param mosi SPI MOSI pin
knaresh89 0:a8bfd25ff975 81 * @param miso SPI MISO pin
knaresh89 0:a8bfd25ff975 82 * @param sclk SPI SCLK pin
knaresh89 0:a8bfd25ff975 83 * @param cs device CS pin
knaresh89 0:a8bfd25ff975 84 */
knaresh89 0:a8bfd25ff975 85 BME280_SPI(PinName mosi, PinName miso, PinName sclk, PinName cs);
knaresh89 0:a8bfd25ff975 86
knaresh89 0:a8bfd25ff975 87 /** Destructor of BME280_SPI
knaresh89 0:a8bfd25ff975 88 */
knaresh89 0:a8bfd25ff975 89 virtual ~BME280_SPI();
knaresh89 0:a8bfd25ff975 90
knaresh89 0:a8bfd25ff975 91 /** Initializa BME280 sensor
knaresh89 0:a8bfd25ff975 92 *
knaresh89 0:a8bfd25ff975 93 * Configure sensor setting and read parameters for calibration
knaresh89 0:a8bfd25ff975 94 *
knaresh89 0:a8bfd25ff975 95 */
knaresh89 0:a8bfd25ff975 96 void initialize(void);
knaresh89 0:a8bfd25ff975 97
knaresh89 0:a8bfd25ff975 98 /** Read the current temperature value (degree Celsius) from BME280 sensor
knaresh89 0:a8bfd25ff975 99 *
knaresh89 0:a8bfd25ff975 100 * @return Temperature value (degree Celsius)
knaresh89 0:a8bfd25ff975 101 */
knaresh89 0:a8bfd25ff975 102 float getTemperature(void);
knaresh89 0:a8bfd25ff975 103
knaresh89 0:a8bfd25ff975 104 /** Read the current pressure value (hectopascal) from BME280 sensor
knaresh89 0:a8bfd25ff975 105 *
knaresh89 0:a8bfd25ff975 106 * @return Pressure value (hectopascal)
knaresh89 0:a8bfd25ff975 107 */
knaresh89 0:a8bfd25ff975 108 float getPressure(void);
knaresh89 0:a8bfd25ff975 109
knaresh89 0:a8bfd25ff975 110 /** Read the current humidity value (humidity %) from BME280 sensor
knaresh89 0:a8bfd25ff975 111 *
knaresh89 0:a8bfd25ff975 112 * @return Humidity value (humidity %)
knaresh89 0:a8bfd25ff975 113 */
knaresh89 0:a8bfd25ff975 114 float getHumidity(void);
knaresh89 0:a8bfd25ff975 115
knaresh89 0:a8bfd25ff975 116 private:
knaresh89 0:a8bfd25ff975 117
knaresh89 0:a8bfd25ff975 118 SPI _spi;
knaresh89 0:a8bfd25ff975 119 DigitalOut _cs;
knaresh89 0:a8bfd25ff975 120 uint16_t dig_T1;
knaresh89 0:a8bfd25ff975 121 int16_t dig_T2, dig_T3;
knaresh89 0:a8bfd25ff975 122 uint16_t dig_P1;
knaresh89 0:a8bfd25ff975 123 int16_t dig_P2, dig_P3, dig_P4, dig_P5, dig_P6, dig_P7, dig_P8, dig_P9;
knaresh89 0:a8bfd25ff975 124 uint16_t dig_H1, dig_H3;
knaresh89 0:a8bfd25ff975 125 int16_t dig_H2, dig_H4, dig_H5, dig_H6;
knaresh89 0:a8bfd25ff975 126 int32_t t_fine;
knaresh89 0:a8bfd25ff975 127
knaresh89 0:a8bfd25ff975 128 };
knaresh89 0:a8bfd25ff975 129
knaresh89 0:a8bfd25ff975 130 #endif // MBED_BME280_SPI_H