搜索
bottom↓
回复: 122

分享我制作的空中鼠标(MPU6050+NRF24L01+stm32)

  [复制链接]

出0入10汤圆

发表于 2014-9-6 20:45:40 | 显示全部楼层 |阅读模式
本帖最后由 小乔123 于 2014-9-6 20:44 编辑

      等qwe2231695同学开源他的空中鼠标等得我好辛苦,等了半年都没等到,不过前天他终于把他的设计文档发布了。
    参考正点原子战舰开发板上的鼠标例程,我也做了一个空中鼠标,其实只是将他的有线鼠标改造成无线的。
    鼠标由发射板和接收板组成,发射板主要包括stm32,MPU6050,NRF24l01,相信我不用说明大家都知道他们分别是干什么的了吧。
接收板主要包括stm32和NRF24l01,接收板通过USB接口和电脑连接,USB驱动是STM32的官方例程。另外,cpu使用的是stm32f103c8t6
这个芯片有两个优点,一个是小,另外一个是便宜,统计下来做一个鼠标刨去PCB的成本,大概60元左右。
    这个空中飞鼠的原理大概讲一下,就是读取MPU6050中X和Z轴上的角速度值,然后通过NRF24l01发送给接收板,接收板通过NRF24l01
接收到数据后,通过stm32内部自带的USB模块将数据发送给电脑,而USB部分的东西基本不用去深入研究,使用的时候只要知道那个鼠标
数据的接口函数就可以了。
        废话不多说,直接上视频。
http://v.youku.com/v_show/id_XNzc1MzQ1ODg0.html

视频中只有发射板,我将发射板做成跟18650电池大小差不多,这样就直接可以放到移动电源里了,这样移动电源就不仅可以充电,还可以
当鼠标使用。怎么样实际的使用效果还可以吧?
下面是空中鼠标的图片细节。

这是发射板的PCB,MPU6050和NRF24l01都是直接使用的现成模块,方便了焊接并且提高了制作成功率。


这是装好后的实物图,也许你会奇怪后面为什么要用那么长的两个按键?这是因为我要把板子放到移动电源的电池仓内,所以需要很长的按键,
我也懒得再去研究怎么装按键会更好看,所以就用了这种懒办法。


这是接收板的PCB板和实物图,电路其实很简单,我做了两点优化,一个是双USB接口,这样不仅可以直接插到电脑上,而且可以在调试程序的时候
使用USB线来连接,另一个是将IO口全部引出,这样接收板还可以当做开发板使用,对于我这种电子爱好屌丝来说无疑是一个很省成本的方案。

上图是发射板放在移动电源中,移动电源最好选用内部是18650的,这样方便改造。只要将线连接好,将板子固定住,在盖子上打好洞就行,
我用的LDO是一个低压差的,座椅无论你使用移动电源出来的5V或者直接连接18650都是可以正常工作的。
最后,附上原理图和程序,没有太多注释,因为程序我自己写的部分很简单,其他部分都是官方或者战舰开发板上现成的例程,现在我的程序,
除了控制方向,鼠标左右键外,还增加了两个按键同时按下开启滚轮功能,期望有人能在我的基础上继续优化程序,因为我对算法这边实在了
解的不多。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-9-6 20:56:30 | 显示全部楼层
顶楼主,收藏了!备用!

出0入10汤圆

 楼主| 发表于 2014-9-6 21:05:15 | 显示全部楼层
jiang887786 发表于 2014-9-6 20:56
顶楼主,收藏了!备用!

哈哈,顶顶更健康。

出0入0汤圆

发表于 2014-9-6 21:13:59 | 显示全部楼层
误差会积累不?会不会时间长了鼠标的指向和屏幕显示的位置对不上了?

出0入10汤圆

 楼主| 发表于 2014-9-6 21:21:25 | 显示全部楼层
maomao190190 发表于 2014-9-6 21:13
误差会积累不?会不会时间长了鼠标的指向和屏幕显示的位置对不上了?

