PGEAR CAN-Sniffer G1 使用说明
更新日期:2026-10-01
适用范围:当前 PGEAR CAN-Sniffer G1 固件的 BLE 数据、RaceChrono DIY 和 Wi-Fi 原始 CAN 采集功能。
1. 产品介绍
PGEAR CAN-Sniffer G1 是一款 CAN 总线数据采集设备,可将车辆总线上的数据通过蓝牙低功耗(BLE)或 Wi-Fi 传输给手机、电脑,用于查看车辆参数、记录行驶数据和分析 CAN 报文。
设备负责接收和转发 CAN 数据。发动机转速、车速、油门、温度等具体参数,需要由接收端根据相应车型的数据定义进行解析。连接成功不代表已经获得该车型的全部参数;不同车型、年款和接入位置可能使用不同的 CAN ID 和计算规则。
1.1 使用方式
| 使用方式 | 接收端 | 主要用途 |
|---|---|---|
| BLE Profile 数据 | 支持 PGEAR CAN-Sniffer G1 接口的应用 | 根据车型配置采集指定 CAN ID,解析并显示车辆参数 |
| RaceChrono DIY BLE | 支持 DIY CAN-Bus 功能的 RaceChrono 应用 | 在 RaceChrono 中配置车辆通道,记录和分析车辆数据 |
| Wi-Fi 原始数据 | SavvyCAN 或兼容 GVRET TCP 的工具 | 查看原始报文、采集日志、分析车型协议 |
1.2 当前连接参数
| 项目 | 参数 |
|---|---|
| 正式名称 | PGEAR CAN-Sniffer G1 |
| VCC 输入电压 | 4.5–40 V DC |
| 内部供电 | DC-DC 降压转换为 3.3 V |
| CAN 线路抗干扰 | 共模滤波,抑制高频共模噪声 |
| 蓝牙设备名称 | PGEAR CAN-Sniffer G1 |
| Wi-Fi 热点名称 | PGEAR CAN-Sniffer G1 |
| Wi-Fi 密码 | 12345678 |
| Wi-Fi 设备地址 | 192.168.4.1 |
| 原始数据连接协议 | GVRET over TCP |
| TCP 端口 | 23 |
| CAN 通道数量 | 1 |
| 当前 CAN 速率 | 500 kbps |
| CAN 工作模式 | 只监听(Listen-only) |
| CAN 数据类型 | 经典 CAN,单帧数据最多 8 字节 |
| 默认启动状态 | BLE 数据模式,Wi-Fi 关闭 |
当前固件不主动向 CAN 总线发送报文,不提供主动 OBD 查询、故障码清除或报文注入功能。当前应用入口固定使用 500 kbps;在 Profile 或电脑软件中填写其他速率不会改变设备的实际 CAN 速率。
1.3 电源与线路技术特点
宽范围直流输入。 VCC 支持 4.5–40 V 直流输入,覆盖常见 12 V、24 V 电源的标称电压。设备内部通过 DC-DC 开关降压电路将输入转换为 3.3 V,为内部电路供电。开关降压方式适合较高输入电压到低压的转换,有助于减少线性降压带来的功耗与发热。
CAN 线路共模滤波。 CAN H、CAN L 信号线路采用共模滤波器件,抑制两条线上同向出现的高频噪声,同时尽量减小对 CAN 差分信号的影响。该设计有助于降低电磁干扰,提高复杂布线环境中的信号抗干扰能力。
共模滤波不提供电气隔离,也不等同于隔离式 CAN 接口。接线时仍需按说明连接地线。
2. 使用前准备
2.1 所需设备
- PGEAR CAN-Sniffer G1 及与实际硬件匹配的线束、电源。
- 可接入的 500 kbps 经典 CAN 总线。
- 手机:用于 BLE 应用或 RaceChrono 连接,也可用于开启 Wi-Fi 模式。
- 电脑:使用 SavvyCAN 时需要,可连接设备的 Wi-Fi 热点。
- 对应车型的 Profile 或 CAN 通道定义:需要显示车辆参数时准备。
2.2 接线
按照设备外壳标识、配套线束说明及车辆接线资料连接:
| 信号 | 连接要求 |
|---|---|
| CAN H | 连接目标总线的 CAN H |
| CAN L | 连接目标总线的 CAN L |
| GND | 按配套接线说明连接地线 |
| VCC | 连接 4.5–40 V 直流电源正极 |
VCC 为外部电源输入,内部自动降压至 3.3 V;无需在 VCC 输入端另行转换为 3.3 V。连接前确认电压处于允许范围内,并按设备标识核对正负极。本说明不定义连接器针脚和线色,具体以配套线束说明为准。
接线和初次配置应在车辆停稳时进行。连接后确认 CAN H、CAN L 没有接反,线束连接牢固。使用车辆诊断接口时,还需要确认该接口实际开放了目标 CAN 数据;某些参数可能只在车辆内部其他总线上出现。
2.3 车型配置的作用
Profile 可以理解为车辆数据的“解释规则”。例如,同一条 CAN 报文可能同时包含转速与油门数据,应用需要知道:
- 读取哪个 CAN ID。
- 从数据的哪一位开始取值,以及取多少位。
- 使用哪种字节序,是否为有符号数。
- 如何通过倍率、除数和偏移量换算成实际值。
使用其他车型的配置,可能出现无数据、数值偏差或单位错误。应先确认车型、年款和接入的总线,再验证通道数值。
3. 快速开始:通过 BLE 查看车辆数据
- 按硬件说明连接 PGEAR CAN-Sniffer G1 并供电。
- 让目标车辆总线进入有数据的状态,例如打开点火开关。
- 打开手机蓝牙,并授予应用所需的蓝牙或附近设备权限。
- 在支持 PGEAR CAN-Sniffer G1 的应用内扫描设备,选择 PGEAR CAN-Sniffer G1。
- 选择与车辆匹配的 Profile,由应用发送给设备。
- 由应用启用数据通知,开始接收 CAN 数据。
- 查看转速、车速等通道,确认数值与车辆实际状态一致。
BLE 应通过应用内的设备连接入口操作。系统蓝牙列表能否显示或配对,不是判断应用能否连接的唯一依据。
当前自定义 BLE 数据通道需要先加载 Profile。仅建立蓝牙连接或启用通知,不会自动持续输出所有原始 CAN 报文。需要采集全部报文时,使用 Wi-Fi 原始数据模式。
3.1 数据更新频率
自定义 BLE Profile 支持 20、50、100 Hz 三档快照频率,默认 100 Hz。
| 设置 | 快照调度间隔 |
|---|---|
| 20 Hz | 50 ms |
| 50 Hz | 20 ms |
| 100 Hz | 10 ms |
该频率是设备检查并发送快照的调度频率。实际接收频率受车辆报文频率、数据变化、蓝牙连接和手机处理能力影响。
设备缓存每个指定 CAN ID 的最新数据;至少一个指定 ID 的数据内容或数据长度发生变化时,才会产生待发送快照。报文持续到达但内容完全相同,也可能没有新的快照通知。因此,不能仅用快照通知的间隔判断车辆总线是否停发。
一份快照可同时包含多个 ID 的最新值,它们不一定在同一时刻到达。需要逐帧分析或记录每次报文到达时,应使用 Wi-Fi 原始采集模式。
3.2 重新连接与断电
Profile、频率和模式设置没有通过当前应用逻辑保存到非易失存储。设备断电重启后恢复默认 BLE 模式,Wi-Fi 关闭,需要重新加载 Profile。
应用每次重新连接时应重新确认 Profile,并重新启用通知。BLE 断开本身不会自动关闭已开启的 Wi-Fi 热点。
4. 在 RaceChrono 中使用
PGEAR CAN-Sniffer G1 提供 RaceChrono DIY CAN-Bus BLE 服务。该通道与自定义 Profile 快照通道独立,RaceChrono 负责设置接收过滤规则并解析车辆数据。
4.1 添加设备
- 给 PGEAR CAN-Sniffer G1 供电,并确保车辆总线有数据。
- 打开 RaceChrono 的设置,进入添加其他设备的入口。
- 选择 RaceChrono DIY 类型。
- 将连接方式设为 Bluetooth LE。
- 扫描并选择 PGEAR CAN-Sniffer G1,启用 CAN-Bus 功能。
- 在车辆配置中添加或配置 CAN-Bus 数据通道。
- 开始一次记录,确认目标通道有合理的数据。
不同应用版本的菜单文字可能有所不同。设备类型、BLE 连接方式及车辆 CAN-Bus 通道的配置方式,可参阅 RaceChrono 官方 DIY 教程。
4.2 配置车辆通道
设备发送的是原始 CAN 数据,RaceChrono 需要车型对应的 CAN ID 和解析公式,才能显示转速、车速或温度等参数。
在车辆配置中,按经过验证的车型定义设置通道名称、CAN ID、计算公式和单位。计算公式可参阅 RaceChrono 官方公式说明。
自定义 BLE 的 set_profile JSON 不能直接当作 RaceChrono 通道公式使用。 两者的配置入口和字段表达方式不同,应将信号定义转换为 RaceChrono 支持的规则。
4.3 使用边界
- 当前设备提供 CAN 数据;本固件没有提供 GPS 定位服务。
- RaceChrono 的逐帧通知使用其自己的过滤与最小通知间隔,不使用自定义 Profile 的
rate设置。 - 实际车型信号能否获取,取决于接入总线上的报文以及车辆通道定义。
- 切换应用前,先断开当前 BLE 应用,避免多个应用争用设备。
5. 使用 Wi-Fi 和 SavvyCAN 采集原始报文
Wi-Fi 原始模式将接收到的 CAN 报文通过 GVRET TCP 转发给电脑,适合寻找 CAN ID、检查原始字节和保存日志。
该通道转发不受自定义 BLE Profile 的 ID 白名单限制,不需要先加载车型 Profile。
5.1 开启 Wi-Fi 模式
设备上电后默认关闭 Wi-Fi。Wi-Fi 模式控制需要蓝牙认证,仅支持通过官方 App 开启。
- 打开车涯或 PGEAR App。
- 在 GO 界面选择连接 PGEAR CAN-Sniffer G1。
- 连接后选择 wifi raw mode。
开启后,电脑即可连接 PGEAR CAN-Sniffer G1 Wi-Fi 热点。
5.2 连接电脑
c
1. 在电脑 Wi-Fi 列表中选择 PGEAR CAN-Sniffer G1。
2. 输入密码 12345678。
3. 如果系统提示“无互联网”,保持连接;热点用于设备数据通信。
4. 打开 SavvyCAN 的连接管理窗口,创建新连接。
5. 选择 Network connection (GVRET)。
6. 在地址输入项中填写 192.168.4.1,创建连接。
7. 检查主窗口是否开始收到 CAN 报文。
本项目配套的 SavvyCAN 网络 GVRET 实现使用 TCP 端口 23。如其他版本提供单独的端口设置项,填写 23;只有地址输入项时,填写 IP 地址即可。
| 连接项目 | 填写内容 |
|---|---|
| 连接类型 | Network connection (GVRET) |
| 地址 | 192.168.4.1 |
| 端口(若可设置) | 23 |
| 实际 CAN 速率 | 500 kbps,由设备当前固件固定 |
热点最多允许一个 Wi-Fi 客户端接入。采集时只让目标电脑连接该热点,避免手机占用连接名额。
5.3 查看和保存数据
连接后可在 SavvyCAN 中查看报文的 CAN ID、数据长度、原始数据和时间信息。需要显示物理值时,仍需提供与车辆匹配的信号定义,例如经过验证的 DBC。
建议先进行短时间采集,确认报文持续出现,再开始正式记录。采集结束后使用 SavvyCAN 的日志保存功能,将数据保存到电脑,文件名注明车型、日期、接入位置和测试条件。
PGEAR CAN-Sniffer G1 当前固件不提供设备本地日志存储。数据由接收端保存;高负载或网络处理不及时可能丢帧,当前队列满时会丢弃较旧数据,因此不能保证所有总线报文都被完整记录。
5.4 返回 BLE 数据模式
Wi-Fi 模式切换由官方 App 完成蓝牙认证后控制。设备断电重启后会关闭 Wi-Fi 热点及 TCP 连接,恢复默认 BLE 模式。
同一次上电期间,模式切换不会主动清除已加载的 Profile。返回 BLE 模式后仍应由应用确认配置和通知状态。断电重启也会回到默认 BLE 模式,但需要重新加载 Profile。
5.5 模式之间的关系
| 状态 | 自定义 BLE 快照 | 官方 App 模式控制 | Wi-Fi GVRET 数据 |
|---|---|---|---|
| 默认 BLE 模式 | 加载 Profile 并启用通知后可发送 | 蓝牙认证后可用 | 热点关闭 |
| Wi-Fi 原始模式 | 暂停 | 蓝牙连接及认证有效时可用 | 电脑连接后可接收 |
RaceChrono DIY 通知在独立的原始帧回调中处理,当前代码没有将它随 Wi-Fi 模式一起关闭。需要稳定采集时,建议一次使用一个主要数据接收端。
192.168.4.1:23 是二进制 CAN 数据服务地址。当前固件没有启用内置 HTTP 网页,直接用浏览器打开 http://192.168.4.1 不会出现配置界面。
6. 指示灯说明
当前固件将指示灯作为 BLE 数据发送活动提示:
| 状态 | 含义 |
|---|---|
| 常亮 | 默认状态,或最近没有成功提交 BLE 数据通知 |
| 约每秒闪烁两次 | 最近约 1.5 秒内有自定义 BLE 快照或 RaceChrono CAN 通知成功提交 |
指示灯不是完整的连接状态或 CAN 总线状态指示。CAN 数据没有变化、没有加载 Profile、没有开启通知时,都可能保持常亮。Wi-Fi GVRET 数据发送本身不更新该灯的活动计时,所以 Wi-Fi 正常采集时也可能常亮。
判断是否正在采集,应以应用或 SavvyCAN 中实际收到的数据为准。
7. 查询电池电压
支持 PGEAR CAN-Sniffer G1 接口的应用可查询设备电压采样值。手动调试步骤如下:
- 建立 BLE 连接。
- 启用
0xFFE1的 Notify。 - 向
0xFFE1写入:
{"cmd":"batt"}
- 从该特征的通知中读取响应,例如:
{"t":"batt","v":12.03}
v 的单位是伏特(V)。这是硬件分压和 ADC 采样得到的参考值,其准确性取决于实际电路和校准。该值不是电池剩余电量百分比。
8. 常见问题
8.1 扫描不到 PGEAR CAN-Sniffer G1
- 检查设备供电。
- 检查手机蓝牙及应用权限。
- 关闭其他正在连接设备的 BLE 应用,再重新扫描。
- 重启设备后在应用内扫描。
- 如果仍显示旧名称,确认设备已经烧录改名后的固件,并重新扫描;仅修改源码不会改变设备中的程序。
8.2 蓝牙连接成功,但没有车辆参数
- 自定义 BLE 应用需正确下发 Profile 并启用 Notify。
- 检查目标 CAN ID 是否实际出现在接入总线上。
- 确认目标总线速率为 500 kbps。
- 检查 CAN H、CAN L 和地线连接。
- 确认车辆总线已经唤醒。
- 检查是否处于 Wi-Fi 原始模式;此时自定义 BLE 快照暂停。
- 数据完全不变时可能不产生新的快照,先观察随车辆状态变化的通道。
8.3 转速、车速或温度数值不正确
检查车型配置的 CAN ID、起始位、位长度、字节序、符号、倍率、除数、偏移和单位。优先用已经验证的车型配置;能接收原始报文不代表解析规则正确。
8.4 找不到 Wi-Fi 热点
Wi-Fi 默认关闭。打开车涯或 PGEAR App,在 GO 界面连接 PGEAR CAN-Sniffer G1,连接后选择 wifi raw mode,再刷新电脑的 Wi-Fi 列表。重启后需要重新开启。
8.5 电脑连上热点,但 SavvyCAN 没有数据
- 确认连接类型为 Network connection (GVRET),地址为
192.168.4.1,TCP 端口为23。 - 确认电脑仍连接 PGEAR CAN-Sniffer G1 热点,没有自动切回其他网络。
- 检查防火墙或 VPN 是否影响本地网络连接。
- 确认车辆总线有报文,接线正确且速率匹配。
- 断开已有的其他采集客户端,重新建立连接。
- 不要将设备速率设置为其他值;当前固件不会执行软件端的改速请求。
8.6 设备网页打不开
当前固件仅提供 BLE 与 GVRET TCP 数据通道,没有启用内置网页。使用配套应用或 SavvyCAN 完成连接和采集。
8.7 指示灯常亮,是否代表采集失败
不一定。Wi-Fi 数据发送不驱动活动闪烁,BLE 快照也会在数据不变时停止更新。检查接收端是否有数据,而不是只看指示灯。
8.8 断电后配置丢失
这是当前固件的行为。每次上电后由应用重新发送 Profile,需要 Wi-Fi 时重新开启热点。
9. 开发接入参考
以下内容面向需要接入 PGEAR CAN-Sniffer G1 的应用开发人员。普通用户可按前面的连接步骤使用。
9.1 GATT 服务
| 服务 UUID | 特征 UUID | 用途 |
|---|---|---|
0xFFE0 |
0xFFE1 |
自定义 Profile 写入、控制命令、快照及电压通知 |
0x1FF8 |
0x0001 |
RaceChrono DIY 原始 CAN 通知 |
0x1FF8 |
0x0002 |
RaceChrono DIY 过滤规则写入 |
0x00EE |
0xEE01 |
预留通道,本说明不定义业务指令 |
通知通过 CCCD(0x2902)启用,写入字节 01 00。固件本地 MTU 设置为 500,客户端仍需进行 MTU 协商,不能假定所有手机都能接收最大长度通知。
9.2 Profile 示例
{
"cmd": "set_profile",
"baud": 500000,
"rate": 20,
"channels": [
{
"id": 578,
"name": "RPM",
"start": 16,
"len": 16,
"sign": false,
"big": false,
"mult": 0.25,
"div": 1,
"offset": 0,
"unit": "rpm"
}
]
}
此例仅展示格式,不代表所有车辆使用 CAN ID 578(0x242)发送转速。
| 字段 | 用途 |
|---|---|
cmd |
按接口约定填写 set_profile |
baud |
保留字段;当前固件忽略改速请求,实际固定 500000 bit/s |
rate |
快照调度频率:20、50、100;缺省或其他值使用 20 Hz |
channels |
通道数组,当前最多处理 32 个通道 |
id |
CAN ID,JSON 中使用十进制数值 |
name / unit |
通道名称与单位 |
start / len |
信号起始位与位长度 |
sign |
是否按有符号数解析 |
big |
是否使用大端解析规则 |
mult / div / offset |
物理值换算参数 |
low / high |
范围定义,接收端按应用规则处理 |
物理值换算公式:
physical = raw × mult / div + offset
设备根据 channels 去重生成 CAN ID 白名单,快照只含这些 ID。位提取、符号扩展、字节序处理、物理值计算和范围判断由应用完成;设备不直接输出 RPM 等物理值。
旧接口约定中,big=false 使用 LSB 起始位,位 0 为 byte0 的 bit0;big=true 使用 MSB 顺序索引,位 0 为 byte0 的 bit7,位 8 为 byte1 的 bit7。该起始位表示法不能直接假定与任意 DBC 工具的 Motorola 起始位完全一致,导入配置时应由应用转换并验证。
9.3 Profile 写入顺序
当前固件通过启用 0xFFE1 Notify 的事件触发 Profile 解析。 它没有在收到完整 JSON 后立即解析,也没有基于写入超时自动提交。
首次连接推荐顺序:
- 发现
0xFFE0/0xFFE1,协商足够的 MTU。 - 将 Profile 压缩为紧凑 JSON,以 UTF-8 写入
0xFFE1。 - Profile 大于单次可写长度时,按顺序分块写入;每块长度不超过协商后的 ATT 可写长度,等待写入完成。
- 全部块写入后,再向 CCCD 写入
01 00,触发缓存 Profile 解析并启用通知。 - 检查收到的快照是否包含预期 ID。
如果通知已经启用,更新 Profile 前先写 00 00 关闭通知,写完新 Profile 后再写 01 00。不要只写 JSON 就等待它自动生效。
普通 Write 的分块会被固件累积;当前处理逻辑不处理 Prepare Write 的 Profile 内容。客户端应控制发送速度及总长度,避免缓冲区截断。直接 JSON 接收缓存为 4608 字节,需要留出结尾空间;不要把该缓存容量当作可无限扩展的接口。
建议使用 JSON 的 channels 格式。当前纯文本 ID 列表的回调没有将解析出的 ID 列表实际加载到快照过滤器,不应依赖该旧格式完成采集。没有专门的 Profile 加载成功应答,应结合实际通知验证生效情况。
9.4 自定义快照格式
每次通知为一个二进制快照:
| 偏移 | 长度 | 内容 |
|---|---|---|
| 0 | 1 字节 | 帧头 0xA5 |
| 1 | 4 字节 | 时间戳,uint32,小端,单位 ms |
| 5 | 1 字节 | 条目数量 N |
| 6 | N × 13 字节 | CAN 条目 |
每个条目:
CAN ID:uint32 小端,4 字节
DLC:uint8,1 字节
DATA:固定 8 字节,仅前 DLC 字节有效
总长度为 6 + N × 13 字节,32 个条目时为 422 字节。客户端应确保实际通知容量足够;当前发送函数没有按客户端 MTU 对一个快照自动分包。
条目按 Profile 中不同 CAN ID 首次出现的顺序排列,尚未收到的 ID 不出现在快照中。时间戳来自最近一次引起缓存变化的 CAN 数据,基于设备启动后的计时;不是日期时间,也不是每个条目的独立到达时间。uint32 时间戳会回绕,客户端应处理回绕与设备重启。
同一 0xFFE1 特征也用于发送电压 JSON,接收端需区分 0xA5 二进制快照和 JSON 文本响应。当前没有旧文档所述的无 Profile 全量 JSON raw-frame 自动输出。
9.5 模式控制与电压查询
Wi-Fi 模式控制需要官方 App 完成蓝牙认证。公开使用流程以第 5.1 节的 App 操作为准,本说明不提供手动写入命令开启或切换 Wi-Fi 模式的操作步骤。
电压查询命令以 UTF-8 文本写入 0xFFE1,每条短命令使用一次普通 Write。
| 命令 | 作用 |
|---|---|
{"cmd":"batt"} |
查询电压,通过 Notify 返回 JSON |
{"cmd":"voltage"} |
查询电压的别名 |
9.6 RaceChrono DIY 数据格式
服务 0x1FF8 的 0x0001 通知包含:
[CAN ID:4 字节,小端] + [本帧 CAN 数据:DLC 字节]
它不使用 0xA5 快照头,也没有单独的 DLC 或时间戳字段。过滤写入使用 0x0002,其中多字节字段使用大端:
| 首字节 | 后续内容 | 作用 |
|---|---|---|
0x00 |
无 | 清空列表并禁止全部 ID |
0x01 |
最小间隔 uint16,单位 ms | 允许全部 ID,设置通知间隔 |
0x02 |
最小间隔 uint16 + CAN ID uint32 | 添加或更新指定 ID 的通知间隔 |
RaceChrono 过滤表最多保存 64 个 ID。通常由 RaceChrono 应用管理这些命令,普通用户无需手动写入。
10. 参数速查
设备名称:PGEAR CAN-Sniffer G1
BLE 自定义服务 / 特征:0xFFE0 / 0xFFE1
RaceChrono DIY 服务:0x1FF8
Wi-Fi SSID:PGEAR CAN-Sniffer G1
Wi-Fi 密码:12345678
GVRET TCP 地址:192.168.4.1:23
CAN 速率:500 kbps
上电默认模式:BLE,Wi-Fi 关闭
开启 Wi-Fi:车涯或 PGEAR App → GO → 连接 PGEAR CAN-Sniffer G1 → wifi raw mode
Wi-Fi 模式控制:仅支持经过蓝牙认证的官方 App
返回默认 BLE 模式:断电重启
查询电压:{"cmd":"batt"}
