iTracker mbed os sample to show how to user the BLE API to expose sensor values (float and ints)

Committer:
knaresh89
Date:
Mon Feb 12 06:41:24 2018 +0000
Revision:
0:e4fe77192b73
iTracker mbed os sample to show how to user the BLE API to expose sensor values (float and ints)

Who changed what in which revision?

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