90 lines
2.5 KiB
Markdown
90 lines
2.5 KiB
Markdown
# 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.
|