Skip to content

Latest commit

 

History

History
168 lines (129 loc) · 9.02 KB

File metadata and controls

168 lines (129 loc) · 9.02 KB

TPMS интеграция: ESP32 + CC1101 + 433 MHz

Планируемая интеграция приёма данных с TPMS-датчиков давления в шинах через радиомодуль CC1101 на частоте 433 MHz.

Почему нужен CC1101?

ESP32 (C3/S3) имеет радио только на 2.4 GHz (Wi-Fi + BLE). TPMS-датчики передают на 433.92 MHz — другой диапазон. Нужен внешний RF-приёмник.

CC1101 — лучший выбор:

  • Настраиваемая частота (300-928 MHz)
  • Поддержка FSK, GFSK, ASK/OOK модуляций
  • Хорошая чувствительность (-110 dBm)
  • SPI интерфейс, 3.3V
  • Цена ~100-150 руб. на AliExpress

Подключение CC1101 к ESP32

ESP32-C3

CC1101 Pin Функция ESP32-C3 GPIO
VCC Питание 3.3V
GND Земля GND
SCK SPI Clock GPIO 3
MISO SPI Data Out GPIO 4
MOSI SPI Data In GPIO 2
CSN/SS SPI Chip Select GPIO 1
GDO0 Interrupt GPIO 0

ESP32-S3

CC1101 Pin Функция ESP32-S3 GPIO
VCC Питание 3.3V
GND Земля GND
SCK SPI Clock GPIO 36
MISO SPI Data Out GPIO 37
MOSI SPI Data In GPIO 35
CSN/SS SPI Chip Select GPIO 34
GDO0 Interrupt GPIO 33

Важно: VCC строго 3.3V (максимум 3.6V). Провода SPI — короткие (до 10-15 см). GDO0 должен поддерживать аппаратные прерывания. Пины можно переназначить в софте.

Какие данные передают TPMS-датчики

Поле Размер Описание
Sensor ID 24-32 бит Уникальный ID датчика
Pressure 8 бит Давление (формула пересчёта зависит от протокола)
Temperature 8 бит Температура (обычно raw - 40..55 = °C)
Battery/Status 4-8 бит Флаг низкого заряда, утечка, статус
Wheel Position 2-4 бит Позиция колеса (0-3), не всегда есть
Checksum 8-16 бит CRC-8, CRC-16 или простая сумма

Пересчёт давления (зависит от протокола)

Протокол Формула Единицы
Jansite Solar raw × 1.6 kPa
TST-507 raw / 0.4 kPa
Jansite TY02S raw × 0.25 PSI
Truck TPMS (201) raw напрямую kPa
Schrader EG53MA4 raw × 0.025 bar

Пересчёт температуры

Протокол Формула
Jansite Solar raw - 55 = °C
TST-507 raw - 50 = °C
Generic raw - 40 = °C

Вероятные протоколы для AliExpress Solar TPMS

Дешёвые солнечные TPMS с AliExpress чаще всего используют один из этих протоколов:

1. Jansite Solar (rtl_433 protocol 180) — наиболее вероятный

  • Модуляция: FSK + PCM (Manchester)
  • Частота: 433.92 MHz
  • Сообщение: 11 байт, preamble 0xa6a6, sync 0x5add33
  • Данные: 24-bit ID, температура (raw-55=°C), давление (raw×1.6=kPa), CRC-16
  • Исходник: tpms_jansite_solar.c

2. Unbranded SolarTPMS for Trucks (rtl_433 protocol 201)

  • Битрейт: 19200 baud
  • Sync word: 0x001a
  • Данные: [ID:32][wheel:4][pressure:8 kPa][temp:8 °C][checksum]
  • Передача: при изменении давления + раз в час

3. EezTire / Carchet / TST-507 (rtl_433 protocol 241)

  • Модуляция: OOK, Manchester I (IEEE 802.3)
  • Пакет: 32-bit преамбула + 8 байт данных
  • Данные: checksum, 3-byte ID, давление, температура (raw-50=°C), статус

Готовые проекты и библиотеки

Проекты для декодирования TPMS

rtl_433_ESP (рекомендуется для старта)

  • Репо: NorthernMan54/rtl_433_ESP
  • Порт знаменитого rtl_433 на ESP32 + CC1101
  • Поддерживает десятки TPMS-протоколов из коробки
  • Вывод данных в JSON, интеграция с MQTT
  • Ограничение: CC1101 не может одновременно принимать OOK и FSK — нужно выбрать один режим при компиляции
  • Интегрирован в OpenMQTTGateway

andi38/TPMS

  • Репо: andi38/TPMS
  • Декодирует 433 MHz и BLE TPMS на ESP32 + CC1101
  • Использует RadioLib с прямым доступом к регистрам CC1101
  • Хороший пример для протокола 201 (truck TPMS)

nlroth/ESP32-TPMS-SDR-BLE-I2C-SPI-all_in_one

cterwilliger/tst_tpms

  • Репо: cterwilliger/tst_tpms
  • Декодирование TST-507 на ESP32 + SX1278/CC1101
  • Детальное описание OOK Manchester протокола

kripthor/io433

  • Репо: kripthor/io433
  • Универсальный сниффер/анализатор 433 MHz на ESP32 + CC1101
  • Полезен для реверс-инжиниринга неизвестного TPMS-протокола

Библиотеки для CC1101

Библиотека Репо Описание
SmartRC-CC1101-Driver-Lib LSatan/SmartRC-CC1101-Driver-Lib Простой Arduino-драйвер, поддержка FSK/OOK, автоопределение платы
RadioLib jgromes/RadioLib Универсальная библиотека, CC1101 + SX127x + nRF24 и др., есть "godmode" для прямого доступа к регистрам
esp-idf-cc1101 nopnop2002/esp-idf-cc1101 Нативный ESP-IDF драйвер (не Arduino)

Как определить протокол своих датчиков

Если протокол неизвестен:

  1. С RTL-SDR (если есть): rtl_433 -f 433920000 -R 0 -A — автодетект
  2. Прицельный поиск: rtl_433 -f 433920000 -R 123 -R 180 -R 201 -R 241
  3. С ESP32 + CC1101: использовать io433 для захвата сырого сигнала
  4. Flipper Zero: приложение protoview для анализа
  5. На ПК: Universal Radio Hacker (URH) для детального анализа

Рекомендуемый план интеграции

Этап 1: Железо

  • Купить модуль CC1101 433 MHz
  • Подключить к ESP32 по SPI (см. таблицу выше)

Этап 2: Определение протокола

  • Прошить io433 или rtl_433_ESP
  • Сдавить/надуть шину и поймать передачу
  • Определить протокол (FSK или OOK, формат пакета)

Этап 3: Интеграция в проект

  • Добавить библиотеку RadioLib или SmartRC-CC1101-Driver-Lib
  • Написать модуль приёма и декодирования TPMS-пакетов
  • Отображение давления/температуры 4 колёс на дисплее

Ссылки