空中鼠标项目:MPU6050+ NRF24l01+ STM32实现

28 下载量 48 浏览量 更新于2024-12-30 8 收藏 9.37MB ZIP 举报
资源摘要信息:"基于MPU6050+NRF24l01+stm32的空中鼠标-电路方案" 本项目介绍了一种基于MPU6050、NRF24l01和stm32微控制器的空中鼠标设计方案。这种鼠标分为发射板和接收板两部分,其中发射板用于捕捉用户的移动,并将数据通过无线通信发送给接收板,而接收板则负责将接收到的数据转换为电脑可以识别的鼠标移动和点击事件。 **主要硬件组件介绍**: - **MPU6050**:这是一种集成了三轴陀螺仪和三轴加速度计的传感器,可以用来测量物体在空间中的运动状态,包括角速度和线性加速度。在空中鼠标项目中,MPU6050被用来捕捉X和Z轴上的角速度值,进而转化为鼠标移动的信号。 - **NRF24l01**:这是一款工作在2.4GHz频段的无线射频收发器,具备高速传输(最高2Mbps)和低功耗的特性。在本项目中,NRF24l01模块用于发射板和接收板之间的数据通信。 - **STM32F103C8T6**:这是一款基于ARM Cortex-M3内核的微控制器,具有高性能和丰富的接口,被广泛应用于嵌入式系统中。在空中鼠标项目中,stm32微控制器不仅负责处理MPU6050的信号,还负责通过内置的USB模块将处理后的数据发送给电脑。 **系统工作原理**: 1. 发射板上的MPU6050捕捉到用户的移动,提取出X和Z轴上的角速度值。 2. MPU6050的数据通过stm32微控制器处理后,通过NRF24l01无线模块发送出去。 3. 接收板上的NRF24l01无线模块接收到发射板发送的数据。 4. 接收板上的stm32微控制器将数据通过USB接口发送给连接的电脑,此时电脑识别到的是鼠标移动和点击的信号。 5. 电脑端的驱动程序(USB驱动是STM32的官方例程)将这些信号转化为屏幕上的鼠标指针移动和点击事件。 **设计特点**: - 体积小巧:发射板被设计成与18650电池相仿的大小,便于放入移动电源中,使其既能充电又能作为鼠标使用。 - 简化操作:用户无需深入了解USB协议和驱动程序的复杂性,只需要知道如何通过鼠标数据接口函数来控制数据传输即可。 - 优化设计:接收板设计了双USB接口,便于程序调试和作为通用开发板使用;同时,所有IO口被引出,增加了使用的灵活性。 - 成本低廉:整体成本低,去除PCB成本,一个空中鼠标大约60元人民币,具有很高的市场竞争力。 **视频和图片细节**: 视频展示了发射板的组装和使用情况,而图片细节提供了发射板和接收板的PCB布局以及实物图。在实物图中可以看到,发射板上使用了较长的按键,是因为需要将板子安装在移动电源的电池仓内。此外,接收板的优化设计包括双USB接口和IO口的全部引出,这些设计使得接收板也具备了作为开发板使用的能力。 **硬件选择和电源方案**: - MPU6050和NRF24l01模块均为现成的模块,便于焊接和提高制作成功率。 - 使用LDO(低压差线性稳压器)确保发射板在使用移动电源或18650电池供电时,无论5V还是3.7V的电压都能正常工作。 - STM32F103C8T6微控制器以其小巧和成本低廉而被选用,满足了设计的要求。 **程序和扩展性**: - 程序部分除了用户自定义的方向控制和鼠标按键控制外,还包括了两个按键同时按下的滚轮功能。 - 代码库中提供了原理图和源代码文件,但注释较少,因为大部分是基于官方或者战舰开发板的现成例程。 - 鼓励社区进一步优化和扩展程序功能,特别是在算法方面,因为开发者本人对算法部分了解有限。 **总结**: 该空中鼠标方案通过将MPU6050、NRF24l01与stm32微控制器结合,提供了一个成本低廉、体积小巧且功能齐全的无线鼠标设计。通过USB接口与电脑连接,支持即插即用,非常适合需要移动性和便捷性的使用场景。该方案的设计和实现过程详细地记录在提供的图片、视频和文档中,为其他开发者提供了良好的参考。
1910 浏览量
参考正点原子战舰开发板上的鼠标例程,我也做了一个空中鼠标,其实只是将他的有线鼠标改造成无线的。 鼠标由发射板和接收板组成,发射板主要包括stm32,MPU6050,NRF24l01,相信我不用说明大家都知道他们分别是干什么的了吧。 接收板主要包括stm32和NRF24l01,接收板通过USB接口和电脑连接,USB驱动是STM32的官方例程。另外,cpu使用的是stm32f103c8t6 这个芯片有两个优点,一个是小,另外一个是便宜,统计下来做一个鼠标刨去PCB的成本,大概60元左右。 这个空中飞鼠的原理大概讲一下,就是读取MPU6050中X和Z轴上的角速度值,然后通过NRF24l01发送给接收板,接收板通过NRF24l01接收到数据后,通过stm32内部自带的USB模块将数据发送给电脑,而USB部分的东西基本不用去深入研究,使用的时候只要知道那个鼠标数据的接口函数就可以了。 https://v.youku.com/v_show/id_XNzc1MzQ1ODg0.html 视频中只有发射板,我将发射板做成跟18650电池大小差不多,这样就直接可以放到移动电源里了,这样移动电源就不仅可以充电,还可以 当鼠标使用。怎么样实际的使用效果还可以吧? 下面是空中鼠标的图片细节。 这是发射板的PCB,MPU6050和NRF24l01都是直接使用的现成模块,方便了焊接并且提高了制作成功率。 这是装好后的实物图,也许你会奇怪后面为什么要用那么长的两个按键?这是因为我要把板子放到移动电源的电池仓内,所以需要很长的按键, 我也懒得再去研究怎么装按键会更好看,所以就用了这种懒办法。 这是接收板的PCB板和实物图,电路其实很简单,我做了两点优化,一个是双USB接口,这样不仅可以直接插到电脑上,而且可以在调试程序的时候 使用USB线来连接,另一个是将IO口全部引出,这样接收板还可以当做开发板使用,对于我这种电子爱好屌丝来说无疑是一个很省成本的方案。 上图是发射板放在移动电源中,移动电源最好选用内部是18650的,这样方便改造。只要将线连接好,将板子固定住,在盖子上打好洞就行, 我用的LDO是一个低压差的,座椅无论你使用移动电源出来的5V或者直接连接18650都是可以正常工作的。 最后,附上原理图和程序,没有太多注释,因为程序我自己写的部分很简单,其他部分都是官方或者战舰开发板上现成的例程,现在我的程序, 除了控制方向,鼠标左右键外,还增加了两个按键同时按下开启滚轮功能,期望有人能在我的基础上继续优化程序,因为我对算法这边实在了 解的不多。