Documentation · Dashboard · Plugins · Release notes
This project uses PlatformIO. You select a board environment, create a local profile, build a firmware image, and then flash that image to the matching board. A firmware image for one board is not interchangeable with another board.
platformio_profile.h private: it can contain WiFi, OTA, or gateway credentials.| Environment | Board | CAN interface | Dashboard |
|---|---|---|---|
esp32_twai |
Generic ESP32 Dev Module | Built-in TWAI | Yes |
esp32s2_twai |
ESP32-S2 Saola | Built-in TWAI | Yes |
esp32c6_twai |
ESP32-C6 DevKitC-1 | Built-in TWAI | Yes |
lilygo_tcan485_hw3 |
LILYGO TCAN485 | Built-in TWAI | Yes |
lilygo_t2can |
LILYGO T-2CAN | SPI MCP2515 (CAN A / Party CAN) | Yes |
m5stack-atomic-can-base |
M5Stack Atom CAN Base | Built-in TWAI | Yes |
m5stack-atoms3-mini-can-base |
M5Stack AtomS3 Mini CAN Base | Built-in TWAI | Yes |
esp32_feather_v2_mcp2515 |
Feather ESP32 V2 + external MCP2515 | SPI MCP2515 | Yes |
esp32_ext_mcp2515 |
ESP32-S3 + external MCP2515 | SPI MCP2515 | Yes |
waveshare_ESP32_S3_RS485_CAN |
Waveshare ESP32-S3 RS485/CAN | Built-in TWAI | Yes |
feather_rp2040_can |
Adafruit Feather RP2040 CAN | MCP2515 | No |
feather_m4_can |
Adafruit Feather M4 CAN Express | Native CAN | No |
The first ten are ESP-IDF dashboard builds. The last two are legacy Arduino builds without the web dashboard.
The LILYGO T-2CAN build uses the board connector labeled CAN A, backed by its onboard MCP2515. CAN B/TWAI is not used by this environment. Connect only CAN A to the verified Party CAN pair for nag suppression.
From the repository root:
cp platformio_profile.example.h platformio_profile.h
Edit the local file and choose the driver, vehicle mode, initial dashboard credentials, and optional compile-time features. It is ignored by Git. Never paste its secrets into an issue, Support report, plugin, or screenshot.
The helper can apply common choices:
python scripts/platformio_set_profile.py \
--driver DRIVER_ESP32_EXT_MCP2515 \
--vehicle HW4 \
--enable EMERGENCY_VEHICLE_DETECTION
Use the exact driver and vehicle values documented by platformio_profile.example.h. Do not guess GPIOs from a similar board.
Install the recommended PlatformIO and Microsoft C/C++ extensions, then open the repository root in VS Code. The tracked workspace settings use PlatformIO as the IntelliSense configuration provider on a normal host and inside the dev container.
Use the PlatformIO environment switcher in the VS Code status bar to select the board you are editing. PlatformIO then supplies the matching compiler, build defines, and include paths for that environment. Generated .vscode/c_cpp_properties.json, .vscode/launch.json, and compile_commands.json files are machine-specific and remain local; do not commit them.
Install PlatformIO, then build the environment matching the board:
pio run -e esp32_ext_mcp2515
Replace the environment name with the one in the table. A successful build is not proof that wiring, bitrate, termination, or a vehicle frame interpretation is correct.
Connect only the matching board and use:
pio run -e esp32_ext_mcp2515 -t upload
Some boards need a boot button or a different USB port. Follow the board maker’s upload instructions. Do not flash an image built for a different target.
DASH_SSID.http://192.168.4.1/.The dashboard starts before CAN initialization. On ESP-IDF builds, TWAI waits about 10 seconds before initialization. Injection remains blocked for at least 15 seconds after successful CAN initialization and until more than 1,000 valid frames have been received. These delays are readiness gates, not a guarantee that a vehicle is safe to control.
.bin built for the exact board and keep a serial recovery path available.Generated dashboard data lives in include/web/mcp2515_dashboard_ui.h. Contributors edit include/web/mcp2515_dashboard_ui.src.h; the generated header is recreated by scripts/minify_dashboard.py.