ESPEED32 User Manual

User-focused guide for slot car racing: startup, key driving controls, menus, and backup/restore.

The user documentation on espeed32.com always reflects the latest published version. The copy stored on the controller follows the firmware actually installed on that unit and is updated together with it.

1. Quick start

  1. Power the controller normally.
  2. Rotate encoder to move through menu items.
  3. Short press encoder: enter/exit value editing or open submenu.
  4. Short press brake button while editing: cancel (restore original value).
  5. Long press encoder (~1s): toggle LIST and race GRID view (when race view is not OFF).

2. Startup, calibration and self-test

Calibration flow

  1. Hold encoder while powering on until calibration screen appears.
  2. Fully press/release trigger several times.
  3. Press encoder once to store calibration.
  4. Verify throttle reads 0% at released trigger and 100% at full pull.
Trigger calibration
Calibration: move trigger through full travel several times for correct 0-100% mapping.

Trigger mechanics

3. Display, race view, and ABOUT

This section groups what you see on the OLED: language, label style, race layout, status bar, and system info.

Language and display

Race view behavior (LIST vs GRID)

Mockup of OLED list view and grid race view
Display example: LIST view shows the full menu stack, while GRID view keeps the key race parameters visible for faster on-track changes.

Status bar and ABOUT

4. CAR menu and Car Params

The CAR menu manages the car profiles. Each profile stores its own Car Params: BRAKE, SENSI, ANTIS, CURVE, FADE, PWM_F, BRAKE+, and LIMIT. This is the same parameter group you meet later in the Advanced Config Editor. If DISPLAY -> ADVANCED is OFF, FADE, PWM_F, and BRAKE+ are hidden from the main menu, but the stored profile values still apply.

5. Driving parameters

This section groups the main setup parameters that shape how the controller feels on track. The deeper explanations are placed under collapsible panels so the section is easier to scan.

BRAKE and BRAKE+

BRAKE

When trigger is fully released, the controller applies normal braking using the BRAKE value.

BRAKE+ in the main menu opens the advanced brake submenu. That is where you now find Alt.Brake and Rel.Brake.

Alternative brake (Alt.Brake)

Concept graphs showing Alt.Brake lower than BRAKE and Alt.Brake higher than BRAKE
Alternative brake examples: Alt.Brake can temporarily be set softer or harder than normal BRAKE, depending on driver preference.

Release brake (Rel.Brake)

Concept graphs showing QUICK and DRAG behavior for Rel.Brake
Release-brake examples: QUICK creates a zero-output zone with brake force below the selected zone, while DRAG adds softer release drag only during the release movement.

Quick reference for the main menu

ItemRangeDefaultDescription
BRAKE0.0-100.0 %95.0Brake force when trigger is released.
SENSI0.0-90.0 % (and <= LIMIT)20.0Minimum motor output at first measurable trigger movement.
ANTIS0-999 ms30Anti-spin ramp time above the low-output bypass. Higher value = longer/slower power buildup. It is not a pure trigger delay. Display unit and encoder step are configured in DISPLAY -> STEPS -> ANTISPIN (MS / % / TEXT).
CURVE10-90 %50Throttle mapping. 50 = linear. <50 softer start, >50 sharper start.
FADE0-30 %0Soft-start zone. 0 = disabled / old behavior. Above 0, the first part of trigger travel ramps from 0 up to SENSI before normal CURVE takes over.
PWM_F1.0-5.0 / 10.0 / 20.0 kHz4.0Motor PWM frequency. Range follows SETTINGS -> HARDWARE -> PWM MAX (5/10/20 kHz). Higher value often softens low-end response.
BRAKE+ / Alt.Brake0-100 %0Alternate brake value used while brake button is held and trigger is released.
BRAKE+ / Rel.BrakeOFF/QUICK(zone+level)/DRAG(level)OFFRelease-brake helper near trigger release. QUICK uses a zero-output zone; DRAG adds release drag without a zone.
LIMIT(SENSI+5)-100 %100Maximum motor output. <100 enables LIMITER warning.
STATS--Lap counter, best lap, and scrollable lap history. Encoder scrolls. Short brake press exits; long brake press resets stats.
LOCK-UnlockedToggle settings lock. When locked, all parameter edits are blocked — only LOCK itself remains active. Lock is temporary and resets on reboot. Configure visibility and shortcut duration in SETTINGS → LOCK. Status bar shows LOCK (inverted) when active.
CAR0-19 profilesCAR0Select/manage profile, copy settings, reset car params.

ANTIS in practice

Typical starting values

These are starting points, not rules. Use them to get close, then fine-tune one parameter at a time.

The right values still depend heavily on the specific car, motor, tires, track grip, and your personal driving style.

SetupSENSIBRAKEANTISCURVEFADEPWM_F
1/32 balanced28-35%90-95%40-90 ms40-50%0-6%4.0 kHz
1/32 low grip22-30%90-95%100-150 ms30-45%5-12%4.0 kHz
1/24 balanced35-45%95-100%0-30 ms50-60%0-5%4.0 kHz
1/24 high grip40-50%95-100%0-15 ms55-70%0-3%4.0 kHz

For first tests, leave Rel.Brake on OFF. Add QUICK or DRAG only after the base throttle and brake setup feels right.

From CarSteen/ACD terms to ESPEED32
Legacy termESPEED32 equivalentPractical effect
AttackSENSIHow hard the car launches at first trigger movement.
Choke / Choke2LIMIT + ANTISTop-end limitation and ramp smoothness.
ProfileCURVETrigger response shape (early vs late aggression).
BrakeBRAKE + BRAKE+Base brake plus brake-button and release-brake helper settings.

Legacy setup example (from older guides): for a soft and controlled feel, start around SENSI 40, ANTIS 130 ms, CURVE 30, and adjust from there.

FADE in practice
  • FADE creates a soft 0 -> SENSI ramp in the first part of trigger travel.
  • FADE = 0% disables it and keeps the old direct feel.
  • Try 5-15% if the car feels too abrupt right when SENSI starts.
  • Think of FADE as an extra first point in the graph: it only changes the very bottom end, while CURVE still shapes the rest.
Fade off versus fade on graph examples
FADE examples: OFF keeps the old direct step to SENSI, while ON adds a soft first ramp before normal CURVE continues.
Linearity notes
  • LIMIT: linear cap in commanded output %. Real top speed on track is not perfectly linear.
  • BRAKE: linear brake/drag command in %. Real braking feel depends on motor, tires, and track grip.
  • SENSI: linear minimum output floor in %, but not a linear gain knob across the whole trigger travel because CURVE shapes the rest.
  • FADE: linear in trigger-travel %. It only affects the first part of the trigger and then hands control over to CURVE.
  • ANTIS: mainly a time setting in ms, not a pure delay. Once anti-spin is active, a higher value gives a longer/weaker ramp, but the overall feel is not perfectly linear because the low-speed bypass threshold also shifts with the setting.
Curve examples

These figures focus on the response shape itself before looking at PWM frequency and duty limits.

Linear, Soft and Hard curve examples
CURVE examples: Linear (50%), Soft (lower value), and Hard (higher value).
Examples showing fade combined with linear and hard curve shapes
FADE plus CURVE: FADE can soften the very start while the rest of the response stays linear or is tuned harder.
LIMIT in practice
  • LIMIT 100 allows the controller to reach full duty when trigger and curve demand it.
  • LIMIT 70 caps the maximum duty to about 70%, even at full trigger.
LIMIT examples showing LIMIT 100 and LIMIT 70
LIMIT examples: LIMIT changes the maximum duty the controller is allowed to reach.
PWM_F in practice
  • PWM_F changes how often the output switches, not the requested duty by itself.
  • Under LIMIT 100, part-throttle can still run at partial duty. Under LIMIT 70, full trigger tops out near 70% duty.
  • At the same duty, 1 kHz uses fewer and wider pulses, while 5 kHz uses more and narrower pulses in the same time window.

Scenario 1: partial trigger under LIMIT 100

Compare these two images horizontally. Both show the same effective level, 50% duty, so the only difference is pulse density. The dashed line marks the average or effective level.

PWM frequency examples comparing 1 kilohertz and 5 kilohertz at partial trigger with LIMIT 100
At 50% duty, 1 kHz uses fewer and wider pulses, while 5 kHz uses more and narrower pulses in the same time window.

Scenario 2: full trigger under LIMIT 70

Compare these two images horizontally as well. Both show full trigger, but LIMIT 70 holds the effective level to 70% duty. Again, the dashed line marks the average or effective level.

PWM frequency examples comparing 1 kilohertz and 5 kilohertz at full trigger with LIMIT 70
Here the duty is capped to 70% in both images. PWM_F changes how often pulses occur, not the LIMIT cap itself.

6. SETTINGS, POWER, and current draw

SETTINGS groups the global system options that do not belong to a single car profile.

POWER submenu

SETTINGS root items

HARDWARE submenu

Estimated current draw (controller electronics)

