0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用ROHM传感器评估套件实现UCLA AirMouse–第1部分

李娓仑 来源:guotong1984 作者:guotong1984 2023-02-27 10:27 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

今天,我们介绍一款由洛加利福尼亚大学洛杉矶分校(UCLA)电气电子工程师协会(IEEE)学生分会一群聪明的工程师研发的3D AirMouse。AirMouse的功能与传统电脑鼠标非常类似,但是能够检测三维运动。

Device Plus已经与100多所美国顶尖大学展开合作,希望通过资助一些缺乏资金或资源的项目来促进学生创新。目前,Device Plus正在提供硬件赞助计划,并希望与活跃的学生工程组织合作,以构建我们的“连接”部分。

加州大学洛杉矶分校IEEE

加州大学洛杉矶分校IEEE(UCLA IEEE)是一个IEEE学生分会,致力于“为全校工程学生带来亲身实践体验”。该项目完全由学生们自己开展,高年级学生负责指导参与项目计划的新成员。高级项目(Advanced Projects)是UCLA IEEE为期四年的项目之一,旨在让具有中等硬件和软件经验的学生学习微控制器硬件、通信协议、原理图和电路板设计等高级主题。

参与高级项目(Advanced Projects)的学生组成多个2-4人的团队,在学年的三个季度中研发两个项目。通过第一个项目——AirMouse,学生将学习不同的通信协议、硬件寄存器和寄存器使用等概念。有了这些知识,学生们将在接下来的两个季度中继续构建自己的四轴飞行器,同时还会学习其他概念,比如使用MOSFET作为开关以及PWM速度控制等。

作为UCLA IEEE高级项目(Advanced Projects)计划的一部分,最初的AirMouse由Rahul Iyer、Aaron和Andrew Wilhelm研发。

AirMouse概述

我们都用过电脑鼠标,但是它们只能在桌面之类的平面上工作。在本教程中,我们将制作一个“AirMouse”——一个能够在3D空间中运行的计算机鼠标!用户通过倾斜鼠标就可以让屏幕上的光标移动,从而可以进行大范围自定义动作。我们首先展示构建AirMouse的基础知识,然后介绍如何扩展其功能!

AirMouse主要由两个部分组成:戴在手上的鼠标发射器和连接用户计算机的接收器发射器收集鼠标的方向和按钮状态信息;而接收器转换这些信息,从而在计算机屏幕上执行相应操作。

为了易用性和简洁性,我们最初利用Arduino Pro Mini和Teensy 3.2微控制器——市场上深受业余爱好者欢迎的两种最小的微控制器——构建AirMouse。两个微控制器通过一对nRF24L01 RF模块进行无线通信,AirMouse使用MPU6050加速度计检测运动。

然而,在本教程中,我们将向您展示一种更简单的AirMouse构建方法:Arduino Uno结合ROHM传感器开发板上的加速度计。由于该ROHM传感器开发板结构紧凑,而且附带的库可以处理I2C 通信,因此大大简化了设计。

硬件:

发射器:

1 x Arduino Uno微控制器

1 x ROHM传感器评估套件

1 x ROHM加速度计 (KX022-1020)

1 x nRF24L01+ RF模块

排母

滑动开关

1 x 可焊接试验电路板,足够大,能焊接微控制器和所有电子器件

2 x 按键

1 x 1s LiPo电池

1 x 1kΩ电阻

1 x 3.3kΩ电阻

接收器:

1 x Teensy 3.2微控制器

1 x NRF24L01+ RF模块

排母

1 x 可焊接试验电路板,足够大,能焊接微控制器和所有电子器件

1 x 红、黄、绿LED

1 x 150Ω电阻

硬件组装

这一步您可以发挥自己的创造力!只要按照下图所示的接线图进行接线即可,各个组件的实际位置并不重要。但是请确保AirMouse使用起来非常舒适!比如,您可能需要按照姿势舒服、畅通无阻的方式安装左键和右键单击按钮。

然而,组装这些设备之前,让我们来看一下必须建立的不同连接。