不会,我试过了,起码把鼠标放在桌子上在15分钟内他没有乱飘或者移动。
我觉得只要电源OK,MPU6050工作还是很稳定的,因为我是直接使用18650来做
供电的,所以也避免了电源不稳的问题。
另外,程序里面加了一个很简单的防止抖动,轻微的抖动也不会引起鼠标移动。

出0入0汤圆

发表于 2014-9-6 21:23:45 | 显示全部楼层
qwe同学在公司太忙了=-=

出0入17汤圆

发表于 2014-9-6 21:24:13 来自手机 | 显示全部楼层
这个用在机顶盒上效果会更好,现在盒子的遥控器太难用

出0入10汤圆

 楼主| 发表于 2014-9-6 21:27:01 | 显示全部楼层
maomao190190 发表于 2014-9-6 21:13
误差会积累不?会不会时间长了鼠标的指向和屏幕显示的位置对不上了?

哦 刚才没理解你的意思,不好意思,
其实在我们使用普通鼠标的时候也会经常把鼠标拿起来调整鼠标的位置,
空中鼠标也是一样的,要是觉得鼠标移动的位置偏了,只要将鼠标光标靠在屏幕边沿处
调整一下就好了。

出0入10汤圆

 楼主| 发表于 2014-9-6 21:28:13 | 显示全部楼层
radar_12345 发表于 2014-9-6 21:24
这个用在机顶盒上效果会更好,现在盒子的遥控器太难用

我买的乐视电视的遥控器就带这功能,不过太难用了。

出0入10汤圆

 楼主| 发表于 2014-9-6 21:30:04 | 显示全部楼层
Puppey 发表于 2014-9-6 21:23
qwe同学在公司太忙了=-=

哎,本来参考他的方案,做个无论是硬件还是软件都高大上的,结果等的我心都凉了。

出0入0汤圆

发表于 2014-9-6 21:30:21 | 显示全部楼层
很好  不知道stc可以弄一个不

出0入10汤圆

 楼主| 发表于 2014-9-6 21:33:47 | 显示全部楼层
xofun 发表于 2014-9-6 21:30
很好  不知道stc可以弄一个不

当然可以,不过你需要增加USB模块了,那模块也不便宜也不好用,
另外,兄弟,别用stc了,那太老了,资源又少,拥有stm32,可以省去你很多外围电路上的花销。
我用的那个stm32芯片一个才8块多。

出10入12汤圆

发表于 2014-9-6 22:10:02 | 显示全部楼层
不错不错,支持支持,又想法

出0入0汤圆

发表于 2014-9-6 22:32:17 | 显示全部楼层
非常好啊,只是USB的那端程序不会写,先学习一下大神的作品!

出0入10汤圆

 楼主| 发表于 2014-9-6 22:35:05 | 显示全部楼层
nsj21n 发表于 2014-9-6 22:32
非常好啊,只是USB的那端程序不会写,先学习一下大神的作品!

不是大神啦,我也是用现成的程序,自己编的没多少。

出0入0汤圆

发表于 2014-9-6 22:54:17 来自手机 | 显示全部楼层
不错呀兄弟我本想用mpu6050做普通的鼠标

出0入0汤圆

发表于 2014-9-6 22:54:51 来自手机 | 显示全部楼层
放桌上的那种

出0入0汤圆

发表于 2014-9-6 22:55:35 来自手机 | 显示全部楼层
我不想用机械的

出0入0汤圆

发表于 2014-9-6 22:56:41 来自手机 | 显示全部楼层
也不想用光电的

出0入0汤圆

发表于 2014-9-6 22:57:46 来自手机 | 显示全部楼层
感觉用mu650+

出0入10汤圆

 楼主| 发表于 2014-9-6 22:58:36 | 显示全部楼层

那就做吧,哈哈哈

出0入0汤圆

发表于 2014-9-6 22:59:26 来自手机 | 显示全部楼层
c8051f340 做成有线的usb鼠标应该是可行的

出0入0汤圆

发表于 2014-9-6 23:00:34 来自手机 | 显示全部楼层
角速度好像要处理

出0入0汤圆

发表于 2014-9-6 23:01:12 来自手机 | 显示全部楼层
不想搞太复杂

出0入0汤圆

发表于 2014-9-6 23:02:59 来自手机 | 显示全部楼层
mpu6050估计要参考你的处理了!呵呵

出0入0汤圆

发表于 2014-9-6 23:03:42 | 显示全部楼层
#在这顶楼主,收藏了!备用!里快速回复#

出0入10汤圆

 楼主| 发表于 2014-9-6 23:07:15 | 显示全部楼层
and001 发表于 2014-9-6 22:59
c8051f340 做成有线的usb鼠标应该是可行的

做出来了别忘了分享哈。

出0入0汤圆

发表于 2014-9-6 23:45:39 来自手机 | 显示全部楼层
好的 !之前都是没弄板子出来!搞了开发板用几根线焊起来完成功能就好!现在感觉拿不出手呀!

出0入0汤圆

发表于 2014-9-6 23:46:46 来自手机 | 显示全部楼层
一定得画和pcb出来才行!呵呵

出0入0汤圆

发表于 2014-9-6 23:55:56 | 显示全部楼层
收藏了。

出0入10汤圆

 楼主| 发表于 2014-9-7 21:54:01 | 显示全部楼层
and001 发表于 2014-9-6 23:46
一定得画和pcb出来才行!呵呵

现在做板子也不贵,在淘宝上10*10以内50元。

出0入0汤圆

发表于 2014-9-7 22:15:02 | 显示全部楼层
好东西,学习啦!

出0入0汤圆

发表于 2014-9-7 23:23:08 | 显示全部楼层
动手能力真不错。。收藏了

出0入10汤圆

 楼主| 发表于 2014-9-7 23:38:45 | 显示全部楼层
xk100 发表于 2014-9-7 23:23
动手能力真不错。。收藏了

本想做个好看的,但是精力有限,期望大家能在我的基础上改进外观,我这个毫无外观可言,
只是做了两点优化,一个是接收板可以当开发板用,另一个是发射板比较小所以可以直接安装到
移动电源当中。

出0入0汤圆

发表于 2014-9-9 17:09:10 | 显示全部楼层
谢谢分享  很有意思的东西

出0入0汤圆

发表于 2014-9-9 17:48:05 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2014-9-13 12:33:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2014-9-13 13:32:14 | 显示全部楼层
果断mark

出0入0汤圆

发表于 2014-9-13 13:53:04 | 显示全部楼层
顶一下。

出0入0汤圆

发表于 2014-9-13 14:53:52 | 显示全部楼层
基于什么原理呢?加速度传感器吗

出0入0汤圆

发表于 2014-9-13 15:03:00 | 显示全部楼层
stm32f4 discovery 开发板有个例程的意思和这个蛮像的

出0入0汤圆

发表于 2014-9-13 19:45:23 | 显示全部楼层
楼主顶好                 

出0入0汤圆

发表于 2014-9-13 19:55:16 | 显示全部楼层
mark                     

出0入0汤圆

发表于 2014-9-13 20:51:56 | 显示全部楼层
谢谢分享         

出0入0汤圆

发表于 2014-9-14 02:07:47 | 显示全部楼层
这个有意思,收藏下

出0入0汤圆

发表于 2014-9-14 08:07:16 来自手机 | 显示全部楼层
有意思 收藏了

出0入0汤圆

发表于 2014-9-14 08:51:51 来自手机 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-9-14 11:22:19 | 显示全部楼层
值得学习一下

出0入10汤圆

发表于 2014-9-14 11:32:49 | 显示全部楼层
楼主没有发现你的鼠标做得操纵感不是很强吗?之前做过比楼主好

出0入10汤圆

 楼主| 发表于 2014-9-14 21:11:36 | 显示全部楼层
10xjzheng 发表于 2014-9-14 11:32
楼主没有发现你的鼠标做得操纵感不是很强吗?之前做过比楼主好

哦 我也发现了 ,那是因为我没把串口的程序删掉,导致每采一次数据要发送到串口,耽误了时间,删掉后就好了。

出0入0汤圆

发表于 2014-9-28 11:43:52 | 显示全部楼层
很强大,下载参考,感谢奉献~

出0入0汤圆

发表于 2014-9-28 12:16:36 | 显示全部楼层
谢谢,收藏了

出0入0汤圆

发表于 2014-9-28 12:49:23 | 显示全部楼层
改天有时间做个去,好像很有趣~
不知道为什么,总想到这个图片……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-28 13:30:07 | 显示全部楼层

出30入0汤圆

发表于 2014-9-28 14:05:50 | 显示全部楼层

出0入0汤圆

发表于 2014-9-28 14:27:39 | 显示全部楼层
这个是PPT神器啊

出0入0汤圆

发表于 2014-9-28 19:46:19 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-9-28 19:47:54 | 显示全部楼层
不错!MARK!

出0入0汤圆

发表于 2014-9-28 20:21:42 | 显示全部楼层
nice  实用性怎么样  不好控制吧

出0入0汤圆

发表于 2014-9-28 21:06:13 | 显示全部楼层
能够拿出来分享,可以给后面有感兴趣的同学参考,继续优化,还是蛮不错的,支持下!

出0入0汤圆

发表于 2014-9-29 10:03:31 | 显示全部楼层
感谢分享~ 正在进行的设计恰好包括空鼠这部分的功能 程序移植到自己的STM32上也可以运行,度数也没问题,只是USB部分没有响应,也就是STM32的USB链接到电脑的USB接口电脑无反应,还请楼主解答下,先谢过~

出0入0汤圆

发表于 2014-9-29 10:59:28 | 显示全部楼层
不错 会不会不容易控制

出0入0汤圆

发表于 2014-9-29 13:41:24 | 显示全部楼层
手机上又类似的软件~实现同样的功能~

出0入0汤圆

发表于 2014-9-29 16:25:42 | 显示全部楼层
不知道延迟有多少?刷新率能到多少?感觉一般鼠标玩游戏的时候总有延迟感,想刷新率能达到10Khz的,估计能好点

出0入0汤圆

发表于 2014-9-29 16:38:24 | 显示全部楼层
不错         

出105入79汤圆

发表于 2014-10-1 16:47:32 | 显示全部楼层
国庆快乐~

楼主很厉害 ,大家都在进步和学习中啊。

出0入0汤圆

发表于 2014-10-4 18:41:13 来自手机 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-10-4 20:42:06 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2014-10-4 21:23:06 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2014-10-5 12:41:01 来自手机 | 显示全部楼层
很厉害的样子

出0入0汤圆

发表于 2014-10-5 21:18:51 | 显示全部楼层
问一下楼主,Joystick_Send()这个函数是发送x,y的位置坐标的。但直接把读到的6050的角速度值发过去是基于什么考虑,没想明白啊。

出0入0汤圆

发表于 2014-10-31 12:18:24 | 显示全部楼层
mark。。。。。

出0入0汤圆

发表于 2014-10-31 13:12:03 | 显示全部楼层
好贴,必须顶顶。。

出0入0汤圆

发表于 2014-10-31 13:59:49 | 显示全部楼层
很有创意的东西,收藏起来以后学习学习。。。

出0入0汤圆

发表于 2014-10-31 14:05:46 | 显示全部楼层
有创意,支持下   

出0入0汤圆

发表于 2014-10-31 16:45:48 | 显示全部楼层
高大上的设计,参考一下三轴

出0入0汤圆

发表于 2014-11-12 18:31:04 | 显示全部楼层
好贴  以后跟进  谢谢

出0入0汤圆

发表于 2014-11-12 18:44:50 | 显示全部楼层
有想法,顶你

出0入0汤圆

发表于 2014-11-15 23:51:14 | 显示全部楼层
好东西,帮顶                                

出0入0汤圆

发表于 2014-11-16 10:00:16 | 显示全部楼层
钻研精神可嘉,虽然市场上便宜的空鼠很多,仍然自己做

