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

    文章

    6813

    浏览量

    147692
  • 传感器
    +关注

    关注

    2525

    文章

    48137

    浏览量

    740451
  • 发射器
    +关注

    关注

    6

    文章

    783

    浏览量

    52354
收藏 人收藏

    评论

    相关推荐

    电感式传感:线性位置传感1部分

    最大的金属接触面。我选择了一个直径 29 毫米、每层 70 匝的 2 层 PCB 线圈作为传感器线圈。之所以选择该线圈,是因为它的直径超过了该形状目标的最宽部分。图 1 是我在该实验中使用的线圈和三角
    发表于 09-14 14:48

    Arduino兼容传感器扩展板SensorShield-EVK-001

    全球知名半导体制造商ROHM开发出通过Arduino和mbed*1等开放平台*2通用微控制开发板)可轻松测量加速度、气压、地磁等8种信息的传感器扩展板(Expansion Board
    发表于 04-11 06:20

    建筑混合测试系统的1部分

    构建混合测试系统1部分:为成功过渡奠定基础
    发表于 11-06 09:36

    用于温湿度传感器评估套件SI7034-EVB

    SI7034-EVB,Si7034温湿度传感器评估套件。 Si7034湿度和温度传感器评估套件
    发表于 04-22 09:03

    【罗姆传感器评估板试用体验连载】一、产品开箱

    封装凝胶实现防水保护。具有很强的抗温度变化和应力的能力。https://www.rohm.com.cn/sensor-shield-support/pressure-sensor2颜色传感器
    发表于 02-11 19:08

    【罗姆传感器评估板试用体验连载】1.开箱+资料准备+环境搭建+拓展板

    本帖最后由 戟战士 于 2022-2-25 11:40 编辑 一、开箱 非常感谢开心酱和厂商提供这次免费试用的机会,传感器评估板已签收,内含Arduino UNO开发板*1、拓展板*1
    发表于 02-25 11:35

    【罗姆传感器评估板试用体验连载】-03-传感器篇- 气压传感器评估板BM1390GLV-EVK-001 颜色传感器评估板BH1749NUC-EVK-001

    1块BM1390GLV-EVK-001气压传感器1块BH1749NUC-EVK-001颜色传感器 1块气压软件支持https://micro
    发表于 03-08 16:06

    【罗姆传感器评估板试用体验连载】开箱展示

    首先感谢电子发烧友平台的眷顾,有幸申请到了Rohm传感器开发板套件。这次申请的套件包含了Rohm三个类型
    发表于 03-11 14:01

    ROHM 地磁传感器介绍与应用

    本视频将指导您地磁传感器评估方法 。支持Arduino Uno、mbed等开放平台的罗姆传感器评估套件 SensorShield-EVK-
    的头像 发表于 06-26 17:43 5693次阅读

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

    今天,我们将利用ROHM传感器评估套件打造一套智能花园系统。在此项目中,我们整合接近/环境光传感器
    的头像 发表于 02-23 17:58 840次阅读
    <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>制作智能花园系统

    Arduino传感器ROHM传感器评估套件概览

    ROHM Sensor Shield(ROHM传感器开发板)是一种兼容Arduino的扩展板,旨在帮助用户快速将各种传感器添加到自己的开发项目中。凭借其直观的布局和紧凑性,该开发板成为
    的头像 发表于 02-23 17:37 595次阅读
    Arduino<b class='flag-5'>传感器</b>–<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 609次阅读
    用<b class='flag-5'>ROHM</b> Arduino<b class='flag-5'>传感器</b><b class='flag-5'>套件</b>打造DIY万圣节僵尸面具

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

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

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

    不久前,我创建了RohmMultiSensor - Arduino库,利用该库可以轻松控制ROHM传感器评估套件中的多个
    的头像 发表于 02-24 09:51 637次阅读
    <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 AirMouse–第2部分

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