英语原文共 23 页,剩余内容已隐藏,支付完成后下载完整资料
AD-HOC HID:模块化无线人机接口设备
Joe Mazzanti 电气工程
2014年6月8日
摘要
Ad-Hoc HID是一款模块化,可重新编程的人机界面设备。根据用户需求,该设备可用作键盘,游戏手柄或鼠标。最终的项目旨在切换不可知论,使最终产品适应于用户的需求。
介绍
“Ad-Hoc”是一个拉丁语短语,大致可以翻译为“为此目的”。蓝牙协议还支持创建短距离Ad-Hoc网络,以便与硬件设备进行通信。这个名字似乎完美地定义了这个项目的最终目标。
人机界面设备是一类与人直接交互的电脑配件,如键盘,游戏杆,游戏手柄和鼠标。
这些接口旨在将人体运动转化为计算机输入。为了使用计算机,这些设备是普遍需要的。但是,由于某些障碍,并不是每个人都能够利用每个人机界面设备。
大规模生产的难易接近的计算机接口设备是昂贵的。个人定制计算机硬件甚至更昂贵。带数字游戏杆和两个数字按钮的简单游戏手柄可能需要约250美元。一个让人难以接近的按钮可以花费100美元。更复杂的游戏手柄可能花费超过1000美元。医疗保险公司往往会忽视这些过高的成本,因为游戏手柄并不被认为是“必要的”。
难以接近的计算机接口设备包括相当大的产品类别。但是,残疾范围越来越大于现有产品的范围。今天存在许多类型的自适应技术。专业开关可通过在线零售商购买; 眼动跟踪和语音命令软件变得越来越可用。
这个项目最初的灵感来自Caleb Kraft制作的控制器。迦勒让他的控制者帮助一个有肌肉萎缩症的男孩玩电脑游戏。这个项目通过创建一个适应其他类型残疾的平台来扩展他的想法。理想情况下,该平台可用于生成独特的控件,以适应独特的人,而不必让一个独特的人适应大规模生产的控制器。虽然这个项目的原型主要可以看作是另一种肌肉萎缩症解决方案,该平台的真正优势在于其模块化和可扩展性的适应性。
整个项目将会希望以自定义制作; 无障碍的人机接口设备可以便宜地制造,而不需要先进的技术知识。整个项目的设计和组装都是随时可用的零件。最终产品证明,定制电脑配件可以用90美元的预算制造。
要求
系统要求概述如下:
- 可再编程
- 无线,至少10英尺的操作范围
- 低于150美元的零件成本
- 可用于使用现成的工具和设备进行生产
- 电池供电
- 模块化
- 兼容Mac和Windows
- 设备自动检测为无线键盘。
- 未来的可扩展性
- 少于16毫秒。控制器发送命令和接收命令的操作系统之间的延时。
这个系统的主要目标是用户可扩展性。这意味着系统的设计主要是灵活的。灵活性来自坚持一套基本的要求,并确保这些要求得到完美满足,同时允许空间根据需要添加新的需求。报告的下一部分将分析每个系统规格。
产品规格
由于此项目的性质,技术规格与营销要求相同。这个系统无法做到只有工程师才能理解。相反,目标是建立一个任何人都可以构建和使用的系统,即使他们不是工程师。
这是项目的成本细分,包括完整的库存。没有这些零件或者其他相当的东西,这个项目就无法完成。但是,可以进行一些可能的,更便宜的替换。
表1-项目成本和库存
部分 |
描述 |
数量 |
成本 |
总计 |
Arduino Pro Mini 328 |
5V,16 MHz |
1 |
$9.95 |
$9.95 |
BlueSMiRF HID |
蓝牙调制解调器 |
1 |
$44.95 |
$44.95 |
突破性标题 |
一套金属头 |
1 |
$2.95 |
$2.95 |
塑料外壳 |
5.50 X 4.25 X 1.75 in. |
2 |
$4.34 |
$8.68 |
袋子外壳螺丝 |
#4-24x 1/4“Philips |
1 |
$3.50 |
$3.50 |
30毫米按钮 |
三和OBSF-30 |
6 |
$2.75 |
$16.50 |
24毫米按钮 |
三和OBSF-24 |
2 |
$2.25 |
$4.50 |
含铅焊料 |
60/40,0.8毫米 |
1 |
$9.95 |
$9.95 |
8路方向控制杆 |
三和JLF |
1 |
$23.95 |
$23.95 |
绞合线 |
24AWG |
1 |
$5.97 |
$5.97 |
烙铁 |
40W |
1 |
W |
$42.39 |
9V电池 |
1 |
$2.62 |
$2.62 |
|
AVR程序员 |
ISP的AVR |
1 |
$14.95 |
$14.95 |
9v电池扣 连接器 |
1 |
$1.25 |
$1.25 |
|
总成本 |
$192.11 |
我的原型的总成本是190.86美元。我原来说这个项目的成本可能是100美元左右。我这样说是因为用我选择的较便宜版本的零件代替可以减少很多费用。例如,功能烙铁可以约$ 10.00购买。更便宜的操纵杆可以以15美元的价格购买,按钮可以以每个2.00美元的价格购买。机箱螺丝可以从硬件商店单独购买。只购买8个螺丝应比购买100包便宜得多。
Arduino Uno可以用来代替Arduino Pro Mini,但这会使微控制器的尺寸和成本翻倍。这可能是一个更好的选择,因为许多人已经有了Arduino Uno,如果你使用Uno,你还可以获得两个不同的好处:你可以为系统使用USB电源,而且你不需要购买AVR编程器。
如果您已经拥有Arduino Uno并坚持使用Pro Mini,则可以将Arduino Uno用作AVR编程器,而无需单独购买AVR编程器。 我使用Arduino IDE编写了整个项目,可以从http://arduino.cc/en/main/software中安装
设计
系统硬件和软件的设计考虑到可扩展性。为此,基本的系统功能必须完美无缺地执行。我的设计考虑因素会明确说明,因为有些选择需要解释。如果有不止一种方法来执行任务,我会解释我做了什么,以及我在过程中学到了什么。
软件设计初始设置
该项目使用的蓝牙调制解调器是Roving Networks RN-42 HID。这是为了便于编程而选择的。该模块需要发送特殊格式的数据包。如果数据包正确发送,则蓝牙调制解调器将正确编码并发送HID报告,而不需要任何其他交互。这很方便,因为它允许任何人以很少的经验创建蓝牙HID设备,并且不需要编写自定义固件。
蓝牙调制解调器以“命令模式”从零售商发送。命令模式允许用户配置参数,例如波特率,设备密码或模块在初始化时自动连接的远程地址。这些可以使用终端仿真器进行设置,也可以直接使用微控制器进行软件设置。
制造商制作了一份数据表[1],说明如何在蓝牙调制解调器上输入命令模式。该数据表还包含蓝牙调制解调器命令的完整列表。
制造商的数据表中提供了进入命令模式的主要说明。我使用命令模式来更改波特率和设备模式。
从终端程序中设置的最重要的命令如下:
SZ,1024
该命令将蓝牙调制解调器的波特率设置为250000.使用16 MHz单片机时钟,该波特率给出0%的时钟误差。
这很理想,因为它可以最大限度地减少任何潜在的定时错误
还有必要在蓝牙调制解调器的固件中设置HID配置文件。如果未发送此命令,则设备将不会被检测为HID设备。要将模块设置为HID设备,请按照制造商的数据表进入命令模式。从这里发送以下字符:
S,6
该命令将让计算机检测到蓝牙HID设备并将其传输正确解码为HID报告。
这些命令是两个最重要的命令,应该通过终端程序完成。我的项目只需要这两个。在微控制器的初始化过程中,可以配置RN-42数据表中详细介绍的任何其他功能。
发送HID报告
HID报告是特定格式的字符串,具有指定的长度。这些报告被发送到蓝牙调制解调器,然后将它们解释为按键和按键释放命令。此蓝牙模块只允许同时进行六次按键加上任何组合的修饰符,如Shift,Ctrl,或Alt。
以下是正确格式化的原始HID报告的示例。
图1 - HID原始报告
在代码中,这是构造并然后串行发送,一次一个字节。一旦操作系统收到按钮按下信号,操作系统就会记住当前正在按下哪些按钮。释放信号必须发送给操作系统释放按钮。
通常,在发送不同按钮之前释放按钮是最佳做法。可以一次发送多个按钮而不释放其他按钮,但这可能导致过早释放某些按键。
例如,想象一下六个按钮被按下的情况,称它们为按钮1-6。按照图1,按钮1发送为“扫描码1”,HID报告将被发送。按钮2-6将被发送为“扫描码2-6”。
现在,不释放按钮1-6,按下按钮7。有两种选择:
- 由于没有“扫描码7”点,因此需要使用“扫描码1-6”中的一个点传送按钮7的按键。
要么:
- 在任何其他按下的按钮被释放之前,按钮7不会被发送。一旦释放按钮,按钮7将占据其在“扫描代码1-6”中的位置。
我选择使用选项2,主要是因为实际上同时按下6个按钮非常困难。选项1的问题在于操作系统知道使用哪个扫描码插槽来传输按键。使用“扫描代码1”插槽发送按钮1和按钮7很复杂,因为在“扫描代码1”插槽中发送值“0x00”将释放其按键命令已在该插槽中发送的每个按钮,即使其中一个按钮仍然在按住。这意味着按钮需要物理释放,然后再次按下,以便操作系统接收另一个按钮按下命令。
流程图和算法分解
代码算法按照以下提纲工作。步
全文共9365字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[12023],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。