esp32-claude-robbie/docs/setup_guide.md

416 lines
9.1 KiB
Markdown

# Setup Guide - Claude's Eyes
## Voraussetzungen
### Hardware
- Waveshare ESP32-S3-Touch-LCD-2
- OV5640 Kamera mit 120° Weitwinkelobjektiv
- Freenove 4WD Car Kit
- USB-C Kabel zum Flashen
- Powerbank (oder LiPo Akku)
### Software
- [PlatformIO](https://platformio.org/) (VS Code Extension oder CLI)
- Python 3.9+
- Git
---
## Teil 1: ESP32 Firmware
### 1.1 Repository klonen
```bash
cd ~/Dokumente/programmierung/esp32
# Das Projekt ist bereits in claudes_eyes/
```
### 1.2 WiFi konfigurieren
Öffne `esp32_firmware/src/config.h` und ändere:
```cpp
#define WIFI_SSID "DEIN_WLAN_NAME"
#define WIFI_PASSWORD "DEIN_WLAN_PASSWORT"
#define API_KEY "dein_geheimer_api_key"
```
### 1.3 Firmware kompilieren
```bash
cd claudes_eyes/esp32_firmware
# Mit PlatformIO CLI:
pio run
# Oder in VS Code:
# PlatformIO Icon -> Build
```
### 1.4 Firmware flashen
1. ESP32-S3 via USB-C anschließen
2. Boot-Modus aktivieren (falls nötig: BOOT-Taste halten beim Einstecken)
```bash
pio run --target upload
# Monitor öffnen:
pio device monitor
```
### 1.5 Erfolg prüfen
Im Serial Monitor solltest du sehen:
```
╔═══════════════════════════════════════╗
║ Claude's Eyes v1.0 ║
║ Autonomous Exploration Robot ║
╚═══════════════════════════════════════╝
[Main] Initializing display...
[Main] Initializing camera...
[Camera] PSRAM found, using double buffering
...
╔═══════════════════════════════════════╗
║ SYSTEM READY ║
║ IP: 192.168.178.xxx ║
║ Waiting for Claude... ║
╚═══════════════════════════════════════╝
```
---
## Teil 2: Python Bridge
### 2.1 System-Dependencies installieren (ZUERST!)
PyAudio und pyttsx3 benötigen System-Bibliotheken, die VOR pip install installiert werden müssen:
**Debian/Ubuntu:**
```bash
sudo apt install portaudio19-dev python3-pyaudio espeak-ng
```
**Arch Linux/Manjaro:**
```bash
sudo pacman -S portaudio espeak-ng
```
**Fedora:**
```bash
sudo dnf install portaudio-devel espeak-ng
```
**Mac:**
```bash
brew install portaudio espeak
```
**Windows:**
```bash
pip install pipwin
pipwin install pyaudio
# espeak nicht nötig - pyttsx3 nutzt SAPI5
```
### 2.2 Python Environment einrichten
**Einfachste Methode (empfohlen):**
```bash
cd python_bridge
# Automatisches Setup - erstellt venv und installiert alles
./start_venv.sh --reset
# Bridge starten
./start_venv.sh --run
```
Das `start_venv.sh` Script:
- Erstellt eine neue virtuelle Umgebung
- Installiert alle Dependencies aus `requirements.txt`
- Versucht PyAudio zu installieren (optional, für STT)
- Aktiviert die venv automatisch
**Manuelle Installation (falls nötig):**
```bash
cd python_bridge
# Virtuelle Umgebung erstellen
python3 -m venv venv
# Aktivieren
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Dependencies installieren
pip install -r requirements.txt
# PyAudio separat (optional, für STT)
pip install pyaudio
```
**Falls PyAudio fehlschlägt (Debian/Ubuntu):**
```bash
# System-PyAudio nutzen
sudo apt install python3-pyaudio
# Dann venv mit System-Paketen neu erstellen
rm -rf venv
python3 -m venv venv --system-site-packages
source venv/bin/activate
pip install -r requirements.txt
```
**Flatpak/VS Code Problem:**
Wenn du VS Code als Flatpak nutzt, laufen Befehle im Container und sehen die System-Pakete nicht. Lösung: Terminal AUSSERHALB von VS Code nutzen, oder:
```bash
flatpak-spawn --host python3 chat_audio_bridge.py
```
### 2.3 Konfiguration anpassen
Kopiere die Konfiguration:
```bash
cp config.yaml config.local.yaml
```
Bearbeite `config.local.yaml`:
```yaml
esp32:
host: "192.168.178.XXX" # IP des Roboters
api_key: "dein_api_key" # Muss mit config.h übereinstimmen!
claude:
api_key: "" # Oder setze ANTHROPIC_API_KEY Environment Variable
```
### 2.4 Anthropic API Key
Erstelle einen API Key auf https://console.anthropic.com/
```bash
# Linux/Mac:
export ANTHROPIC_API_KEY="sk-ant-..."
# Windows (PowerShell):
$env:ANTHROPIC_API_KEY="sk-ant-..."
```
### 2.5 Bridge starten
**Mit start_venv.sh (empfohlen):**
```bash
# Normale Ausführung
./start_venv.sh --run
# Mit Debug-Logging
./start_venv.sh --run -d
# Nach Python-Update oder bei Problemen
./start_venv.sh --reset
```
**Manuell:**
```bash
source venv/bin/activate
python chat_audio_bridge.py
# Mit Debug-Logging:
python chat_audio_bridge.py -d
# Mit eigener Config:
python chat_audio_bridge.py -c config.local.yaml
```
### 2.6 Keyboard-Shortcuts während der Bridge läuft
| Taste | Funktion |
|-------|----------|
| **M** | Mikrofon Mute/Unmute - schaltet STT stumm |
| **Q** | Bridge beenden |
| **Ctrl+C** | Bridge beenden |
**Tipp:** Nutze Mute wenn du nicht willst dass Hintergrundgeräusche oder Gespräche mit anderen aufgenommen werden. Das Mikrofon nimmt sonst alles auf!
---
## Teil 3: Hardware zusammenbauen
### 3.1 Freenove Kit
1. Folge der Freenove Anleitung für den mechanischen Aufbau
2. **NICHT** den mitgelieferten ESP32 einbauen!
3. Motorverkabelung zum Shield notieren
### 3.2 Waveshare Board einbauen
1. Montiere das Waveshare Board anstelle des Freenove ESP32
2. Verbinde die Kabel gemäß `docs/gpio_mapping.md`
3. Kamera an den 24-Pin Connector anschließen
### 3.3 Verkabelung
```
Freenove Shield Waveshare Board
─────────────────────────────────────────
Motor A IN1 <---> GPIO 39
Motor A IN2 <---> GPIO 40
Motor A PWM <---> GPIO 41
Motor B IN1 <---> GPIO 42
Motor B IN2 <---> GPIO 2
Motor B PWM <---> GPIO 1
Servo 1 (Pan) <---> GPIO 38
Servo 2 (Tilt) <---> GPIO 37
US Trigger <---> GPIO 21
US Echo <---> GPIO 47
5V <---> 5V
GND <---> GND
```
### 3.4 Stromversorgung
- Option A: USB-C Powerbank am ESP32
- Option B: LiPo Akku am Waveshare Batterieanschluss
- Motoren können separate Stromversorgung brauchen
---
## Teil 4: Testen
### 4.1 Mock-Server (ohne Hardware!)
Du kannst die Bridge testen BEVOR die Hardware ankommt:
**Schritt 1: Testbilder vorbereiten**
Mach 10-20 Fotos aus deiner Wohnung und leg sie in `python_bridge/test_images/`:
```bash
cd python_bridge
mkdir -p test_images
# Kopiere JPG/PNG Dateien hierher
# z.B. 01_flur.jpg, 02_wohnzimmer.jpg, 03_kueche.jpg ...
```
**Schritt 2: Mock-Server starten**
```bash
cd python_bridge
./start_venv.sh # Aktiviert venv
python mock_esp32.py
```
Der Server läuft auf `http://localhost:5000`
**Schritt 3: Config anpassen**
In `config.yaml`:
```yaml
esp32:
host: "localhost"
port: 5000
api_key: "claudes_eyes_secret_2025"
```
**Schritt 4: Bridge starten (in neuem Terminal)**
```bash
cd python_bridge
./start_venv.sh --run
```
Claude "fährt" jetzt durch deine Testbilder! Bei jedem `forward` Befehl
wird das nächste Bild geladen.
---
### 4.2 API testen (echte Hardware)
```bash
# Im Browser:
http://192.168.178.XXX/
# Kamera testen:
http://192.168.178.XXX/api/capture?key=dein_api_key
# Status abrufen:
curl "http://192.168.178.XXX/api/status?key=dein_api_key"
# Motor testen:
curl -X POST "http://192.168.178.XXX/api/command?key=dein_api_key" \
-H "Content-Type: application/json" \
-d '{"action":"forward","speed":30,"duration_ms":500}'
```
### 4.3 TTS/STT testen
```bash
python tts_engine.py
python stt_engine.py
```
---
## Troubleshooting
### ESP32 bootet nicht
- USB-Kabel prüfen (manche sind nur zum Laden)
- Boot-Taste beim Einstecken halten
- COM-Port in PlatformIO prüfen
### Kamera funktioniert nicht
- Flexkabel prüfen (richtig eingesteckt?)
- PSRAM aktiviert? (sollte automatisch sein)
- Pin-Konflikte mit Display prüfen
### WiFi verbindet nicht
- SSID und Passwort prüfen
- 2.4 GHz Netzwerk? (5 GHz wird nicht unterstützt)
- Router in Reichweite?
### Motoren drehen nicht
- Stromversorgung prüfen
- GPIO-Pins korrekt verbunden?
- `ENABLE_MOTORS` in config.h auf `true`?
### TTS/STT funktioniert nicht
- PyAudio korrekt installiert?
- Mikrofon-Berechtigung erteilt?
- Audio-Ausgabegerät prüfen
- Bei "eSpeak not found": `sudo apt install espeak-ng`
- gTTS als Alternative (braucht Internet): In `config.yaml` setze `tts.engine: "gtts"`
### venv kaputt / "cannot execute: required file not found"
Das passiert wenn die venv mit einer anderen Python-Version erstellt wurde:
```bash
cd python_bridge
./start_venv.sh --reset # Erstellt venv komplett neu
```
### VS Code Flatpak sieht System-Pakete nicht
VS Code als Flatpak läuft in einem Container. Lösung:
- Normales Terminal nutzen (nicht VS Code Terminal)
- Oder: `flatpak-spawn --host ./start_venv.sh --run`
---
## Nächste Schritte
1. Hardware zusammenbauen
2. GPIO-Pins verifizieren und ggf. in `config.h` anpassen
3. Firmware flashen
4. Python Bridge einrichten
5. Ersten Testlauf machen
6. Claude die Wohnung erkunden lassen!
---
*Viel Spaß beim Erkunden! 🤖*