Wie die Steuerung der Cocktailmaschine aufgebaut ist.
Die Firmware läuft auf einem ESP32 und ist in Rust geschrieben. Sie macht zwei Dinge zugleich: Weboberfläche ausliefern und Schrittmotoren takten. Jede Aufgabe hat ihren eigenen Prozessorkern.
Die Motoren laufen so gleichmäßig, auch wenn gerade jemand die Weboberfläche lädt.
Mutex geschützten Speicher. Der Webserver liest ihn für die Anzeige.Die Oberfläche ist eine einzige HTML-Datei und fest in die Firmware eingebaut. Sie spricht eine kleine HTTP-Schnittstelle an, zum Beispiel:
Positionen, Zeiten und Getränke liegen als JSON im Flash des ESP32 und überstehen jeden Neustart. Neue Werte werden vor dem Speichern auf sichere Grenzen gekürzt.
Ein Getränk ist eine Liste „Slot × Portionen“. Daraus erzeugt die Firmware eine Befehlsfolge für beide Achsen:
(falls nötig) Z referenzieren → X referenzieren →
für jede Zutat: X zum Slot → Sync → pro Portion: Z hoch, halten, kurzer Rückhub
(bzw. Pumpe an) → Sync →
am Ende: Z herunter → Referenzfahrt → (optional Ausgabeposition).
An den Sync-Punkten warten die Achsen aufeinander. So wird nie dosiert, während der Schlitten fährt.
Rust (Edition 2021) ESP-IDF (std) esp-idf-svc embedded-svc serde / serde_json anyhow HTML / CSS / Vanilla-JS
| Datei | Aufgabe |
|---|---|
src/main.rs | Start, WLAN, Webserver, Pins |
src/servo.rs | Motorsteuerung, Sicherheit, Pumpe |
src/settings.rs | Einstellungen und Rezept → Befehlsfolge |
src/config.rs | Grenzen für Wege, Tempo und Rezepte |
src/servo-control-migrated.html | Die Weboberfläche |