Amir Chaudhary / Mbed 2 deprecated humidity-temp-pressure

Dependencies:   mbed LoRaWAN-lib SX1276Lib

Committer:
amir_chaudhary
Date:
Wed May 25 15:11:42 2022 +0000
Revision:
12:85b3174c8b30
Parent:
11:7a7913d47ca6
Child:
13:f8d1a87594ec
Code to  test the Pressure PCB

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mluis 0:92bca02df485 1 #include "mbed.h"
uss1994 10:f3b1186fc0b0 2 #include "Si7021.h"
uss1994 10:f3b1186fc0b0 3
uss1994 10:f3b1186fc0b0 4 // I2C Definition
amir_chaudhary 11:7a7913d47ca6 5 I2C spd800_i2c(PB_9, PB_8); //sda, scl
mluis 0:92bca02df485 6
amir_chaudhary 12:85b3174c8b30 7 DigitalOut myGreenLed(D7); // ON = Lora Connected
amir_chaudhary 12:85b3174c8b30 8 DigitalOut myBlueLed(PA_11); // Blink twice = Sends data or increments counter value Pelase proceed
amir_chaudhary 12:85b3174c8b30 9 DigitalOut myRedLed(PB_15);
amir_chaudhary 12:85b3174c8b30 10
amir_chaudhary 12:85b3174c8b30 11 DigitalOut LoraPin(PB_14);
amir_chaudhary 12:85b3174c8b30 12 DigitalOut I2C1Pin(PB_12);
amir_chaudhary 12:85b3174c8b30 13 DigitalOut I2C2Pin(PB_13);
amir_chaudhary 12:85b3174c8b30 14 DigitalOut PWEN(PC_8);
amir_chaudhary 12:85b3174c8b30 15
amir_chaudhary 12:85b3174c8b30 16 DigitalOut Pin51(PC_10);
amir_chaudhary 12:85b3174c8b30 17 DigitalOut Pin52(PC_11);
amir_chaudhary 12:85b3174c8b30 18 DigitalOut Pin53(PC_12);
amir_chaudhary 12:85b3174c8b30 19 DigitalOut RM(PC_2);
amir_chaudhary 12:85b3174c8b30 20 DigitalOut Light2(PC_0);
amir_chaudhary 12:85b3174c8b30 21 DigitalOut Light1(PA_1);
amir_chaudhary 12:85b3174c8b30 22
amir_chaudhary 12:85b3174c8b30 23
amir_chaudhary 12:85b3174c8b30 24 AnalogIn BAT_PIN_1(PC_5);
amir_chaudhary 12:85b3174c8b30 25 AnalogIn BAT_PIN(A2);
amir_chaudhary 12:85b3174c8b30 26 AnalogIn LIGHT_1_PIN(A1);
amir_chaudhary 12:85b3174c8b30 27 AnalogIn LIGHT_2_PIN(A5);
amir_chaudhary 12:85b3174c8b30 28 AnalogIn RH_PIN(PC_2);
amir_chaudhary 12:85b3174c8b30 29 AnalogIn VCE_PIN(PB_1);
amir_chaudhary 12:85b3174c8b30 30 DigitalOut relaypin(D6);
amir_chaudhary 12:85b3174c8b30 31 AnalogIn Exit(PC_4);
amir_chaudhary 12:85b3174c8b30 32
amir_chaudhary 12:85b3174c8b30 33
amir_chaudhary 12:85b3174c8b30 34
amir_chaudhary 12:85b3174c8b30 35 int count =0;
amir_chaudhary 12:85b3174c8b30 36 float Vref = 3.342;
amir_chaudhary 12:85b3174c8b30 37
amir_chaudhary 12:85b3174c8b30 38
amir_chaudhary 11:7a7913d47ca6 39 DigitalOut si7021_power_pin(PB_2);
mluis 0:92bca02df485 40
amir_chaudhary 11:7a7913d47ca6 41 Serial pc(SERIAL_TX, SERIAL_RX,115200);
mluis 0:92bca02df485 42
amir_chaudhary 11:7a7913d47ca6 43 void print_array(char *array, int len) {
amir_chaudhary 11:7a7913d47ca6 44 for (int idx = 0; idx < len; idx++) {
amir_chaudhary 11:7a7913d47ca6 45 pc.printf("%x", array[idx]);
amir_chaudhary 11:7a7913d47ca6 46 }
amir_chaudhary 11:7a7913d47ca6 47 pc.printf("\r\n");
mluis 0:92bca02df485 48 }
mluis 0:92bca02df485 49
amir_chaudhary 11:7a7913d47ca6 50 float read_pressure_measurement() {
amir_chaudhary 11:7a7913d47ca6 51 char output[9];
uss1994 10:f3b1186fc0b0 52
amir_chaudhary 11:7a7913d47ca6 53 // Read measurements
amir_chaudhary 11:7a7913d47ca6 54 if ( spd800_i2c.read((0x25 << 1), output, 9) != 0 ) { // read from register
amir_chaudhary 11:7a7913d47ca6 55 pc.printf("FAILED TO READ PRESSURE: %d\r\n", spd800_i2c.read((0x25 << 1), output, 9));
mluis 0:92bca02df485 56 }
amir_chaudhary 11:7a7913d47ca6 57 //print_array(output, 9);
amir_chaudhary 11:7a7913d47ca6 58
uss1994 10:f3b1186fc0b0 59 // Interpret
uss1994 10:f3b1186fc0b0 60 int16_t diffPressureTicks = (output[0] << 8) | output[1];
uss1994 10:f3b1186fc0b0 61 // int16_t temperatureTicks = (output[3] << 8) | output[4];
uss1994 10:f3b1186fc0b0 62 uint16_t scaleFactorDiffPressure = (output[6] << 8) | output[7];
amir_chaudhary 11:7a7913d47ca6 63
uss1994 10:f3b1186fc0b0 64 float diffPressure = (float)diffPressureTicks / (float)scaleFactorDiffPressure;
amir_chaudhary 11:7a7913d47ca6 65
uss1994 10:f3b1186fc0b0 66 return diffPressure;
uss1994 10:f3b1186fc0b0 67 }
uss1994 10:f3b1186fc0b0 68
amir_chaudhary 11:7a7913d47ca6 69 int main() {
amir_chaudhary 11:7a7913d47ca6 70 pc.printf("Starting Pressure/Temp/Humidity Sensor Test..\r\n");
amir_chaudhary 11:7a7913d47ca6 71
amir_chaudhary 12:85b3174c8b30 72 // PWEN = 1;
amir_chaudhary 12:85b3174c8b30 73
amir_chaudhary 12:85b3174c8b30 74 myGreenLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 75 wait(0.25);
amir_chaudhary 12:85b3174c8b30 76 myGreenLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 77 wait(0.25);
amir_chaudhary 12:85b3174c8b30 78
amir_chaudhary 12:85b3174c8b30 79 myRedLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 80 wait(0.25);
amir_chaudhary 12:85b3174c8b30 81 myRedLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 82 wait(0.25);
amir_chaudhary 12:85b3174c8b30 83
amir_chaudhary 12:85b3174c8b30 84 myBlueLed = 1;
amir_chaudhary 12:85b3174c8b30 85 wait(0.25);
amir_chaudhary 12:85b3174c8b30 86 myBlueLed = 0;
amir_chaudhary 12:85b3174c8b30 87 wait(0.25);
amir_chaudhary 12:85b3174c8b30 88
amir_chaudhary 12:85b3174c8b30 89
amir_chaudhary 12:85b3174c8b30 90
amir_chaudhary 12:85b3174c8b30 91 for(int i=0; i<5; i++){
amir_chaudhary 12:85b3174c8b30 92
amir_chaudhary 12:85b3174c8b30 93 myGreenLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 94 PWEN = 1;
amir_chaudhary 12:85b3174c8b30 95 LoraPin = 1;
amir_chaudhary 12:85b3174c8b30 96 I2C1Pin = 1;
amir_chaudhary 12:85b3174c8b30 97 I2C2Pin = 1;
amir_chaudhary 12:85b3174c8b30 98 wait(1);
amir_chaudhary 12:85b3174c8b30 99 myGreenLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 100
amir_chaudhary 12:85b3174c8b30 101 myRedLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 102 PWEN = 0;
amir_chaudhary 12:85b3174c8b30 103 LoraPin = 0;
amir_chaudhary 12:85b3174c8b30 104 I2C1Pin = 0;
amir_chaudhary 12:85b3174c8b30 105 I2C2Pin = 0;
amir_chaudhary 12:85b3174c8b30 106 wait(1);
amir_chaudhary 12:85b3174c8b30 107 myRedLed = 0;// LED is ON
amir_chaudhary 12:85b3174c8b30 108
amir_chaudhary 12:85b3174c8b30 109 pc.printf("%d\t",count);
amir_chaudhary 12:85b3174c8b30 110
amir_chaudhary 12:85b3174c8b30 111 float meas_Vbat = BAT_PIN.read();
amir_chaudhary 12:85b3174c8b30 112 float Vbat = meas_Vbat*Vref;
amir_chaudhary 12:85b3174c8b30 113 pc.printf("%.03f\n\n\r", Vbat);
amir_chaudhary 12:85b3174c8b30 114
amir_chaudhary 12:85b3174c8b30 115
amir_chaudhary 12:85b3174c8b30 116 count++;
amir_chaudhary 12:85b3174c8b30 117
amir_chaudhary 12:85b3174c8b30 118 }
amir_chaudhary 12:85b3174c8b30 119
amir_chaudhary 12:85b3174c8b30 120 myBlueLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 121 wait(1);
amir_chaudhary 12:85b3174c8b30 122 myBlueLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 123 wait(1);
amir_chaudhary 12:85b3174c8b30 124
amir_chaudhary 12:85b3174c8b30 125 myRedLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 126 wait(1);
amir_chaudhary 12:85b3174c8b30 127 myRedLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 128 wait(1);
amir_chaudhary 12:85b3174c8b30 129
amir_chaudhary 12:85b3174c8b30 130 wait(1);
uss1994 10:f3b1186fc0b0 131
amir_chaudhary 11:7a7913d47ca6 132 char cont_measure_command[2] = {0x36, 0x1E};
amir_chaudhary 11:7a7913d47ca6 133 char single_measure_command[2] = {0x36, 0x2F};
amir_chaudhary 11:7a7913d47ca6 134 char stop_command[2] = {0x3F, 0xF9};
amir_chaudhary 11:7a7913d47ca6 135 char reset_command[1] = {0x06};
uss1994 10:f3b1186fc0b0 136
amir_chaudhary 11:7a7913d47ca6 137 // Reset the pressure sensor
amir_chaudhary 11:7a7913d47ca6 138 pc.printf("Resetting Pressure Sensor...\r\n");
amir_chaudhary 11:7a7913d47ca6 139 if ( spd800_i2c.write(0x00, reset_command, 1) != 0 ) {
amir_chaudhary 11:7a7913d47ca6 140 pc.printf("RESET FAILED!\r\n");
amir_chaudhary 11:7a7913d47ca6 141 }
uss1994 10:f3b1186fc0b0 142
uss1994 10:f3b1186fc0b0 143 // set up SHT31
uss1994 10:f3b1186fc0b0 144 si7021_power_pin = 1;
amir_chaudhary 12:85b3174c8b30 145 // Si7021 si7021 = Si7021(PB_9, PB_8);
amir_chaudhary 12:85b3174c8b30 146 Si7021 si7021 = Si7021(PB_11, PB_10);
amir_chaudhary 12:85b3174c8b30 147
amir_chaudhary 12:85b3174c8b30 148 myGreenLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 149 wait(0.05);
amir_chaudhary 12:85b3174c8b30 150 myGreenLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 151 wait(0.05);
amir_chaudhary 12:85b3174c8b30 152
amir_chaudhary 12:85b3174c8b30 153 myBlueLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 154 wait(0.05);
amir_chaudhary 12:85b3174c8b30 155 myBlueLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 156 wait(0.05);
amir_chaudhary 12:85b3174c8b30 157
amir_chaudhary 11:7a7913d47ca6 158
uss1994 10:f3b1186fc0b0 159 wait(1);
uss1994 10:f3b1186fc0b0 160
uss1994 10:f3b1186fc0b0 161
amir_chaudhary 11:7a7913d47ca6 162 // Take a few manual measurements
amir_chaudhary 11:7a7913d47ca6 163 while( true ) {
amir_chaudhary 12:85b3174c8b30 164
amir_chaudhary 12:85b3174c8b30 165
amir_chaudhary 11:7a7913d47ca6 166 pc.printf("\r\n\n");
amir_chaudhary 11:7a7913d47ca6 167 pc.printf("Measuring Pressure...\r\n");
amir_chaudhary 11:7a7913d47ca6 168 if ( spd800_i2c.write((0x25 << 1), single_measure_command, 2) != 0 ) {
amir_chaudhary 11:7a7913d47ca6 169 pc.printf("FAILED TO WRITE TO PRESSURE SENSOR\r\n");
mluis 0:92bca02df485 170 }
amir_chaudhary 11:7a7913d47ca6 171 wait(1);
amir_chaudhary 12:85b3174c8b30 172
amir_chaudhary 12:85b3174c8b30 173
amir_chaudhary 11:7a7913d47ca6 174 pc.printf("Measuring Temp/Humidity...\r\n");
amir_chaudhary 11:7a7913d47ca6 175 if ( !si7021.check() ) {
amir_chaudhary 11:7a7913d47ca6 176 pc.printf("TEMP/HUMIDITY SENSOR NOT WORKING\r\n");
amir_chaudhary 11:7a7913d47ca6 177 } else {
amir_chaudhary 11:7a7913d47ca6 178 si7021.measure();
amir_chaudhary 11:7a7913d47ca6 179 }
amir_chaudhary 12:85b3174c8b30 180
amir_chaudhary 12:85b3174c8b30 181
amir_chaudhary 11:7a7913d47ca6 182 pc.printf("Humidity: %d\r\n", si7021.get_humidity());
amir_chaudhary 11:7a7913d47ca6 183 pc.printf("Temperature: %d\r\n", si7021.get_temperature());
amir_chaudhary 11:7a7913d47ca6 184 pc.printf("Pressure: %f\r\n", read_pressure_measurement());
amir_chaudhary 11:7a7913d47ca6 185 wait(1);
amir_chaudhary 12:85b3174c8b30 186
amir_chaudhary 12:85b3174c8b30 187 myGreenLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 188 wait(0.05);
amir_chaudhary 12:85b3174c8b30 189 myGreenLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 190 wait(0.05);
amir_chaudhary 12:85b3174c8b30 191
amir_chaudhary 12:85b3174c8b30 192 myBlueLed = 1; // LED is ON
amir_chaudhary 12:85b3174c8b30 193 wait(0.05);
amir_chaudhary 12:85b3174c8b30 194 myBlueLed = 0; // LED is ON
amir_chaudhary 12:85b3174c8b30 195 wait(0.05);
amir_chaudhary 12:85b3174c8b30 196
mluis 3:9c6f7f082151 197
amir_chaudhary 11:7a7913d47ca6 198 }
amir_chaudhary 11:7a7913d47ca6 199
amir_chaudhary 11:7a7913d47ca6 200
amir_chaudhary 11:7a7913d47ca6 201
amir_chaudhary 11:7a7913d47ca6 202
amir_chaudhary 11:7a7913d47ca6 203 /*// Start Pressure Measurements
amir_chaudhary 11:7a7913d47ca6 204 pc.printf("Starting Measurements...\r\n");
amir_chaudhary 11:7a7913d47ca6 205 if ( i2c.write((0x25 << 1), cont_measure_command, 2) != 0 ) {
amir_chaudhary 11:7a7913d47ca6 206 pc.printf("START COMMAND FAILED!\r\n");
mluis 0:92bca02df485 207 }
amir_chaudhary 11:7a7913d47ca6 208 wait(1);
amir_chaudhary 11:7a7913d47ca6 209
amir_chaudhary 11:7a7913d47ca6 210 while( true ) {
amir_chaudhary 11:7a7913d47ca6 211 pc.printf("%f\r\n", read_measurement());
amir_chaudhary 11:7a7913d47ca6 212 wait(1);
amir_chaudhary 11:7a7913d47ca6 213 }*/
amir_chaudhary 11:7a7913d47ca6 214
amir_chaudhary 11:7a7913d47ca6 215
mluis 0:92bca02df485 216 }