I have used mpu6050 with Arduino Nano and bluetooth module it works fine .
#include <MPU6050.h>
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>
#include <ESP8266WiFi.h>
#include <Wire.h>
MPU6050 mpu;
boolean freefallDetected = false;
//char token = “”; //fill the token of cayenne
char ssid = “"; //fill with wifi ssid
char pwd[*] = "”; //fill with wifi password
char username = “2d4";
char password[] = "c24d8";
char clientID[] = "******”;
void setup()
{
Serial.begin(115200);
Cayenne.begin(username, password, clientID, ssid, pwd);
Serial.println(“Initialize MPU6050”);
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_16G))
{
Serial.println(“Could not find a valid MPU6050 sensor, check wiring!”);
delay(500);
}
mpu.setAccelPowerOnDelay(MPU6050_DELAY_3MS);
mpu.setIntFreeFallEnabled(true);
mpu.setIntZeroMotionEnabled(false);
mpu.setIntMotionEnabled(false);
mpu.setDHPFMode(MPU6050_DHPF_5HZ);
mpu.setFreeFallDetectionThreshold(17);
mpu.setFreeFallDetectionDuration(2);
checkSettings();
attachInterrupt(12, doInt, RISING);
}
void doInt()
{
freefallDetected = true;
}
void checkSettings()
{
Serial.println();
Serial.print(" * Sleep Mode: ");
Serial.println(mpu.getSleepEnabled() ? “Enabled” : “Disabled”);
Serial.print(" * Motion Interrupt: ");
Serial.println(mpu.getIntMotionEnabled() ? “Enabled” : “Disabled”);
Serial.print(" * Zero Motion Interrupt: ");
Serial.println(mpu.getIntZeroMotionEnabled() ? “Enabled” : “Disabled”);
Serial.print(" * Free Fall Interrupt: ");
Serial.println(mpu.getIntFreeFallEnabled() ? “Enabled” : “Disabled”);
Serial.print(" * Free Fal Threshold: ");
Serial.println(mpu.getFreeFallDetectionThreshold());
Serial.print(" * Free FallDuration: ");
Serial.println(mpu.getFreeFallDetectionDuration());
Serial.print(" * Clock Source: ");
switch (mpu.getClockSource())
{
case MPU6050_CLOCK_KEEP_RESET: Serial.println(“Stops the clock and keeps the timing generator in reset”); break;
case MPU6050_CLOCK_EXTERNAL_19MHZ: Serial.println(“PLL with external 19.2MHz reference”); break;
case MPU6050_CLOCK_EXTERNAL_32KHZ: Serial.println(“PLL with external 32.768kHz reference”); break;
case MPU6050_CLOCK_PLL_ZGYRO: Serial.println(“PLL with Z axis gyroscope reference”); break;
case MPU6050_CLOCK_PLL_YGYRO: Serial.println(“PLL with Y axis gyroscope reference”); break;
case MPU6050_CLOCK_PLL_XGYRO: Serial.println(“PLL with X axis gyroscope reference”); break;
case MPU6050_CLOCK_INTERNAL_8MHZ: Serial.println(“Internal 8MHz oscillator”); break;
}
Serial.print(" * Accelerometer: “);
switch (mpu.getRange())
{
case MPU6050_RANGE_16G: Serial.println(”+/- 16 g"); break;
case MPU6050_RANGE_8G: Serial.println(“+/- 8 g”); break;
case MPU6050_RANGE_4G: Serial.println(“+/- 4 g”); break;
case MPU6050_RANGE_2G: Serial.println(“+/- 2 g”); break;
}
Serial.print(" * Accelerometer offsets: “);
Serial.print(mpu.getAccelOffsetX());
Serial.print(” / “);
Serial.print(mpu.getAccelOffsetY());
Serial.print(” / ");
Serial.println(mpu.getAccelOffsetZ());
Serial.print(" * Accelerometer power delay: ");
switch (mpu.getAccelPowerOnDelay())
{
case MPU6050_DELAY_3MS: Serial.println(“3ms”); break;
case MPU6050_DELAY_2MS: Serial.println(“2ms”); break;
case MPU6050_DELAY_1MS: Serial.println(“1ms”); break;
case MPU6050_NO_DELAY: Serial.println(“0ms”); break;
}
Serial.println();
}
void loop()
{
Cayenne.run();
}
CAYENNE_OUT(V8)
{
Vector rawAccel = mpu.readRawAccel();
Activites act = mpu.readActivites();
if (freefallDetected)
{
Cayenne.virtualWrite(V8, act.isFreeFall); //virtual pin
delay(100);
}
}