Code to test the Pressue PCB, non Lora Testing

Dependencies:   mbed LoRaWAN-lib SX1276Lib

app/main.cpp

Committer:
amir_chaudhary
Date:
23 months ago
Revision:
13:f8d1a87594ec
Parent:
12:85b3174c8b30

File content as of revision 13:f8d1a87594ec:


#include "mbed.h"
#include "Si7021.h"

// I2C Definition
I2C spd800_i2c(PB_9, PB_8); //sda, scl

DigitalOut myGreenLed(D7); // ON = Lora Connected
DigitalOut myBlueLed(PA_11);  // Blink twice = Sends data or increments counter value Pelase proceed
DigitalOut myRedLed(PB_15);

DigitalOut LoraPin(PB_14);
DigitalOut I2C1Pin(PB_12);
DigitalOut I2C2Pin(PB_13);
DigitalOut PWEN(PC_8);

DigitalOut Pin51(PC_10);
DigitalOut Pin52(PC_11);
DigitalOut Pin53(PC_12);
DigitalOut RM(PC_2);
DigitalOut Light2(PC_0);
DigitalOut Light1(PA_1);


AnalogIn BAT_PIN_1(PC_5);
AnalogIn BAT_PIN(A2);
AnalogIn LIGHT_1_PIN(A1);
AnalogIn LIGHT_2_PIN(A5);
AnalogIn RH_PIN(PC_2);
AnalogIn VCE_PIN(PB_1);
DigitalOut relaypin(D6);
AnalogIn Exit(PC_4);



int count =0;
float Vref = 3.342;


DigitalOut si7021_power_pin(PB_2);

Serial pc(SERIAL_TX, SERIAL_RX,115200);

void print_array(char *array, int len) {
    for (int idx = 0; idx < len; idx++) {
         pc.printf("%x", array[idx]);
    } 
    pc.printf("\r\n");
}

float read_pressure_measurement() {
    char output[9];
    
    // Read measurements
    if ( spd800_i2c.read((0x25 << 1), output, 9) != 0 ) { // read from register
        pc.printf("FAILED TO READ PRESSURE: %d\r\n", spd800_i2c.read((0x25 << 1), output, 9));
    }
    //print_array(output, 9);
    
    // Interpret
    int16_t diffPressureTicks = (output[0] << 8) | output[1];
    // int16_t temperatureTicks = (output[3] << 8) | output[4];
    uint16_t scaleFactorDiffPressure = (output[6] << 8) | output[7];
    
    float diffPressure = (float)diffPressureTicks / (float)scaleFactorDiffPressure;
    
    return diffPressure;
}

int main() {
    pc.printf("Starting Pressure/Temp/Humidity Sensor Test..\r\n");
    
   PWEN = 1; 
    
    myGreenLed = 1; // LED is ON 
    wait(0.25);
    myGreenLed = 0; // LED is ON 
    wait(0.25);
        
    myRedLed = 1; // LED is ON  
    wait(0.25);
    myRedLed = 0; // LED is ON  
    wait(0.25);    

    myBlueLed = 1;
    wait(0.25);    
    myBlueLed = 0;
    wait(0.25);    
        
 
        
    for(int i=0; i<5; i++){
        
    myGreenLed = 1; // LED is ON   
  //   PWEN = 1;  
    LoraPin = 1; 
    I2C1Pin = 1; 
    I2C2Pin = 1; 
    wait(1);
    myGreenLed = 0; // LED is ON

    myRedLed = 1; // LED is ON  
  //  PWEN = 0;   
    LoraPin = 0; 
    I2C1Pin = 0; 
    I2C2Pin = 0; 
    wait(1);
    myRedLed = 0;// LED is ON   
    
    pc.printf("%d\t",count);
    
    float meas_Vbat = BAT_PIN.read();
    float Vbat = meas_Vbat*Vref;
    pc.printf("%.03f\n\r", Vbat);
    
    wait(1);
    count++;
    
    }
        
    wait(1);
    
    char cont_measure_command[2] = {0x36, 0x1E};
    char single_measure_command[2] = {0x36, 0x2F}; 
    char stop_command[2] = {0x3F, 0xF9};
    char reset_command[1] = {0x06};
    
    // Reset the pressure sensor
 //   pc.printf("Resetting Pressure Sensor...\r\n");
    if ( spd800_i2c.write(0x00, reset_command, 1) != 0 ) {
        pc.printf("RESET FAILED!\r\n");        
    }
    
    // set up SHT31
    si7021_power_pin = 1;
//  Si7021 si7021 = Si7021(PB_9, PB_8);
    Si7021 si7021 = Si7021(PB_11, PB_10);
     
    wait(1);
    
    count=0;  
                 
                 
    // Take a few manual measurements
    while( true ) {
        
        
    pc.printf("%d\t",count);
    float meas_Vbat = BAT_PIN.read();
    float Vbat = meas_Vbat*Vref;
    pc.printf("%.03f\n\r", Vbat);
    
    wait(1);
    count++;  
        
        
        
    //    myRedLed = 1; // LED is ON  
    //    wait(0.1);
        myRedLed = 0; // LED is ON 
        
        LoraPin = 0; 
        I2C1Pin = 0; 
        I2C2Pin = 0; 
        
        wait(1);
           
 //       pc.printf("\r\n\n");
 //       pc.printf("Measuring Pressure...\r\n");
        if ( spd800_i2c.write((0x25 << 1), single_measure_command, 2) != 0 ) {
            pc.printf("FAILED TO WRITE TO PRESSURE SENSOR\r\n");
        }
        wait(1);
        
               
  //      pc.printf("Measuring Temp/Humidity...\r\n");
        if ( !si7021.check() ) {
  //          pc.printf("TEMP/HUMIDITY SENSOR NOT WORKING\r\n");
        } else {
            si7021.measure();
        }
        
        
  //      pc.printf("Humidity: %d\r\n", si7021.get_humidity());
  //      pc.printf("Temperature: %d\r\n", si7021.get_temperature());
 //       pc.printf("Pressure: %f\r\n", read_pressure_measurement());
        wait(1);
     
        

        myGreenLed = 1; // LED is ON   
        wait(0.1);
        myGreenLed = 0; // LED is ON     
        
        LoraPin = 1; 
        I2C1Pin = 1; 
        I2C2Pin = 1;     
        wait(54);

    }
 
      
}