站内搜索
发作品签到
[SlimeVR] BMI220/BMI270 Tracker
标准版

[SlimeVR] BMI220/BMI270 Tracker

工程标签

DIY设计

7.8k
0
0
6

简介

基于ESP12F(ESP8266)+BMI270/220实现的SlimeVR Tracker。

简介:基于ESP12F(ESP8266)+BMI270/220实现的SlimeVR Tracker。
复刻成本:35

开源协议

CERN Open Hardware License

(未经作者授权,禁止转载)
创建时间:2024-10-24 09:57:04更新时间:2024-11-05 10:11:08

描述

什么是SlimeVR?

SlimeVR是一套开放的硬件传感器和开源软件,可以用于虚拟现实中的全身跟踪(FBT)。
该项目旨在创建一个可定制、修改和破解的软硬结合系统,以适应用户的需要。

基于官方过于垃圾简陋的原理图绘制:

image.png

芯片介绍:

  • ESP-12F(ESP8266): ESP-12F模块是一款基于ESP8266芯片的Wi-Fi模块,由安信可科技开发。这个模块集成了Tensilica L106超低功耗32位微型MCU,支持80MHz和160MHz主频,并且支持RTOS操作系统。ESP-12F模块支持IEEE802.11 b/g/n协议和完整的TCP/IP协议栈,用户可以通过它为设备添加联网功能或构建独立的网络控制器。
  • BMI270: Bosch BMI270超低功耗智能惯性测量单元 (IMU) 专门设计用于各种可穿戴应用,大大提高了加速度计性能。BMI270包含直观的手势、情景和活动识别功能,并集成了针对腕戴式设备专门进行优化的即插即用计步器。该IMU也非常适合其他类型的可穿戴设备,如耳戴式设备、智能服装、智能鞋、智能眼镜和脚踝带。

官方推荐BMI085,由于成本过高,便采用BMI270。
原本可用DCDC芯片代替AMS1117作为降压模块,不想画,遂放弃。
本项目仅代表电路可运作并可用于SlimeVR,由于预算不足,所以不能最低的官方Lower-Body Set要求(5 Trackers),所以具体的全身联动暂时不能测试。
该项目仅用于验证电路可行性。
Tracker可穿戴外壳已在绘制。

关于BMI270/BMI220:

官方推荐BMI270为峰值温度260℃的回流焊:

bef1eb1fbb072c21dd531436c7d9e6e9.png

但实测380℃热风枪吹也没问题,但需要尽快操作完成,不然高温会烤坏传感器。


如果购买BMI270,请认准深圳优信电子科技有限公司:链接传送门

当然你可以从其他店铺购买BMI270,但有可能实际收到的是BMI220

目前已知淘宝上绝大部分卖家卖的都是BMI220而非270,他们甚至都不知道自己卖的其实是BMI220。


那么我们该如何分辨BMI270和BMI220?

从外观上看,并没有任何方法判断,因为这俩长得一毛一样

唯一能判断的是焊接上去后打开串口控制台查看输出,在sensor detect步骤时传感器会报硬件地址错误(BMI270为0x24,BMI220为0x26):

image.png

Bosch论坛也有人被这俩货坑过(原贴地址:BMI270 CHIP ID reported as 0x26 instead of 0x24):

image.png

如果摸到了BMI220,除了换货还有另外一条路,在下面的固件编译中会提到。

关于固件编译:

编译步骤请自行完成。

编译教程请看官方文档:SlimeVR Firmware Guide
如果看不懂,请善用翻译软件。

defines.h自动生成参数如下图所示:

image.png


如果你手上的sensor非常幸运的摸到了BMI220,那么恭喜你:目前这个传感器并没有任何官方适配

我个人从coreboot/google-ec找到了BMI220的Firmware,并基于官方BMI270相关代码魔改了一个BMI220出来。

首先按照官方教程设置好相关环境并克隆SlimeVR-Tracker-ESP源代码。

接着下载附件中的bmi220.h和bmi220fw.h,并放在源代码根目录/src/sensors/softfusion/drivers下。

源代码根目录/src/consts.h第44行末尾换行并插入以下代码:

BMI220,

源代码根目录/src/consts.h第65行末尾换行并插入以下代码:

#define IMU_BMI220 SoftFusionBMI220

源代码根目录/src/sensors/SensorManager.cpp第40行末尾换行并插入以下代码:

#include "softfusion/drivers/bmi220.h"

源代码根目录/src/sensors/SensorManager.cpp第59行末尾换行并插入以下代码:

using SoftFusionBMI220 = SoftFusionSensor;

源代码根目录/src/sensors/sensor.cpp第111行末尾换行并插入以下代码:

case ImuID::BMI220:	
    return "BMI220";

最后按照上面的编译设置教程设置好defines.h,最后把该文件的第一行改成:

#define IMU IMU_BMI220

即可正常使用BMI220。

目前只有一个已知bug:在tracker校准环节CRT步骤可能返回全0值(疑似不正常),但使用没啥问题。

官方那边我也提交了PR:PR传送门,如果有了解嵌入式编程的大佬可以帮忙看看。

关于使用:

完成实物图:

c9a45ebf0f80ec24570146efcd2c785b.jpeg

SlimeVR Server配置教程:官方文档传送门。

焊接完成并开机时,会长闪一下,然后会短暂的闪烁几次,后面这几次代表当前的Tracker工作情况。

闪烁次数含义
1Tracker准备完成,可以使用。
2Tracker正在尝试连接SlimeVR Server。
3Tracker正在尝试连接WiFi。
5Tracker传感器出错,请检查传感器状态。

第一次使用前需要插电激活电池管理:

VID20241102110948.gif

当Power开关拨动至右边时,蓝灯亮起,电源通电并开始工作:

VID20241104211229.gif

当Boot开关拨动至下边时,插入电脑并打开Tracker电源,Tracker会进入Boot烧录模式:

VID20241104211148.gif

当插入电源时,指示灯灯闪烁代表电池开始充电,指示灯四颗全亮则代表充电完成:

VID20241104211043.gif

当轻击左上角的RST键时,ESP-12F会自动重置:

VID20241104211054.gif


以下是一个通过usb配对Tracker的简单案例。

首先用usb插上电脑并打开Tracker开关(Tracker不需要进入Boot烧录模式):

VID20241104211229.gif

然后打开SlimeVR软件,进入配置向导:

image.png

接着设置WiFi(ESP-12F仅支持链接2.4G WiFi):

image.png

当软件显示“USB追踪器已连接到服务器时”,右边会显示已连上软件的Tracker。接着点击“所有的追踪器都连接好了”:

image.png

在IMU校准教程开始前,请把Tracker放置在平坦的桌面上,准备好后点击“我已经把追踪器放在桌子上了”:

image.png

接着会进行佩戴Trakcer状态下的校准动作,由于此处我只是简单的测试一下BMI270是否工作正常,所以在此处可以点击右上角“ESC”退出设置向导:

image.png

点开传感器详细信息,测试一下传感器是否工作正常。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
Gerber_ICE-BLUEBERRY-SlimeVR-Tracker_PCB_2024-11-04.zip
24
2
BOM_ICE-BLUEBERRY-SlimeVR-Tracker_2024-11-04.csv
18
3
bmi220.h
49
4
bmi220fw.h
49
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航