The integration of BME680 sensor with Nucleo board. ROS Enabled

Dependencies:   mbed

main.cpp

Committer:
zillkhan
Date:
2021-09-28
Revision:
2:816ad5bfa327
Parent:
1:ca82df4237eb

File content as of revision 2:816ad5bfa327:

#include "mbed.h"
#include <ros.h>
#include "std_msgs/String.h"
#include "mbed_bme680.h"

#define I2C_SDA D14
#define I2C_SCL D15

I2C i2c(I2C_SDA, I2C_SCL);  // Used inside the BME680 Mbed Lib.

BME680 bme680(0xEE);


ros::NodeHandle nh;

std_msgs::String msg;
ros::Publisher sensor_bme("sensor_bme", &msg);

int main() {
    
    if (!bme680.begin()) {
        printf("BME680 Begin failed \r\n");
        return 1;
    }
    nh.initNode();  
    nh.advertise(sensor_bme);

    while (1) { //creates an eternal loop
        char* buffer = (char*) malloc(sizeof(char) * 50);
        
        bme680.performReading();
        sprintf (buffer, "Temp: %0.2f degC,Humi: %0.2f %%,Pres: %0.2f hPa,VOC: %0.2f KOhms", bme680.getTemperature(),bme680.getHumidity(),(bme680.getPressure() / 100.0),(bme680.getGasResistance() / 1000.0));
        
        
        msg.data = buffer;
        sensor_bme.publish(&msg);
               
        nh.spinOnce();
        free(buffer);
        wait_ms(1000);

    }
}