Files
didakta-rust-on-robots/README.md
2026-03-11 13:59:56 +01:00

90 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Rust on Robots - Workshop (Didacta Ed.)
Rust ist schnell, modern und hilft dabei, typische Embedded-Fehler früh zu vermeiden genau das, was man auf Robotern braucht.
In diesem Workshop gebe ich eine kurze, praxisnahe Einführung in Rust und wir steigen dann direkt in gemeinsame Übungen ein: selbst Rust schreiben, kleine Aufgaben lösen und anschließend Rust auf einem STM32 Bluepill flashen und testen.
Ideal für RoboCup-Interessierte aus der außerschulischen bzw. beruflichen Bildung, die schon einmal programmiert haben und Rust als Werkzeug für robuste Robotik ausprobieren wollen.
## Workshop Layout
Jede Übung hat ihren eigenen Ordner. Der Lernpfad ist nummeriert.
Jede Übung hat Aufgabe mit TODOs zum Lösen.
## Ablauf
0. Install Rust
1. Rust Basics - Hello World
2. Rust Basics - Typen
3. Rust Basics - Ownership/Borrow
4. kleines Desktop Programm
5. Embedded - no std
6. Embedded - LED Blinky
7. Embedded - Button Input
8. Embedded - Analog Readout
9. Embedded - EmbassyRS
# Hardware
- MCU board: STM32F103C8T6 Bluepill
- Debug probe: ST-Link (SWD)
## SWD Wiring
1. ST-Link `SWDIO` -> Bluepill `PA13`
2. ST-Link `SWCLK` -> Bluepill `PA14`
3. ST-Link `GND` -> Bluepill `GND`
4. ST-Link `3V3` -> Bluepill `3V3`
5. Optional: ST-Link `NRST` -> Bluepill `NRST`
## Workshop I/O Wiring
1. LED:
- Onboard LED an `PC13` (active-low)
2. Button:
- Externer Taster von `PA0` nach `GND`
- Interner Pull-up wird im Code aktiviert
3. Analog (optional):
- Poti/Sensor-Ausgang an `PA1`
- Sensorversorgung über `3V3` + `GND`
# Troubleshooting
## Host Setup
1. `rustup: command not found`
- Rust via rustup installieren.
2. `probe-rs: command not found`
- `cargo install probe-rs-tools`
3. Target fehlt
- `rustup target add thumbv7m-none-eabi`
## Probe / Flashing
1. `No probe found`
- USB-Kabel/Port prüfen
- ST-Link Treiber/udev prüfen
- `probe-rs list` erneut ausführen
2. `chip not found`
- Runner-String prüfen: `STM32F103C8`
3. `Permission denied` (Linux)
- udev-Regeln für ST-Link setzen und neu laden
## Runtime Behavior
1. LED blinkt nicht
- PC13 active-low beachten
- Versorgung prüfen
2. Button reagiert nicht
- Taster nach GND verdrahten
- `PA0` korrekt belegt?
3. Analogwerte ändern sich nicht
- Sensor/Poti wirklich an `PA1`
- Gemeinsame Masse sicherstellen
## Fallback in Session
Wenn eine Station nicht stabil läuft:
1. Mit funktionierender Nachbarn pairen.
2. `solution/` ausführen.
3. Später wieder auf `task/` zurückwechseln.