StateEstimateNotes
Startup120 mAShort boot and initialization phase.
Normal operation100 mATypical menu/race operation without WiFi.
WiFi module active150 mAAP mode and web server active.
Screensaver80 mADisplay active, low interaction.
SLEEP (soft)55 mA (estimated)OLED off, CPU 80 MHz, motor task suspended.
DEEP SLEEP10 mA (estimated)Power-off-like state, wake by power cycle.

Values are estimates and depend on supply voltage, hardware variant, and measurement setup. Motor load for the car is additional. The figures here were measured on the 5 V side after the step-down converter. If you measure on the 12 V side instead, the current reading will be different and is not directly comparable, ref. the voltage/current relationship (U = R * I).

Internal battery (optional)

Some hardware variants may include a small 1-cell lithium battery for off-track setup work. It charges while the controller is powered from the track or from USB. This battery is meant for menu changes, pre-race setup, lane-change adjustments, or avoiding startup delay before the track powers up. It is not intended for long standalone operation.

Runtime below means controller use while not connected to the track. Charging current can vary by charger and board, but if charging is close to 200 mA and controller draw is around 100 mA, off-track runtime will often be roughly double the charge time. Real lithium charge time is still a bit longer than the simple math because the last part of charging slows down near full.

BatteryTypical charge timeTypical off-track runtime
1S Li-ion/LiPo 250 mAhabout 1.4-1.8 hoursabout 2.0-2.5 hours
1S Li-ion/LiPo 500 mAhabout 2.8-3.6 hoursabout 4.0-5.0 hours

7. Driving tips

8. Logging, WiFi/USB backup, restore and OTA

Logging

  1. Open SETTINGS -> LOGGING.
  2. START NOW/STOP NOW: starts or stops local telemetry logging immediately.
  3. AUTO OFF: set logging timeout (1-120 min, default 30 min).
  4. Logging itself does not require WiFi. You can keep WiFi off and use USB/WebSerial later, or turn WiFi on separately for live web viewing.
  5. If WiFi is already active when logging starts, WiFi stays up while logging is running.

WiFi

  1. Open SETTINGS -> WIFI to enter the WiFi submenu.
  2. START WIFI/STOP WIFI: starts or stops background WiFi immediately.
  3. MODE: switches between AP and CLIENT.
  4. INFO PAGE: opens the WiFi page directly and starts WiFi automatically. Leaving the info page stops WiFi again (unless background mode was started first).
  5. In AP mode the controller hosts ESPEED32_XXXX with password espeed32. SHOW QR is available only in AP mode.
  6. In CLIENT mode you must first enter WiFi SSID and password in Advanced Config Editor -> Network. Client mode uses DHCP from your router/network and does not show a QR code.
  7. If the Client connection fails, the controller falls back to AP automatically so you can get back in and fix the settings.
  8. AUTO OFF: set timeout for background WiFi (1-120 min, default 10 min).
  9. Open the IP shown on the OLED in your browser. In AP mode this is typically 192.168.4.1. In CLIENT mode it is the DHCP address assigned by your router.
  10. The first page is public controller home. Sensitive tools such as Controller Panel, Backup, Restore, telemetry, OTA, and Advanced Config Editor are protected by controller login.
  11. Default controller login is username espeed32 and password espeed32. The current login is also shown on the controller WiFi info page.
  12. Backup files do not export Client WiFi or controller login passwords. Restore keeps the local WiFi/login credentials already stored on that controller.
Controller OLED WiFi info page and full-screen QR example
WiFi example in AP mode: left is the controller's INFO PAGE with SSID, password, and browser IP. Right is the full-screen SHOW QR view, available only in AP mode for quick phone or tablet pairing.

WiFi increases controller electronics current draw from roughly 100 mA to 150 mA, about 50% more. On units with an internal battery, use WiFi sparingly and switch it off when you are done.

Status bar behavior while WiFi is active: WIFI uses the first blank slot; if no blank slot exists, slot 4 is shown as WIFI until WiFi stops.

Advanced Config Editor

Advanced Config Editor car parameter screenshot showing profile selection and live-editable throttle and power fields
Advanced Config Editor example: the screenshot shows the Car Params tab with profile selection and live-editable car settings. The editor UI is shown in English here, but the workflow is the same across all manuals.

USB

  1. Open SETTINGS -> USB INFO.
  2. Use Chrome/Edge (WebSerial).
  3. Backup/restore works over USB; OTA requires WiFi mode.
  4. Automatic paired OTA installs the standard official release pair, which uses the default TLE493D firmware build.
  5. If your controller uses another trigger sensor family, upload the matching sensor-specific firmware file manually together with the SPIFFS file from the same release.
  6. On Windows, flash_all.sh usually means Git Bash or WSL. Arduino IDE can still upload the sketch, but trigger sensor family remains a compile-time selection.

