Skip to the content
PCBKitNew board
2 layers160 × 53 mmE36 base, the printed circuit board in 3D

ESP32-S3 + 3 okrągłe TFT 1,53" 360x360 (ST77916, QSPI) + sterownik Zgrywus K-8 (rusEFI, CAN) + klawiatura OBC18 z BMW E36.

Size
160 × 53 mm
Copper layers
2
Thickness
1.6 mm
Parts
42
Nets
63
Pads
199
Tracks, vias
774, 61
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
22 Sep 2026
Updated
23 Sep 2026

Overview

E36 base is an open-source printed circuit board by pwmurawski, from the pwmurawski/e36-dash repository on GitHub. It is a 2-layer board of 160 × 53 mm with 42 parts on 63 nets, routed with 774 tracks and 61 vias.

Its parts include 12 resistors, 9 connectors, 7 capacitors, 4 ICs and 2 diodes. It belongs with the ESP32 boards of this library.

README

README.md

E36 DASH

ESP32-S3 + 3 okrągłe TFT 1,53" 360x360 (ST77916, QSPI) + sterownik Zgrywus K-8 (rusEFI, CAN) + klawiatura OBC18 z BMW E36.

Uruchomienie (Arduino IDE)

  1. Biblioteki: GFX Library for Arduino 1.6.x, lvgl 9.x (libraries/lv_conf.h: #if 1, LV_COLOR_DEPTH 16, LV_FONT_MONTSERRAT_20/28/48 1, LV_USE_SCALE 1). Opcjonalnie: Adafruit MCP23017 (klawiatura), RTClib (DS3231), U8g2 (OLED w oknie OBC).
  2. Tools: ESP32S3 Dev Module, PSRAM = OPI PSRAM, core esp32 3.x.
  3. Otwórz e36_dash/e36_dash.ino, wgraj. Domyślnie: 1 ekran, dane symulowane (SIM_MODE 1), klawisze z Serial Monitor.

config.h - co zmieniać

MakroZnaczenie
NUM_DISPLAYSile okrągłych paneli (1..3)
NUM_AUX_DISPLAYS0 / 1 (ekran 4 - pasek w oknie OBC) / 2 (+ ekran 5 - zegar)
SIM_MODE1 = symulator, 0 = prawdziwy CAN (TWAI 500 kbit/s)
KEYPAD_DRIVER0 = Serial, 1 = MCP23017 przez I2C, 2 = matryca na GPIO
RTC_DRIVER0 = zegar z millis, 1 = DS3231
AUX_BAR_DRIVER1 = OLED SSD1322 (U8g2), 2 = TFT ST7789 (Arduino_GFX)
CAN_BASE_IDbaza rusEFI CAN verbose (TunerStudio), domyślnie 0x200
STOICH_AFR14.7 benzyna, 9.8 E85
RPM_LIMIT, OILP_CRIT_MIN_RPMlimity alarmów

Progi ostrzeżeń i zakresy skal: params.cpp (tabela PARAM_DEFS). Widok zbiorczy: MULTI_PARAMS w ui_multi.cpp.

Piny (ESP32-S3-DevKitC N16R8)

FunkcjaGPIO
QSPI SCK / D0 / D1 / D2 / D3 (wspólne)4 / 5 / 6 / 7 / 15
CS ekran 1 / 2 / 317 / 18 / 8
RST wspólny16
SPI3 SCK / MOSI / DC (ekrany 4, 5)9 / 10 / 11
CS ekran 4 / ekran 512 / 13
CAN TX / RX (SN65HVD230 D / R)1 / 2
I2C SDA / SCL (MCP23017 0x20, DS3231)14 / 3 (base PCB; IO21/IO47 zajmuje klawiatura)
Klawiatura bezpośrednio: X0..X4 / Y0..Y342,41,40,39,38 / 48,47,21,20
BL wszystkich paneli3V3

Panele ST77916: VCC 3V3 lub 5V, init st77916_150_init_operations.

Sprzęt: base PCB (obudowa OBC18)

Projekt płytki bazowej 160x53 mm pod DevKitC-1, LM2596, moduł CAN, 5 gniazd FFC 2.54 mm 11-pin paneli (bez adapterów, to samo złącze wlutowane na modułach) i taśmę klawiatury: hardware/README.md (KiCad, generator hardware/tools/gen_kicad.js, podgląd hardware/preview/index.html).

Klawiatura OBC18 (matryca 5x4, tabela w keypad.cpp)

PrzyciskAkcja
1000 / 100 / 10wybierz ekran 1 / 2 / 3
1reset peak
A-TEMPtemp. cieczy
VERBRAFR; przytrzymanie = czas wtrysku [ms]
GESCHWprędkość
DISTANZtemp. oleju
REICHWtemp. paliwa
LIMITboost
CHECKciśnienie oleju
CODEciśnienie paliwa
TIMEREGT; przytrzymanie = kąt zapłonu
DATUMobroty
MEMOnapięcie
UHRtemp. dolotu; przytrzymanie = ustawianie zegara
km/mlsbar / psi
SET/RESnastępny parametr na wybranym ekranie (po ostatnim widok zbiorczy, potem od początku); przytrzymanie = układ paska (ekran 4)

Taśma klawiatury OBC18 (15 pin; matryca wg schematu openOBC devboard 2.7, LED sprawdzone miernikiem):

Pin taśmySygnałDo ESP32 (KEYPAD_DRIVER 2)
1plus podświetlenia (4 pomarańczowe LED szeregowo, ok. 8 V), 12 V przez rezystor 330-470 Ω 1/4 W wlutowany na płytce przy pierwszej diodzienie podłączać do ESP
2wspólny plus (anoda) czerwonych LED w klawiszachopcjonalnie 3V3
3 = TIMER, 4 = LIMIT, 5 = CODEkatody czerwonych LED w klawiszach; masa przez rezystor = świeciopcjonalnie GPIO przez 150-220 Ω, stan niski = świeci
6, 7, 8, 9, 10X0, X1, X2, X3, X4 (kolumny)IO42, IO41, IO40, IO39, IO38
11, 12, 13, 14Y0, Y1, Y2, Y3 (wiersze)IO48, IO47, IO21, IO20 (IO20 = USB D+, programowanie przez port UART)
15masa podświetlenianie podłączać do ESP

Kierunek numeracji sprawdź miernikiem: wciśnięty klawisz 1000 zwiera X1 (pin 7) z Y0 (pin 11).

Przyciski i piny taśmy (wg KEY_MATRIX; pin = 6 + X dla kolumn, 11 + Y dla wierszy):

PrzyciskX/YPiny
1000X1 Y07 + 11
100X0 Y06 + 11
10X3 Y09 + 11
1X4 Y010 + 11
VERBRX1 Y17 + 12
A-TEMPX0 Y16 + 12 (niepewne)
GESCHWX2 Y38 + 14
DISTANZX0 Y26 + 13
CHECKX1 Y27 + 13
REICHWX3 Y19 + 12
CODEX4 Y110 + 12
LIMITX2 Y08 + 11
TIMERX4 Y210 + 13
km/mlsX3 Y29 + 13
UHRX0 Y36 + 14
DATUMX1 Y37 + 14
MEMOX4 Y310 + 14
SET/RESX3 Y39 + 14

Tryb nauki matrycy: trzymaj SET/RES przy włączaniu, Serial pokaże X,Y każdego klawisza. Popraw KEY_MATRIX w keypad.cpp.

Klawisze z Serial (115200): 1 2 3 4 v a g d r l c o t m e u U k s S, długie: T V, h = pomoc.

CAN (rusEFI verbose)

ID 0x200..0x209, 500 kbit/s, little-endian. Dekoder: can_rusefi.cpp. W TunerStudio włącz „CAN verbose” / „Enable rusEFI CAN broadcast”, baza 0x200. Terminator 120 Ω na końcu magistrali po stronie deski.

Parts

42
QtyValueFootprintReferences
50R (opcja 33R) SCKe36:R_0603R7, R8, R9, R10, R11
5100ne36:C_0603C3, C4, C5, C6, C7
1100u/25Ve36:C_Elec_D6.3_P2.5C1
110k (pull-down IO46)e36:R_0603R12
112V IN (+ / GND)e36:Terminal_5.08_2PJ1
1180R LED CODEe36:R_0603R4
1180R LED LIMITe36:R_0603R3
1180R LED TIMERe36:R_0603R2
1390R 1/4W (podsw. 12V)e36:R_Axial_P7.62R1
1470u/10Ve36:C_Elec_D8.0_P3.5C2
14k7 SCLe36:R_0603R6
14k7 SDAe36:R_0603R5
1CAN (H / L / GND)e36:Terminal_5.08_3PJ2
1DS3231 ZS-042 modul (header katowy)e36:DS3231_ZS-042_ModuleU4
1ESP32-S3-DevKitC-1 N16R8e36:ESP32-S3-DevKitC-1_SocketU1
1I2C (3V3 GND SDA SCL)e36:PinSocket_1x04_2.54J10
1JP_BL: 1-2 = 3V3 (domyslnie), 2-3 = IO46 PWMe36:SolderJumper_3_OpenJP2
1JP_LCD1_SPI: zwarta = pin1 gniazda -> DC (IO19)e36:SolderJumper_2_OpenJP3
1JP_LCD2_SPI: zwarta = pin1 gniazda -> DC (IO19)e36:SolderJumper_2_OpenJP4
1JP_LCD3_SPI: zwarta = pin1 gniazda -> DC (IO19)e36:SolderJumper_2_OpenJP5
1JP_LCD4_SPI: zwarta = pin1 gniazda -> DC (IO19)e36:SolderJumper_2_OpenJP6
1JP_LCD5_SPI: zwarta = pin1 gniazda -> DC (IO19)e36:SolderJumper_2_OpenJP7
1JP_VCC: 1-2 = 5V (domyslnie), 2-3 = 3V3e36:SolderJumper_3_OpenJP1
1Klawiatura OBC18 FFC 15p 2.54e36:FFC_2.54mm_15P_VerticalJ9
1LCD1 FFC 11p 2.54mme36:FFC_2.54mm_11P_VerticalJ3
1LCD2 FFC 11p 2.54mme36:FFC_2.54mm_11P_VerticalJ4
1LCD3 FFC 11p 2.54mme36:FFC_2.54mm_11P_VerticalJ5
1LCD4 FFC 11p 2.54mme36:FFC_2.54mm_11P_VerticalJ6
1LCD5 FFC 11p 2.54mme36:FFC_2.54mm_11P_VerticalJ7
1LM2596 modul 12V->5Ve36:LM2596_ModuleU2
1PTC 2A 30Ve36:Fuse_1812F1
1SMBJ33A (load dump)e36:D_SMBD2
1SN65HVD230 modul (120R na module)e36:SN65HVD230_ModuleU3
1SS34 (odwr. polaryzacja)e36:D_SMAD1

Questions

How big is the E36 base PCB?

It measures 160 × 53 mm and has 2 copper layers, 1.6 mm thick.

What parts does the E36 base use?

42 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the E36 base KiCad files?

From the pwmurawski/e36-dash repository on GitHub, at the commit this page was made from: the board is hardware/e36_base/e36_base.kicad_pcb and its schematic hardware/e36_base/e36_base.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the E36 base design in my own project?

Its repository states no licence, so its author keeps all rights: ask pwmurawski before reusing the design.

Similar boards

  • 2 layers30 × 50 mmModuleV400, the printed circuit board in 3D

    ModuleV400

    stuartpittaway/diyBMSv4

    Version 4 of the diyBMS

    42 parts1.1k
  • 2 layers139.7 × 64.8 mmSprig console, the printed circuit board in 3D

    Sprig console

    hackclub/sprig

    🍃 Learn to code by making games in a JavaScript web-based game editor.

    42 parts1.1kMIT
  • 2 layers90.5 × 50 mmMain control board, the printed circuit board in 3D

    Main control board

    jamro/tiny-engineer

    A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.

    42 parts1.1k
  • 2 layers67.6 × 30.5 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    42 parts1kGPL-3.0
  • 2 layers190 × 80 mmPcb shield, the printed circuit board in 3D

    Pcb shield

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    42 parts915
  • 2 layers98 × 80 mmMai io, the printed circuit board in 3D

    Mai io

    whowechina/mai_pico

    Pico controller for Maimai

    42 parts475
  • 2 layers50.8 × 90.4 mmOBOGS PANEL, the printed circuit board in 3D

    OBOGS PANEL

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    42 parts431