Files
Claude CodeandClaude Opus 5 c72f4c1c00 docs: eigenes Foto im README statt des KOSMOS-Produktbilds
Christians eigene Aufnahme, entstanden beim Dreh des Videos. Damit
haengt am Repo kein fremdes Produktmaterial mehr und es laesst sich
ohne Vorbehalt weitergeben.

Breite von 360 auf 520, das Foto traegt mehr Bild als der Render.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 17:52:16 +00:00

145 lines
5.8 KiB
Markdown

<div align="center">
<img src="docs/img/proxi.jpeg" width="520" alt="Proxi auf dem Fußboden, das Gesicht leuchtet auf der LED-Matrix">
# Proxi AI
**Einen Spielzeug-Roboter mit natürlicher Sprache steuern.**
Ein Kind sagt „lass ihn tanzen" — eine KI macht daraus Befehle, der Roboter tanzt.
[![Lizenz: MIT](https://img.shields.io/badge/Lizenz-MIT-blue.svg)](LICENSE)
[![micro:bit V1 + V2](https://img.shields.io/badge/micro%3Abit-V1%20%2B%20V2-brightgreen.svg)](#)
[![Bluetooth LE](https://img.shields.io/badge/Bluetooth-LE-blue.svg)](#)
</div>
---
Der [KOSMOS Proxi](https://kosmos.de/proxi) ist ein Bausatz-Roboter mit einem
BBC micro:bit als Kopf. Ab Werk programmiert man ihn mit Blöcken im Browser und
spielt das Ergebnis per USB auf.
Dieses Projekt ersetzt das durch eine Firmware, die **einmal** geflasht wird und
danach über Bluetooth auf Textbefehle hört. Was die Befehle schickt, ist ihr
egal — ein Skript, ein `curl`, oder eben ein KI-Agent, der aus „mach mal was
Lustiges" eine Choreografie baut.
```
„Proxi, freu dich!"
KI-Agent ──HTTP──▶ Brücke (Python) ──Bluetooth LE──▶ Proxi
Raspberry Pi
```
## In drei Schritten
```bash
# 1. Firmware aufspielen: firmware/proxi-ai.hex auf das MICROBIT-Laufwerk kopieren
# 2. Brücke starten (irgendein Rechner mit Bluetooth)
pip install bleak
python3 bridge/proxi_bridge.py --serve 8080
# 3. Proxi etwas sagen lassen
curl -X POST localhost:8080/command \
-H 'Content-Type: application/json' \
-d '{"command":"DANCE:3"}'
```
> ⚠️ Die Brücke hat **keine Authentifizierung** — wer sie erreicht, fährt den
> Roboter. Im Heimnetz ist das gewollt und unproblematisch; gib den Port aber
> nicht nach außen frei. Details in [docs/SETUP.md](docs/SETUP.md).
Ausführlich: **[docs/SETUP.md](docs/SETUP.md)**
## Was Proxi kann
| | |
|---|---|
| 🚶 **Laufen** | `MOVE:FWD:1200` · `TURN:LEFT:700` — vor, zurück, drehen, Kurven |
| 💃 **Tanzen** | `DANCE:3` · `STAMP:2` · `SHAKE:2` — oder eigene Choreografien |
| 😀 **Gesichter** | `FACE:HAPPY` · `FACE:RAW:0:10:0:17:14` — 34 Symbole oder eigene Pixelbilder |
| 🎵 **Musik** | `MELODY:NYAN` · `TONE:880:200` — 20 Melodien oder Ton für Ton komponiert |
| 📝 **Text** | `TEXT:Hallo Ben` — läuft über das LED-Display |
| 👀 **Sehen** | `SENSOR:ALL` — Infrarot links und rechts, erkennt Hindernisse |
| 🛑 **Not-Stopp** | `STOP` — wirkt auch mitten in einer Bewegung. Taste A am Roboter immer |
Vollständig: **[docs/PROTOCOL.md](docs/PROTOCOL.md)**
## Warum das interessant ist
**Die Bausteine sind fest, das Gebaute nicht.** Eine KI kann keine neuen
Grundbefehle erfinden — aber aus `FACE:RAW` jedes denkbare Gesicht malen, aus
`TONE` eigene Melodien komponieren und aus `MOVE`/`TURN` Choreografien bauen,
die niemand vorgegeben hat. [`agent/proxi-control.md`](agent/proxi-control.md)
ist der fertige Skill dafür.
**Die Pin-Belegung stand nirgends.** Kosmos dokumentiert sie nicht. Sie steckte
in den mitgelieferten `.hex`-Dateien — MakeCode hängt jedes Projekt komprimiert
an die kompilierte Firmware an. [`tools/hex_source.py`](tools/hex_source.py)
holt sie wieder heraus und funktioniert mit jeder micro:bit-`.hex`, nicht nur
mit denen von Proxi.
**Zwei Fallstricke, die je einen Abend gekostet haben.** Die Frequenz für
`music.playTone()` muss ganzzahlig sein — als Kommazahl kracht der Lautsprecher,
der Aufruf hängt und die Bluetooth-Verbindung stirbt. Und der Ton muss
ausdrücklich auf Pin P0 gelegt werden, sonst läuft er über den Audio-Mixer
des micro:bit V2 und lässt den Funk nicht mehr zum Zug kommen. Beides steht mit
Messwerten in [docs/HARDWARE.md](docs/HARDWARE.md).
## Aufbau
| | |
|---|---|
| [`firmware/`](firmware) | MakeCode-Projekt (TypeScript) und fertige `.hex` für V1 und V2 |
| [`bridge/`](bridge) | Bluetooth-Brücke und HTTP-API — nur `bleak` als Abhängigkeit |
| [`agent/`](agent) | Skill-Definition: Alltagssprache → Befehle |
| [`tools/`](tools) | Quelltext aus `.hex` extrahieren, Musik-Tabellen prüfen |
| [`docs/`](docs) | Protokoll, Einrichtung, Hardware, Lizenzen |
## Stand
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.
## Lizenz
MIT — siehe [LICENSE](LICENSE). Die Hardware-Extension und die Notendaten
stammen aus fremden MIT-Projekten, ihre Vermerke stehen in
[THIRD-PARTY-NOTICES](THIRD-PARTY-NOTICES).
---
## Wer das gebaut hat
Ich bin **Christian Gärtner**, selbstständiger **KI-Dozent und Berater**. Ich
zeige Unternehmen und Teams, wie künstliche Intelligenz im Alltag tatsächlich
funktioniert — ohne Buzzword-Bingo, dafür an echten Projekten.
Dieses hier ist eins davon, und es zeigt ziemlich genau, was ich meine: Ein
KI-Agent steuert keine Tabellen, sondern einen Roboter, der im Kinderzimmer
herumläuft. Die Bausteine sind fest, was daraus gebaut wird nicht — dieselbe
Frage stellt sich in jedem Unternehmen, das überlegt, wo KI bei ihm konkret
etwas beiträgt. Und die Fallstricke stehen hier dokumentiert statt versteckt,
weil das der Teil ist, an dem Projekte in der Praxis hängenbleiben.
<div align="center">
**KI-Schulungen · KI-Beratung · KI-Projekte**
**[gaertner.onl](https://gaertner.onl)** — Künstliche Intelligenz verständlich gemacht
[**Termin vereinbaren**](https://gaertner.onl/termin/) · [Kontakt](https://gaertner.onl/kontakt/) · [Blog](https://gaertner.onl/blog/)
</div>
<!--
Dieser Ordner ist in sich geschlossen und lässt sich am Stück in ein
eigenes Repo kopieren.
docs/img/proxi.jpeg ist ein eigenes Foto und darf mit dem Repo weiter-
gegeben werden. Vorher stand hier das Produktbild von KOSMOS.
-->