1

我使用Arduinouno 将草图上传到 esp 01 模块。我附上了我如何连接esp-01和的图像mpu6050,浏览器连续打印陀螺仪值,但增加 0.01 我需要实际的陀螺仪值

[1]
#include <ESP8266WiFi.h>
#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

const char* ssid = "TP-LINK";
const char* password = "1913131";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {

  Serial.begin(115200);
  delay(1000);


  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());



  delay(5000);
  //Serial.begin(9600);
  Wire.begin(0,2);
  delay(1000);


  mpu6050.begin();
  delay(1000);
  mpu6050.calcGyroOffsets(true);

  delay(1000);
}

void loop() {
  // Check if a client has connected

  WiFiClient client = server.available();
  if (!client) {
    Serial.print("Client did not connect");
    delay(1000);

    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while (!client.available()) {
    delay(1);
  }

  while(client.available()){
  mpu6050.update();

  client.print(mpu6050.getGyroAngleX());
  client.print(",");
  client.print(mpu6050.getGyroAngleY());
  client.print(",");
  client.println(mpu6050.getGyroAngleZ());
  delay(10);

  }

  delay(1);

  Serial.println("Client disonnected");

  // The client will actually be disconnected
  // when the function returns and 'client' object is detroyed
}

> Blockquote

当客户端实际连接时,当我在浏览器中输入 IP 地址时,浏览器中打印的值为 0.69,0.69,0.60 0.70,0.70,0.60 0.70 并继续将值增加 0.01,但我需要实际的陀螺仪读数。请帮帮我

我连接了 esp 01 和 mpu6050 就像这张图片列表项

4

2 回答 2

0

可以从寄存器地址 0x1B 检测 GYRO 的满量程范围,有不同的分辨率,范围从 250 到 2000 度/秒,以获得旋转轴的精确值,您需要将原始值与定义的比例因子相除在陀螺仪规格列中的以下数据表中。这是灵敏度/比例因子。您获得的原始值是十进制值,此比例因子以 LSB(度/秒)为单位。例如,如果您选择了 500 度/秒,那么您需要将其除以 65.5 以获得该值

于 2018-11-10T06:48:12.750 回答
0

而不是使用 MPU 6050 库,只需使用 Wire Library 获取值,请参阅 MPU6050 的数据表使用地址 0x68 开始传输。

 Wire.beginTransmission(0x68);

您可以参考以下数据表。为了获得陀螺仪值,我们写入 0x1B(MSB) 和 0x18(LSB)。我们将得到 6 个字节的数据

 // Select gyroscope configuration register
 Wire.write(0x1B);
 Wire.write(0x18);

现在写入数据寄存器 0x​​43 以接收陀螺仪值。我们将从传感器接收 6 字节的值,其中 16 位(1 字节)分别用于 x、y 和 z 轴 Wire.requestFrom(Addr, 6);

// Read 6 byte of data 
if(Wire.available() == 6)
{
   data[0] = Wire.read();
   data[1] = Wire.read();
   data[2] = Wire.read();
   data[3] = Wire.read();
   data[4] = Wire.read();
   data[5] = Wire.read(); 
 }
 // Convert the data
   int xGyro = data[0] * 256 + data[1];
   int yGyro = data[2] * 256 + data[3];
   int zGyro = data[4] * 256 + data[5];

为了获得加速度计值,我们写入 0x1C(MSB) 和 0x18(LSB)。你可以在这个github 链接中找到完整的代码。在这里,我们从传感器获得了陀螺仪和加速度计值

也这样做 Wire.begin(SDA,SCL) 在你的情况下它会是 Wire.begin(0,2); *注意 MPU6000 和 MPU6050 具有相同的规格和地址,所以不要担心。

于 2018-10-23T10:33:23.403 回答