我使用Arduino
Uno将草图上传到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 列表项
答案 0 :(得分:0)
不是使用MPU 6050库,而是使用线库来获取值,请参考MPU6050的数据手册,使用地址0x68启动发送。
Wire.beginTransmission(0x68);
您可以参考以下datasheet。要获得陀螺仪值,我们将其写入0x1B(MSB)和0x18(LSB)。我们将获得6个字节的数据
// Select gyroscope configuration register
Wire.write(0x1B);
Wire.write(0x18);
现在写入数据寄存器0x43以接收陀螺仪值。我们将从传感器接收6个字节的值,其中x,y和z轴分别为16位(1个字节) 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 link中找到完整的代码。在这里,我们从传感器获得了陀螺仪和加速度计的值
也可以像这样Wire.begin(SDA,SCL)来做,如果是Wire.begin(0,2); *请注意,MPU6000和MPU6050具有相同的规格和地址,因此不必担心。
答案 1 :(得分:0)
可以从寄存器地址0x1B中检测出GYRO的满量程范围,分辨率从250到2000度/秒不等,以获得旋转轴的精确值,您需要将原始值除以陀螺仪规格列中以下datasheet中定义的比例因子。这是灵敏度/比例因子。您得到的原始值为十进制值,该比例因子以LSB(度/秒)为单位。例如,如果您选择了500度/秒,则需要将其除以65.5以获得值