【ESP32Arduino+MPU6050姿态解算】自制无人机学习笔记2 PLatformIO 下载即可使用

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解算程序,其中数据不建议改动。

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

<think>嗯,用户现在问的是“什么是嵌入式”,我需要先理他们到底想知道什么。之前他们问了C#和C++的区别,现在突然转向嵌入式,可能是在探索编程语言的应用领域,或者对嵌入式系统本身感兴趣。首先,我应该明确嵌入式系统的定义,然后释它的特点、应用场景以及与其他系统的区别。 用户可能是刚开始学习计机或电子工程的学生,或者是对技术感兴趣的爱好者。他们可能对嵌入式系统的概念比较模糊,需要清晰、简洁的释,同时结合例子来帮助理。可能需要避免使用太多专业术语,或者至少释清楚术语的含义。 之前回答过C#和C++,现在转向嵌入式,可能用户在学习编程语言后,想了这些语言在实际中的应用,比如C++常用于嵌入式开发,而C#可能较少。因此,在介绍嵌入式系统时,可以提到常用的编程语言,如C、C++、Python等,以及它们在不同场景下的应用。 需要确保回答结构清晰,分点说明,可能包括定义、核心特征、应用领域、开发特点、与通用计机的区别等。同时,要举一些常见的例子,比如智能手表、路由器、汽车控制系统等,这样用户更容易联想到实际应用。 另外,用户可能想知道嵌入式系统的开发流程和所需技能,比如硬件知识、实时操作系统、低功耗设计等,这部分可以作为开发特点来介绍。还要注意提到嵌入式系统的资源受限特性,这是其与普通计机系统的主要区别之一。 最后,总结嵌入式的重要性,比如在物联网、智能家居、工业自动化中的作用,帮助用户理其实际价值和未来趋势。需要确保回答准确,涵盖关键点,同时语言通俗易懂,避免过于技术化。</think>嵌入式系统(Embedded System)是一种**专为特定任务设计的计机系统**,通常作为大型设备的控制核心**隐藏在硬件中**,用户往往感知不到它的存在。以下是其核心要点: --- ### 一、定义与核心特征 1. **专用性** - 为特定功能定制(如微波炉的温度控制、汽车ABS防抱死系统) - 与通用计机(如PC/手机)不同,**不可随意安装新软件** 2. **资源受限** - 低功耗:常见电池供电(如智能手表) - 小体积:芯片级集成(如ESP32模块仅指甲盖大小) - 有限力:根据需求选择MCU(如STM32)或MPU(如树莓派) 3. **实时性** - 医疗设备(心脏起搏器)、工业机器人等需要**毫秒级响应** --- ### 二、典型应用领域 | **领域** | **案例** | **关键技术** | |----------------|---------------------------------------|-----------------------------| | **消费电子** | 智能手表、无人机、智能家电 | 传感器融合、低功耗设计 | | **汽车电子** | 自动驾驶系统、胎压监测、车载娱乐 | CAN总线、AUTOSAR架构 | | **工业控制** | PLC控制器、数控机床、工业机器人 | RTOS(实时操作系统)、Modbus协议 | | **物联网** | 智能电表、环境监测终端、农业传感器 | LoRa/NB-IoT通信、边缘计 | | **医疗设备** | 心脏起搏器、血糖仪、MRI控制模块 | 安全认证(如IEC 62304) | --- ### 三、系统组成 1. **硬件层** - 处理器:ARM Cortex-M系列(低成本)、RISC-V(开源) - 存储器:Flash(存储程序)、SRAM(运行内存) - 外设:ADC(模数转换)、PWM(电机控制)、UART(串口通信) 2. **软件层** - 无操作系统:**裸机编程**(直接操作寄存器) - 轻量级OS:FreeRTOS、Zephyr(任务调度) - 专用框架:ARM Mbed、Arduino(快速原型开发) 3. **开发工具链** - 编译器:GCC-ARM、IAR Embedded Workbench - 调试器:J-Link、ST-Link - 仿真器:Proteus(电路仿真)、QEMU(虚拟硬件) --- ### 四、开发特点 1. **交叉编译** - 在PC上编写代码 → 编译为**目标设备的机器码**(如ARM指令集) - 示例:使用Keil MDK开发STM32程序 2. **底层操作** - 直接控制硬件寄存器: ```c // 点亮LED(以STM32为例) RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; // 使能GPIO时钟 GPIOD->MODER |= GPIO_MODER_MODE12_0; // 设置PD12为输出模式 GPIOD->ODR |= GPIO_ODR_OD12; // 输出高电平 ``` 3. **实时性保障** - 中断服务程序(ISR)处理紧急事件 - 看门狗定时器(Watchdog)防止程序卡死 --- ### 五、与通用计机的对比 | **对比项** | **嵌入式系统** | **通用计机** | |------------------|--------------------------------|---------------------------| | **设计目标** | 特定功能优化 | 多功能通用计 | | **用户界面** | 可能无屏幕(如温度传感器) | 必有图形界面(GUI) | | **可扩展性** | 硬件/软件固化,不可随意更改 | 可自由升级硬件/安装软件 | | **典型功耗** | 毫瓦级(如蓝牙手环) | 瓦级(如笔记本电脑) | --- ### 六、发展趋势 1. **AI边缘计** - 在设备端部署微型神经网络(如TensorFlow Lite
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值