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).
HIH6130.h@0:ed5a906c8e44, 2014-03-09 (annotated)
- Committer:
- spiridion
- Date:
- Sun Mar 09 16:53:11 2014 +0000
- Revision:
- 0:ed5a906c8e44
first release
Who changed what in which revision?
User | Revision | Line number | New 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 |