BLE sensor for temperature and humidity using Si7021 and photocell.
Dependencies: BLE_API mbed nRF51822
Si7021.h@13:64601d952fe4, 2017-09-24 (annotated)
- 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?
User | Revision | Line number | New 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 |