add all sensors used

Dependencies:   mbed QEI-1 nRF24L01P xiugai

Committer:
brainliang
Date:
Tue Dec 01 01:38:26 2020 +0000
Revision:
7:dc221ddd4588
peixun_template

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brainliang 7:dc221ddd4588 1 #ifndef __SENSORS_H
brainliang 7:dc221ddd4588 2 #define __SENSORS_H
brainliang 7:dc221ddd4588 3
brainliang 7:dc221ddd4588 4 #ifdef ENABLE_SENSORS
brainliang 7:dc221ddd4588 5
brainliang 7:dc221ddd4588 6 #include "mbed.h"
brainliang 7:dc221ddd4588 7 #include "esp8266.h"
brainliang 7:dc221ddd4588 8
brainliang 7:dc221ddd4588 9
brainliang 7:dc221ddd4588 10
brainliang 7:dc221ddd4588 11 //==========================================
brainliang 7:dc221ddd4588 12 class sr501
brainliang 7:dc221ddd4588 13 {
brainliang 7:dc221ddd4588 14 /*****
brainliang 7:dc221ddd4588 15 * 红外热释电对象
brainliang 7:dc221ddd4588 16 * 感应输出高电平
brainliang 7:dc221ddd4588 17 *****/
brainliang 7:dc221ddd4588 18 private:
brainliang 7:dc221ddd4588 19 // DigitalIn signal;
brainliang 7:dc221ddd4588 20 bool status;
brainliang 7:dc221ddd4588 21 InterruptIn signal;
brainliang 7:dc221ddd4588 22 void triggered();
brainliang 7:dc221ddd4588 23 public:
brainliang 7:dc221ddd4588 24 sr501(PinName pSignal);
brainliang 7:dc221ddd4588 25 bool operator==(const bool &target);
brainliang 7:dc221ddd4588 26 void reset();
brainliang 7:dc221ddd4588 27 int read();
brainliang 7:dc221ddd4588 28
brainliang 7:dc221ddd4588 29 #ifdef ENABLE_ESP8266
brainliang 7:dc221ddd4588 30 void send_status(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 31 #endif // ENABLE_ESP8266
brainliang 7:dc221ddd4588 32
brainliang 7:dc221ddd4588 33 };
brainliang 7:dc221ddd4588 34 //=========================================
brainliang 7:dc221ddd4588 35 //+++++++++++++++++++++BH1750+++++++++++++++++++++++++++++
brainliang 7:dc221ddd4588 36 #define BH1750_I2CADDR 0x46
brainliang 7:dc221ddd4588 37 #define BH1750_POWER_DOWN 0x00 // No active state
brainliang 7:dc221ddd4588 38 #define BH1750_POWER_ON 0x01 // Wating for measurment command
brainliang 7:dc221ddd4588 39 #define BH1750_RESET 0x07 // Reset data register value - not accepted in POWER_DOWN mode
brainliang 7:dc221ddd4588 40 #define BH1750_CONTINUOUS_HIGH_RES_MODE 0x10 // Start measurement at 1lx resolution. Measurement time is approx 120ms.
brainliang 7:dc221ddd4588 41 #define BH1750_CONTINUOUS_HIGH_RES_MODE_2 0x11 // Start measurement at 0.5lx resolution. Measurement time is approx 120ms.
brainliang 7:dc221ddd4588 42 #define BH1750_CONTINUOUS_LOW_RES_MODE 0x13 // Start measurement at 4lx resolution. Measurement time is approx 16ms.
brainliang 7:dc221ddd4588 43
brainliang 7:dc221ddd4588 44 // Start measurement at 1lx resolution. Measurement time is approx 120ms.
brainliang 7:dc221ddd4588 45 // Device is automatically set to Power Down after measurement.
brainliang 7:dc221ddd4588 46 #define BH1750_ONE_TIME_HIGH_RES_MODE 0x20
brainliang 7:dc221ddd4588 47
brainliang 7:dc221ddd4588 48 // Start measurement at 0.5lx resolution. Measurement time is approx 120ms.
brainliang 7:dc221ddd4588 49 // Device is automatically set to Power Down after measurement.
brainliang 7:dc221ddd4588 50 #define BH1750_ONE_TIME_HIGH_RES_MODE_2 0x21
brainliang 7:dc221ddd4588 51
brainliang 7:dc221ddd4588 52 // Start measurement at 1lx resolution. Measurement time is approx 120ms.
brainliang 7:dc221ddd4588 53 // Device is automatically set to Power Down after measurement.
brainliang 7:dc221ddd4588 54 #define BH1750_ONE_TIME_LOW_RES_MODE 0x23
brainliang 7:dc221ddd4588 55 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
brainliang 7:dc221ddd4588 56 class BH1750
brainliang 7:dc221ddd4588 57 {
brainliang 7:dc221ddd4588 58
brainliang 7:dc221ddd4588 59 /*****
brainliang 7:dc221ddd4588 60 *
brainliang 7:dc221ddd4588 61 *****/
brainliang 7:dc221ddd4588 62 private:
brainliang 7:dc221ddd4588 63 I2C link;
brainliang 7:dc221ddd4588 64 char rawdata[2];
brainliang 7:dc221ddd4588 65 bool status;
brainliang 7:dc221ddd4588 66 public:
brainliang 7:dc221ddd4588 67 BH1750(PinName sda,PinName scl);
brainliang 7:dc221ddd4588 68 BH1750(PinName sda,PinName scl,char mode[]);
brainliang 7:dc221ddd4588 69 float getlightdata();
brainliang 7:dc221ddd4588 70
brainliang 7:dc221ddd4588 71 #ifdef ENABLE_ESP8266
brainliang 7:dc221ddd4588 72 void send_data(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 73 #endif // ENABLE_ESP8266
brainliang 7:dc221ddd4588 74
brainliang 7:dc221ddd4588 75 };
brainliang 7:dc221ddd4588 76 //===========================================
brainliang 7:dc221ddd4588 77 class mq
brainliang 7:dc221ddd4588 78 {
brainliang 7:dc221ddd4588 79 /*****
brainliang 7:dc221ddd4588 80 *
brainliang 7:dc221ddd4588 81 *****/
brainliang 7:dc221ddd4588 82 private:
brainliang 7:dc221ddd4588 83 bool status;
brainliang 7:dc221ddd4588 84 InterruptIn signal;
brainliang 7:dc221ddd4588 85 AnalogIn signallevel;
brainliang 7:dc221ddd4588 86
brainliang 7:dc221ddd4588 87 void triggered();
brainliang 7:dc221ddd4588 88 public:
brainliang 7:dc221ddd4588 89 mq(PinName dio);
brainliang 7:dc221ddd4588 90 mq(PinName dio,PinName aio);
brainliang 7:dc221ddd4588 91 bool operator==(const bool &target);
brainliang 7:dc221ddd4588 92 float getairdata();
brainliang 7:dc221ddd4588 93 void reset();
brainliang 7:dc221ddd4588 94 int read();
brainliang 7:dc221ddd4588 95
brainliang 7:dc221ddd4588 96 #ifdef ENABLE_ESP8266
brainliang 7:dc221ddd4588 97 void send_data(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 98 #endif // ENABLE_ESP8266
brainliang 7:dc221ddd4588 99
brainliang 7:dc221ddd4588 100 };
brainliang 7:dc221ddd4588 101
brainliang 7:dc221ddd4588 102 //===========================================
brainliang 7:dc221ddd4588 103 class dht11
brainliang 7:dc221ddd4588 104 {
brainliang 7:dc221ddd4588 105 /*****
brainliang 7:dc221ddd4588 106 *
brainliang 7:dc221ddd4588 107 *****/
brainliang 7:dc221ddd4588 108 private:
brainliang 7:dc221ddd4588 109 Timer timer;
brainliang 7:dc221ddd4588 110 Timer starttime;
brainliang 7:dc221ddd4588 111 DigitalInOut datapin;
brainliang 7:dc221ddd4588 112 float H;
brainliang 7:dc221ddd4588 113 float T;
brainliang 7:dc221ddd4588 114 public:
brainliang 7:dc221ddd4588 115 dht11(PinName pin);
brainliang 7:dc221ddd4588 116 int getdata();
brainliang 7:dc221ddd4588 117 float gethumidity();
brainliang 7:dc221ddd4588 118 float gettemperature();
brainliang 7:dc221ddd4588 119
brainliang 7:dc221ddd4588 120 #ifdef ENABLE_ESP8266
brainliang 7:dc221ddd4588 121 void send_temp(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 122 void send_humi(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 123 #endif // ENABLE_ESP8266
brainliang 7:dc221ddd4588 124
brainliang 7:dc221ddd4588 125 };
brainliang 7:dc221ddd4588 126 //==========================================DS18B20
brainliang 7:dc221ddd4588 127 class DS18B20
brainliang 7:dc221ddd4588 128 {
brainliang 7:dc221ddd4588 129 /*****
brainliang 7:dc221ddd4588 130 *
brainliang 7:dc221ddd4588 131 *****/
brainliang 7:dc221ddd4588 132 private:
brainliang 7:dc221ddd4588 133 DigitalInOut datapin;
brainliang 7:dc221ddd4588 134 uint8_t dat;
brainliang 7:dc221ddd4588 135 float T;
brainliang 7:dc221ddd4588 136
brainliang 7:dc221ddd4588 137 int start();
brainliang 7:dc221ddd4588 138 void writebyte(uint8_t send);
brainliang 7:dc221ddd4588 139 uint8_t readByte();
brainliang 7:dc221ddd4588 140 float transfer(uint8_t h,uint8_t l);
brainliang 7:dc221ddd4588 141 public:
brainliang 7:dc221ddd4588 142 DS18B20(PinName pin);
brainliang 7:dc221ddd4588 143 int getdata();
brainliang 7:dc221ddd4588 144 float gettemperature();
brainliang 7:dc221ddd4588 145
brainliang 7:dc221ddd4588 146 #ifdef ENABLE_ESP8266
brainliang 7:dc221ddd4588 147 void send_temp(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 148 #endif // ENABLE_ESP8266
brainliang 7:dc221ddd4588 149
brainliang 7:dc221ddd4588 150 };
brainliang 7:dc221ddd4588 151 //==========================================YL-38通用传感
brainliang 7:dc221ddd4588 152 class YL
brainliang 7:dc221ddd4588 153 {
brainliang 7:dc221ddd4588 154 /*****
brainliang 7:dc221ddd4588 155 *
brainliang 7:dc221ddd4588 156 *****/
brainliang 7:dc221ddd4588 157 private:
brainliang 7:dc221ddd4588 158 bool status;
brainliang 7:dc221ddd4588 159 InterruptIn signal;
brainliang 7:dc221ddd4588 160 AnalogIn signallevel;
brainliang 7:dc221ddd4588 161
brainliang 7:dc221ddd4588 162 void triggered();
brainliang 7:dc221ddd4588 163 public:
brainliang 7:dc221ddd4588 164 YL(PinName dio);
brainliang 7:dc221ddd4588 165 YL(PinName dio,PinName aio);
brainliang 7:dc221ddd4588 166 bool operator==(const bool &target);
brainliang 7:dc221ddd4588 167 float getairdata();
brainliang 7:dc221ddd4588 168 void reset();
brainliang 7:dc221ddd4588 169 int read();
brainliang 7:dc221ddd4588 170
brainliang 7:dc221ddd4588 171 #ifdef ENABLE_ESP8266
brainliang 7:dc221ddd4588 172 void send_data(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 173 #endif // ENABLE_ESP8266
brainliang 7:dc221ddd4588 174 };
brainliang 7:dc221ddd4588 175 //========================================
brainliang 7:dc221ddd4588 176 #define BMP180_ADDRESS 0x77<<1 // I2C address of BMP180, eight bit address on mbed
brainliang 7:dc221ddd4588 177 #define BMP180_WHO_AM_I 0xD0 // WHO_AM_I id of BMP180, should return 0x55
brainliang 7:dc221ddd4588 178 #define BMP180_RESET 0xE0
brainliang 7:dc221ddd4588 179 #define BMP180_CONTROL 0xF4
brainliang 7:dc221ddd4588 180 #define BMP180_OUT_MSB 0xF6
brainliang 7:dc221ddd4588 181 #define BMP180_OUT_LSB 0xF7
brainliang 7:dc221ddd4588 182 #define BMP180_OUT_XLSB 0xF8
brainliang 7:dc221ddd4588 183
brainliang 7:dc221ddd4588 184 // Set initial input parameters
brainliang 7:dc221ddd4588 185
brainliang 7:dc221ddd4588 186 enum OSS { // BMP-085 sampling rate
brainliang 7:dc221ddd4588 187 OSS_0 = 0, // 4.5 ms conversion time
brainliang 7:dc221ddd4588 188 OSS_1=1, // 7.5
brainliang 7:dc221ddd4588 189 OSS_2=2, // 13.5
brainliang 7:dc221ddd4588 190 OSS_3=3 // 25.5
brainliang 7:dc221ddd4588 191 };
brainliang 7:dc221ddd4588 192
brainliang 7:dc221ddd4588 193
brainliang 7:dc221ddd4588 194
brainliang 7:dc221ddd4588 195 class BMP180 {
brainliang 7:dc221ddd4588 196 /*****
brainliang 7:dc221ddd4588 197 *
brainliang 7:dc221ddd4588 198 *****/
brainliang 7:dc221ddd4588 199 private:
brainliang 7:dc221ddd4588 200 uint8_t OSS; // maximum pressure resolution
brainliang 7:dc221ddd4588 201
brainliang 7:dc221ddd4588 202 //Set up I2C, (SDA,SCL)
brainliang 7:dc221ddd4588 203 I2C i2c;
brainliang 7:dc221ddd4588 204
brainliang 7:dc221ddd4588 205 // These are constants used to calculate the temperature and pressure from the BMP-180 sensor
brainliang 7:dc221ddd4588 206 int16_t ac1, ac2, ac3, b1, b2, mb, mc, md, b5;
brainliang 7:dc221ddd4588 207 uint16_t ac4, ac5, ac6;
brainliang 7:dc221ddd4588 208
brainliang 7:dc221ddd4588 209 void writeByte(uint8_t address, uint8_t subAddress, uint8_t data);
brainliang 7:dc221ddd4588 210 char readByte(uint8_t address, uint8_t subAddress);
brainliang 7:dc221ddd4588 211 void readBytes(uint8_t address, uint8_t subAddress, uint8_t count, uint8_t * dest);
brainliang 7:dc221ddd4588 212
brainliang 7:dc221ddd4588 213 // Stores all of the BMP180's calibration values into global variables
brainliang 7:dc221ddd4588 214 // Calibration values are required to calculate temp and pressure
brainliang 7:dc221ddd4588 215 // This function should be called at the beginning of the program
brainliang 7:dc221ddd4588 216 // These BMP-180 functions were adapted from Jim Lindblom of SparkFun Electronics
brainliang 7:dc221ddd4588 217 void BMP180Calibration();
brainliang 7:dc221ddd4588 218 public:
brainliang 7:dc221ddd4588 219 BMP180(PinName sda,PinName scl) ;
brainliang 7:dc221ddd4588 220 // Temperature returned will be in units of 0.1 deg C
brainliang 7:dc221ddd4588 221 long BMP180GetTemperature();
brainliang 7:dc221ddd4588 222
brainliang 7:dc221ddd4588 223 // Calculate pressure read calibration values
brainliang 7:dc221ddd4588 224 // b5 is also required so BMP180GetTemperature() must be called first.
brainliang 7:dc221ddd4588 225 // Value returned will be pressure in units of Pa.
brainliang 7:dc221ddd4588 226 long BMP180GetPressure();
brainliang 7:dc221ddd4588 227
brainliang 7:dc221ddd4588 228 #ifdef ENABLE_ESP8266
brainliang 7:dc221ddd4588 229 void send_press(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 230 void send_temp(Esp8266 & client, const char * topic);
brainliang 7:dc221ddd4588 231 #endif // ENABLE_ESP8266
brainliang 7:dc221ddd4588 232 };
brainliang 7:dc221ddd4588 233 //================================================
brainliang 7:dc221ddd4588 234 class GP2Y1010
brainliang 7:dc221ddd4588 235 {
brainliang 7:dc221ddd4588 236 /*****
brainliang 7:dc221ddd4588 237 *
brainliang 7:dc221ddd4588 238 *****/
brainliang 7:dc221ddd4588 239 private:
brainliang 7:dc221ddd4588 240 AnalogIn measurePin ;
brainliang 7:dc221ddd4588 241 DigitalOut ledPower;
brainliang 7:dc221ddd4588 242 unsigned int samplingTime ;
brainliang 7:dc221ddd4588 243 unsigned int deltaTime ;
brainliang 7:dc221ddd4588 244 unsigned int sleepTime ;
brainliang 7:dc221ddd4588 245
brainliang 7:dc221ddd4588 246 float voMeasured ;
brainliang 7:dc221ddd4588 247 float calcVoltage ;
brainliang 7:dc221ddd4588 248 float dustDensity ;
brainliang 7:dc221ddd4588 249
brainliang 7:dc221ddd4588 250 public:
brainliang 7:dc221ddd4588 251 GP2Y1010(PinName ledPower,PinName measurePin);
brainliang 7:dc221ddd4588 252 float getairdata();
brainliang 7:dc221ddd4588 253 };
brainliang 7:dc221ddd4588 254 //=============================================
brainliang 7:dc221ddd4588 255
brainliang 7:dc221ddd4588 256 #endif // ENABLE_SENSORS
brainliang 7:dc221ddd4588 257
brainliang 7:dc221ddd4588 258 #endif // !__SENSORS_H