我正在使用连接到 mpu9250 模块的 esp32 (nodemcu 32s)。 电路原理图是
这是arduino ide的esp代码:
/***************************************************************************
* Example sketch for the MPU9250_WE library
***************************************************************************/
#include <MPU9250_WE.h>
#include <Wire.h>
#include <HardwareSerial.h>
#define MPU9250_ADDR 0x68
MPU9250_WE myMPU9250 = MPU9250_WE(MPU9250_ADDR);
void setup() {
Serial.begin(115200);
Wire.begin();
delay(200);
myMPU9250.autoOffsets();
myMPU9250.setAccOffsets(-14240.0, 18220.0, -17280.0, 15590.0, -20930.0, 12080.0);
myMPU9250.setGyrOffsets(45.0, 145.0, -105.0);
myMPU9250.enableGyrDLPF();
myMPU9250.setGyrDLPF(MPU9250_DLPF_6);
myMPU9250.setSampleRateDivider(5);
myMPU9250.setGyrRange(MPU9250_GYRO_RANGE_250);
myMPU9250.setAccRange(MPU9250_ACC_RANGE_2G);
myMPU9250.enableAccDLPF(true);
myMPU9250.setAccDLPF(MPU9250_DLPF_6);
myMPU9250.enableAccAxes(MPU9250_ENABLE_XYZ);
myMPU9250.enableGyrAxes(MPU9250_ENABLE_XYZ);
myMPU9250.setMagOpMode(AK8963_CONT_MODE_100HZ);
delay(200);
}
void loop() {
xyzFloat gValue = myMPU9250.getGValues();
xyzFloat gyr = myMPU9250.getGyrValues();
xyzFloat magValue = myMPU9250.getMagValues();
float temp = myMPU9250.getTemperature();
float resultantG = myMPU9250.getResultantG(gValue);
//float AccArray[3]={gValue.x , gValue.y , gValue.z};
// Serial.println(AccArray[3]);
String pausedata=" ";
String datatoprint= gValue.x +pausedata+gValue.y+pausedata + gValue.z;
Serial.println(datatoprint);
delay(200);
}
而matlab代码:
s=serialport("COM3",115200);
fid=fopen("serialread.txt",'a')
%legimu=[];
%row=0;
while (true)
% row=row+1;
data=readline(s)
data2 = fscanf(s, '%f%c');
fprintf(fid,data);
%legimu(row,:)=str2num(data);
end
serialread.txt显示: 如果没有开头出现的信息,如何获取数据。这样我就可以实时绘制数据。
我尝试将数据作为浮点数组发送。但数据无法正确显示(arduino 的串行监视器中仅出现 0.00)。 事实上,我是arduino的初学者。我想构建七个运动捕捉单元(esp32+振动电机+mpu 9250传感器),这样我就可以计算主体运动。然后数据应发送到 matlab,发送允许的运动范围并实时绘制角度。如果运动角度超出运动范围,振动电机就会振动。 我想将这个esp转换为路由器,并使用串口将从其他esp接收到的所有数据显示到matlab中,以便实时显示数据图并向esps发送命令。 我无法在 matlab 中使用 Wifi。 如果有任何建议来解决这些问题
您获得了额外的数据,因为您使用相同的串行端口进行日志记录(您在 Arduino 串行监视器中看到的内容)并将数据发送到 MATLAB,因此您还可以在 MATLAB 中看到所有日志记录消息。
有 2 种可能的解决方案: