风筝
发表于: 2019-12-24 08:45:59 | 显示全部楼层

在本篇文章中,我们将主要介绍使用Arduino Leonardo开发板和MPU6050加速度计/陀螺仪制作类似于Nintendo Wii控制器的空中鼠标。空中鼠标主要用于游戏、互动活动、娱乐等。


几年前,任天堂(Nintendo)创建了这个新的交互模型,允许用户在Wii控制器的帮助下通过其游戏控制台以3D形式与其内容进行交互。 Wii控制器使用加速度计识别您的手势,然后将其映射到游戏的控件。在本文中,我们将制作一个有线Wii控制器。

Arduino Leonardo.jpg


该项目取决于两个关键组件:MPU6050和Arduino Leonardo。 MPU6050帮助我们沿x轴和y轴收集“空中鼠标”的3D​​姿态的数据。然后,基于传感器的值,我们可以控制鼠标光标。要单击鼠标,您需要停止移动鼠标并将其锁定在一个点上持续两秒。


什么是MPU6050?

MPU6050是具有六个自由度的IMU传感器,这表示输出六个值。在这六个值中,三个来自加速度计,其余三个来自陀螺仪。 IMU传感器基于微机电系统(MEMS)技术。


Arduino Leonardo开发板

Arduino Leonardo与Arduino Uno相似,并且形状相同。 Arduino Uno使用ATmega328芯片,而Leonardo使用ATmega32u4的芯片。它具有20个数字输入/输出引脚(可将7个引脚用作PWM输出,12个引脚用作模拟输入)、16MHz晶体振荡器、微型USB连接器、电源插孔、ICSP端口和复位按钮。


所需的硬件

●    Arduino Leonardo开发板

●    MPU6050

●    面包板

●    公头对公头跳线

Required Hardware.jpg


连接Arduino Leonardo和MPU6050

在下图所示的Fritzing图中展示了硬件的连接。

diagram.png

12.jpg

注意:由于mouse.h库仅适用于ATmega32U4芯片,因此仅基于ATmega32u4的芯片组可以支持此项目,例如Arduino Leonardo、Arduino Pro Mini等。


上载空中鼠标代码

根据上面的Fritzing图接线后,将Arduino Leonardo连接到计算机,然后将“caliberate_air_mouse”程序上传到Arduino。


要上传源代码,请遵循以下步骤。

1.  转到Tools —> Board,然后选择Arduino Leonardo

select Arduino Leonardo.png


2.  选择您的COM端口。转到Tools —> Port

PORT.png


3.  复制并粘贴本文末尾提供的名为“calibrate_air_mouse”的源代码。接下来,转到Sketch —> Upload,或使用快捷方式“ CTRL + U”。

CTRL + U.png


4.  上传代码后,鼠标光标将映射到传感器。尝试摇动MPU传感器模块。


如果可行,请继续上传第二段代码“air_mouse_with_click”,该代码也可在本文末尾找到。如果MPU6050静止不动,光标也会移动,您需要在源代码中更改一些值。


打开串口监视器,并确保在静止状态下将x和y值设置为零。如果不是,请根据您的校准在源代码更改vx或vy值。

your surface calibration.png


校准完成后,按照与前面相同的步骤上传文章末尾的代码“ air_mouse_with_click”。此代码还添加了单击功能。


若要单击,请尝试将光标停在计算机屏幕上持续两秒钟。该代码检查光标是否在屏幕的10x10像素区域中停留了x秒的延迟。

screen.png


以下是本文使用的代码: air_mouse_with_click.rar (714 Bytes, 下载次数: 77)

calibrate_air_mouse.rar (484 Bytes, 下载次数: 79)

跳转到指定楼层
牛小顿
发表于: 2019-12-24 12:44:39 | 显示全部楼层

非常棒 我要尝试一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-8 09:05 , Processed in 0.057433 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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