Планируемая интеграция приёма данных с TPMS-датчиков давления в шинах через радиомодуль CC1101 на частоте 433 MHz.
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 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 |
| 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 должен поддерживать аппаратные прерывания. Пины можно переназначить в софте.
| Поле | Размер | Описание |
|---|---|---|
| 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 |
Дешёвые солнечные TPMS с AliExpress чаще всего используют один из этих протоколов:
- Модуляция: 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
- Битрейт: 19200 baud
- Sync word: 0x001a
- Данные:
[ID:32][wheel:4][pressure:8 kPa][temp:8 °C][checksum] - Передача: при изменении давления + раз в час
- Модуляция: OOK, Manchester I (IEEE 802.3)
- Пакет: 32-bit преамбула + 8 байт данных
- Данные: checksum, 3-byte ID, давление, температура (raw-50=°C), статус
- Репо: NorthernMan54/rtl_433_ESP
- Порт знаменитого rtl_433 на ESP32 + CC1101
- Поддерживает десятки TPMS-протоколов из коробки
- Вывод данных в JSON, интеграция с MQTT
- Ограничение: CC1101 не может одновременно принимать OOK и FSK — нужно выбрать один режим при компиляции
- Интегрирован в OpenMQTTGateway
- Репо: andi38/TPMS
- Декодирует 433 MHz и BLE TPMS на ESP32 + CC1101
- Использует RadioLib с прямым доступом к регистрам CC1101
- Хороший пример для протокола 201 (truck TPMS)
- Репо: nlroth/ESP32-TPMS-SDR-BLE-I2C-SPI-all_in_one
- Приём TPMS через CC1101, ретрансляция по BLE
- Поддержка Toyota, Renault, Ford, Citroen, Subaru, Jansite и др.
- Репо: cterwilliger/tst_tpms
- Декодирование TST-507 на ESP32 + SX1278/CC1101
- Детальное описание OOK Manchester протокола
- Репо: kripthor/io433
- Универсальный сниффер/анализатор 433 MHz на ESP32 + CC1101
- Полезен для реверс-инжиниринга неизвестного TPMS-протокола
| Библиотека | Репо | Описание |
|---|---|---|
| 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) |
Если протокол неизвестен:
- С RTL-SDR (если есть):
rtl_433 -f 433920000 -R 0 -A— автодетект - Прицельный поиск:
rtl_433 -f 433920000 -R 123 -R 180 -R 201 -R 241 - С ESP32 + CC1101: использовать io433 для захвата сырого сигнала
- Flipper Zero: приложение protoview для анализа
- На ПК: Universal Radio Hacker (URH) для детального анализа
- Купить модуль CC1101 433 MHz
- Подключить к ESP32 по SPI (см. таблицу выше)
- Прошить io433 или rtl_433_ESP
- Сдавить/надуть шину и поймать передачу
- Определить протокол (FSK или OOK, формат пакета)
- Добавить библиотеку RadioLib или SmartRC-CC1101-Driver-Lib
- Написать модуль приёма и декодирования TPMS-пакетов
- Отображение давления/температуры 4 колёс на дисплее