AndruinoXTrail/README.md
kykaevv f182df290f Add T31 CAN fold-on-lock Arduino firmware.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 13:26:49 +03:00

81 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AndruinoXTrail — Nissan X-Trail T31
Складывание зеркал при закрытии машины. Arduino + MCP2515, шина CAN COMM 500 кбит/с.
## Кузов T31
T31 (20072014, в том числе 2014 рестайл) — та же CAN-семья, что Qashqai J10: одна основная шина **CAN COMM**, 500 кбит/с, 11-битные ID. Закрытие дверей BCM публикует в циклических кадрах. Команды «сложить зеркала» на этой шине нет: штатная кнопка в двери меняет полярность моторов.
Схема:
1. Слушаем **закрытие** по CAN (`0x60D` / `0x358`).
2. Складываем зеркала **реле**, параллельно штатной кнопке.
3. Replay кадра кнопки по CAN на T31 почти никогда не нужен: кнопки на OBD нет.
Колодка кнопки складывания у дорестайла и рестайла T31 разная. Реле ставить параллельно **вашей** кнопке.
## Кадры CAN COMM
| ID | Назначение | Полезные байты |
|---|---|---|
| `0x60D` | BCM: двери, зажигание, **замок** | `data[2] & 0x18` — закрыто. `data[1] & 0x0C`: `00` OFF, `04` ACC, `0C` ON, `08` START |
| `0x358` | Детализация замка | `data[5]` bit0 водитель, bit1 остальные двери |
| `0x745` / `0x765` | Диагностика BCM | Не используется |
Прошивка **не** шлёт команды закрытия/открытия дверей.
## Куда врезаться
- OBD: pin 6 CAN-H, pin 14 CAN-L
- или BCM за бардачком, зелёный 40-пин: **pin 20** CAN-H (синий), **pin 40** CAN-L (розовый)
На MCP2515 **снять** перемычку 120 Ом.
## Железо
- Arduino Nano или Uno
- MCP2515 (часто кварц **8 МГц**)
- Два реле 5 В на контакты штатной кнопки складывания
```
Arduino MCP2515
D10 -> CS
D11 -> SI (MOSI)
D12 -> SO (MISO)
D13 -> SCK
D2 -> INT
5V/GND -> VCC/GND
MCP2515 CAN-H -> OBD 6 (или BCM pin 20)
MCP2515 CAN-L -> OBD 14 (или BCM pin 40)
общий GND с кузовом
D7 -> реле СЛОЖИТЬ
D8 -> реле РАЗЛОЖИТЬ
```
Питание Arduino — OBD pin 16 (+12 В) через стабилизатор 5 В, либо постоянная 12 В с предохранителем.
Реле **параллельно** штатной кнопке, не вместо неё. Моторы зеркал с Arduino не питать.
## Прошивки
Библиотека: [coryjfowler/MCP_CAN_lib](https://github.com/coryjfowler/MCP_CAN_lib)
1. `firmware/CanSniffer/CanSniffer.ino` — Serial 115200. Закрыли машину → `60D lock=1`, открыли → `lock=0`. Клавиша `f` + кнопка зеркал: если `DIFF: (none)`, оставляйте реле.
2. `firmware/XTrailMirrors/XTrailMirrors.ino` — в `config.h` по умолчанию `FOLD_VIA_RELAY`.
Если кристалл MCP2515 16 МГц, прошивка сама пробует второй вариант.
## Поведение
- Старт: текущий замок запоминается, зеркала не трогаем.
- Замок 0→1 и зажигание OFF → складывание ~8 с.
- Замок 1→0 → раскладывание ~8 с.
- При ON/START автоматика молчит.
- Пауза 12 с между циклами.
## Безопасность
Подключайтесь на заглушенном авто, с предохранителем. Сначала только сниффер. Реле не держать дольше ~810 с.