BLE sensor for temperature and humidity using Si7021 and photocell.

Dependencies:   BLE_API mbed nRF51822

Committer:
electronichamsters
Date:
Sun Sep 24 06:42:25 2017 +0000
Revision:
13:64601d952fe4
Parent:
12:45c2bb8231bf
tested. works

Who changed what in which revision?

UserRevisionLine numberNew contents of line
electronichamsters 12:45c2bb8231bf 1 #ifndef SI7021_H
electronichamsters 12:45c2bb8231bf 2 #define SI7021_H
electronichamsters 12:45c2bb8231bf 3
electronichamsters 12:45c2bb8231bf 4 #include "mbed.h"
electronichamsters 12:45c2bb8231bf 5
electronichamsters 12:45c2bb8231bf 6 /** Si7012 Read Temperature Command */
electronichamsters 12:45c2bb8231bf 7 #define READ_TEMP 0xE0 /* Read previous T data from RH measurement command*/
electronichamsters 12:45c2bb8231bf 8 /** Si7012 Read RH Command */
electronichamsters 12:45c2bb8231bf 9 #define READ_RH 0xE5 /* Perform RH (and T) measurement. */
electronichamsters 12:45c2bb8231bf 10
electronichamsters 12:45c2bb8231bf 11 /** Si7012 Read ID */
electronichamsters 12:45c2bb8231bf 12 #define READ_ID1_1 0xFA
electronichamsters 12:45c2bb8231bf 13 #define READ_ID1_2 0x0F
electronichamsters 12:45c2bb8231bf 14 #define READ_ID2_1 0xFC
electronichamsters 12:45c2bb8231bf 15 #define READ_ID2_2 0xC9
electronichamsters 12:45c2bb8231bf 16
electronichamsters 12:45c2bb8231bf 17 /** Si7012 Read Firmware Revision */
electronichamsters 12:45c2bb8231bf 18 #define READ_FWREV_1 0x84
electronichamsters 12:45c2bb8231bf 19 #define READ_FWREV_2 0xB8
electronichamsters 12:45c2bb8231bf 20
electronichamsters 12:45c2bb8231bf 21 /** I2C device address for Si7021 */
electronichamsters 12:45c2bb8231bf 22 #define ADDR 0x80
electronichamsters 12:45c2bb8231bf 23
electronichamsters 12:45c2bb8231bf 24 /** I2C device frequency for Si7021 */
electronichamsters 12:45c2bb8231bf 25 #define FREQ 100000
electronichamsters 12:45c2bb8231bf 26
electronichamsters 12:45c2bb8231bf 27 /** Device ID value for Si7021 */
electronichamsters 12:45c2bb8231bf 28 #define DEVICE_ID 0x15
electronichamsters 12:45c2bb8231bf 29
electronichamsters 12:45c2bb8231bf 30 class Si7021
electronichamsters 12:45c2bb8231bf 31 {
electronichamsters 12:45c2bb8231bf 32 public:
electronichamsters 12:45c2bb8231bf 33 Si7021(PinName sda, PinName scl);
electronichamsters 12:45c2bb8231bf 34 ~Si7021();
electronichamsters 12:45c2bb8231bf 35
electronichamsters 12:45c2bb8231bf 36 /*
electronichamsters 12:45c2bb8231bf 37 * Get last measured temperature data
electronichamsters 12:45c2bb8231bf 38 * return: int32_t = temperature in millidegrees centigrade
electronichamsters 12:45c2bb8231bf 39 */
electronichamsters 12:45c2bb8231bf 40 int32_t get_temperature();
electronichamsters 12:45c2bb8231bf 41
electronichamsters 12:45c2bb8231bf 42 /*
electronichamsters 12:45c2bb8231bf 43 * Get last measured relative humidity data
electronichamsters 12:45c2bb8231bf 44 * return: uint32_t = relative humidity value in milli-percent
electronichamsters 12:45c2bb8231bf 45 */
electronichamsters 12:45c2bb8231bf 46 uint32_t get_humidity();
electronichamsters 12:45c2bb8231bf 47
electronichamsters 12:45c2bb8231bf 48 /*
electronichamsters 12:45c2bb8231bf 49 * Perform measurement.
electronichamsters 12:45c2bb8231bf 50 * Asynchronous callback can be provided (type void (*)(void)).
electronichamsters 12:45c2bb8231bf 51 * return: 0 if successful, else one of the defined error codes.
electronichamsters 12:45c2bb8231bf 52 */
electronichamsters 12:45c2bb8231bf 53 bool measure();
electronichamsters 12:45c2bb8231bf 54
electronichamsters 12:45c2bb8231bf 55 /*
electronichamsters 12:45c2bb8231bf 56 * Check if the sensor is active and responding. This will update the get_active value.
electronichamsters 12:45c2bb8231bf 57 * Asynchronous callback can be provided (type void (*)(void)).
electronichamsters 12:45c2bb8231bf 58 * return: 0 if successful, else one of the defined error codes.
electronichamsters 12:45c2bb8231bf 59 */
electronichamsters 12:45c2bb8231bf 60 bool check();
electronichamsters 12:45c2bb8231bf 61
electronichamsters 12:45c2bb8231bf 62 private:
electronichamsters 12:45c2bb8231bf 63 I2C i2c;
electronichamsters 12:45c2bb8231bf 64
electronichamsters 12:45c2bb8231bf 65 uint8_t rx_buff[8];
electronichamsters 12:45c2bb8231bf 66 uint8_t tx_buff[2];
electronichamsters 12:45c2bb8231bf 67
electronichamsters 12:45c2bb8231bf 68 uint32_t rhData;
electronichamsters 12:45c2bb8231bf 69 int32_t tData;
electronichamsters 12:45c2bb8231bf 70 };
electronichamsters 12:45c2bb8231bf 71
electronichamsters 12:45c2bb8231bf 72 #endif