D6T MEMS Thermal Sensors (Omron)
D6T_44L_06.h@0:9f5e063c0c00, 2020-02-18 (annotated)
- Committer:
- kenjiArai
- Date:
- Tue Feb 18 01:09:00 2020 +0000
- Revision:
- 0:9f5e063c0c00
1st release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:9f5e063c0c00 | 1 | /* |
kenjiArai | 0:9f5e063c0c00 | 2 | * mbed library program |
kenjiArai | 0:9f5e063c0c00 | 3 | * D6T-44L-06: D6T MEMS Thermal Sensors |
kenjiArai | 0:9f5e063c0c00 | 4 | * --- High Sensitivity Enables Detection of Stationary Human Presence |
kenjiArai | 0:9f5e063c0c00 | 5 | * https://www.components.omron.com/web/en/product-detail?partNumber=D6T |
kenjiArai | 0:9f5e063c0c00 | 6 | * |
kenjiArai | 0:9f5e063c0c00 | 7 | * Copyright (c) 2020 Kenji Arai / JH1PJL |
kenjiArai | 0:9f5e063c0c00 | 8 | * http://www7b.biglobe.ne.jp/~kenjia/ |
kenjiArai | 0:9f5e063c0c00 | 9 | * https://os.mbed.com/users/kenjiArai/ |
kenjiArai | 0:9f5e063c0c00 | 10 | * Created: February 16th, 2020 |
kenjiArai | 0:9f5e063c0c00 | 11 | * Revised: February 18th, 2020 |
kenjiArai | 0:9f5e063c0c00 | 12 | */ |
kenjiArai | 0:9f5e063c0c00 | 13 | |
kenjiArai | 0:9f5e063c0c00 | 14 | /* |
kenjiArai | 0:9f5e063c0c00 | 15 | Refrence documentation: |
kenjiArai | 0:9f5e063c0c00 | 16 | https://omronfs.omron.com/ja_JP/ecb/products/pdf/CDSC-019.pdf |
kenjiArai | 0:9f5e063c0c00 | 17 | |
kenjiArai | 0:9f5e063c0c00 | 18 | Tested on: |
kenjiArai | 0:9f5e063c0c00 | 19 | GR-MANGO(beta version) with 2JCIE-EV01 board |
kenjiArai | 0:9f5e063c0c00 | 20 | */ |
kenjiArai | 0:9f5e063c0c00 | 21 | |
kenjiArai | 0:9f5e063c0c00 | 22 | #ifndef D6T_44L_06_H |
kenjiArai | 0:9f5e063c0c00 | 23 | #define D6T_44L_06_H |
kenjiArai | 0:9f5e063c0c00 | 24 | |
kenjiArai | 0:9f5e063c0c00 | 25 | #include "mbed.h" |
kenjiArai | 0:9f5e063c0c00 | 26 | |
kenjiArai | 0:9f5e063c0c00 | 27 | // D6T_44L_06 Address |
kenjiArai | 0:9f5e063c0c00 | 28 | // 7bit address = 0x0a |
kenjiArai | 0:9f5e063c0c00 | 29 | #define D6T_44L_06_ADDR (0x0a << 1) |
kenjiArai | 0:9f5e063c0c00 | 30 | // D6T_44L_06 Command |
kenjiArai | 0:9f5e063c0c00 | 31 | #define D6T_44L_06_CMD 0x4c |
kenjiArai | 0:9f5e063c0c00 | 32 | |
kenjiArai | 0:9f5e063c0c00 | 33 | /** D6T MEMS Thermal Sensors by OMRON |
kenjiArai | 0:9f5e063c0c00 | 34 | * Chip: D6T_44L_06 |
kenjiArai | 0:9f5e063c0c00 | 35 | * |
kenjiArai | 0:9f5e063c0c00 | 36 | * @code |
kenjiArai | 0:9f5e063c0c00 | 37 | * #include "mbed.h" |
kenjiArai | 0:9f5e063c0c00 | 38 | * |
kenjiArai | 0:9f5e063c0c00 | 39 | * // I2C Communication |
kenjiArai | 0:9f5e063c0c00 | 40 | * D6T_44L_06 tmp_16array(D14, D15); // SDA, SCL |
kenjiArai | 0:9f5e063c0c00 | 41 | * |
kenjiArai | 0:9f5e063c0c00 | 42 | * int main() { |
kenjiArai | 0:9f5e063c0c00 | 43 | * float f[16]; |
kenjiArai | 0:9f5e063c0c00 | 44 | * while(true){ |
kenjiArai | 0:9f5e063c0c00 | 45 | * tmp_16array.read_data(f); |
kenjiArai | 0:9f5e063c0c00 | 46 | * ThisThread::sleep_for(300); // minimum updating cycle |
kenjiArai | 0:9f5e063c0c00 | 47 | * } |
kenjiArai | 0:9f5e063c0c00 | 48 | * } |
kenjiArai | 0:9f5e063c0c00 | 49 | * @endcode |
kenjiArai | 0:9f5e063c0c00 | 50 | */ |
kenjiArai | 0:9f5e063c0c00 | 51 | |
kenjiArai | 0:9f5e063c0c00 | 52 | class D6T_44L_06 |
kenjiArai | 0:9f5e063c0c00 | 53 | { |
kenjiArai | 0:9f5e063c0c00 | 54 | public: |
kenjiArai | 0:9f5e063c0c00 | 55 | /** Configure data pin (with other devices on I2C line) |
kenjiArai | 0:9f5e063c0c00 | 56 | * @param I2C PinName SDA &SDL |
kenjiArai | 0:9f5e063c0c00 | 57 | */ |
kenjiArai | 0:9f5e063c0c00 | 58 | D6T_44L_06(PinName p_sda, PinName p_scl); |
kenjiArai | 0:9f5e063c0c00 | 59 | |
kenjiArai | 0:9f5e063c0c00 | 60 | /** Configure data pin (with other devices on I2C line) |
kenjiArai | 0:9f5e063c0c00 | 61 | * @param I2C previous definition |
kenjiArai | 0:9f5e063c0c00 | 62 | */ |
kenjiArai | 0:9f5e063c0c00 | 63 | D6T_44L_06(I2C& p_i2c); |
kenjiArai | 0:9f5e063c0c00 | 64 | |
kenjiArai | 0:9f5e063c0c00 | 65 | /** Read a float type data from acc |
kenjiArai | 0:9f5e063c0c00 | 66 | * @param float type of three arry's address, e.g. 16bit data dt_i[16]; |
kenjiArai | 0:9f5e063c0c00 | 67 | * @return CRC check result / true=passed, false=failed |
kenjiArai | 0:9f5e063c0c00 | 68 | */ |
kenjiArai | 0:9f5e063c0c00 | 69 | bool read_16bit_data(int16_t *dt); |
kenjiArai | 0:9f5e063c0c00 | 70 | |
kenjiArai | 0:9f5e063c0c00 | 71 | /** Read a float type data from sensor |
kenjiArai | 0:9f5e063c0c00 | 72 | * @param float type of three arry's address, e.g. float dt_f[16]; |
kenjiArai | 0:9f5e063c0c00 | 73 | * @return CRC check result / true=passed, false=failed |
kenjiArai | 0:9f5e063c0c00 | 74 | */ |
kenjiArai | 0:9f5e063c0c00 | 75 | bool read_float_data(float *dt); |
kenjiArai | 0:9f5e063c0c00 | 76 | |
kenjiArai | 0:9f5e063c0c00 | 77 | /** Read sensor chip temperatue |
kenjiArai | 0:9f5e063c0c00 | 78 | * @param none |
kenjiArai | 0:9f5e063c0c00 | 79 | * @return temperature |
kenjiArai | 0:9f5e063c0c00 | 80 | */ |
kenjiArai | 0:9f5e063c0c00 | 81 | float read_chip_temp(void); |
kenjiArai | 0:9f5e063c0c00 | 82 | |
kenjiArai | 0:9f5e063c0c00 | 83 | protected: |
kenjiArai | 0:9f5e063c0c00 | 84 | void initialize(void); |
kenjiArai | 0:9f5e063c0c00 | 85 | bool read_data(void); |
kenjiArai | 0:9f5e063c0c00 | 86 | uint8_t calc_crc(uint8_t dt); |
kenjiArai | 0:9f5e063c0c00 | 87 | bool check_crc(void); |
kenjiArai | 0:9f5e063c0c00 | 88 | |
kenjiArai | 0:9f5e063c0c00 | 89 | I2C *_i2c_p; |
kenjiArai | 0:9f5e063c0c00 | 90 | I2C &_i2c; |
kenjiArai | 0:9f5e063c0c00 | 91 | |
kenjiArai | 0:9f5e063c0c00 | 92 | private: |
kenjiArai | 0:9f5e063c0c00 | 93 | float _chip_temp; // Sensor temperature |
kenjiArai | 0:9f5e063c0c00 | 94 | char _dt[64]; // I2C buffer |
kenjiArai | 0:9f5e063c0c00 | 95 | int16_t _arry[16]; // DT6T sensor raw data |
kenjiArai | 0:9f5e063c0c00 | 96 | uint8_t _addr; // sensor I2C addr |
kenjiArai | 0:9f5e063c0c00 | 97 | |
kenjiArai | 0:9f5e063c0c00 | 98 | }; |
kenjiArai | 0:9f5e063c0c00 | 99 | |
kenjiArai | 0:9f5e063c0c00 | 100 | #endif // D6T_44L_06_H |