Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    BMI160 significant motion problem

    Member

    Re: BMI160 significant motion problem

    Hi,

    thanks for your response! It works now!

    Marta

    Member

    Re: BMI160 significant motion problem

    1. Yes. I am using version before commit(a23022cc3208fe367d886c65df2f025e80203037).

    2. Configuration sequence is:

    • sig_mot_proof -> 1=0.48s
    • sig_mot_skip -> 1=2.56s
    • sig_mot_threshold -> 10

    3. I would.

    4. I can do that, but every time I made a call of function bmi160_set_int_config with given parameters, BMI_OK result was returned every time. 

    5. I read that in datasheet and I am aware of that fact. But, sometimes no matter what you do with device, interrupt is never triggered.

    Looking forward to your answer.

    Highlighted
    Member

    Re: BMI160 significant motion problem

    Any update on this topic?

    Regards,
    Josip

    New Poster

    Re: BMI160 significant motion problem

    Hi! I'm having problems with the first part:

    • Initialize sensor through bmi160_init

    I'm using a gy-bmi160 like this https://es.banggood.com/GY-BMI160-Module-6DOF-6-Axis-Angular-Velocity-Gyroscope-Gravity-Acceleration...

    I've tried to turn on a LED with the INT1 interrupt but I'm getting the 'Failure' message indicating the init went wrong. This is programmed into a ESP32 using SPI interface.

    Here's my code:

    #include "bmi160.h
    void setup() {
    int8_t rslt;
    Serial.begin(19200);
    pinMode(26,INPUT);
    pinMode(25,OUTPUT);
    struct bmi160_int_settg int_config;
    struct bmi160_dev sensor;
    //Init Modo SPI
    sensor.id = 0;
    sensor.interface = BMI160_SPI_INTF;
    rslt = bmi160_init(&sensor);


    if(rslt==BMI160_OK){
        Serial.println("Success");
    }else{
         Serial.println("Failure");
    }
    delay(1000);

    //Rango acc 2g, low power, 50HZ
    sensor.accel_cfg.range = BMI160_ACCEL_RANGE_2G;
    sensor.accel_cfg.odr = BMI160_ACCEL_ODR_50HZ;
    sensor.accel_cfg.power = BMI160_ACCEL_PMU_LOW_POWER;
    delay(5);

    /* Interrupcion INT1 */
    int_config.int_channel = BMI160_INT_CHANNEL_1;

    int_config.int_type = BMI160_ACC_ANY_MOTION_INT;// Choosing Any motion interrupt
    /* Select the interrupt channel/pin settings */
    int_config.int_pin_settg.output_en = BMI160_ENABLE;// Enabling interrupt pins to act as output pin
    int_config.int_pin_settg.output_mode = BMI160_DISABLE;// Choosing push-pull mode for interrupt pin
    int_config.int_pin_settg.output_type = BMI160_DISABLE;// Choosing active low output
    int_config.int_pin_settg.edge_ctrl = BMI160_ENABLE;// Choosing edge triggered output
    int_config.int_pin_settg.input_en = BMI160_DISABLE;// Disabling interrupt pin to act as input
    int_config.int_pin_settg.latch_dur = BMI160_LATCH_DUR_NONE;// non-latched output

    /* Select the Any-motion interrupt parameters */
    int_config.int_type_cfg.acc_any_motion_int.anymotion_en = BMI160_ENABLE;// 1- Enable the any-motion, 0- disable any-motion
    int_config.int_type_cfg.acc_any_motion_int.anymotion_x = BMI160_ENABLE;// Enabling x-axis for any motion interrupt
    int_config.int_type_cfg.acc_any_motion_int.anymotion_y = BMI160_ENABLE;// Enabling y-axis for any motion interrupt
    int_config.int_type_cfg.acc_any_motion_int.anymotion_z = BMI160_ENABLE;// Enabling z-axis for any motion interrupt
    int_config.int_type_cfg.acc_any_motion_int.anymotion_dur = 0;// any-motion duration
    int_config.int_type_cfg.acc_any_motion_int.anymotion_thr = 2;// (2-g range) -> (slope_thr) * 3.91 mg, (4-g range) -> (slope_thr) * 7.81 mg, (8-g range) ->(slope_thr) * 15.63 mg, (16-g range) -> (slope_thr) * 31.25 mg

    /* Set the Any-motion interrupt */
    bmi160_set_int_config(&int_config, &sensor); /* sensor is an instance of the structure bmi160_dev */

    }

    void loop() {
    Serial.println(digitalRead(26));
    if(digitalRead(26)==1){
    digitalWrite(25,HIGH);
    Serial.println("Activated");
    delay(500);
    digitalWrite(25,LOW);
    }
    }

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist