Proxi AI — Spielzeug-Roboter mit natürlicher Sprache steuern

Firmware, Bluetooth-Brücke und Agent-Skill für den KOSMOS-Proxi: einmal
flashen, danach hört der Roboter über Bluetooth LE auf Textbefehle. Was die
Befehle schickt, ist ihm egal — ein Skript, ein curl, oder ein KI-Agent, der
aus "mach mal was Lustiges" eine Choreografie baut.

  firmware/   MakeCode-Projekt (TypeScript) und fertige .hex für V1 und V2
  bridge/     BLE-Brücke und HTTP-API, einzige Abhängigkeit ist bleak
  agent/      Skill-Definition: Alltagssprache -> Befehle
  tools/      Quelltext aus .hex extrahieren, Musik-Tabellen prüfen
  docs/       Protokoll, Einrichtung, Hardware, Lizenzen

Zwei Dinge, die sonst nirgends stehen und in docs/HARDWARE.md dokumentiert
sind: die Pin-Belegung des Roboters ist nicht öffentlich, sie wurde aus den
mitgelieferten .hex-Dateien rekonstruiert (tools/hex_source.py holt sie
heraus). Und der Ton braucht zwingend eine ganzzahlige Frequenz sowie Pin P0
— sonst kracht der Lautsprecher, der Aufruf hängt und die Bluetooth-
Verbindung stirbt.

Am echten Roboter durchgetestet: Verbindung, Sensoren, Display, 41 Sekunden
Musik am Stück, alle Bewegungsrichtungen, Musik und Fahren gleichzeitig,
Tanzfiguren, Not-Stopp mitten in der Bewegung, Autostart nach Neustart.

MIT-Lizenz. Die Hardware-Extension stammt von kaku111 (TobbieII) und die
Notendaten aus pxt-microbit, beide ebenfalls MIT — siehe THIRD-PARTY-NOTICES.
This commit is contained in:
2026-08-22 11:41:00 +00:00
commit 3905647b7f
26 changed files with 22414 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
# Lizenzen und Herkunft
## Eigener Code
**MIT**, Copyright (c) 2026 Christian Gärtner — siehe [`../LICENSE`](../LICENSE).
Betrifft alles in diesem Ordner außer den unten aufgeführten Teilen:
```
firmware/main.ts bridge/proxi_bridge.py tools/hex_source.py
firmware/build.sh bridge/*.txt tools/check_melodies.py
agent/proxi-control.md docs/
```
Damit steht das gesamte Projekt unter MIT — auch die beiden fremden
Bestandteile sind MIT-lizenziert, es gibt also keine Reibung zwischen den
Lizenzen. Die fremden Copyright-Vermerke müssen bei der Weitergabe erhalten
bleiben; sie stehen dafür in
[`../THIRD-PARTY-NOTICES`](../THIRD-PARTY-NOTICES).
## Fremder Code
### `firmware/proxi.ts` — Hardware-Extension
Die komplette Hardware-Anbindung (Motoren, IR-Sensoren) stammt nicht von uns.
| | |
|---|---|
| Ursprünglich | Extension **TobbieII** von [kaku111](https://github.com/kaku111/20190209) |
| Lizenz | MIT (`LICENSE.txt` im Repo, `"license": "MIT"` in dessen `pxt.json`) |
| Weg hierher | Kosmos liefert eine eingedeutschte Fassung als `custom.ts` in den `.hex`-Dateien der Beispielprogramme mit; von dort mit `tools/hex_source.py` extrahiert |
| Änderungen | keine — nur ein Herkunftshinweis als Kommentar im Kopf |
Proxi und Tobbie II sind derselbe Roboter unter verschiedenen Namen. Kosmos'
eigenes Programm `12_APP_Fernbedienung` hängt noch direkt an der
Original-Extension:
```json
"TobbieII": "github:kaku111/20190209#9c728847d1a08815275108ec42009211d57c2f0d"
```
Der MIT-Lizenztext des Originals liegt im Wortlaut in
[`../THIRD-PARTY-NOTICES`](../THIRD-PARTY-NOTICES).
### Notendaten in `firmware/main.ts`
Die Melodien in `melodyBuffer()` sind die 20 eingebauten Melodien von MakeCode,
Byte für Byte übernommen aus
[`pxt-microbit`](https://github.com/microsoft/pxt-microbit)
(`libs/core/melodies.ts`, MIT, Copyright Microsoft Corporation).
Warum kopiert statt benutzt: der eingebaute Melodie-Player spielt in einem
eigenen Fiber ab und stürzt ab, sobald ein anderer Fiber gleichzeitig den
Audio-Pin anfasst. Die Begründung steht ausführlich im Kopf des
Musik-Abschnitts von `main.ts`.
## Nicht mitveröffentlichen
Der Rest dieses Repos gehört Kosmos und ist **kein** Teil des
Proxi-AI-Projekts:
```
Kosmos-Programme/ Beispielprogramme (.hex und extrahierter Quelltext)
Proxi_Manual.pdf Bedienungsanleitung
logo.png proxi.png Produktbilder
```
Für ein öffentliches Repo wandert dieser Ordner am Stück mit — er ist in
sich geschlossen:
```
firmware/ bridge/ agent/ docs/ tools/
LICENSE THIRD-PARTY-NOTICES README.md
```
`docs/HARDWARE.md` ist so geschrieben, dass es auch ohne die übrigen
Kosmos-Programme verständlich bleibt, und `README.md` in diesem Ordner taugt
als Startseite des neuen Repos.