发射器

poYBAGPzJhSAdy2dAADIJbgeeJE938.jpg

图1 发射器原理图(请注意RF模块的Vcc连至3.3V!)

pYYBAGPzJhaAfImTAARhAVU_X7g816.jpg

图2 Arduino Uno的面包板“盖板” 由于Uno的接头与面包板的孔间距(0.1〞)并不完全吻合,因此按钮数字输入线需要使用跳线(蓝色)。

两个RF模块通过SPI总线分别连至各自的微控制器。要了解有关不同通信协议和SPI的更多信息,请查看我们的此处链接转移至DevicePlus.com英语网站Arduino通信协议教程!SPI在RF通信等应用中非常有用,因为其数据传输速度快,允许两个器件以高数据速率、低延迟和高可靠性相互传输大量数据。正如我们在本教程中讨论的那样,SPI通信是同步的、双向的,这两个特性显著提高了数据发送和接收速度。

RF模块的 MOSI, MISO, and SCK 线路必须连接 Arduino上的特定引脚。这些引脚的介绍如下:

MOSI D11
MISO D12
SCK D13

RF模块的CE脚表示Chip Enable(芯片使能), 可以用来让RF模块进入待机/睡眠模式。RF模块的CS脚是SPI从机选择引脚。这两个引脚必须连至Arduino上的两个单独GPIO引脚,但是不需要连至任何具体引脚。

poYBAGPzJheAF4zjAAEElhblnng776.jpg

图3 Arduino Uno和RF模块的接线图

Arduino Uno工作电压为5V,而nRF24L01+工作电压为3.3V。两者工作电压存在差异,但是我们可以利用Arduino的输出引脚为RF模块供电,并且不会损坏RF模块。nRF24L01+模块的电源(Vcc)引脚应连至Uno上的Arduino稳压3.3V输出。切勿将Vcc引脚连至5V,否则可能会损坏模块!在这个项目中,使用Arduino上的稳压输出为RF模块供电是可行的,因为(1)RF模块的电流消耗非常低;(2)在软件中,我们将配置无线电的功率放大器,让其处于较低功率模式。

无线模块中间的nRF24L01+芯片的Nordic Semiconductor 数据表 表明,该模块的发射和接收电流分别为11.3mA和13.5mA。而Arduino的核心Atmel芯片能够在每个数字引脚上提供高达40mA的电流,因此在最低发射和接收功率设置下(对于这个项目来说已经足够),Arduino能够成功地为RF模块供电。在Arduino代码中,我们会通过命令setPALevel(RF24_PA_LOW)指定LOW(低)功耗模式,告诉RF模块其功耗不能超过它的次低功率等级(设置选项包括MIN、LOW、HIGH和MAX)。

现在我们来看一下这些引脚在RF模块上的实际位置。具体引脚位置请参见下方的引脚说明。

poYBAGPzFsCAcLgzAADF7CqlfvU395.jpg

图4 nRF24L01+ RF模块的引脚排列
模块的引脚1用正方形表示。请注意,模块与插头引脚并不对称。/ ©Addicore

连接RF模块时,您可能需要在试验电路板上使用排母。这样,如有必要,您可以从试验板上拆下模块。

此外,在焊接4×2排针的连接时要特别小心——引脚之间的距离非常小
,任何不必要的短路都会损坏模块!请确保排针接头周围留有足够空间
,以便可以轻松进行焊接工作。

鼠标左键和右键的功能按钮连至设置为输入的Arduino数字引脚。我们通过布置每个按钮,使得数字引脚在单击按钮时读取逻辑高电平,否则为逻辑低电平。按钮连接的放大图如下所示:

pYYBAGPzJhuABC76AABwSEma38g727.jpg

图5 本项目使用的按钮布局
按下此按钮时,GPIO脚接通Vcc。

从上图可以看出,单击按钮时,GPIO引脚直接连至Vcc。没有按下按钮时,GPIO引脚和地之间的电阻将GPIO引脚“拉低”到地,因此称为下拉电阻。这种做法是为了避免数字输入引脚的悬空逻辑电平问题。当数字输入不确定(或者连接逻辑高或者连接逻辑低)时,会出现这种情况,即使没有连接也会由于系统噪声导致不可预知的行为,比如高读数或低读数。我们需要一个高阻值电阻(在这种情况下,10k电阻即可),因为只要点击按钮,将GPIO引脚接地就会导致Vcc和地之间短路。按下按钮电路形成闭环时,电阻会降低Vcc和地之间的电流,从而防止出现危险的短路情况。

poYBAGPzJh2AOmF5AAPwlcTB5p8892.jpg

图6 ROHM传感器开发板上方的面包板
传感器开发板随附的KX022加速度计模块可完美安装在I2C接头顶部和面包板下方。

幸运的是,对于我们来说,ROHM传感器开发板已经完成了所有的I2C 硬件连接,这大大简化了I2C硬件设置,用户只需将加速度模块连至I2C的一个接头即可!要了解有关I2C工作的更多信息,请访问我们的 Arduino通信协议教程!!

接收器

poYBAGPzJh6AB3dyAADfjYCRTbs625.jpg

图7 接收器原理图(如上所示,RF模块的Vcc连至3.3V!)

pYYBAGPzJiCAUBTqAASjmrhCeLo752.jpg

图8 接收器模块
GPIO引脚连接了两个LED,以便进行调试

接收端的连接与发送端非常相似。RF模块的不同SPI引脚连至Teensy微控制器上的匹配引脚(与Arduino相同的引脚)。您还可以添加LED,以便进行调试和信息显示。

组装AirMouse是构建过程中最乏味的地方,但是,您可以充分发挥您的创意!请尝试把模块做得更小、更符合人体工程学,并与我们分享您的想法和作品吧!

请确保在通风良好的区域进行焊接并使用高质量设备,并经常休息。您完成硬件构建之后,请参阅本文的第2部分 – 软件部分!

poYBAGPzJiOABwwCAAeW240Ppes045.jpg

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7487

    浏览量

    151039
  • 传感器
    +关注

    关注

    2548

    文章

    50664

    浏览量

    751895
  • 发射器
    +关注

    关注

    6

    文章

    843

    浏览量

    53396
