提问人:redib 提问时间:11/17/2023 更新时间:11/17/2023 访问量:26
ESP32 未连接到 MPU9500/6500
ESP32 not connecting to MPU9500/6500
问:
我目前使用 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);
}
这是来自此处的代码,使用metioned库(我已经安装)。 现在,当我在 ESP32 上运行此代码时,串行监视器中返回以下结果:
IMU initialization unsuccessful
Check IMU wiring or try cycling power
Status: -1
这显然是一个问题,这就是我寻求帮助的原因。因为如果我理解正确,ESP32 无法连接到 MPU9250/6500。(是的,我已经检查了接线是否正确)
我尝试了以下方法:
- 更换电路中的所有电线
- 测试所有电线的电导率
- 更换计算机到 ESP32 的电线
- 使用另一台计算机对 ESP32 进行编程
- 将 ESP-32s WROOM 开发板 v1.1 替换为 ESP-32S WROOM 开发板 v1
- 将 ESP-32s WROOM 开发板 v1.1 替换为 Arduino Uno
- 更换 MPU9250/6500
- 许多不同的教程,包括但不限于以下内容:https://www.youtube.com/watch?v=mzwovYcozvI、https://www.youtube.com/watch?v=yhz3bRQLvBY、https://www.youtube.com/watch?v=V4NdsBjUAO0 https://www.youtube.com/watch?v=dXcF-Uqa-gw
- 哭
答:
0赞
redib
11/26/2023
#1
我想通了。因此,事实证明,由于某种原因,使用 初始化 I2C 协议不会使用标准的 SDA 和 SCL 引脚。为此,您必须使用将 SDA 和 SCL 引脚设置为 21 和 22 的线路初始化 I2C 通信。
要实现此目的,您需要:Wire.begin()
Wire.begin(21, 22)
TwoWire MainWire = TwoWire(0);
MPU9250 IMU = MPU9250(MainWire, 0x68);
在代码的开头。以及设置中的以下内容:
MainWire.begin(21,22);
IMU.begin();
评论