利用 MPU6050 和 ESP32-C3 构建一个无线空气鼠标
本项目将简单的手部动作转化为流畅的操控体验。使用 MPU6050 稳定传感器和 ESP32-C3 开发板内置的蓝牙低功耗(BLE)技术,可实时将 MPU6050 的陀螺仪与加速度计数据转换为 ESP32-C3 所驱动的光标操作。这款无线空气鼠标非常适合用于演示、媒体控制及交互式设备搭建,是探索运动感知、无线通信和嵌入式编程的有趣且实用的方式。无论你是初学者还是电子爱好者,本项目都能结合硬件与软件,打造无需传统外设即可使用的直观手势交互界面。
所需组件
•ESP32-C3 超迷你开发板
•MPU6050 惯性测量单元模块
•按钮
•面包板
•连接导线
•锂聚合物电池
关于元件
ESP32-C3 超迷你版
一款超紧凑的WiFi + BLE微控制器,用作系统主控芯片。
•ESP32-C3(RISC-V架构,最高160 MHz)
•支持WiFi和蓝牙5 LE
•4MB Flash存储
•USB-C编程接口
•3.3V逻辑电平
•支持I2C、SPI、UART、PWM、ADC
处理传感器数据并发送BLE鼠标信号
MPU6050 陀螺仪与加速度计传感器
MPU6050是一款低成本的运动传感器,集成了单芯片三轴加速度计和三轴陀螺仪。可测量物体的运动、姿态和旋转,适用于基于运动控制的系统。
•三轴加速度计 + 三轴陀螺仪
•通信方式:I2C
•电源电压:3V–5V
•16位ADC,高精度测量
•内置数字运动处理器(DMP)
•可配置的I2C地址
•辅助I2C引脚,用于连接其他传感器(如磁力计)
•集成温度传感器
在本项目中,该传感器追踪手部动作,并提供实时数据以控制光标移动。
电路连接
图:电路图
图:原理图
MPU6050至ESP32-C3
•VCC → 3.3V
•GND → GND
•SDA → GPIO 4
•SCL → GPIO 5
按钮
•GPIO 2 → 按钮 → GND
•GPIO 4 → 按钮 → GND
(输入上拉配置)
代码说明
使用的库
Arduino · C++
库功能说明
#include → 处理与MPU6050的I2C通信。
#include → 使ESP32能够作为BLE鼠标运行。
引脚定义
Arduino · C++
•MPU_ADDR → MPU6050的I2C地址
•LEFT_BTN / RIGHT_BTN → 按钮输入引脚
•MOUSE_LEFT / MOUSE_RIGHT → BLE鼠标按键映射
I2C配置
Arduino · C++
使用GPIO 8(SDA)和GPIO 9(SCL)初始化I2C接口。
BLE连接处理
系统在发送数据前检查是否已配对BLE设备。若未配对,程序暂停执行并打印调试信息。
传感器数据读取
Arduino · C++
读取陀螺仪数据(gx, gy, gz),包含数据未接收时的错误处理。
运动转换
Arduino · C++
将旋转运动映射为光标移动坐标轴。
噪声滤波
Arduino · C++
•死区消除微小的非预期动作
•平滑处理稳定光标运动
按钮控制
Arduino · C++
按钮状态被读取并映射为BLE鼠标点击事件。
光标输出
Arduino · C++
通过BLE将处理后的光标移动信息发送至连接的设备。
调试输出
串口输出在指定间隔内打印传感器值、计算出的移动量以及按钮状态。同时报告BLE连接状态和MPU读取错误。
通过BLE将光标移动信息发送至连接的设备。
循环工作原理
•持续从MPU6050读取陀螺仪数据。
•将运动转换为光标移动。
•应用死区和平滑处理以提升稳定性。
•检查按钮状态以实现点击操作。
•通过蓝牙低功耗(BLE)发送移动和点击数据。
系统概览
ESP32-C3 通过 I2C 持续读取 MPU6050 传感器的运动数据。该数据被处理成平滑的光标移动,并通过蓝牙低功耗技术作为 HID 鼠标进行传输。按钮输入支持完整的鼠标交互,包括左右点击。
为何此架构有效
•传感器 → ESP32-C3 → BLE 的直接管道消除了中间延迟。
•陀螺仪可实现连续的运动追踪,无需外部参考。
•BLE HID 支持即插即用,无需额外驱动程序。
•紧凑型 ESP32-C3 设计便于手持操作。
•硬件资源最小化降低了复杂性并提升了可靠性。
实际应用场景
•演示控制:使用手势导航幻灯片。
•智能电视控制:用动作替代传统遥控器。
•游戏:利用动作进行瞄准与互动。
•辅助技术:实现无接触式电脑控制。
•交互式系统:基于手势的装置控制。
结果
系统成功利用 MPU6050 传感器将手部动作转换为光标移动。ESP32-C3 处理这些运动数据,并通过蓝牙无线传输,作为 HID 鼠标使用。光标移动流畅,左右键点击功能运行可靠。该设备无需任何表面即可工作,充分证明了其作为一套完全功能的无线空气鼠标系统的可行性。
本文编译自hackster.io





