Skip to content

Latest commit

 

History

312 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Publish Release

Pubmote

Welcome to Pubmote!

Pubmote is a feature-rich, ESP-NOW based remote control for VESC based onewheels. Pubmote connects to a VESC Express receiver running the Float Accessories package, which provides a feature-rich platform and easy configuration experience.

Tip

Want an easy way to update firmware or flash a new device? Head over to the firmware tool at https://pubmote.com

image

Suggestions for additional hardware targets are welcomed. For new projects, we recommend using a custom PCB or dev-board the following features:

  • Buzzer
  • PMU with I2C comms. SY6970 and AXP2101 are currently supported.
  • GPIO with RTC supported pins

Getting started

Hardware Prerequisites

ESP32S3-based controller with a display, and a case.

Current implementations:

A Joystick. Options:

VESC Express receiver. Options:

Setup and Usage

  • Not sure where to get started with a Pubmote build? Check out an example build like the Leaf Blaster!
  • For instructions on first-time setup, pairing, and usage, see the quick start guide.

Issues

Create an issue on GitHub or post in the Pubmote channel within the PubWheel Discord server

For Developers

  • VS Code or other code editor
  • PlatformIO

No Rust toolchain is required. Slint is consumed as a prebuilt release pinned by SLINT_PREBUILT_TAG in platformio.ini, so pio run needs nothing but Python and PlatformIO.

Slint live preview

The UI uses arc properties that only exist in our Slint fork, so the language server bundled with the VS Code Slint extension rejects them with Unknown property arc-center-x and no preview opens. The Sync Slint LSP task in .vscode/tasks.json points it at the fork's language server on every folder open (trusted folders only). By hand:

python scripts/sync_slint_lsp.py     # --help for --local, --print-setting, --restore

It fetches the slint-lsp matching the pinned tag - so the preview and the firmware can never be on different versions of Slint - caches it in the gitignored .slint/, and writes slint.lspBinaryPath into .vscode/settings.json. Reload the window afterwards.

Important

.vscode/settings.json is generated and gitignored - every run rewrites it from the tracked .vscode/settings.shared.json. Project-wide settings go in that file; personal ones go in your VS Code user settings.

The preview draws arcs through the MoveTo/ArcTo fallback rather than the MCU fast path, so it is good for shape and layout and tells you nothing about how the panel will rasterise them.

Changing Slint itself

Renderer and language changes live in the fork at techfoundrynz/slint, not here. Going through a release to try one is about ten minutes a turn, so build the library locally instead:

python scripts/use_local_slint.py

This needs the Xtensa Rust toolchain (espup) and a checkout of the fork. It stages only the library, so cut a real release once the C++ API or the .slint language changes - the script's docstring has the rest of the caveats.

About

ESP32 based VESC remote control

Resources

Stars

35 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages