Rust based RC Transmitter firmware
- Rust 99.7%
- Linker Script 0.3%
| .cargo | Add todo list in the readme | |
| .idea | improve protocol and settings | |
| assets | fancier starting animation | |
| supren | update WGPUI dependency | |
| supren-build | basic st7789 and matrix gui support | |
| supren-gui | update WGPUI dependency | |
| vendor/mathjax-svg-rs | better settings handling in the gui | |
| xtask | improve gui support for windows | |
| .gitignore | update WGPUI dependency | |
| Cargo.lock | update WGPUI dependency | |
| Cargo.toml | Improve UI more | |
| CLAUDE.md | basic st7789 and matrix gui support | |
| LICENSE | Add MPL 2.0 license and check for it with xtask | |
| README.md | Update README.md | |
Supren
Supren comes from Esperanto meaning upwards.
Requirements
- Rust
thumbv8m.main-none-eabihftarget installed
- elf2uf2-rs
- Install elf2uf2-rs the repo lives at https://github.com/JoNil/elf2uf2-rs
- This is still a WIP tool and we are using a specific commit, TODO when it has a new release move to the release version
cargo install elf2uf2-rs --git https://github.com/JoNil/elf2uf2-rs --rev f14bf2d981772cd9fbe5bac33b685719caac1add --force
- imagemagick (optional)
- used to turn PNG into raw files, run the below example command
convert quetzalcoatlus.png -depth 1 gray:quetzalcoatlus.raw
Hardware
- Adafruit RP2350 Feather
- ST7789 ×ばつ320 RGB TFT display
- 2x MCP23017 i2c expanders
- NeoPixel status LED
- DFPlayer Mini audio module
- USB CDC serial
Building
- Built using cargo xtask
cargo xtaskOpens a menu that gives you a few build options- You can skip the menu by doing something like
cargo xtask build-release
TODO:
- Better build scripts (don't need to specify thumbv8, etc)
- Make the buildscripts less hardcoded
- xtask to simplify building
- Combine building and running picotool
- Automatically flash if possible
- Automatically copy the .uf2 file
- Automatically flash via debugger probe
- Show memory usage on compile like PX4/Betaflight
- Use less hardcoding for the PERSISTENT_FLASH estimated size (look in storage.rs)
- Buttons and switch support
- mcp23017 support
- button/switch mapping
- Make pins non-hardcoded (allow for compile time or runtime changing of pins used for various things)
- Simple ci/cd
- Setup forgejo actions self hosted on a dedicated pc (raspi or something) https://docs.codeberg.org/ci/actions/
- Automatically run unit tests and build before accepting merges
- Cargo nexttest for faster testing
- Simple UI framework
- Use Embedded Graphics Framebuf for better display performance
- Don't use framebuf as it actually runs slower and uses much more RAM
- Button navigation
- Check boxes
- Scrolling pages
- Highlighted item
- Proportional fonts
- Pop ups
- Use Embedded Graphics Framebuf for better display performance
- UI
- Setup wizard (stick calibration, etc)
- Help menu
- Bootup Screen
- Model select
- Mixer menu
- Global settings
- Stick display
- Battery Voltage
- ADC support
- Stick support
- Battery support
- Persistent memory
- A way to store and read global and profile settings
- A way to show the memory we will be using to store profiles
- Compile time errors if that memory usage is too high
- Audio support (DF Player)
- DF Player support
- Audio system for sounds, etc
- Dual core support
- Overclocking support
- ELRS support
- CRSF support
- Calibration wizard (stick middle, and ends, and which switch is mapped to what)
- Calibration button wizard
- Calibration stick wizard
- Output mixer
- ADC filtering
- USB
- USB HID support
- USB CDC support
- Serial Protocol
- UI for updating/changing settings
- Games
- multiplayer via bluetooth
- tetris
- base implementation
- multiplayer modes
- snake
- base implementation
- make animation smooth
- multiplayer modes
- uncle worm
- base implementation
- better main screen
- multiplayer
- 2048
- base implementation
- better use deadspace
- Block-dude
- original 11 levels
- additional bonus levels
- Speedrunner high scores
- chess
- base implementation
- multiplayer
- AI with different levels
- puzzles
- checkers
- base implementation
- multiplayer
- AI with different layers
- minesweeper
- arduventure
- ardynia
- mystic balloon
- dark & under 1/2
- pong
- picross
- sudoku
- breakout
- sokoban
- farkle
- samegame
- knight move
- arduman
- micro city
- Dazzle Dash
- Celeste pico 8 port