Amir Chaudhary / Mbed 2 deprecated humidity-temp-pressure

Dependencies:   mbed LoRaWAN-lib SX1276Lib

Committer:
amir_chaudhary
Date:
Fri Dec 10 15:56:33 2021 +0000
Revision:
11:7a7913d47ca6
Parent:
10:f3b1186fc0b0
Child:
12:85b3174c8b30
Temp, Humidity and Diff Pressure

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 11:7a7913d47ca6 7 DigitalOut si7021_power_pin(PB_2);
mluis 0:92bca02df485 8
amir_chaudhary 11:7a7913d47ca6 9 Serial pc(SERIAL_TX, SERIAL_RX,115200);
mluis 0:92bca02df485 10
amir_chaudhary 11:7a7913d47ca6 11 void print_array(char *array, int len) {
amir_chaudhary 11:7a7913d47ca6 12 for (int idx = 0; idx < len; idx++) {
amir_chaudhary 11:7a7913d47ca6 13 pc.printf("%x", array[idx]);
amir_chaudhary 11:7a7913d47ca6 14 }
amir_chaudhary 11:7a7913d47ca6 15 pc.printf("\r\n");
mluis 0:92bca02df485 16 }
mluis 0:92bca02df485 17
amir_chaudhary 11:7a7913d47ca6 18 float read_pressure_measurement() {
amir_chaudhary 11:7a7913d47ca6 19 char output[9];
uss1994 10:f3b1186fc0b0 20
amir_chaudhary 11:7a7913d47ca6 21 // Read measurements
amir_chaudhary 11:7a7913d47ca6 22 if ( spd800_i2c.read((0x25 << 1), output, 9) != 0 ) { // read from register
amir_chaudhary 11:7a7913d47ca6 23 pc.printf("FAILED TO READ PRESSURE: %d\r\n", spd800_i2c.read((0x25 << 1), output, 9));
mluis 0:92bca02df485 24 }
amir_chaudhary 11:7a7913d47ca6 25 //print_array(output, 9);
amir_chaudhary 11:7a7913d47ca6 26
uss1994 10:f3b1186fc0b0 27 // Interpret
uss1994 10:f3b1186fc0b0 28 int16_t diffPressureTicks = (output[0] << 8) | output[1];
uss1994 10:f3b1186fc0b0 29 // int16_t temperatureTicks = (output[3] << 8) | output[4];
uss1994 10:f3b1186fc0b0 30 uint16_t scaleFactorDiffPressure = (output[6] << 8) | output[7];
amir_chaudhary 11:7a7913d47ca6 31
uss1994 10:f3b1186fc0b0 32 float diffPressure = (float)diffPressureTicks / (float)scaleFactorDiffPressure;
amir_chaudhary 11:7a7913d47ca6 33
uss1994 10:f3b1186fc0b0 34 return diffPressure;
uss1994 10:f3b1186fc0b0 35 }
uss1994 10:f3b1186fc0b0 36
amir_chaudhary 11:7a7913d47ca6 37 int main() {
amir_chaudhary 11:7a7913d47ca6 38 pc.printf("Starting Pressure/Temp/Humidity Sensor Test..\r\n");
amir_chaudhary 11:7a7913d47ca6 39
uss1994 10:f3b1186fc0b0 40 wait(3);
uss1994 10:f3b1186fc0b0 41
amir_chaudhary 11:7a7913d47ca6 42 char cont_measure_command[2] = {0x36, 0x1E};
amir_chaudhary 11:7a7913d47ca6 43 char single_measure_command[2] = {0x36, 0x2F};
amir_chaudhary 11:7a7913d47ca6 44 char stop_command[2] = {0x3F, 0xF9};
amir_chaudhary 11:7a7913d47ca6 45 char reset_command[1] = {0x06};
uss1994 10:f3b1186fc0b0 46
amir_chaudhary 11:7a7913d47ca6 47 // Reset the pressure sensor
amir_chaudhary 11:7a7913d47ca6 48 pc.printf("Resetting Pressure Sensor...\r\n");
amir_chaudhary 11:7a7913d47ca6 49 if ( spd800_i2c.write(0x00, reset_command, 1) != 0 ) {
amir_chaudhary 11:7a7913d47ca6 50 pc.printf("RESET FAILED!\r\n");
amir_chaudhary 11:7a7913d47ca6 51 }
uss1994 10:f3b1186fc0b0 52
uss1994 10:f3b1186fc0b0 53 // set up SHT31
uss1994 10:f3b1186fc0b0 54 si7021_power_pin = 1;
amir_chaudhary 11:7a7913d47ca6 55 Si7021 si7021 = Si7021(PB_9, PB_8);
amir_chaudhary 11:7a7913d47ca6 56
uss1994 10:f3b1186fc0b0 57 wait(1);
uss1994 10:f3b1186fc0b0 58
uss1994 10:f3b1186fc0b0 59
amir_chaudhary 11:7a7913d47ca6 60 // Take a few manual measurements
amir_chaudhary 11:7a7913d47ca6 61 while( true ) {
amir_chaudhary 11:7a7913d47ca6 62 pc.printf("\r\n\n");
amir_chaudhary 11:7a7913d47ca6 63 pc.printf("Measuring Pressure...\r\n");
amir_chaudhary 11:7a7913d47ca6 64 if ( spd800_i2c.write((0x25 << 1), single_measure_command, 2) != 0 ) {
amir_chaudhary 11:7a7913d47ca6 65 pc.printf("FAILED TO WRITE TO PRESSURE SENSOR\r\n");
mluis 0:92bca02df485 66 }
amir_chaudhary 11:7a7913d47ca6 67 wait(1);
amir_chaudhary 11:7a7913d47ca6 68 pc.printf("Measuring Temp/Humidity...\r\n");
amir_chaudhary 11:7a7913d47ca6 69 if ( !si7021.check() ) {
amir_chaudhary 11:7a7913d47ca6 70 pc.printf("TEMP/HUMIDITY SENSOR NOT WORKING\r\n");
amir_chaudhary 11:7a7913d47ca6 71 } else {
amir_chaudhary 11:7a7913d47ca6 72 si7021.measure();
amir_chaudhary 11:7a7913d47ca6 73 }
amir_chaudhary 11:7a7913d47ca6 74 pc.printf("Humidity: %d\r\n", si7021.get_humidity());
amir_chaudhary 11:7a7913d47ca6 75 pc.printf("Temperature: %d\r\n", si7021.get_temperature());
amir_chaudhary 11:7a7913d47ca6 76 pc.printf("Pressure: %f\r\n", read_pressure_measurement());
amir_chaudhary 11:7a7913d47ca6 77 wait(1);
mluis 3:9c6f7f082151 78
amir_chaudhary 11:7a7913d47ca6 79 }
amir_chaudhary 11:7a7913d47ca6 80
amir_chaudhary 11:7a7913d47ca6 81
amir_chaudhary 11:7a7913d47ca6 82
amir_chaudhary 11:7a7913d47ca6 83
amir_chaudhary 11:7a7913d47ca6 84 /*// Start Pressure Measurements
amir_chaudhary 11:7a7913d47ca6 85 pc.printf("Starting Measurements...\r\n");
amir_chaudhary 11:7a7913d47ca6 86 if ( i2c.write((0x25 << 1), cont_measure_command, 2) != 0 ) {
amir_chaudhary 11:7a7913d47ca6 87 pc.printf("START COMMAND FAILED!\r\n");
mluis 0:92bca02df485 88 }
amir_chaudhary 11:7a7913d47ca6 89 wait(1);
amir_chaudhary 11:7a7913d47ca6 90
amir_chaudhary 11:7a7913d47ca6 91 while( true ) {
amir_chaudhary 11:7a7913d47ca6 92 pc.printf("%f\r\n", read_measurement());
amir_chaudhary 11:7a7913d47ca6 93 wait(1);
amir_chaudhary 11:7a7913d47ca6 94 }*/
amir_chaudhary 11:7a7913d47ca6 95
amir_chaudhary 11:7a7913d47ca6 96
mluis 0:92bca02df485 97 }