HIH6130 Humidity/Temperature Sensor library

Dependents:   BLE_HIH6130_tinkering mbed_rifletool

Yet another HIH6130 library!

Honeywell HIH6130 is a relative humidity and temperature sensor which can be addressed through an I2C interface.

This library is based on the Honeywell documentation (/media/uploads/spiridion/i2c_comms_humidicon_tn_009061-2-en_final_07jun12.pdf) and as been tested on LPC1768 and FRM-KL25Z plateforms using the HIH6130 Sparkfun breakout (https://www.sparkfun.com/products/11295).

Committer:
spiridion
Date:
Sun Mar 09 16:53:11 2014 +0000
Revision:
0:ed5a906c8e44
first release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
spiridion 0:ed5a906c8e44 1 /*
spiridion 0:ed5a906c8e44 2 @file HIH6130.h
spiridion 0:ed5a906c8e44 3
spiridion 0:ed5a906c8e44 4 @brief Humidity and Temperature Sensor HIH6130 Breakout I2C Library
spiridion 0:ed5a906c8e44 5
spiridion 0:ed5a906c8e44 6 @Author spiridion (http://mailme.spiridion.net)
spiridion 0:ed5a906c8e44 7
spiridion 0:ed5a906c8e44 8 Tested on LPC1768 and FRDM-KL25Z
spiridion 0:ed5a906c8e44 9
spiridion 0:ed5a906c8e44 10 Copyright (c) 2014 spiridion
spiridion 0:ed5a906c8e44 11 Released under the MIT License (see http://mbed.org/license/mit)
spiridion 0:ed5a906c8e44 12
spiridion 0:ed5a906c8e44 13 Documentation regarding I2C communication with HIH6130 can be found here:
spiridion 0:ed5a906c8e44 14 http://mbed.org/media/uploads/spiridion/i2c_comms_humidicon_tn_009061-2-en_final_07jun12.pdf
spiridion 0:ed5a906c8e44 15 */
spiridion 0:ed5a906c8e44 16
spiridion 0:ed5a906c8e44 17 #ifndef HIH6130_H
spiridion 0:ed5a906c8e44 18 #define HIH6130_H
spiridion 0:ed5a906c8e44 19
spiridion 0:ed5a906c8e44 20 #include "mbed.h"
spiridion 0:ed5a906c8e44 21
spiridion 0:ed5a906c8e44 22 /// default address is not 0X27, as stated in the documentation, but 0x4E (0x27<<1 ?)
spiridion 0:ed5a906c8e44 23 #define HIH6130_I2C_ADDRESS 0x4E
spiridion 0:ed5a906c8e44 24
spiridion 0:ed5a906c8e44 25 #define UNSET_HI6130_HUMIDITY_VALUE -100.F
spiridion 0:ed5a906c8e44 26 #define UNSET_HI6130_TEMPERATURE_VALUE -273.15F // absolute zero
spiridion 0:ed5a906c8e44 27
spiridion 0:ed5a906c8e44 28 /** HIH6130 class.
spiridion 0:ed5a906c8e44 29 * Read humidity and temperature from the HIH6130 Breakout I2C sensor
spiridion 0:ed5a906c8e44 30 *
spiridion 0:ed5a906c8e44 31 * Example:
spiridion 0:ed5a906c8e44 32 * @code
spiridion 0:ed5a906c8e44 33 * #include "mbed.h"
spiridion 0:ed5a906c8e44 34 * #include "HIH6130.h"
spiridion 0:ed5a906c8e44 35 *
spiridion 0:ed5a906c8e44 36 * #if defined(TARGET_LPC1768)
spiridion 0:ed5a906c8e44 37 * #define PIN_SDA p9
spiridion 0:ed5a906c8e44 38 * #define PIN_SCL p10
spiridion 0:ed5a906c8e44 39 * #elif defined(TARGET_KL25Z) // watch out for the PTE0/PTE1 mixed up in the KL25Z doc
spiridion 0:ed5a906c8e44 40 * #define PIN_SDA PTE0
spiridion 0:ed5a906c8e44 41 * #define PIN_SCL PTE1
spiridion 0:ed5a906c8e44 42 * #endif
spiridion 0:ed5a906c8e44 43 *
spiridion 0:ed5a906c8e44 44 * int main()
spiridion 0:ed5a906c8e44 45 * {
spiridion 0:ed5a906c8e44 46 * HIH6130 hih6130(PIN_SDA, PIN_SCL);
spiridion 0:ed5a906c8e44 47 * float humidity, temperature;
spiridion 0:ed5a906c8e44 48 *
spiridion 0:ed5a906c8e44 49 * while(1) {
spiridion 0:ed5a906c8e44 50 * if (hih6130.ReadData(&humidity, &temperature))
spiridion 0:ed5a906c8e44 51 * printf("Humidity(%%RH): %8.2f \t Temperature(C): %8.2f\n", humidity, temperature);
spiridion 0:ed5a906c8e44 52 * wait(1);
spiridion 0:ed5a906c8e44 53 * }
spiridion 0:ed5a906c8e44 54 * }
spiridion 0:ed5a906c8e44 55 * @endcode
spiridion 0:ed5a906c8e44 56 */
spiridion 0:ed5a906c8e44 57 class HIH6130
spiridion 0:ed5a906c8e44 58 {
spiridion 0:ed5a906c8e44 59
spiridion 0:ed5a906c8e44 60 public:
spiridion 0:ed5a906c8e44 61
spiridion 0:ed5a906c8e44 62 /** Create a HIH6130 instance
spiridion 0:ed5a906c8e44 63 * @param sda pin
spiridion 0:ed5a906c8e44 64 * @param scl pin
spiridion 0:ed5a906c8e44 65 * @param address: I2C slave address
spiridion 0:ed5a906c8e44 66 */
spiridion 0:ed5a906c8e44 67 HIH6130(PinName sda, PinName scl, int address = HIH6130_I2C_ADDRESS);
spiridion 0:ed5a906c8e44 68
spiridion 0:ed5a906c8e44 69 /** Create a HIH6130 instance
spiridion 0:ed5a906c8e44 70 * @param i2c object
spiridion 0:ed5a906c8e44 71 * @param address: I2C slave address
spiridion 0:ed5a906c8e44 72 */
spiridion 0:ed5a906c8e44 73 HIH6130(I2C& i2c, int address = HIH6130_I2C_ADDRESS);
spiridion 0:ed5a906c8e44 74
spiridion 0:ed5a906c8e44 75 /** Read relative humidity and temperature from the HIH6130.
spiridion 0:ed5a906c8e44 76 * @param humidity (%RH)
spiridion 0:ed5a906c8e44 77 * @param temperature (C)
spiridion 0:ed5a906c8e44 78 * @returns
spiridion 0:ed5a906c8e44 79 * 1 on success,
spiridion 0:ed5a906c8e44 80 * 0 on error
spiridion 0:ed5a906c8e44 81 */
spiridion 0:ed5a906c8e44 82 int ReadData(float* pTemperature=NULL, float* pHumidity=NULL);
spiridion 0:ed5a906c8e44 83
spiridion 0:ed5a906c8e44 84 /** Get temperature from a previous measurement
spiridion 0:ed5a906c8e44 85 *
spiridion 0:ed5a906c8e44 86 * @returns
spiridion 0:ed5a906c8e44 87 * temperature (C)
spiridion 0:ed5a906c8e44 88 */
spiridion 0:ed5a906c8e44 89 float GetTemperature() {return m_temperature;}
spiridion 0:ed5a906c8e44 90
spiridion 0:ed5a906c8e44 91 /** Get relative humidity from a previous measurement
spiridion 0:ed5a906c8e44 92 *
spiridion 0:ed5a906c8e44 93 * @returns
spiridion 0:ed5a906c8e44 94 * relative humidity (%RH)
spiridion 0:ed5a906c8e44 95 */
spiridion 0:ed5a906c8e44 96 float GetHumidity() {return m_humidity;};
spiridion 0:ed5a906c8e44 97
spiridion 0:ed5a906c8e44 98 protected:
spiridion 0:ed5a906c8e44 99
spiridion 0:ed5a906c8e44 100 /** Measurement request and data fetch
spiridion 0:ed5a906c8e44 101 */
spiridion 0:ed5a906c8e44 102 int Measurement();
spiridion 0:ed5a906c8e44 103
spiridion 0:ed5a906c8e44 104 /** Calculation of the temperature from the digital output
spiridion 0:ed5a906c8e44 105 */
spiridion 0:ed5a906c8e44 106 float TrueTemperature();
spiridion 0:ed5a906c8e44 107
spiridion 0:ed5a906c8e44 108 /** Calculation of the humidity from the digital output
spiridion 0:ed5a906c8e44 109 */
spiridion 0:ed5a906c8e44 110 float TrueHumidity();
spiridion 0:ed5a906c8e44 111
spiridion 0:ed5a906c8e44 112 float m_temperature;
spiridion 0:ed5a906c8e44 113 float m_humidity;
spiridion 0:ed5a906c8e44 114
spiridion 0:ed5a906c8e44 115 I2C m_i2c;
spiridion 0:ed5a906c8e44 116 int m_addr;
spiridion 0:ed5a906c8e44 117
spiridion 0:ed5a906c8e44 118 char m_data[4];
spiridion 0:ed5a906c8e44 119 };
spiridion 0:ed5a906c8e44 120
spiridion 0:ed5a906c8e44 121 #endif