Проблема сопряжения с модулем esp8266 esp-01 и mpu6050
Я использовал 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,6,0, 0,70, 0,70, 0, 60, 0,70 и продолжают увеличивать значения на 0,01, но мне нужно фактическое чтение гироскопа. Помоги мне, пожалуйста
Я подключил ESP 01 и MPU6050, как на этом изображении элемент списка
2 ответа
Вместо использования библиотеки MPU 6050 просто используйте библиотеку проводов, чтобы получить значения, относящиеся к таблице данных MPU6050 использует адрес 0x68 для запуска передачи.
Wire.beginTransmission(0x68);
Вы можете обратиться к следующей таблице. Чтобы получить значения гироскопа, мы записываем в 0x1B(MSB) и 0x18(LSB). Мы получим 6 байтов данных
// Select gyroscope configuration register
Wire.write(0x1B);
Wire.write(0x18);
Теперь запишите в регистр данных 0x43, чтобы получить значения гироскопа. Мы получим 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 имеют одинаковую спецификацию и адрес, поэтому не беспокойтесь об этом.
Полномасштабный диапазон гироскопа может быть обнаружен по адресу регистра 0x1B, существует различное разрешение в диапазоне от 250 до 2000 градусов / сек, чтобы получить точное значение оси вращения, которое вам нужно разделить ваши необработанные значения с определенным масштабным коэффициентом в следующей таблице в столбце спецификации гироскопа. это чувствительность / масштабный коэффициент. Необработанные значения, которые вы получаете, являются десятичными значениями, и этот масштабный коэффициент выражен в младших битах (градус / сек). например, если вы выбрали 500 град / сек, вам нужно поделить его на 65,5, чтобы получить значение