BMW Serie 3 E90/E91/E92/E93 Cavi CAN

Discussione in 'BMW Serie 3 E90-E91-E92-E93' iniziata da Ale1x, 8 Agosto 2026.

  1. Ale1x

    Ale1x Aspirante Pilota

    15
    4
    8 Agosto 2026
    Campobasso
    Reputazione:
    10.700.955
    E90 335d
    Ciao, riguardo alla latenza credo sia dovuto all'architettura del progettino: c'è una esp collegata via pt-can che manda via espnow dati all'altra esp che è il display.

    Riguardo K-line sicuramente ha quei dati che indichi ma per esempio già la temp ATF manca.

    Riguardo K-BUS invece, dovrebbe viaggiare a 100kbit/s mentre sul PT-can sono a 500kbit/s quindi non credo la latenza sia dipesa da questo. Se è presente dietro la radio non ne sono sicuro.
     
  2. bixiomauri

    bixiomauri Amministratore Delegato BMW

    4.915
    1.750
    21 Novembre 2016
    Emilia Romagna
    Reputazione:
    640.042.063
    BMW 3 series E90 LCI
    Le librerie ESP sei sicuro che "tollerino bene" i 500kbit/s?

    K-Line: si,è a 100kbit/s, e nel quadlock della radio hai:
    Pin 9: CAN L
    Pin 11: CAN H
     
  3. Ale1x

    Ale1x Aspirante Pilota

    15
    4
    8 Agosto 2026
    Campobasso
    Reputazione:
    10.700.955
    E90 335d
    ciao,

    in realtà non sono sicuro di nulla, questo era firmware scritto al volo da AI in una mezz’ora!

    poi la prima esp trasmetteva dati can raw quindi la seconda doveva convertirli in un formato utile (JSON) e poi mostrarli a schermo quindi anche per questo è possibile che ci sia ritardo, inoltre mi sembra che ha 128m di RAM quindi probabilmente andrà scritto meglio il firmware.
     
  4. bixiomauri

    bixiomauri Amministratore Delegato BMW

    4.915
    1.750
    21 Novembre 2016
    Emilia Romagna
    Reputazione:
    640.042.063
    BMW 3 series E90 LCI
    Che sw tool di sviluppo hai usato?
    Con l' ESP potresti usare l' IDE Arduino,e le librerie apposite Espressif,adatte per le famiglie ESP.
    Poi dipende da che hardware usi per interfacciarti col canbus.
    Presumo hai rimosso la R da 120 ohm che solitamente mettono sugli sniffer Can, in parallelo ai due bus.

    Infarinatura by AI:

    Librerie consigliate per ESP32
    Per ottenere le massime prestazioni a 500 kbit/s sul PT-CAN, ti consiglio di utilizzare librerie basate sul driver nativo TWAI di ESP-IDF (il framework ufficiale di Espressif), che sfruttano gli interrupt hardware:
    • ESP32-TWAI-CAN (Consigliata per versatilità): È un wrapper eccellente del driver nativo per l'ambiente Arduino IDE. È estremamente efficiente e permette di configurare facilmente i filtri hardware.
    • autowp-mcp2515 (Solo se usi un modulo esterno MCP2515): Se usi un vecchio ESP8266 (che non ha il CAN nativo) o preferisci un chip esterno su ESP32. Nota: L'uso di un chip esterno SPI come l'MCP2515 introduce una leggera latenza di comunicazione rispetto al controller nativo dell'ESP32.
    • SimpleCAN: Un'altra libreria leggera per l'interfaccia TWAI dell'ESP32, ottima per iniziare rapidamente.


    ️ Come azzerare le latenze sul PT-CAN
    Il PT-CAN della E90 è un bus critico su cui viaggiano i dati di motore (DME), cambio (EGS), controllo trazione (DSC) e sterzo. Molti di questi messaggi vengono inviati ogni 10-20 millisecondi. Per evitare lag o la perdita di pacchetti (buffer overflow), segui queste regole:
    • Usa i filtri hardware (Hardware Filtering): Non analizzare tutti i messaggi via software. Configura la libreria per accettare solo gli ID CAN che ti interessano (es. 0x0AA per i giri motore/RPM o 0x1A0 per la velocità). Il controller dell'ESP32 scarterà gli altri a livello hardware senza pesare sulla CPU.
    • Sfrutta il Dual-Core dell'ESP32: Esegui la lettura e la scrittura del CAN bus sul Core 0 dedicandogli un task FreeRTOS ad alta priorità. Lascia il Core 1 per gestire compiti più lenti o bloccanti come il Wi-Fi, il Bluetooth o la scrittura su display/scheda SD.
    • Evita funzioni bloccanti: All'interno del ciclo di lettura del CAN, non usare mai delay(), Serial.print() eccessivi o chiamate di rete. Salva i dati in una coda (xQueue) e lasciali elaborare in modo asincrono.


    ⚠️ Requisito Hardware Fondamentale
    L'ESP32 ha il controller logico, ma non ha i componenti fisici per collegarsi elettricamente ai cavi CAN High e CAN Low dell'auto. Hai obbligatoriamente bisogno di un ricetrasmettitore CAN (CAN Transceiver) a 3.3V, come ad esempio:
    • SN65HVD230 (molto comune ed economico)
    • VP230
    • TJA1050 (attenzione: richiede alimentazione a 5V, ma i pin RX/TX tollerano i 3.3V dell'ESP32 se configurati correttamente, anche se è preferibile un chip nativo a 3.3V).
     

Condividi questa Pagina