news 2026/9/3 1:40:42

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

作者头像

张小明

前端开发工程师

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/9/3 0:44:12

ms-swift迁移学习实践:基于预训练模型二次开发

ms-swift迁移学习实践:基于预训练模型二次开发 1. 引言 在大模型时代,从零开始训练一个高性能的语言模型成本极高。迁移学习通过在预训练模型基础上进行微调(Fine-tuning),成为实现高效模型定制的核心手段。本文将围…

作者头像 李华
网站建设 2026/9/2 22:41:34

手把手教你依据SSD1306中文手册编写Arduino驱动

从零开始,用《SSD1306中文手册》手写Arduino驱动:不只是“点亮屏幕”你有没有过这样的经历?接上一块OLED屏,调用几行库函数,display.begin()、display.print("Hello")——屏幕亮了,但一旦出问题&…

作者头像 李华
网站建设 2026/9/3 0:20:21

WaveTools专业指南:彻底解决鸣潮性能瓶颈与配置管理难题

WaveTools专业指南:彻底解决鸣潮性能瓶颈与配置管理难题 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为鸣潮游戏中的帧率限制和画质优化而困扰吗?作为专业的鸣潮游戏辅助工具…

作者头像 李华
网站建设 2026/8/30 23:40:14

Vue3-Admin-Element-Template:现代化后台管理系统的完整开发指南

Vue3-Admin-Element-Template:现代化后台管理系统的完整开发指南 【免费下载链接】vue3-admin-element-template 🎉 基于 Vue3、Vite2、Element-Plus、Vue-i18n、Vue-router4.x、Vuex4.x、Echarts5等最新技术开发的中后台管理模板,完整版本 vue3-admin-e…

作者头像 李华
网站建设 2026/9/3 0:19:57

SketchUp STL插件终极指南:轻松实现3D模型导入导出

SketchUp STL插件终极指南:轻松实现3D模型导入导出 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 想要在SketchU…

作者头像 李华
网站建设 2026/9/3 0:16:18

终极模组管理神器:RimSort让《环世界》模组加载变得如此简单

终极模组管理神器:RimSort让《环世界》模组加载变得如此简单 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 还在为《环世界》模组冲突而烦恼吗?当精心打造的殖民地因为模组加载顺序问题而崩溃时,那…

作者头像 李华