AmbiMate Sensor Module
AMBIMATE_MS4.h@0:8d9328d3ff35, 2021-06-03 (annotated)
- Committer:
- mcm
- Date:
- Thu Jun 03 17:02:20 2021 +0000
- Revision:
- 0:8d9328d3ff35
- Child:
- 1:f0711d344f71
The driver for AMBIMATE MS4 has been started, both header file and function file were created, this driver is still in progress.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mcm | 0:8d9328d3ff35 | 1 | /** |
mcm | 0:8d9328d3ff35 | 2 | * @brief AMBIMATE_MS4.h |
mcm | 0:8d9328d3ff35 | 3 | * @details AmbiMate Sensor Module. |
mcm | 0:8d9328d3ff35 | 4 | * Header file. |
mcm | 0:8d9328d3ff35 | 5 | * |
mcm | 0:8d9328d3ff35 | 6 | * |
mcm | 0:8d9328d3ff35 | 7 | * @return NA |
mcm | 0:8d9328d3ff35 | 8 | * |
mcm | 0:8d9328d3ff35 | 9 | * @author Manuel Caballero |
mcm | 0:8d9328d3ff35 | 10 | * @date 03/June/2021 |
mcm | 0:8d9328d3ff35 | 11 | * @version 03/June/2021 The ORIGIN |
mcm | 0:8d9328d3ff35 | 12 | * @pre N/A. |
mcm | 0:8d9328d3ff35 | 13 | * @warning N/A |
mcm | 0:8d9328d3ff35 | 14 | * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). |
mcm | 0:8d9328d3ff35 | 15 | */ |
mcm | 0:8d9328d3ff35 | 16 | #ifndef AMBIMATE_MS4_H |
mcm | 0:8d9328d3ff35 | 17 | #define AMBIMATE_MS4_H |
mcm | 0:8d9328d3ff35 | 18 | |
mcm | 0:8d9328d3ff35 | 19 | #include "mbed.h" |
mcm | 0:8d9328d3ff35 | 20 | |
mcm | 0:8d9328d3ff35 | 21 | |
mcm | 0:8d9328d3ff35 | 22 | /** |
mcm | 0:8d9328d3ff35 | 23 | Example: |
mcm | 0:8d9328d3ff35 | 24 | @code |
mcm | 0:8d9328d3ff35 | 25 | |
mcm | 0:8d9328d3ff35 | 26 | @endcode |
mcm | 0:8d9328d3ff35 | 27 | */ |
mcm | 0:8d9328d3ff35 | 28 | |
mcm | 0:8d9328d3ff35 | 29 | |
mcm | 0:8d9328d3ff35 | 30 | /*! |
mcm | 0:8d9328d3ff35 | 31 | Library for the AMBIMATE_MS4 Digital humidity sensor with temperature output. |
mcm | 0:8d9328d3ff35 | 32 | */ |
mcm | 0:8d9328d3ff35 | 33 | class AMBIMATE_MS4 |
mcm | 0:8d9328d3ff35 | 34 | { |
mcm | 0:8d9328d3ff35 | 35 | public: |
mcm | 0:8d9328d3ff35 | 36 | /** |
mcm | 0:8d9328d3ff35 | 37 | * @brief DEFAULT ADDRESSES |
mcm | 0:8d9328d3ff35 | 38 | */ |
mcm | 0:8d9328d3ff35 | 39 | typedef enum { |
mcm | 0:8d9328d3ff35 | 40 | AMBIMATE_MS4_ADDRESS = ( 0x40 << 1 ) |
mcm | 0:8d9328d3ff35 | 41 | } AMBIMATE_MS4_address_t; |
mcm | 0:8d9328d3ff35 | 42 | |
mcm | 0:8d9328d3ff35 | 43 | |
mcm | 0:8d9328d3ff35 | 44 | /** |
mcm | 0:8d9328d3ff35 | 45 | * @brief COMMAND REGISTERS |
mcm | 0:8d9328d3ff35 | 46 | */ |
mcm | 0:8d9328d3ff35 | 47 | #define AMBIMATE_MS4_TRIGGER_TEMPERATURE_MEASUREMENT_HOLD_MASTER 0xE3 |
mcm | 0:8d9328d3ff35 | 48 | #define AMBIMATE_MS4_TRIGGER_HUMIDITY_MEASUREMENT_HOLD_MASTER 0xE5 |
mcm | 0:8d9328d3ff35 | 49 | #define AMBIMATE_MS4_TRIGGER_TEMPERATURE_MEASUREMENT_NO_HOLD_MASTER 0xF3 |
mcm | 0:8d9328d3ff35 | 50 | #define AMBIMATE_MS4_TRIGGER_HUMIDITY_MEASUREMENT_NO_HOLD_MASTER 0xF5 |
mcm | 0:8d9328d3ff35 | 51 | #define AMBIMATE_MS4_WRITE_REGISTER 0xE6 |
mcm | 0:8d9328d3ff35 | 52 | #define AMBIMATE_MS4_READ_REGISTER 0xE7 |
mcm | 0:8d9328d3ff35 | 53 | #define AMBIMATE_MS4_SOFT_RESET 0xFE |
mcm | 0:8d9328d3ff35 | 54 | |
mcm | 0:8d9328d3ff35 | 55 | |
mcm | 0:8d9328d3ff35 | 56 | /* User Register */ |
mcm | 0:8d9328d3ff35 | 57 | /** |
mcm | 0:8d9328d3ff35 | 58 | * @brief RESOLUTION |
mcm | 0:8d9328d3ff35 | 59 | */ |
mcm | 0:8d9328d3ff35 | 60 | typedef enum { |
mcm | 0:8d9328d3ff35 | 61 | RESOLUTION_12RH_14TEMP = 0, /*!< Resolution: RH 12-bits, T 14-bits */ |
mcm | 0:8d9328d3ff35 | 62 | RESOLUTION_8RH_12TEMP = 1, /*!< Resolution: RH 8-bits, T 12-bits */ |
mcm | 0:8d9328d3ff35 | 63 | RESOLUTION_10RH_13TEMP = 2, /*!< Resolution: RH 10-bits, T 13-bits */ |
mcm | 0:8d9328d3ff35 | 64 | RESOLUTION_11RH_11TEMP = 3 /*!< Resolution: RH 11-bits, T 11-bits */ |
mcm | 0:8d9328d3ff35 | 65 | } AMBIMATE_MS4_user_register_resolution_t; |
mcm | 0:8d9328d3ff35 | 66 | |
mcm | 0:8d9328d3ff35 | 67 | /** |
mcm | 0:8d9328d3ff35 | 68 | * @brief STATUS: END OF BATTERY |
mcm | 0:8d9328d3ff35 | 69 | */ |
mcm | 0:8d9328d3ff35 | 70 | typedef enum { |
mcm | 0:8d9328d3ff35 | 71 | STATUS_END_BATTERY_HIGH_2V25 = 0, /*!< Status: RH 12-bits, T 14-bits */ |
mcm | 0:8d9328d3ff35 | 72 | STATUS_END_BATTERY_LOW_2V25 = 1 /*!< Status: RH 8-bits, T 12-bits */ |
mcm | 0:8d9328d3ff35 | 73 | } AMBIMATE_MS4_user_register_status_t; |
mcm | 0:8d9328d3ff35 | 74 | |
mcm | 0:8d9328d3ff35 | 75 | /** |
mcm | 0:8d9328d3ff35 | 76 | * @brief ON-CHIP HEATER |
mcm | 0:8d9328d3ff35 | 77 | */ |
mcm | 0:8d9328d3ff35 | 78 | typedef enum { |
mcm | 0:8d9328d3ff35 | 79 | HEATER_ENABLED = 0, /*!< Heater enabled */ |
mcm | 0:8d9328d3ff35 | 80 | HEATER_DISABLED = 1 /*!< Heater disabled */ |
mcm | 0:8d9328d3ff35 | 81 | } AMBIMATE_MS4_user_register_heater_t; |
mcm | 0:8d9328d3ff35 | 82 | |
mcm | 0:8d9328d3ff35 | 83 | /** |
mcm | 0:8d9328d3ff35 | 84 | * @brief OTP RELOAD |
mcm | 0:8d9328d3ff35 | 85 | */ |
mcm | 0:8d9328d3ff35 | 86 | typedef enum { |
mcm | 0:8d9328d3ff35 | 87 | OTP_ENABLED = 0, /*!< OTP enabled */ |
mcm | 0:8d9328d3ff35 | 88 | OTP_DISABLED = 1 /*!< OTP disabled */ |
mcm | 0:8d9328d3ff35 | 89 | } AMBIMATE_MS4_user_register_otp_t; |
mcm | 0:8d9328d3ff35 | 90 | |
mcm | 0:8d9328d3ff35 | 91 | |
mcm | 0:8d9328d3ff35 | 92 | |
mcm | 0:8d9328d3ff35 | 93 | /* Mode of working */ |
mcm | 0:8d9328d3ff35 | 94 | /** |
mcm | 0:8d9328d3ff35 | 95 | * @brief MODE |
mcm | 0:8d9328d3ff35 | 96 | */ |
mcm | 0:8d9328d3ff35 | 97 | typedef enum { |
mcm | 0:8d9328d3ff35 | 98 | MODE_HOLD_MASTER = 0, /*!< Mode Hold master */ |
mcm | 0:8d9328d3ff35 | 99 | MODE_NO_HOLD_MASTER = 1 /*!< Mode No hold master */ |
mcm | 0:8d9328d3ff35 | 100 | } AMBIMATE_MS4_master_mode_t; |
mcm | 0:8d9328d3ff35 | 101 | |
mcm | 0:8d9328d3ff35 | 102 | |
mcm | 0:8d9328d3ff35 | 103 | |
mcm | 0:8d9328d3ff35 | 104 | |
mcm | 0:8d9328d3ff35 | 105 | |
mcm | 0:8d9328d3ff35 | 106 | #ifndef VECTOR_STRUCT_H |
mcm | 0:8d9328d3ff35 | 107 | #define VECTOR_STRUCT_H |
mcm | 0:8d9328d3ff35 | 108 | typedef struct { |
mcm | 0:8d9328d3ff35 | 109 | char RawTemperature[3]; |
mcm | 0:8d9328d3ff35 | 110 | } Vector_raw_temperature_t; |
mcm | 0:8d9328d3ff35 | 111 | |
mcm | 0:8d9328d3ff35 | 112 | typedef struct { |
mcm | 0:8d9328d3ff35 | 113 | char RawHumidity[3]; |
mcm | 0:8d9328d3ff35 | 114 | } Vector_raw_humidity_t; |
mcm | 0:8d9328d3ff35 | 115 | |
mcm | 0:8d9328d3ff35 | 116 | typedef struct { |
mcm | 0:8d9328d3ff35 | 117 | float Temperature; |
mcm | 0:8d9328d3ff35 | 118 | } Vector_temperature_f; |
mcm | 0:8d9328d3ff35 | 119 | |
mcm | 0:8d9328d3ff35 | 120 | typedef struct { |
mcm | 0:8d9328d3ff35 | 121 | float Humidity; |
mcm | 0:8d9328d3ff35 | 122 | } Vector_humidity_f; |
mcm | 0:8d9328d3ff35 | 123 | #endif |
mcm | 0:8d9328d3ff35 | 124 | |
mcm | 0:8d9328d3ff35 | 125 | |
mcm | 0:8d9328d3ff35 | 126 | /** |
mcm | 0:8d9328d3ff35 | 127 | * @brief INTERNAL CONSTANTS |
mcm | 0:8d9328d3ff35 | 128 | */ |
mcm | 0:8d9328d3ff35 | 129 | typedef enum { |
mcm | 0:8d9328d3ff35 | 130 | AMBIMATE_MS4_SUCCESS = 0, |
mcm | 0:8d9328d3ff35 | 131 | AMBIMATE_MS4_FAILURE = 1, |
mcm | 0:8d9328d3ff35 | 132 | I2C_SUCCESS = 0 /*!< I2C communication was fine */ |
mcm | 0:8d9328d3ff35 | 133 | } AMBIMATE_MS4_status_t; |
mcm | 0:8d9328d3ff35 | 134 | |
mcm | 0:8d9328d3ff35 | 135 | |
mcm | 0:8d9328d3ff35 | 136 | |
mcm | 0:8d9328d3ff35 | 137 | |
mcm | 0:8d9328d3ff35 | 138 | /** Create an AMBIMATE_MS4 object connected to the specified I2C pins. |
mcm | 0:8d9328d3ff35 | 139 | * |
mcm | 0:8d9328d3ff35 | 140 | * @param sda I2C data pin |
mcm | 0:8d9328d3ff35 | 141 | * @param scl I2C clock pin |
mcm | 0:8d9328d3ff35 | 142 | * @param addr I2C slave address |
mcm | 0:8d9328d3ff35 | 143 | * @param freq I2C frequency in Hz. |
mcm | 0:8d9328d3ff35 | 144 | */ |
mcm | 0:8d9328d3ff35 | 145 | AMBIMATE_MS4 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); |
mcm | 0:8d9328d3ff35 | 146 | |
mcm | 0:8d9328d3ff35 | 147 | /** Delete AMBIMATE_MS4 object. |
mcm | 0:8d9328d3ff35 | 148 | */ |
mcm | 0:8d9328d3ff35 | 149 | ~AMBIMATE_MS4(); |
mcm | 0:8d9328d3ff35 | 150 | |
mcm | 0:8d9328d3ff35 | 151 | /** It configures the device. |
mcm | 0:8d9328d3ff35 | 152 | */ |
mcm | 0:8d9328d3ff35 | 153 | AMBIMATE_MS4_status_t AMBIMATE_MS4_Init ( AMBIMATE_MS4_master_mode_t myMode, AMBIMATE_MS4_user_register_resolution_t myResolution, AMBIMATE_MS4_user_register_heater_t myHeater ); |
mcm | 0:8d9328d3ff35 | 154 | |
mcm | 0:8d9328d3ff35 | 155 | /** It resets the device by software. |
mcm | 0:8d9328d3ff35 | 156 | */ |
mcm | 0:8d9328d3ff35 | 157 | AMBIMATE_MS4_status_t AMBIMATE_MS4_SoftReset ( void ); |
mcm | 0:8d9328d3ff35 | 158 | |
mcm | 0:8d9328d3ff35 | 159 | /** It triggers a new temperature measurement. |
mcm | 0:8d9328d3ff35 | 160 | */ |
mcm | 0:8d9328d3ff35 | 161 | AMBIMATE_MS4_status_t AMBIMATE_MS4_TriggerTemperature ( void ); |
mcm | 0:8d9328d3ff35 | 162 | |
mcm | 0:8d9328d3ff35 | 163 | /** It reads the raw temperature. |
mcm | 0:8d9328d3ff35 | 164 | */ |
mcm | 0:8d9328d3ff35 | 165 | AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadRawTemperature ( Vector_raw_temperature_t* myRawTemperature ); |
mcm | 0:8d9328d3ff35 | 166 | |
mcm | 0:8d9328d3ff35 | 167 | /** It reads the temperature. |
mcm | 0:8d9328d3ff35 | 168 | */ |
mcm | 0:8d9328d3ff35 | 169 | AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadTemperature ( Vector_temperature_f* myTemperature ); |
mcm | 0:8d9328d3ff35 | 170 | |
mcm | 0:8d9328d3ff35 | 171 | /** It triggers a new humidity measurement. |
mcm | 0:8d9328d3ff35 | 172 | */ |
mcm | 0:8d9328d3ff35 | 173 | AMBIMATE_MS4_status_t AMBIMATE_MS4_TriggerHumidity ( void ); |
mcm | 0:8d9328d3ff35 | 174 | |
mcm | 0:8d9328d3ff35 | 175 | /** It reads the raw humidity. |
mcm | 0:8d9328d3ff35 | 176 | */ |
mcm | 0:8d9328d3ff35 | 177 | AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadRawHumidity ( Vector_raw_humidity_t* myRawHumidity ); |
mcm | 0:8d9328d3ff35 | 178 | |
mcm | 0:8d9328d3ff35 | 179 | /** It reads the humidity. |
mcm | 0:8d9328d3ff35 | 180 | */ |
mcm | 0:8d9328d3ff35 | 181 | AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadHumidity ( Vector_humidity_f* myHumidity ); |
mcm | 0:8d9328d3ff35 | 182 | |
mcm | 0:8d9328d3ff35 | 183 | /** It gets the battery status. |
mcm | 0:8d9328d3ff35 | 184 | */ |
mcm | 0:8d9328d3ff35 | 185 | AMBIMATE_MS4_status_t AMBIMATE_MS4_BatteryStatus ( AMBIMATE_MS4_user_register_status_t* myBattStatus ); |
mcm | 0:8d9328d3ff35 | 186 | |
mcm | 0:8d9328d3ff35 | 187 | private: |
mcm | 0:8d9328d3ff35 | 188 | I2C _i2c; |
mcm | 0:8d9328d3ff35 | 189 | uint32_t _AMBIMATE_MS4_Addr; |
mcm | 0:8d9328d3ff35 | 190 | }; |
mcm | 0:8d9328d3ff35 | 191 | |
mcm | 0:8d9328d3ff35 | 192 | #endif |