a library that provides a connection to a SHT21 temperature and humidity sensor Author: Graeme Coapes - Newcastle University, graeme.coapes@ncl.ac.uk Date: 29/11/12

Dependents:   test_ncleee WeatherStation Temp_hum PROJ ... more

Committer:
graeme88
Date:
Thu Nov 29 10:36:10 2012 +0000
Revision:
0:91e3e396bc6e
Child:
1:73fc5aef174e
initial release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
graeme88 0:91e3e396bc6e 1 /**
graeme88 0:91e3e396bc6e 2 * SHT21 - Temperature and Humidity Sensor by Sensiron
graeme88 0:91e3e396bc6e 3 *
graeme88 0:91e3e396bc6e 4 * This is a driver to connect to the sensor using an mbed device through an I2C interface
graeme88 0:91e3e396bc6e 5 *
graeme88 0:91e3e396bc6e 6 * Author: Graeme Coapes - Newcastle University
graeme88 0:91e3e396bc6e 7 * Email: graeme.coapes@ncl.ac.uk
graeme88 0:91e3e396bc6e 8 *
graeme88 0:91e3e396bc6e 9 * Date: 28/11/2012
graeme88 0:91e3e396bc6e 10 *
graeme88 0:91e3e396bc6e 11 */
graeme88 0:91e3e396bc6e 12
graeme88 0:91e3e396bc6e 13 #include "mbed.h"
graeme88 0:91e3e396bc6e 14
graeme88 0:91e3e396bc6e 15
graeme88 0:91e3e396bc6e 16 #ifndef SHT21_ncleee
graeme88 0:91e3e396bc6e 17 #define SHT21_ncleee
graeme88 0:91e3e396bc6e 18
graeme88 0:91e3e396bc6e 19 /*
graeme88 0:91e3e396bc6e 20 * Constants used in communication
graeme88 0:91e3e396bc6e 21 *
graeme88 0:91e3e396bc6e 22 * Refer to datasheet for full explanation
graeme88 0:91e3e396bc6e 23 */
graeme88 0:91e3e396bc6e 24
graeme88 0:91e3e396bc6e 25 //Sensor I2C address
graeme88 0:91e3e396bc6e 26 #define SHT_I2C_ADDR 0x80
graeme88 0:91e3e396bc6e 27
graeme88 0:91e3e396bc6e 28 //Commands...
graeme88 0:91e3e396bc6e 29 //Trigger Temp with hold master
graeme88 0:91e3e396bc6e 30 #define SHT_TRIG_TEMP_HOLD 0xE3
graeme88 0:91e3e396bc6e 31 //Trigger RH with hold master
graeme88 0:91e3e396bc6e 32 #define SHT_TRIG_RH_HOLD 0xE5
graeme88 0:91e3e396bc6e 33 //Trigger Temp with no hold master
graeme88 0:91e3e396bc6e 34 #define SHT_TRIG_TEMP 0xF3
graeme88 0:91e3e396bc6e 35 //Trigger RH with no hold master
graeme88 0:91e3e396bc6e 36 #define SHT_TRIG_RH 0xF5
graeme88 0:91e3e396bc6e 37 //Write to user register
graeme88 0:91e3e396bc6e 38 #define SHT_WRITE_REG 0xE6
graeme88 0:91e3e396bc6e 39 //Read from user register
graeme88 0:91e3e396bc6e 40 #define SHT_READ_REG 0xE7
graeme88 0:91e3e396bc6e 41 //Soft reset the sensor
graeme88 0:91e3e396bc6e 42 #define SHT_SOFT_RESET 0xFE
graeme88 0:91e3e396bc6e 43
graeme88 0:91e3e396bc6e 44 //User Register information
graeme88 0:91e3e396bc6e 45
graeme88 0:91e3e396bc6e 46 //Data precision settings
graeme88 0:91e3e396bc6e 47 //RH 12 T 14 - default
graeme88 0:91e3e396bc6e 48 #define SHT_PREC_1214 0x00
graeme88 0:91e3e396bc6e 49 //RH 8 T 10
graeme88 0:91e3e396bc6e 50 #define SHT_PREC_0812 0x01
graeme88 0:91e3e396bc6e 51 //RH 10 T 13
graeme88 0:91e3e396bc6e 52 #define SHT_PREC_1013 0x80
graeme88 0:91e3e396bc6e 53 //RH 11 T 11
graeme88 0:91e3e396bc6e 54 #define SHT_PREC_1111 0x81
graeme88 0:91e3e396bc6e 55
graeme88 0:91e3e396bc6e 56 //Battery status
graeme88 0:91e3e396bc6e 57 #define SHT_BATTERY_STAT 0x40
graeme88 0:91e3e396bc6e 58 //Enable on chip heater
graeme88 0:91e3e396bc6e 59 #define SHT_HEATER 0x04
graeme88 0:91e3e396bc6e 60 //Disable OTP reload
graeme88 0:91e3e396bc6e 61 #define SHT_DISABLE_OTP 0x02
graeme88 0:91e3e396bc6e 62
graeme88 0:91e3e396bc6e 63
graeme88 0:91e3e396bc6e 64 //Fail conditions on the I2C bus
graeme88 0:91e3e396bc6e 65 #define SHT_FAIL 1
graeme88 0:91e3e396bc6e 66 #define SHT_SUCCESS 0
graeme88 0:91e3e396bc6e 67
graeme88 0:91e3e396bc6e 68 //Author fail conditions
graeme88 0:91e3e396bc6e 69 //1, 2, 3 can be used because these are status bits
graeme88 0:91e3e396bc6e 70 //in the received measurement value
graeme88 0:91e3e396bc6e 71 #define SHT_GOOD 0xFFFC
graeme88 0:91e3e396bc6e 72 #define SHT_TRIG_FAIL 1
graeme88 0:91e3e396bc6e 73 #define SHT_READ_FAIL 2
graeme88 0:91e3e396bc6e 74
graeme88 0:91e3e396bc6e 75
graeme88 0:91e3e396bc6e 76 class SHT21
graeme88 0:91e3e396bc6e 77 {
graeme88 0:91e3e396bc6e 78 private:
graeme88 0:91e3e396bc6e 79 I2C *_i2c;
graeme88 0:91e3e396bc6e 80 int triggerTemp();
graeme88 0:91e3e396bc6e 81 int requestTemp();
graeme88 0:91e3e396bc6e 82 unsigned short temperature;
graeme88 0:91e3e396bc6e 83 int triggerRH();
graeme88 0:91e3e396bc6e 84 int requestRH();
graeme88 0:91e3e396bc6e 85 unsigned short humidity;
graeme88 0:91e3e396bc6e 86 int wr(int cmd);
graeme88 0:91e3e396bc6e 87
graeme88 0:91e3e396bc6e 88 public:
graeme88 0:91e3e396bc6e 89
graeme88 0:91e3e396bc6e 90 /** Constructor - create a connection to a SHT21 temperature and humidity sensor
graeme88 0:91e3e396bc6e 91 * through an I2C interface
graeme88 0:91e3e396bc6e 92 *
graeme88 0:91e3e396bc6e 93 * @param *i2c a pointer to the i2c interface that is used for communication
graeme88 0:91e3e396bc6e 94 */
graeme88 0:91e3e396bc6e 95 SHT21(I2C *i2c);
graeme88 0:91e3e396bc6e 96 int readTemp();
graeme88 0:91e3e396bc6e 97 int readHumidity();
graeme88 0:91e3e396bc6e 98 int reset();
graeme88 0:91e3e396bc6e 99 int setPrecision(char precision);
graeme88 0:91e3e396bc6e 100
graeme88 0:91e3e396bc6e 101 };
graeme88 0:91e3e396bc6e 102
graeme88 0:91e3e396bc6e 103
graeme88 0:91e3e396bc6e 104 #endif