资料介绍
PCB图如下:
成分
HMC6343集成电路 | × 1 |
741C083510JP CTS电阻器产品 |
× 1 |
227CKS035M 伊利诺伊电容器 |
× 1 |
106CKH050M 伊利诺伊电容器 |
× 1 |
Y16271K00000T9R Vishay 箔电阻器(Vishay Precision Group 的部门) |
× 1 |
Y16271K00000T9R Vishay Precision Group 箔电阻器 |
× 1 |
Y1624350R000T9R Vishay 箔电阻器(Vishay Precision Group 的部门) |
× 1 |
描述
HMC6343加速度计模块
HMC6343是霍尼韦尔提供的具有倾斜补偿功能的固态罗盘模块。HMC6343 具有三轴磁电机、三轴加速度计和一个运行所有计算的 PIC 内核。你得到的是一个指向 I2C 的指南针,即使你倾斜电路板,它也保持不变。固态(以及许多经典的水基)指南针在不平放时会严重失效。倾斜补偿 HMC6343 对于那些现实世界的罗盘应用至关重要
作为我博士工作的一部分,我制作了第二人生查看器的修改版本,在开放虚拟世界研究小组之前的猫鼬、犰狳和奇美拉项目之后,我将其命名为 Pangolin,它允许;
将串行设备连接到查看器
根据 GPS 读数控制化身的移动
根据加速度计和磁力计读数控制相机
这些功能的结合使您可以执行诸如将加速度计、磁力计和 GPS 接收器连接到 Arduino 之类的事情,让它将读数转储到查看器中并让查看器使用它们来控制头像和相机。这背后的动机是通过创建移动跨现实界面来解决“空缺问题”;允许用户在真实环境和等效合成环境中体验同时存在,使用他们的物理位置和方向作为其合成表示的隐式控制方法。我将在 6 月的 iED 2013 波士顿峰会上发表一篇关于此的论文——如果我能获得资金让我真正到达那里!
获取代码和构建
Pangolin 源代码可在 Bitbucket 上获得,我的添加和修改在 GNU 通用公共许可证下获得许可。串行 IO 功能使用 Terraneo Federico 的 AsyncSerial 类,该类根据 Boost 软件许可证获得许可。查看器代码库是在删除 --loginuri 标志之前从 Linden Lab 的查看器版本中分叉的,因此 Pangolin 与 OpenSim 网格/服务器兼容。
Second Life wiki 上提供了构建查看器的说明。我使用 32 位 Debian GNU/Linux 构建(特别是通过从 64 位 Arch Linux 主机进入 32 位 debootstrap 安装,请参阅我的说明),它生成在 32 位 Linux 和 64 位上运行的二进制文件安装了 32 位兼容性库的 Linux。
串行连接使用 Boost.Asio。Linden 提供的 Boost 预构建库缺少我的修改使用的一些功能,因此我使用 LightDrake 的替代方案构建;他的公共图书馆可以在这里找到。要使用这些库,请编辑代码库根目录中 autobuild.xml 文件中的相应条目。你正在寻找这个部分,在这里我已经注释掉了 Linux 版本的原始库和哈希,并用 LightDrake 替换了它;
Linux 1.45.0 版本;如果您尝试更新的 Linux 版本或 Windows/Darwin 版本,请告诉我进展如何!使用这个新库会导致相当讨厌的命名空间冲突(至少在 Linux 1.45.0 版本中),我已经为此上传了一个修复程序。
我还在 Bitbucket 上放了一个示例 Arduino 草图,它使用了一个 HMC6343 加速度计/磁力计和一个 u-blox MAX-6 GPS 接收器,我之前写过。
二进制
如果您只是想在没有成功设置(相当特殊的)构建环境的繁琐情况下尝试一下,我已经将 32 位 Linux 二进制文件上传到 Bitbucket。
用法
正常启动查看器并登录,然后查看包含单个条目串行监视器的串行菜单。单击此,您将看到类似的内容;
将串行设备的路径和波特率放入顶部设备设置部分的字段中,然后单击[连接]。对我来说,在 Linux 机器上使用 Arduino,如果是第一个串行设备,串行设备通常出现在 /dev/ttyACM0 或 /dev/ttyS0,如果是第二个串行设备,则出现在 /dev/ttyACM1 或 /dev/ttyS1 等。如果你'正在使用 Arduino 并且找不到它,只需启动 Arduino IDE 并查看工具菜单中的串行端口条目。
Pangolin 需要以下格式的消息,由换行符分隔;
1
<轴承> <俯仰> <滚动> <纬度> <经度>
例如;
1
183.90 75.80 -59.30 56.339991 -2.7875334
因此,请确保您的串行设备遵守此消息格式;上面链接的示例 Arduino 草图可以做到这一点,对您来说可能是一个有用的起点。
Anchor settings 部分中的字段用于输入您知道真实世界纬度/经度和相应虚拟世界坐标以及虚拟世界与真实世界的比例的单个点的位置 - 例如,如果 1m 在现实世界在虚拟世界中用 1.2m 表示,然后在 Scale 字段中输入 1.2。
锚点的 Sim X 和 Sim Y 是全局的;这对于允许 Pangolin 跨多个区域(例如大型区域)工作是必要的。因为区域是 256x256m,所以您可以通过 (256 * region position) + 局部坐标轻松计算一个点的全局坐标。例如,如果我的锚点在 1020,1043 的区域中的 127,203,23,则锚点的全局 X 坐标为 (1020 * 256) + 127 = 261247 & 锚点的全局 Y 坐标为 ( 1043 * 256) + 203 = 267211。没有实现高度(GPS 的垂直精度大大低于水平),所以只需在你的模拟人地面水平附近选择一个模拟人 Z。纬度和经度字段有 6 位小数精度。
输入所有锚点设置后,单击 [Set] 如果一切正常,您应该在 Received data 部分看到来自串行设备的数据,在 Calculated data 部分看到处理后的位置值。暂停复选框将停止字段更新,以便您可以复制值等。如果收到的数据出现乱码,那么您可能设置了不正确的波特率 - Pangolin 将忽略此数据,而不是尝试处理它并发送您的化身运动失控.
要根据接收/计算的数据启用/禁用对相机和头像的移动的控制,请使用“控制”部分中的“方向控制”和“位置控制”复选框。本节中的各种微调器允许您更改平滑、高通滤波器和更新频率。这些值的好坏取决于您使用的硬件/传感器、SIM 卡的规模等。
#include
#define HMC6343_ADDRESS 0x19
#define HMC6343_HEADING_REG 0x50
// 由操纵杆固件定义的数据结构
结构{
int8_t x;
int8_t y;
uint8_t 按钮;
uint8_t rfu;
}喜悦报告;
无效设置(){
Wire.begin(); //初始化I2C总线
序列号.开始(115200);//初始化串行总线
}
无效循环(){
字节高字节,低字节;
Wire.beginTransmission(HMC6343_ADDRESS); // 开始与 HMC6343 通信
Wire.write(0x74); // 设置 HMC6343 方向
Wire.write(HMC6343_HEADING_REG); // 发送要读取的寄存器地址
Wire.endTransmission();
Wire.requestFrom(HMC6343_ADDRESS, 6); // 从 HMC6343 请求 6 个字节的数据
而(Wire.available() < 1); // 没有字节接收时忙等待
highByte = Wire.read();
lowByte = Wire.read();
浮动标题 = ((highByte << 8) + lowByte) / 10.0; // 以度为单位的航向
highByte = Wire.read();
lowByte = Wire.read();
浮动间距 = ((highByte << 8) + lowByte) / 10.0; // 以度为单位
highByte = Wire.read();
lowByte = Wire.read();
浮点数 = ((highByte << 8) + lowByte) / 10.0; // 以度数滚动
joyReport.buttons = 0;
欢乐报告.rfu = 0;
joyReport.x = 约束(((int)(map(roll, -90, 90, -100, 100))), -100, 100);
joyReport.y = 约束(((int)(map(pitch, -90, 90, -100, 100))), -100, 100);
Serial.write((uint8_t *)&joyReport, 4);
延迟(100);// 以大约 10Hz 的频率执行此操作
}
它有效吗?
代码本身运行良好。我在圣安德鲁斯大教堂的废墟中测试了它,Open Virtual Worlds 小组为此使用 MSI WindPad 110W 平板电脑进行了 OpenSim 重建。尽管 OSgrid 版本通常比我们的本地网格旧,但可以在我们自己的网格和 OSgrid 上访问此 sim(搜索称为“StAndrewsOVW”的区域)。
代码
测试代码
数据.ino
- 微加速度计的原理与应用
- 基础加速度计传感器 26次下载
- 加速度计技术参数 8次下载
- 选择一个加速度计的技巧 10次下载
- MEMSIC攻克加速度计难题 8次下载
- 基于LabVIEW的加速度计模型参数辨识模块设计_郭鑫 4次下载
- ADXL330_加速度计 0次下载
- 降低加速度计的平均功耗 11次下载
- 新型高精度光纤加速度计系统研究
- 电容式、隧道式加速度计检测技术研究
- 厚膜混合集成电容式加速度计
- 三维MEMS加速度计的测试方法
- 三维MEMS加速度计的性能测试方法与分析
- 基于微加速度计的AIR MOUSE的研究
- 梳齿式微机械加速度计静态模型的辨识
- 状态监测中数字MEMS加速度计的混叠效应 1094次阅读
- MEMS加速度计中的振动校正 2362次阅读
- 如何使用加速度计提高倾角测量的准确性 2942次阅读
- MEMS加速度计性能成熟 1181次阅读
- 为什么MEMS加速度计正在成为设计人员在CbM应用中的最佳选择 1234次阅读
- ADXL345三轴数字加速度计的驱动设计与实现 7546次阅读
- 如何扩展MEMS加速度计的带宽 3825次阅读
- 加速度计的安装方法分享 5001次阅读
- 九轴传感器之加速度计是怎么回事 2786次阅读
- digilent三轴MEMS加速度计传感模块介绍 2591次阅读
- digilentPmodACL三轴加速度计介绍 2097次阅读
- 关于一种带数模混合输出的加速度计系统的设计和验证 4393次阅读
- MEMS加速度计是什么 加速度计工作原理 2.6w次阅读
- 如何用加速度计中断引脚执行唤醒和非运动检测 4607次阅读
- 新型MEMS加速度计与商用压电(PZT)状态监控加速度计的比较 7791次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多