Installation
Download the companion app and get up and running in under a minute.
Go to the GitHub page
Navigate to the project's GitHub repository.
Open the Releases tab
Click on Releases in the right-hand sidebar of the repository.
Download the latest release
Find the most recent release and click ScreenX-Companion.exe to download it.
Run the companion app
Once downloaded, open the companion application. The onboarding process will guide you through the rest.
You can also run the companion directly with Python:
$ pip install -r requirements.txt
$ python companion.py
You can build the app from source to run it just as easily!
$ pip install -r requirements.txt
$ pip install pyinstaller
$ pyinstaller companion.spec
Initial Setup
Walk through the onboarding wizard in the companion app.
Open the companion app
The onboarding should start automatically on first launch.
Detect your device
Click Detect Device to auto-detect the COM port your ESP32 is connected to. If the detected port is incorrect, click Select port manually instead.
Flash firmware
On the firmware step, choose between manually uploading a .bin file or having it fetched automatically (Coming soon after release). Click Flash and wait for it to complete.
Reconnect the device
Once flashing is done, unplug and re-plug the ESP32, then proceed to the next step.
Send WiFi credentials
Enter the WiFi network name and password you want the ESP32 to connect to. The screen should display "Saving…", then restart and show its local IP address.
Enter the IP in the Dashboard
In the companion app's Dashboard tab, enter the IP address shown on the ESP32's screen. Leave the port as the default unless you're running custom firmware.
Start racing
The app will auto-detect when Assetto Corsa is open and begin sending telemetry data to the ESP32.
Hardware Requirements
This project requires minimal off-the-shelf hardware.
XIAO ESP32
C6 (recommended), C3, or S3 variant. The C6 and C3 are recommended because of their internal antenna.
Seeed Studio ↗256×64 OLED Display
2.08-inch, 7-pin SPI interface. Make sure it runs on 3.3 V logic.
Amazon ↗Jumper Wires
Female-to-female jumper wires for connecting the display to the ESP32.
Adafruit ↗Custom PCB Coming Soon
Optional. Replaces jumper wires and taps into the wheel's own power supply with a built-in voltage regulator.
Wiring (Without PCB)
Connect the OLED display to your XIAO ESP32 using the pinout below. You will need to provide your own power source for the ESP32.
| Display Pin | ESP32 Pin | Notes |
|---|---|---|
| CS | D3 | Chip select |
| DC | D6 | Data / command |
| RESET | D2 | Display reset |
| SDA | D10 | SPI data (MOSI) |
| SCL | D8 | SPI clock (SCK) |
| VCC | 3V3 | 3.3 V power |
| GND | GND | Ground |
Mount the ESP32 wherever suits your DIY setup. You'll need to source your own power, for example, a small LiPo battery or USB power bank.
PCB Installation
Step-by-step guide for installing with the custom PCB. Coming Soon
Open the wheel
Remove the Moza ES wheel from the base. Unscrew the 6 screws on the front face. Be careful, the wheel will come apart once these are removed.
Disconnect internals
Gently remove the quick release hub and unplug the internal connector inside the wheel.
Mount the ESP32 on the PCB
Insert your ESP32 into the PCB, making sure the pin labels line up. The USB port should face away from the long edge of the PCB. Firmware should already be flashed.
Connect the screen
Plug in the display cables to the PCB, matching the pinout labels.
Connect the quick release hub
Plug the connector from the quick release hub into the PCB.
Install the PCB into the wheel
Slide the PCB into the wheel and press the bottom connector into the existing connector inside the wheel. Optionally tie string through the PCB holes for easy removal later.
Route cables & reassemble
Place the 3D-printed spacer on the back of the wheel and route cables through it. Reassemble the wheel, making sure no cables are pinched. When reconnected to the base, the screen should power on automatically.
Screen Mounting
Attach the display to the top of your steering wheel.
Our 3D-printed mount is still in development. In the meantime, you can design your own for your own wheel, this project isnt limited to just the Moza ES Lite!
Insert the screen into the mount
Place the OLED display into your mount and secure it with screws.
Attach to the wheel
Use a mild adhesive (nothing too permanent) to stick the mount to the top of the wheel. This should be compatible with most ES Lite wheel mods that do not expand on the top of the wheel.
Troubleshooting
Common issues and how to fix them.
Assetto Corsa crashes on launch
Try closing the companion app and only re-opening it once the game has fully loaded. This was a known bug that has since been patched. If it still occurs, please open an issue on GitHub.
The ESP32 isn't displaying telemetry data
Confirm that Assetto Corsa is running and the IP address in the companion app matches the one shown on the ESP32's screen. Try driving around for a few seconds, data may take a moment to start flowing.
Firmware flashing fails
Make sure nothing else is using the COM port (e.g. Arduino IDE's Serial Monitor). Close any conflicting applications and try again. Ensure the device is in bootloader mode.
No IP address on the screen after WiFi setup
The ESP32 hasn't connected to your WiFi. Re-run the WiFi setup in the companion app and double-check your SSID and password. Make sure your network supports 2.4 GHz (5 GHz is not supported).
Companion app can't detect the ESP32
Try a different USB cable, some are charge only and don't carry data. You can also select the COM port manually in the app.