Never remove power during OTA upload.

9. Menu tree (complete UI map)

ROOT (Main Menu)
|- BRAKE
|- SENSI
|- ANTIS
|- CURVE (graph view)
|- FADE (graph view, ADVANCED=ON)
|- PWM_F (ADVANCED=ON)
|- BRAKE+ (ADVANCED=ON)
|  |- Alt.Brake (%)
|  |- Rel.Brake (OFF/QUICK/DRAG)
|  |- Zone (%) [QUICK only]
|  |- Quick (%) [QUICK mode]
|  |- Drag (%) [DRAG mode]
|  `- Back
|- LIMIT
|- SETTINGS
|  |- POWER
|  |  |- SCRSV
|  |  |  |- NOW
|  |  |  |- LINE1
|  |  |  |- LINE2
|  |  |  |- TIME (0-240 s, 0=OFF)
|  |  |  `- BACK
|  |  |- SLEEP
|  |  |  |- SLEEP NOW
|  |  |  |- INTERVAL (0-10 min, 0=OFF)
|  |  |  `- BACK
|  |  |- DEEP SLEEP
|  |  |  |- SLEEP NOW (power-off)
|  |  |  |- INTERVAL (0 or 2-30 min)
|  |  |  `- BACK
|  |  |- STARTUP (0-99 x 10ms)
|  |  |- VIN CAL.
|  |  `- BACK
|  |- DISPLAY
|  |  |- RACE MODE (OFF/FULL/SIMPLE)
|  |  |- LANGUAGE (NOR/ENG/CS/ACD/ESP/DEU/ITA/NLD/POR)
|  |  |- CASE (UPPER/Pascal)
|  |  |- FONT SIZE (LARGE/small)
|  |  |- ADVANCED (OFF/ON)
|  |  |- STEPS
|  |  |  |- ANTISPIN
|  |  |  |  |- REG.TYPE (MS / % / TEXT, default MS)
|  |  |  |  |- STEP MS (1-50 ms, default 5)  [hidden in TEXT mode]
|  |  |  |  |- STEP % (1-100 %, default 1)   [shown only in % mode]
|  |  |  |  `- BACK
|  |  |  |- BRAKE STEP (0.1-50.0 %, default 1.0%)
|  |  |  |- SENSI STEP (0.1-5.0 % in 0.1% increments, default 1.0%)
|  |  |  `- BACK
|  |  |- STATUS BAR
|  |  |  |- SLOT 1
|  |  |  |- SLOT 2
|  |  |  |- SLOT 3
|  |  |  |- SLOT 4
|  |  |  `- BACK
|  |  `- BACK
|  |- SOUND
|  |  |- BOOT (ON/OFF)
|  |  |- RACE (ON/OFF)
|  |  `- BACK
|  |- HARDWARE
|  |  |- ENC INV (ON/OFF)
|  |  |- EXT POT
|  |  |  |- POT 1 (OFF/BRAKE/SENSI)
|  |  |  |- POT 2 (OFF/BRAKE/SENSI)
|  |  |  `- BACK
|  |  |- TRIGGER
|  |  |  |- FAMILY
|  |  |  |- ACTIVE
|  |  |  |- TYPE (AUTO/W2B6/W2B6_A0/P3B6) [TLE493D only]
|  |  |  `- BACK
|  |  |- PWM MAX (5/10/20 kHz)
|  |  |- TEST (Self-Test, 9 steps)
|  |  `- BACK
|  |- STATS (ON/OFF, default OFF)
|  |- WIFI
|  |  |- START/STOP WIFI
|  |  |- MODE
|  |  |- INFO PAGE
|  |  |- SHOW QR [AP only]
|  |  |- AUTO OFF (1-120 min, default 10)
|  |  `- BACK
|  |- LOGGING
|  |  |- START/STOP NOW
|  |  |- AUTO OFF (1-120 min, default 30)
|  |  `- BACK
|  |- LOCK
|  |  |- MENU ITEM (ON/OFF, default OFF)
|  |  |- SHORTCUT (OFF / 1-10 s, default 5 s)
|  |  |- CONFIRM (ON/OFF, default OFF)
|  |  `- BACK
|  |- USB INFO
|  |- RESET
|  |  |- CAR
|  |  |- SETTINGS
|  |  |- CALIBRATION
|  |  |- EVERYTHING
|  |  `- BACK
|  |- ABOUT
|  `- BACK
|- STATS [if enabled]
|- LOCK [if enabled]
`- CAR
   |- SELECT
   |- RENAME
   |- RACESWP (grid car select ON/OFF)
   |- COPY
   |- RESET
   `- BACK