MPU6050传感器模块由单芯片上的加速度计和陀螺仪组成。它在每个通道的数字转换器中包含模拟16位。因此它可以同时捕获x、y和z通道。该传感器使用I2C总线与Arduino或任何其他微控制器进行交互。 MPU-6050传感器模块用于许多应用,如无人机、机器人、运动传感器。该传感器也称为陀螺仪或三轴加速度计。
在本篇文章中,我们将使用ESP32连接MPU6050加速度计和陀螺仪,并通过Web服务器显示值。在本文中,我们将对MPU6050进行基本介绍,并演示如何与ESP32 开发板连接以及如何在网页上显示其值。
所需的组件 ● ESP32 NodeMCU开发板 ● MPU6050加速度计和陀螺仪模块 ● 连接跳线
电路图 MPU6050加速度计和陀螺仪模块与ESP32连接的电路图如下。
MPU6050通过I2C协议与ESP32通信,所以我们只需要两根线来连接ESP32和MPU6050。 MPU6050的SCL和SDA引脚连接到ESP32的D22和D21引脚,MPU6050的VCC和GND引脚连接到ESP32的3.3V和GND。
MPU6050传感器模块 MPU6050 基于微机械系统 (MEMS) 技术。该传感器包含一个3轴加速度计、一个3轴陀螺仪和内置温度传感器。它可用于测量加速度、速度、方向、位移等参数。
MPU6050模块体积小、功耗低、重复性高、抗震性高、用户价位低。 MPU6050带有I2C总线和辅助I2C总线接口,可以轻松连接其他传感器,例如磁力计和微控制器。
代码说明 MPU6050 ESP32的编程部分很简单。在这里,我们将解释一些重要的部分。
首先在代码中包含所有必需的库。 Wire.h库允许您与I2C/TWI设备进行通信,而WiFi.h库可以将ESP32连接到网络。 - #include <Wire.h>
- #include <WiFi.h>
复制代码在包含库之后,定义变量来存储加速度计和陀螺仪的值。 - int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
复制代码在接下来的代码中,输入您的Wi-Fi名称和密码。 - const char *ssid = "Galaxy-M20"; // Enter your Wi-Fi Name
- const char *pass = "ac312124"; // Enter your Wi-Fi Password
复制代码
在void setup()函数中,初始化波特率、wire库、Web服务器和数据传输。 - Serial.begin(115200);
- Wire.begin();
- Wire.beginTransmission(MPU_addr);
- Wire.write(0x6B);
- Wire.write(0);
- server.begin();
复制代码
在 loop()函数中,调用mpu_read()函数来获取加速度计和陀螺仪的读数。这些读数将使用client.println()函数发送到网页。 在接下来的几行中,检查是否有客户端发送了HTTP请求。如果ESP32收到客户端请求,那么它将以字符形式存储并显示在串口监视器上。 - WiFiClient client = server.available();
- if (client)
- {
- Serial.println("new client");
- String currentLine = "";
- while (client.connected())
- {
- if (client.available())
- {
- char c = client.read();
- if (c == '\n')
复制代码接下来,使用html设计网页,并使用client.println()函数将每一行发送到网页。 <style> 标签用于更改文本和背景颜色。您可以更改以下代码中的属性。 - client.print("<html><title> ESP32 WebServer</title></html>");
- client.print("<body bgcolor="#E6E6FA"><h1 style="text-align: center; color: blue"> ESP32 WebServer </h1>");
- client.print("<p style="text-align: left; color: red; font-size:150% ">Accelerometer Values: ");
- client.print("<p style="text-align: left; font-size:150% ">AcX: ");
- client.print(AcX);
- client.print("<br/>AcY: ");
- client.print(AcY);
- client.print("<br/>AcZ: ");
- client.print(AcZ);
- client.print("<p style="text-align: left; color: red; font-size:150% ">Gyroscope Values: ");
- client.print("<p style="text-align: left; font-size:150% ">GyX: ");
- client.print(GyX);
- client.print("<br/>GyY: ");
- client.print(GyY);
- client.print("<br/>GyZ: ");
- client.print(GyZ);
- client.print("</p></body>");
复制代码在mpu_read loop()中,读取加速度计和陀螺仪的X、Y和Z轴的所有六个寄存器。 - AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L) AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
- AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
- GyX=Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
- GyY=Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
- GyZ=Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
复制代码
测试MPU6050与ESP32的连接 将ESP32连接到笔记本电脑连接并上传代码。不要忘记正确选择开发板和端口号。
确保您的笔记本电脑与ESP32共享相同的 Wi-Fi 网络。上传代码后,打开串口监视器。将串口监视器的波特率更改为115200。您将在串口监视器上看到IP 地址以及加速度计和陀螺仪的值,复制此IP并粘贴到浏览器中。现在您将在网页上看到MPU6050陀螺仪和加速度计的值,如下所示:
现在,您可以使用这些知识来制作一些很酷的东西,例如自平衡机器人、手势控制的机械臂等。如果遇到问题,请随时在本帖下面回复。 |