The board and display to work with can be activated in Simcline-V2 with the right settings, see folder: /Simcline-V2/src/config
- Open file, edit and save(!):
/documents/arduino/libraries/Simcline-V2/src/config/configBoard.h
// ------------------------------------------------------------------------------------------------
// Define the board here, that is part of your system setup
#define LILYGO_T_DISPLAY_S3
//#define ADAFRUIT_FEATHER_ESP32_V2
//#define YOUR_ESP32_BOARD
//#define XIAO_ESP32S3- Open file, edit and save(!):
/documents/arduino/libraries/Simcline-V2/src/config/configDisplay.h
// ------------------------------------------------------------------------------------------------
// Define the display, that is part of your system setup
//#define NODISPLAY
//#define OLEDSSD1306_128x64
#define LILYGO_T_DISPLAY_S3
//#define YOURDISPLAY
//#define SERIALDISPLAY
// ------------------------------------------------------------------------------------------------Warning: When a new version of Simcline-V2 is installed in Arduino IDE 2 it will override ALL files of a previous version! If you have made modifications in a file that is part of Simcline-V2 --> Make a copy of the file(s) in question BEFORE you install a new library version!
T-Display-S3 is a ESP32-S3 development board. It is equipped with a color 1.9" LCD screen and two programmable buttons. Communication using I8080 interface. Retains the same layout design as T-Display. You can directly use ESP32S3 for USB communication or programming.
This board and ESP32S3 processor was selected for its excellent specifications crisp and colorful display. Aside of gaining experience with the TFT_eSPI library, creating a much richer visual user interface (than a SSD1306 0,96 Inch) was the dominant incentive. A lot of inspiration and practical knowledge was obtained by studying on Youtube: the Volos Projects. This ended up sofar in a good working and visually attractive Simcline 2.0 interface! What's more, in the experiments the processor was behaving like to be expected (despite the high display interface load) and I did not experience (during operation) any response difference with other ESP32 boards (with minimal display interface load) and that have been tested thoroughly...
Unfortunately the LilyGo board does NOT fit the original components box, so that needs extra attention in the near future. Technically there is no reason sofar not to like this board!!!
- Search for TFT_eSPI in the Arduino IDE library manager and click Install or Update.
- Enter the default library manager installation location:
C:\Users\<YourName>\Documents\Arduino\libraries. - Find and open the newly created TFT_eSPI folder.
- Open
User_Setup_Select.h, comment out or delete the line#include <User_Setup.h>which is enabled by default. - Search
Setup206_LilyGo_T_Display_S3, find it and uncomment the line:
#include <User_Setups/Setup206_LilyGo_T_Display_S3.h> // For the LilyGo T-Display S3 based ESP32S3 with ST7789 170 x 320 TFT- Now save the file and close -> TFT_eSPI will use from now on the pin and screen definitions of
LilyGo_T-Display-S3by default!
Warning: When a new version of TFT_eSPI is installed in Arduino IDE, it will override ALL files of a previous version!
The present code is developed on Arduino IDE 2.x. Notice that you will need an Arduino IDE that is tailored for this specific ESP32S3 processor! Please follow the installation instructions for the ESP32S3 T-display
**************************************************************************************************
>>>> Select in board drop down -> ESP32S3 Dev Module (Preferred: more specific options) <<<<
>>>> Select in board drop down -> LilyGo T-display-S3 (Alternative with minimal options) <<<<
>>>> NOTICE that you have to set the appropriate settings in the Tools menu <<<<
**************************************************************************************************
If you select in the menu bar of Arduino IDE 2.x Tools, the settings for the ESP32S3 Dev Module processor should be exactly like the following:
- MCU: ESP32-S3R8 Dual-core LX7 microprocessor
- Wireless Connectivity: Wi-Fi 802.11, BLE 5 + BT mesh
- Programming Platform: Arduino-ide, Micropython
- Flash: 16MB
- PSRAM: 8MB
- Bat Voltage Detection: IO 04
- Onboard Functions: Boot + Reset + IO 14 Button
- LCD: 1.9" diagonal, Full-color TFT Display
- Drive Chip: ST7789V
- Resolution: 170(H)RGB x320(V) 8-Bit Parallel Interface
- Working Power Supply: 3.3V
- Supports: STEMMA QT / Qwiic
- Connector: JST-SH 1.0mm 4 PIN
- Dimensions: 62 x 26 x 10mm
Adafruit DRV8871 DC Motor Driver
A small one channel motor driver for 12 V (6.5 - 48 V) and 3,6 Amperes max. This board enables the processor to set the Actuator motor in up or down movement. It transforms logical digital levels (Go Up, Go Down and Stop) from the Feather nRF52/ESP32 to switching of 12 Volt at 3,6 Amperes max., the levels at which the Actuator works. Notice that default the board comes limited to 2,6 Amperes and you need to add a resistor to set for max current level. Install Vertical Through Hole Male PCB Header Pins on the board; this will allow correct mounting of the board inside the components box!
LYLIGO ESP32S3 T-Display
The programmed ESP32S3 is communicating with (a) the trainer to collect power output information and (b) with the training App for resistance settings (like grade) or (c) with the Companion App on your mobile phone. The programmed ESP32S3 is in full control of the Simcline operation.
Pololu Time-of-Flight-Distance sensor VL6180X
The sensor board (12.7 * 17.8 mm) contains a very tiny laser source, and a matching sensor. The VL6180X can detect the "time of flight", or how long the laser light has taken to bounce back to the sensor. Since it uses a very narrow light source, it is perfect for determining distance of only the surface directly in front of it. The sensor registers quite accurately the (change in) position of the wheel axle during operation, by measuring the distance between the top of the inner frame and the reflection plate that is mounted on the carriage. The distance feedback of the sensor is crucial for determining how to set the position of the carriage and axle in accordance with the grade information that for example Zwift is using to set the resistance of the trainer. NOTICE: a) VL6180X boards are also offered by different suppliers and have different formfactors; b) Install Straight Angle Through Hole Male PCB Header Pins on the board; this will allow later flat mounting of the sensor board in the components box!
Pololu D24V5F5
This is a small 5V, 500mA Step-Down Voltage Regulator that is responsible for voltage conversion from 12V to 5V, the power supply for all components boards. NOTICE: Install Straight Angle Through Hole Male PCB Header Pins on the board; this will allow later easy mounting of the sensor board in the components box!
All components are documented very well and are low cost. There are lots of examples for use in an Arduino environment. They have turned out to be very reliable. The exact wiring of the components can be followed in the figure above.
- Icons bar on the top shows active connections
- Actual road grade is shown in digits in the center of a gauge
- Gauge shows clockwise, positive up-hill-grades and counter clockwise, negative down-hill-grades
- Road profile is refreshed with every event (i.e. change of road grade) and shows the last 24 events
- Position in vertical color palette legend is dynamically shown
- Color palette for grade percentage is taken from www.CylingCols.com.
Notice that the road inclination data were randomly generated (between -10 and +20) in a pace that one will never meet in the real world, just to show the interface during a long ride! See video on Youtube







