我目前使用 ESP-32s WROOM 开发板 v1.1 作为控制模块。我已使用以下连接将其作为 IMU 连接到 MPU9250/6500: 作为 ESP-32s WROOM 开发板 v1.1 的代码,我使用了 Arduino IDE 2.2.1(ALKS ESP32 作为板),代码如下:
#include "MPU9250.h"
// an MPU9250 object with the MPU-9250 sensor on I2C bus 0 with address 0x68
MPU9250 IMU(Wire, 0x68);
int status;
void setup() {
// serial to display data
Serial.begin(115200);
while (!Serial) {}
// start communication with IMU
status = IMU.begin();
if (status < 0) {
Serial.println("IMU initialization unsuccessful");
Serial.println("Check IMU wiring or try cycling power");
Serial.print("Status: ");
Serial.println(status);
while (1) {}
}
}
void loop() {
// read the sensor
IMU.readSensor();
// display the data
Serial.print(IMU.getAccelX_mss(), 6);
Serial.print("\t");
Serial.print(IMU.getAccelY_mss(), 6);
Serial.print("\t");
Serial.print(IMU.getAccelZ_mss(), 6);
Serial.print("\t");
Serial.print(IMU.getGyroX_rads(), 6);
Serial.print("\t");
Serial.print(IMU.getGyroY_rads(), 6);
Serial.print("\t");
Serial.print(IMU.getGyroZ_rads(), 6);
Serial.print("\t");
Serial.print(IMU.getMagX_uT(), 6);
Serial.print("\t");
Serial.print(IMU.getMagY_uT(), 6);
Serial.print("\t");
Serial.print(IMU.getMagZ_uT(), 6);
Serial.print("\t");
Serial.println(IMU.getTemperature_C(), 6);
delay(100);
}
这是来自教程here的代码,使用提到的库(我已经安装了)。 现在,当我在 ESP32 上运行此代码时,串行监视器中返回以下结果:
IMU initialization unsuccessful
Check IMU wiring or try cycling power
Status: -1
这显然是一个问题,这就是我寻求帮助的原因。因为如果我理解正确的话,ESP32无法连接到MPU9250/6500。 (是的,我已经检查过接线是否正确)
我尝试了以下方法:
我想通了。因此,事实证明,由于某种原因,使用
Wire.begin()
初始化 I2C 协议并没有使用标准 SDA 和 SCL 引脚。为此,您必须使用线 Wire.begin(21, 22)
初始化 I2C 通信,该线将 SDA 和 SCL 引脚设置为 21 和 22。
要实现这一点,您需要执行以下操作:
TwoWire MainWire = TwoWire(0);
MPU9250 IMU = MPU9250(MainWire, 0x68);
在代码的开头。设置如下:
MainWire.begin(21,22);
IMU.begin();