A.解决方案摘要
A.1买Autel TS508带4-8个sensor的,其软件可将旧传感器ID拷贝到新的sensor。ID的获取有三种办法:激活并读出旧传感器、手动输入、接OBDII读出ECU里的ID。限制:只能用Autel的Mx-TPMS sensor。
A.2换电池
卸胎的方法:https://www.youtube.com/watch?v=yIWUz2UIKdw
08 Odyssey:拆下车轮将其放在顶升区域下方,剪式千斤顶轮胎和汽车顶支点之间(我是垫了块短板),卸阀芯排出所有空气。将千斤顶升起,直到听见”碰碰“即bead脱开轮毂,可能需要顶住轮胎另一端以免翘起,如此即可拆卸旧传感器。置于台钳上凿开白端盖,去除透明软胶和旧电池。建议买带焊脚的CR2450电池用软线连接;如果新电池不带焊脚,可以在朝上的正极PCB的对角壳体上钻小孔,用#14硬铜线穿过小孔焊到PCB上,此为压力接触。切忌直接焊接电池。装回后在轮胎胎圈上喷一点 WD40 或肥皂水,以便回bead时轻松些。
A.3.Toyota车可用techstream
买原厂sensor,用techstream+MiniVCI写入ID到ECU中。最新车MiniVCI不行要
A.4.用独立的系统
https://www.aliexpress.us/item/2255800852215170.html 其中外置式只要挑开盖板即可换电池。
https://www.boschdiagnostics.com/j2534-faq
基本功能是激活、扫描传感器并读出其ID然后写入该品牌Mx-TPMS的新传感器中。如果旧的没电了,就需TS508接OBDII来读出ECU中的TPMS ID再写入。TS508接OBD后也可读出TPMS相关错码、keyless Fob的信号强度并可解锁Toyota ECU。
1. Direct TPMS
业余无线电频段,各国监管不同。433 MHz是全球频率,美国限制为<0dBm;欧洲达+10dBm。另一频段是868/915M由CC1101单设计支持,欧美分别用868/915,也为其它国家使用。美国以前是315M,车库开门器多是。Odyssey 05-17是315M,后改433M。GM车多315M而且编程器不到10刀。
TI CC1101 可用于315、433、868/915M,但市面缺315M,若将433M改315M需换0402尺寸的LC各5个。
2. BLE (Bluetooth) TPMS
https://www.instructables.com/BLE-Direct-Tire-Pressure-Monitoring-System-TPMS-Di/
3. Direct TPMS project
3.1 Toyota Auris Hybrid
Ct200h 42607-30071 PMV-C210: https://www.aliexpress.us/item/3256802035081779.html?
https://www.hackster.io/jsmsolns/arduino-tpms-tyre-pressure-display-b6e544?
FSK(频移键控)中心频率约为 433.88 MHz,偏差约为 +/- 24-30kHz。数据采用双相标记编码,长度为 72 位。数据速率为 10kHz,总消息长度约为 8ms。
TI CC1101模块有SPI 接口以及几个可在设备中配置以输出各种信号的引脚,我将其配置为输出原始接收信号和载波侦听 (CS) 信号但未在最终解决方案中使用,因为通过 SPI 轮询寄存器可以获得相同的信号;但在连接逻辑分析仪以“构建”原始接收信号并帮助调试时,硬件信号很有用。
CC1101被用作基本的RF接收器RX 数据输出到可配置引脚之一,然后 Arduino 尝试理解数据流。CC1101 的运行电压为 3.3 伏。我选择了 Arduino Pro Micro 3v3(笔者注:ATmega32U4,8MHz 1KB RAM;建议改用Pro Mini 3V3,ATmega328P,8MHz 2KRAM),使用的显示器是基于 SSD1306 的 0.96" 128 x 96 黄色和蓝色 I2C 模块,相关库普通使用 1k 缓冲区保存显示数据的镜像。这超出了 RAM 限制,我不得不切换到纯文本的低 RAM 库。
一旦建立了 CC1101 的基本寄存器设置,逻辑分析仪就会协助显示 CC1101 正在接收可靠的信号,并用于解码双相标记编码以显示各个字节(见下图)。当脉冲宽度约为 8ms 时,逻辑分析仪由 CS 信号触发。这通常会过滤掉由其他不需要的 RF 信号触发的分析仪。下图显示了其中一个轮胎的逻辑分析仪捕获示例。
较短的脉冲约为 50us,较长的脉冲约为 100us。数据首先传输 MS 位。在有效数据之前应该有一个同步模式,但我发现这不是检测消息开始的非常可靠的方法(可能是由于我对 CC1101 AGC 等的业余配置?)虽然数据速率为 10kHz,但双相编码意味着 CC1101 需要配置为该数据速率 (20kHz) 的两倍,以确保捕获所有转换。
正如 RTL_433 代码中所报告的,消息结构是第一个 4 字节 = 传感器 ID、1 位状态、8 位压力 (P)、8 位温度 (T)、7 位状态、8 位压力重复(但反转)和一个 8 位 CRC(初始值为 0x80 的 0x07 截断多项式)。
实际温度 = (T - 40) 摄氏度
实际压力 = ((P/4) - 7) PSI
所以我可以在分析仪上看到消息,我现在所要做的就是使用 Arduino 实现一种解码方法。我尝试了几种方法,但事实证明最有效和最可靠的方法是:
对于 0.96" OLED I2C 128x64 显示器,仅取消下行注释: #define USE_1_INCH_YB_I2C_DISPLAY 1
要在低/高压力过限是闪烁,请取消注释该行:#define ENABLE_PRESSURE_ALARMS,并在 configs.h 中并为这些数组中的每个轮胎设置高/低压:
const float PressureLowLimits[]
const float PressureHighLimits[]
启动声音告警是取消注释行:
#define ENABLE_AUDIBLE_ALARM 在 config.h
注意:警报器在启动时会发出 2 声短促的蜂鸣声,表示蜂鸣器工作正常。
传感器频率和芯片设置,例如ct200h:
#define UK_433MHz 1
//#define US_315MHz 1
#define Toyota_PMV_C210 1
4. change TPMS sensor
4.1 VcxDiag VCX Nano
http://blog.vxdiagshop.com/2019/12/10/techstream-tpms-id-registration-failed-solution/
https://www.vxdiagshop.com/wholesale/vxdiag-vcx-nano-serie/
4.2 Mini-VCI
https://www.obdii365.com/wholesale/mini-vci-for-toyota-with-toyota-tis.html
X-Horse MINI-VCI J2534 电缆和 Techstream 8.10.021。电缆附带的软件用于安装在 32 位 Windows 系统上。设置为北美则可以使用TPMS功能:
Gen2 Prius TPMS 使用 ISO KWP 14230 协议,而不是用于汽车上大多数 ECU 的 CAN 协议。它在连接器上使用与 CAN 不同的引脚。因此,汽车布线和/或电缆可能存在故障。或者您正在使用的 Techstream 版本中可能存在软件错误。除了 TPMS 之外,KWP 协议还用于其他几个功能。一个是钥匙扣设置。另一个是乘客座位分类。这是一个确定座位是空的、被儿童占用还是被成人占用的比例尺。接下来是空调设置。其余大部分 ECU 都在 CAN 总线上。
该软件不会读取轮胎中的TPMS ID,它可以由ECU中读取或加入已知ID的TPMS。下节的Autel包括全部功能,它可以唤醒轮胎TPMS,后者通常在开车数分钟后被唤醒。当然如果使用可编程 ID 的TPMS sensor,可以编程为旧的ID。TPMS ID通常印在其外壳上。
4.3 Car built-in TPMS reset
大部分BMW,一部分老车如Odyssey turning
4.4 General TPMS programmer
Autel TS508较好,此系列只能支持自己的Mx-TPMS传感器,用Mx-TPMS更换传感器,用旧ID经TS408更新刀新传感器中。四个都换好后,按下方向盘下方的TPMS按钮,直到灯慢闪,等待20分钟