Forum >Replies by silvia.verch
userhead silvia.verch
Replies (2)
  • You Reply: ESP32 project BNO055.ino
    This sketch does not work.
    The Scanresult shows I2C addresses 28 and 76.

    Serial Port send the message
    "bno begin faild"
    "device not detected"


    /*
    example - Simultaneously use the two I2C bus of the ESP32
    https://github.com/espressif/arduino-esp32/issues/977

    */

    //1. Load the Headerfiles
    #include <Wire.h>
    #include <dummy.h> //for esp32
    #include "DFRobot_BNO055.h"


    //2. Define address pins I2C
    #define SDA1 21
    #define SCL1 22

    #define SDA2 5
    #define SCL2 4



    //3. Create I2C objects
    TwoWire I2Cone = TwoWire(0);
    TwoWire I2Ctwo = TwoWire(1);


    //4. BNO055
    typedef DFRobot_BNO055_IIC BNO; // ******** use abbreviations instead of full names ********
    BNO bno(&I2Ctwo, 0x28); // input TwoWire interface and IIC address
    // show last sensor operate status
    void printLastOperateStatus(BNO::eStatus_t eStatus)
    {
    switch (eStatus) {
    case BNO::eStatusOK: Serial.println("everything ok"); break;
    case BNO::eStatusErr: Serial.println("unknow error"); break;
    case BNO::eStatusErrDeviceNotDetect: Serial.println("device not detected"); break;
    case BNO::eStatusErrDeviceReadyTimeOut: Serial.println("device ready time out"); break;
    case BNO::eStatusErrDeviceStatus: Serial.println("device internal status error"); break;
    default: Serial.println("unknow status"); break;
    }
    }





    void setup() {
    //1. Start Serial communication
    Serial.begin(115200); //Start Serial Interface
    //2. Start I2C Interfaces
    I2Cone.begin(SDA1, SCL1, 400000); // SDA pin 21, SCL pin 22 TTGO TQ
    I2Ctwo.begin(SDA2, SCL2, 400000); // SDA pin 5, SCL pin 4 builtin OLED

    //3. Scan I2C Interface one
    scan1();
    Serial.println();
    delay(100);
    //4. Scan I2C Interface two
    scan2();
    Serial.println();

    //4. BNO055
    bno.reset();
    while (bno.begin() != BNO::eStatusOK) {
    Serial.println("bno begin faild");
    printLastOperateStatus(bno.lastOperateStatus);
    delay(2000);
    }
    Serial.println("bno begin success");

    }

    loop{
    ;
    }
  • You Reply: ESP32 Arduino Projekt BMP280.ino
    This code works fine!

    /*
    example - Simultaneously use the two I2C bus of the ESP32
    https://github.com/espressif/arduino-esp32/issues/977

    */

    //1. Load the Headerfiles
    #include <Wire.h>
    #include <dummy.h> //for esp32
    #include "DFRobot_BMP280.h"


    //2. Define address pins I2C
    #define SDA1 21
    #define SCL1 22

    #define SDA2 5
    #define SCL2 4



    //3. Create I2C objects
    TwoWire I2Cone = TwoWire(0);
    TwoWire I2Ctwo = TwoWire(1);


    //4. BMP280
    typedef DFRobot_BMP280_IIC BMP; // ******** use abbreviations instead of full names ********
    BMP bmp(&I2Ctwo, BMP::eSdo_low);
    #define SEA_LEVEL_PRESSURE 1015.0f // sea level pressure
    // show last sensor operate status
    void printLastOperateStatus(BMP::eStatus_t eStatus)
    {
    switch (eStatus) {
    case BMP::eStatusOK: Serial.println("everything ok"); break;
    case BMP::eStatusErr: Serial.println("unknow error"); break;
    case BMP::eStatusErrDeviceNotDetected: Serial.println("device not detected"); break;
    case BMP::eStatusErrParameter: Serial.println("parameter error"); break;
    default: Serial.println("unknow status"); break;
    }
    }


    void setup() {
    //1. Start Serial communication
    Serial.begin(115200); //Start Serial Interface
    //2. Start I2C Interfaces
    I2Cone.begin(SDA1, SCL1, 400000); // SDA pin 21, SCL pin 22 TTGO TQ
    I2Ctwo.begin(SDA2, SCL2, 400000); // SDA pin 5, SCL pin 4 builtin OLED

    //3. Scan I2C Interface one
    scan1();
    Serial.println();
    delay(100);
    //4. Scan I2C Interface two
    scan2();
    Serial.println();

    //4. BMP280
    bmp.reset();
    Serial.println("bmp read data test");
    while (bmp.begin() != BMP::eStatusOK) {
    Serial.println("bmp begin faild");
    printLastOperateStatus(bmp.lastOperateStatus);
    delay(2000);
    }
    Serial.println("bmp begin success");

    }

    void loop()
    {
    float temp = bmp.getTemperature();
    uint32_t press = bmp.getPressure();
    float alti = bmp.calAltitude(SEA_LEVEL_PRESSURE, press);

    Serial.println();
    Serial.println("======== start print ========");
    Serial.print("temperature (unit Celsius): "); Serial.println(temp);
    Serial.print("pressure (unit pa): "); Serial.println(press);
    Serial.print("altitude (unit meter): "); Serial.println(alti);
    Serial.println("======== end print ========");

    delay(1000);
    }

    /*
    example - Simultaneously use the two I2C bus of the ESP32
    https://github.com/espressif/arduino-esp32/issues/977

    */

    //1. Load the Headerfiles
    #include <Wire.h>
    #include <dummy.h> //for esp32
    #include "DFRobot_BMP280.h"


    //2. Define address pins I2C
    #define SDA1 21
    #define SCL1 22

    #define SDA2 5
    #define SCL2 4



    //3. Create I2C objects
    TwoWire I2Cone = TwoWire(0);
    TwoWire I2Ctwo = TwoWire(1);


    //4. BMP280
    typedef DFRobot_BMP280_IIC BMP; // ******** use abbreviations instead of full names ********
    BMP bmp(&I2Ctwo, BMP::eSdo_low);
    #define SEA_LEVEL_PRESSURE 1015.0f // sea level pressure
    // show last sensor operate status
    void printLastOperateStatus(BMP::eStatus_t eStatus)
    {
    switch (eStatus) {
    case BMP::eStatusOK: Serial.println("everything ok"); break;
    case BMP::eStatusErr: Serial.println("unknow error"); break;
    case BMP::eStatusErrDeviceNotDetected: Serial.println("device not detected"); break;
    case BMP::eStatusErrParameter: Serial.println("parameter error"); break;
    default: Serial.println("unknow status"); break;
    }
    }


    void setup() {
    //1. Start Serial communication
    Serial.begin(115200); //Start Serial Interface
    //2. Start I2C Interfaces
    I2Cone.begin(SDA1, SCL1, 400000); // SDA pin 21, SCL pin 22 TTGO TQ
    I2Ctwo.begin(SDA2, SCL2, 400000); // SDA pin 5, SCL pin 4 builtin OLED

    //3. Scan I2C Interface one
    scan1();
    Serial.println();
    delay(100);
    //4. Scan I2C Interface two
    scan2();
    Serial.println();

    //4. BMP280
    bmp.reset();
    Serial.println("bmp read data test");
    while (bmp.begin() != BMP::eStatusOK) {
    Serial.println("bmp begin faild");
    printLastOperateStatus(bmp.lastOperateStatus);
    delay(2000);
    }
    Serial.println("bmp begin success");

    }

    void loop()
    {
    float temp = bmp.getTemperature();
    uint32_t press = bmp.getPressure();
    float alti = bmp.calAltitude(SEA_LEVEL_PRESSURE, press);

    Serial.println();
    Serial.println("======== start print ========");
    Serial.print("temperature (unit Celsius): "); Serial.println(temp);
    Serial.print("pressure (unit pa): "); Serial.println(press);
    Serial.print("altitude (unit meter): "); Serial.println(alti);
    Serial.println("======== end print ========");

    delay(1000);
    }