Окончательный успех!
1) всё работает со старой версией библиотек ESP32 (версия 1.0.6) - кстати, они сильно меньше занимают места на диске (245Мб), чем версия 2.0.х (2,5Гб)
2) нужно явно указывать тип константы размера считываемых регистров при обращении к Wire.requestFrom - то есть либо все передаваемые аргументы определить как int, либо как uint16_t, uint8_t и bool.
Я сделал определение их в начале программы:
// Board: ESP32 Dev Module + MPU6050
//pinout:
// GY-521_VCC - ESP32_3V3
// GY-521_GND - ESP32_GND
// GY-521_SCL - ESP32_D22
// GY-521_SDA - ESP32_D21
#include <Wire.h>
const uint16_t MPU_addr=0x68; // MPU-6050 I2C-address
const uint8_t MPU_size=14;
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup(){
Serial.begin(115200);
Serial.println("Serial connection established.");
Wire.begin();
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); // PWR_MGMT_1
Wire.write(0); // set to 0 to wakeup MPU-6050
Wire.endTransmission(true);
Serial.println("Wrote to IMU");
}
void loop(){
mpu_read();
}
void mpu_read(){
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B); // starting from 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU_addr,MPU_size,true); // request all of 14 register (as defined)
AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
Tmp=Wire.read()<<8|Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
GyX=Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
GyY=Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
GyZ=Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
Serial.print("Accelerometer Values: ");
Serial.print("AcX: "); Serial.print(AcX); Serial.print(" AcY: "); Serial.print(AcY); Serial.print(" AcZ: "); Serial.print(AcZ);
Serial.print(" Gyroscope Values: ");
Serial.print("GyX: "); Serial.print(GyX); Serial.print(" GyY: "); Serial.print(GyY); Serial.print(" GyZ: "); Serial.print(GyZ);
Serial.print(" Temperature: " ); Serial.print(Tmp);
Serial.print("\n");
delay(300);
}
Всё скомпилировалось без ошибок и предупреждений, плата работает, вопрос решён.