出0入0汤圆

发表于 2014-11-28 09:39:28 | 显示全部楼层
很不错,挺强大的楼主

出0入0汤圆

发表于 2014-11-28 10:17:12 | 显示全部楼层
很好,谢谢分享。

出0入0汤圆

发表于 2014-11-28 13:10:05 | 显示全部楼层
可以用在平板电脑上

出0入0汤圆

发表于 2014-12-2 19:09:30 | 显示全部楼层
顶                          

出0入0汤圆

发表于 2015-1-4 13:04:39 | 显示全部楼层
学习了~~~~~~~~~~~~~

出0入0汤圆

发表于 2015-1-4 16:14:00 | 显示全部楼层
高级货啊

出0入0汤圆

发表于 2015-1-4 21:02:01 | 显示全部楼层
顶楼主,收藏了!备用!

出0入0汤圆

发表于 2015-1-4 21:55:40 | 显示全部楼层
楼主做的不错,但是一个需拿在手上的空中鼠标,通过重力传感器检测X,y轴让箭头动起来容易,但要确保鼠标箭头不动(手要握住鼠标保持平衡)好像反倒有点难度吧。

出0入0汤圆

发表于 2015-1-23 10:53:14 | 显示全部楼层
很好的资料,谢谢分享!

出0入0汤圆

发表于 2015-1-25 22:06:24 | 显示全部楼层
javabean 发表于 2014-9-28 12:49
改天有时间做个去,好像很有趣~
不知道为什么,总想到这个图片……

看到这个就想笑,我也曾一直为此烦恼

出0入0汤圆

发表于 2015-1-26 09:41:26 | 显示全部楼层
starsun 发表于 2015-1-25 22:06
看到这个就想笑,我也曾一直为此烦恼

出0入0汤圆

发表于 2015-1-29 17:02:44 | 显示全部楼层
顶一个,收藏一下!!

出0入0汤圆

发表于 2015-3-9 12:04:08 | 显示全部楼层
很棒!我刚好也在做这个,我用的是蓝牙4.0,电脑上面的测试弄的差不多了,就是有个小问题,想请教一下楼主。
问题:楼主截取的6050上X Y轴的角速度值然后发上电脑,那电脑上的鼠标自然就是接受到X Y轴坐标值对吗,然后请问这个在电脑上的XY坐标值对应的含义是什么呢?
是鼠标光标的移动速度?还是移动位移距离?
如果是位移距离。举例,如果光标移动到了屏幕边缘XY值不是不能增长了吗?然而你发送的6050XY值依旧在增长,怎么对应的上去呢?
如果是这样那么退回来就需要6050坐标值减到和光标XY坐标值一样才能退回来,然而实际上不是这样的,鼠标一下一反向移动,光标就退回来了?
????????????????????????????????
这是为什么

出0入0汤圆

发表于 2015-3-10 08:57:14 | 显示全部楼层
收藏了,挺不错的方案。

出0入0汤圆

发表于 2015-3-10 11:21:05 | 显示全部楼层
收藏了 顶

出0入0汤圆

发表于 2015-3-10 11:44:57 | 显示全部楼层
有意思  以前也打算玩玩的 结果是拖沓不了了之

出0入0汤圆

发表于 2015-3-10 14:17:00 | 显示全部楼层
厉害,一直没玩明白6050

出0入0汤圆

发表于 2015-3-14 14:28:02 | 显示全部楼层
小乔123 发表于 2014-9-6 21:05
哈哈,顶顶更健康。

楼主你好,你有没有考虑过MPU6050的低功耗模式,如果在正常模式下,电流是几个mA,电池应该很快耗光了。你怎么看这个问题,谢谢!

出0入0汤圆

发表于 2015-3-24 21:13:29 | 显示全部楼层
感谢楼主分享!!

出0入4汤圆

发表于 2015-3-25 11:57:18 | 显示全部楼层
在淘宝上看到过,就是不知道原理,下下来学习学习,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 21:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表