logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Mini projekt monitora OBD2 na ESP32-S3-Zero

szdom 21 Sie 2026 12:55 246 5

TL;DR LABEL_AI_GENERATED

  • Miniaturowy ESP32-S3-Zero tworzy monitor OBD2, który przez BLE pobiera z adaptera ELM327 prędkość, RPM oraz temperatury i pokazuje je w telefonie.
  • ESP32 udostępnia Wi‑Fi jako punkt dostępowy, wysyła dane WebSocketem i zapisuje wybrany adres oraz typ BLE adaptera w pamięci NVS.
  • Prędkość i obroty silnika są odczytywane naprzemiennie co 250 ms, a temperatury znacznie rzadziej.
  • Sekwencyjne polecenia z oczekiwaniem na odpowiedź lub timeout i krótkimi przerwami ustabilizowały komunikację z ECU.
  • Szybki prototyp nie gwarantuje zgodności z dobrymi praktykami ani braku błędów, a tanie klony ELM327 słabo znoszą szybkie odpytywanie.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA
  • Mini projekt monitora OBD2 na ESP32-S3-Zero

    Mini projekt monitora OBD2 na ESP32-S3-Zero
    Mini projekt monitora OBD2 na ESP32-S3-Zero Mini projekt monitora OBD2 na ESP32-S3-Zero

    Prezentuję kolejny mały projekt zrealizowany na ESP32. Tym razem padło na ESP32-S3-Zero czyli malutka płytka, wielkości 2 złotówki.
    Zaskoczyło mnie jak prosto można pobrać informacje za pomocą BLE z taniego adaptera OBD2 na ELM327.
    Głównym celem było pobieranie informacji i wyświetlanie na telefonie dwóch parametrów w czasie (prawie) rzeczywistym:
    - aktualnej prędkości samochodu;
    - prędkości obrotowej silnika.
    Dodatkowo urządzenie pokazuje temperaturę płynu chłodzącego i temperaturę powietrza dolotowego. Są to informacje pomocnicze, dlatego odświeżane są rzadziej, aby nie obciążać niepotrzebnie komunikacji z ECU.
    Drugim założeniem była możliwość używania urządzenia w różnych samochodach. W tym celu adres wybranego adaptera BLE nie jest wpisany na stałe w programie. Jest wybierany z poziomu strony konfiguracyjnej i zapisywany w pamięci flash ESP32.
    Do komunikacji z telefonem wykorzystano Wi‑Fi w trybie Access Point.
    ESP32 tworzy własną sieć (parametry do zmiany w kodzie programu):
    SSID: OBD2-ESP32
    Hasło: 12345678
    Adres: http://192.168.4.1
    Dane na ekranie są przesyłane przez WebSocket, dzięki czemu strona nie musi być odświeżana w całości przy każdej zmianie wartości.
    Odczyty prędkości i RPM są wykonywane naprzemiennie. Dzięki temu adapter nie otrzymuje kilku poleceń jednocześnie, co poprawiło stabilność komunikacji.

    Konfiguracja adaptera
    Po pierwszym uruchomieniu ESP32 nie korzysta z żadnego z góry ustalonego adresu MAC. Użytkownik otwiera stronę:
    http://192.168.4.1/obd
    Następnie uruchamia skanowanie BLE. Lista pokazuje znalezione urządzenia wraz z:
    nazwą;
    adresem MAC;
    typem adresu BLE;
    poziomem sygnału RSSI.
    Po wybraniu właściwego adaptera jego adres oraz typ są zapisywane w pamięci NVS przy użyciu biblioteki Preferences. Dane zapisane w ten sposób pozostają po restarcie ESP32.
    Przy kolejnych uruchomieniach urządzenie korzysta bezpośrednio z zapisanego adaptera. Nie trzeba ponownie skanować otoczenia ani ręcznie wpisywać adresu MAC.
    Przed uruchomieniem programu należy włączyć zapłon. Sam moduł BLE może być widoczny bez zapłonu, ale komunikacja z ECU zwykle nie będzie wtedy możliwa.

    Podczas pierwszego uruchomienia warto:
    włożyć adapter do gniazda OBD2;
    włączyć zapłon;
    rozłączyć telefon od adaptera, jeśli był wcześniej używany;
    uruchomić ESP32;
    połączyć telefon z siecią Wi‑Fi ESP32;
    wejść na stronę konfiguracji adaptera;
    wybrać właściwe urządzenie z listy.

    Ważne było także ograniczenie liczby komend wysyłanych do ELM327.
    Tanie klony tych adapterów nie zawsze dobrze radzą sobie z bardzo szybkim odpytywaniem.
    W tym przypadku użyto adapter podobny jak na zdjęciu:

    Mini projekt monitora OBD2 na ESP32-S3-Zero

    W finalnej wersji:
    - prędkość i RPM są odczytywane naprzemiennie co 250ms;
    - każda komenda musi zakończyć się odpowiedzią lub timeoutem;
    - między komendami zachowywany jest krótki odstęp;
    - temperatury są odczytywane znacznie rzadziej;
    - skanowanie BLE nie jest uruchamiane podczas aktywnego połączenia.
    Takie rozwiązanie okazało się stabilniejsze niż wysyłanie kilku PID-ów w krótkich odstępach.

    W projekcie znajdują się trzy główne widoki:
    / — główny dashboard
    /pids — mapa obsługiwanych PID-ów
    /obd — skanowanie i wybór adaptera

    Załączam w archiwum zip plik projektu oraz konfiguracyjny Platformio.

    Projekt został przygotowany przy wsparciu AI, więc jest dobrze udokumentowany komentarzami.
    Nie gwarantuję, że jest napisany zgodnie ze sztuką i dobrymi praktykami oraz pozbawiony błędów.
    To jest szybki prototyp, zamieszczam - a może kogoś zainspiruję do zrobienia swojej, lepszej wersji.
    Załączniki:
    • BLE_OBD2.zip (9.36 KB) Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    szdom
    Poziom 12  
    Offline 
    szdom napisał 38 postów o ocenie 45. Mieszka w mieście Suwałki. Jest z nami od 2004 roku.
  • REKLAMA
  • #2 21958473
    gbksiazczak
    Poziom 31  
    Posty: 1534
    Pomógł: 167
    Ocena: 329
    Jaką funkcję pełni to ESP32?
    Ja łączyłem się z ELM327 przez BT smartfona z aplikacją
    i oglądałem wiele różnych parametrów.
    Żadem pośrednik nie był potrzebny...
  • REKLAMA
  • REKLAMA
  • #4 21958824
    lopr_pol
    Poziom 32  
    Posty: 1729
    Pomógł: 164
    Ocena: 491
    gbksiazczak napisał:
    Jaką funkcję pełni to ESP32?
    Ja łączyłem się z ELM327 przez BT smartfona z aplikacją
    i oglądałem wiele różnych parametrów.
    Żadem pośrednik nie był potrzebny...

    Generuje stronę www, nie trzeba aplikacji.
  • REKLAMA
  • #5 21958851
    Lechuuu
    Poziom 13  
    Posty: 105
    Ocena: 25
    Trzeba rozbudować ten projekt o wyświetlacz np, fajny 2 calowy ST7789 320 x 240 px
  • #6 21958883
    gbksiazczak
    Poziom 31  
    Posty: 1534
    Pomógł: 167
    Ocena: 329
    lopr_pol napisał:
    Generuje stronę www, nie trzeba aplikacji.

    Czy rzeczywiście ESP32 obsłuży wszystkie protokoły dla wielu marek samochodów? Miałem problem z aplikacją typu car scanner, która nie potrafiła połączyć się przez ELM327 ze sterownikiem skody felicji (dość egzotyczny protokół komunikacyjny).
REKLAMA