收藏 人收藏

    评论

    相关推荐

    采用ROHM传感器套件的DIY Arduino家庭安防系统 2部分- Cayenne设置

    在DIY智能家居安防系统1部分中,我们将各种组件(例如PIR传感器、温度传感器和压力传感器)组
    的头像 发表于 09-19 10:20 4194次阅读

    使用触摸传感器的设备的输入和控制,2部分:控制和开发包

    在本系列触摸感知的1部分中,我们研究了各种类型的触摸传感器技术。在2部分中,我们将探讨触摸感
    发表于 06-21 09:28 5次下载
    使用触摸<b class='flag-5'>传感器</b>的设备的输入和控制,<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>:控制<b class='flag-5'>器</b>和开发包

    1部分:MAX32660的特点原理介绍

    该系列视频共包括2部分,这是1部分。本部分介绍MAX32660低功耗Arm® Cortex®-M4 FPU微控制
    的头像 发表于 10-08 01:46 7258次阅读

    DN236-1和2通道无延迟ΔΣ<sup>™</sup>24位ADC轻松实现多种传感器的数字化,1部分

    DN236-1和2通道无延迟ΔΣ™24位ADC轻松实现多种传感器的数字化,1部分
    发表于 04-19 20:11 1次下载
    DN236-<b class='flag-5'>1</b>和2通道无延迟ΔΣ<sup>™</sup>24位ADC轻松<b class='flag-5'>实现</b>多种<b class='flag-5'>传感器</b>的数字化,<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>

    DN237-1通道和2通道无延迟ΔΣ<sup>™</sup>24位ADC轻松实现多种传感器的数字化,2部分

    DN237-1通道和2通道无延迟ΔΣ™24位ADC轻松实现多种传感器的数字化,2部分
    发表于 04-19 21:17 0次下载
    DN237-<b class='flag-5'>1</b>通道和2通道无延迟ΔΣ<sup>™</sup>24位ADC轻松<b class='flag-5'>实现</b>多种<b class='flag-5'>传感器</b>的数字化,<b class='flag-5'>第</b>2<b class='flag-5'>部分</b>

    用Hercules™ LaunchPad™ 开发套件控制GaN功率级—1部分

    用Hercules™ LaunchPad™ 开发套件控制GaN功率级—1部分
    发表于 11-03 08:04 0次下载
    用Hercules™ LaunchPad™ 开发<b class='flag-5'>套件</b>控制GaN功率级—<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>

    基于Arduino的太阳能电池板数字生态箱(1部分

    这篇文章来源于DevicePlus.com英语网站的翻译稿。在今天的文章中,我们将提供一个使用Arduino构建电子套件的新方案,本文分为1部分
    的头像 发表于 02-23 09:44 1083次阅读
    基于Arduino的太阳能电池板数字生态箱(<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>)

    利用Arduino Create和ROHM传感器评估套件制作智能花园系统

    今天,我们将利用ROHM传感器评估套件打造一套智能花园系统。在此项目中,我们整合接近/环境光传感器
    的头像 发表于 02-23 17:58 1150次阅读
    <b class='flag-5'>利用</b>Arduino Create和<b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>评估</b><b class='flag-5'>套件</b>制作智能花园系统

    ROHM Arduino传感器套件打造DIY万圣节僵尸面具

    今天,我们会利用ROHM传感器评估套件制作一款超级简单的万圣节僵尸面具!我们将使用ROHM接近
    的头像 发表于 02-23 17:45 896次阅读
    用<b class='flag-5'>ROHM</b> Arduino<b class='flag-5'>传感器</b><b class='flag-5'>套件</b>打造DIY万圣节僵尸面具

    采用ROHM传感器套件的DIY Arduino家庭安防系统 2部分- Cayenne设置

    在DIY智能家居安防系统1部分中,我们将各种组件(例如PIR传感器、温度传感器和压力传感器)组
    的头像 发表于 02-24 14:38 981次阅读
    采用<b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>套件</b>的DIY Arduino家庭安防系统 <b class='flag-5'>第</b>2<b class='flag-5'>部分</b>- Cayenne设置

    采用ROHM传感器套件的DIY Arduino家庭安防系统 1部分 机制

    在该项目中,我们将使用Arduino Mega和ROHM传感器评估套件来制作一套DIY Arduino家庭安防系统。
    的头像 发表于 02-24 15:08 990次阅读
    采用<b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>套件</b>的DIY Arduino家庭安防系统 <b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b> 机制

    ROHM传感器评估套件的3D外壳以及RohmMultiSensor库更新

    不久前,我创建了RohmMultiSensor - Arduino库,利用该库可以轻松控制ROHM传感器评估套件中的多个
    的头像 发表于 02-24 09:51 857次阅读
    <b class='flag-5'>ROHM</b><b class='flag-5'>传感器</b><b class='flag-5'>评估</b><b class='flag-5'>套件</b>的3D外壳以及RohmMultiSensor库更新

    利用ROHM传感器评估套件实现UCLA AirMouse2部分

    利用ROHM传感器评估套件实现UCLA
    的头像 发表于 02-27 10:27 534次阅读

    带温度传感器的低功耗电子墨水显示屏(1部分

    电子发烧友网站提供《带温度传感器的低功耗电子墨水显示屏(1部分).zip》资料免费下载
    发表于 07-03 10:20 0次下载
    带温度<b class='flag-5'>传感器</b>的低功耗电子墨水显示屏(<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>)

    电源设计方法-1部分

    电子发烧友网站提供《电源设计方法-1部分.pdf》资料免费下载
    发表于 09-06 11:40 0次下载
    电源设计方法-<b class='flag-5'>第</b><b class='flag-5'>1</b><b class='flag-5'>部分</b>