使用PlatformIO下载并学习自制无人机笔记2:ESP32Arduino MPU6050姿态解算

0.引入

本人之前发表过一篇关于esp32读取mpu6050数据的文章,链接:http://t.csdn.cn/AwzSZ,但其存在一些漏洞,具体表现在输出数据存在不连贯和错误,在mpu6050高速运动时存在较大误差等。仅作为参考。故在此重发作为修正。当前该篇文章中所述的模块,已经过无人机稳定性控制的测试,可控制四轴无人机进行稳定性控制,故可保证其可靠性,请大家放心食用!

esp32,国产之光,双核算力强大,并且自带互联网模块,在控制飞行姿态的同时可以兼顾其它运算任务,集通讯和控制为一身,可作为无人机良好的开发平台。MPU6050,价格低廉,体积小,功能强大,可靠性高,可与esp32通讯辅助无人机调整姿态。本篇将教大家如何用esp32+mpu6050初步实现无人机的自稳定。当前作者已实现,大家可以放心阅读。

下图为本人搭载于无人机上的控制主板,其中最上方蓝色模块为MPU6050,左手边蓝色模块为无人机电池的电压转换模块,与本篇内容无关,在今后的文章中会介绍到,中间黑色模块为esp32。其中的陀螺仪姿态解算程序就是本篇介绍的内容。

1.废话不多说,先上干货。

链接:https://pan.baidu.com/s/1_Wlu54wnzNP1WX9bcKo1pA?pwd=cf9h

提取码:cf9h

食用方法:

step1:下载后用VScode打开文件夹,能看到src里面有这几个文件:

(不会搞VScode platformio的同学强烈推荐这个教程: https://www.bilibili.com/video/BV1xY4y1b7un/?share_source=copy_web&vd_source=203f2aa16a22e4820da35c4fe0a39593)

其中start.cpp是主程序,点击上传到esp32

step2:硬件连接

esp32与MPU6050引脚接法:

3.3v->VCC

GND->GND

GPIO22->SCL

GPIO21->SDA

step3:将esp32连接电脑,打开串口监视器即可看到esp32正在输出陀螺仪的姿态数据:

此处注意波特率是115200。可以看到,输出的速率非常快,这归功于esp32超高的运算速度,此时限制输出速度的不再是MCU,而是MPU6050。仔细整理数据将发现,无论6050以多高的速度转动,输出的相邻数据都会出现重复现象。这是因为esp32在6050的下一组数据传来前已经将上一组数据处理了两次。

2.详细介绍

代码源自arduinoIDE中MPU6050实例,本人将该实例整理并调整为适用于esp32的模式供大家使用。arduinoIDE中的原始代码可直接在arduino开发板上稳定运行,只是速度远不如esp32

输出的数三个数据(PRY)分别是Pitch(俯仰角)、Roll(横滚角)、Yaw(偏航角)的缩写。

如果想在串口监视器中看到其它数据可在<可视化>部分中找到要显示的数据的相关函数进行调用。

文件夹中其它文件主要为esp32与MPU6050的I2C通讯程序和陀螺仪数据的dmp解算程序,其中数据不建议改动。

最后,同为小白,希望本篇能帮到大家!谢谢大家的光顾!

物联沃分享整理
物联沃-IOTWORD物联网 » 使用PlatformIO下载并学习自制无人机笔记2:ESP32Arduino MPU6050姿态解算

发表评论