news 2026/6/10 12:22:41

量产空中鼠标:手把手带你拆解这个黑科技

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
量产空中鼠标:手把手带你拆解这个黑科技

量产空中鼠标电路设计资料 原理图+PCB资料 空中鼠标硬件由两个部分组成,鼠标端(发射板)和USB端(接收板)。 ◆ 发射板主要器件是STM32、MPU6050、NR24L01。 MPU6050感知人手的动作(X、Y、Z轴上的角速度值),并将测得的数据通过I2C数据接口传输给STM32。 STM32内部自带12位ADC对数据做转换,并且通过NRF24L01无线传输给USB端。 ◆ 接收板是模拟的HID鼠标和键盘即插即用,通过USB接口和电脑连接。 USB端同样有一颗NRF24L01芯片接收发射板传输过来的数据,通过SPI接口传输给STM32。 ?作为电脑的输入设备,空中鼠标可以像传统鼠标一样操作屏幕,仅需要在空中晃动或者移动就可以实现鼠标的操作和翻页等功能。

最近在研究一个挺有意思的东西——空中鼠标。这玩意儿不用沾桌子,挥挥手就能控制屏幕,想想都觉得酷毙了。今天就带大家拆开这个黑匣子,看看它是怎么工作的。

发射板:你的每一个动作都被我捕捉

发射板是整个系统的"眼睛"和"大脑",主要由三个核心元件组成:STM32、MPU6050和NR24L01。

MPU6050这个小家伙负责感知你的动作。它能捕捉到你手部在X、Y、Z三个轴上的角速度值,简单来说就是你手是怎么动的。这些数据通过I2C接口传给STM32。

STM32这个小机灵鬼接到数据后就开始忙活了。它会用自己内部的12位ADC(模数转换器)把这些数据处理一下,然后通过NR24L01这个无线小能手把这些数据发射出去。

量产空中鼠标电路设计资料 原理图+PCB资料 空中鼠标硬件由两个部分组成,鼠标端(发射板)和USB端(接收板)。 ◆ 发射板主要器件是STM32、MPU6050、NR24L01。 MPU6050感知人手的动作(X、Y、Z轴上的角速度值),并将测得的数据通过I2C数据接口传输给STM32。 STM32内部自带12位ADC对数据做转换,并且通过NRF24L01无线传输给USB端。 ◆ 接收板是模拟的HID鼠标和键盘即插即用,通过USB接口和电脑连接。 USB端同样有一颗NRF24L01芯片接收发射板传输过来的数据,通过SPI接口传输给STM32。 ?作为电脑的输入设备,空中鼠标可以像传统鼠标一样操作屏幕,仅需要在空中晃动或者移动就可以实现鼠标的操作和翻页等功能。

这里有个小细节,NR24L01的工作频率是2.4GHz,这和Wi-Fi是一个频段。所以有时候用空中鼠标时可能会受到Wi-Fi信号的干扰,这也是为什么有时候鼠标会卡顿的原因。

接收板:你的动作我全接收

接收板是整个系统的"耳朵"和"嘴巴"。它同样用了一颗NR24L01,负责接收发射板发来的数据。

数据接收后,STM32会通过SPI接口把这些数据处理一下,然后通过USB接口传给电脑。电脑收到这些数据后,会把它们当作普通的鼠标和键盘输入来处理。

这里有个关键点,接收板模拟的是HID(Human Interface Device)设备。HID是USB设备的一种类型,包括鼠标、键盘、游戏手柄等等。通过模拟HID设备,空中鼠标就能像普通鼠标一样被电脑识别和使用了。

实战代码:数据怎么传的这么快

发射板代码片段:

void MPU6050_Init(void) { // 初始化MPU6050 I2C_WriteByte(MPU6050_ADDRESS, PWR_MGMT_1, 0x00); // 唤醒传感器 I2C_WriteByte(MPU6050_ADDRESS, CONFIG, 0x00); // 配置传感器 I2C_WriteByte(MPU6050_ADDRESS, SMPLRT_DIV, 0x07); // 设置采样率 }

接收板代码片段:

void USB_Process(void) { if (usb_rx_data_available) { // 处理接收到的数据 process_mouse_data(); usb_rx_data_available = 0; } }

总结:黑科技背后的简单逻辑

空中鼠标虽然看起来很高大上,但本质上就是几个元件的配合工作。MPU6050负责感知动作,STM32负责数据处理,NR24L01负责无线传输,接收板负责数据接收和转发。整个过程环环相扣,缺一不可。

这个设计的最大优点就是成本低、实现简单。只要掌握基本的嵌入式开发知识,完全可以在家里 DIY 一个属于自己的空中鼠标。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 16:17:39

如何在浏览器中零配置管理SQLite数据库?

如何在浏览器中零配置管理SQLite数据库? 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 还在为查看SQLite数据库文件而四处寻找安装包吗?每次收到.sqlite文件都要折腾半天环…

作者头像 李华
网站建设 2026/6/10 12:31:31

GoB插件完整指南:5步轻松实现Blender与ZBrush数据互通

GoB插件完整指南:5步轻松实现Blender与ZBrush数据互通 【免费下载链接】GoB Fork of original GoB script (I just added some fixes) 项目地址: https://gitcode.com/gh_mirrors/go/GoB 还在为Blender建模与ZBrush雕刻之间的数据交换而困扰吗?Go…

作者头像 李华
网站建设 2026/6/10 14:19:21

微调后的Qwen2.5-7B回答变了!真实对话效果对比

微调后的Qwen2.5-7B回答变了!真实对话效果对比 在大模型时代,预训练模型的强大能力已经广为人知。然而,如何让一个通用模型真正“属于”你、具备特定身份认知和行为风格?答案就是——微调(Fine-tuning)。 …

作者头像 李华
网站建设 2026/6/10 14:41:46

GoB插件完整教程:5分钟掌握Blender与ZBrush无缝协作

GoB插件完整教程:5分钟掌握Blender与ZBrush无缝协作 【免费下载链接】GoB Fork of original GoB script (I just added some fixes) 项目地址: https://gitcode.com/gh_mirrors/go/GoB 还在为Blender和ZBrush之间的模型传输而头疼吗?GoB插件为您提…

作者头像 李华
网站建设 2026/6/10 14:20:40

零安装SQLite数据库查看器:浏览器中的完整解决方案

零安装SQLite数据库查看器:浏览器中的完整解决方案 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 还在为查看SQLite数据库而烦恼安装复杂软件吗?这款基于Web的SQLite数据库…

作者头像 李华
网站建设 2026/6/10 14:20:03

CSDN博客下载器:打造个人技术知识库的终极工具

CSDN博客下载器:打造个人技术知识库的终极工具 【免费下载链接】CSDNBlogDownloader 项目地址: https://gitcode.com/gh_mirrors/cs/CSDNBlogDownloader 在技术学习的过程中,我们常常会遇到这样的情况:一篇深度好文需要反复查阅&…

作者头像 李华