291 lines
5.9 KiB
Markdown
291 lines
5.9 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 Python Environment einrichten
|
|
|
|
```bash
|
|
cd claudes_eyes/python_bridge
|
|
|
|
# Virtuelle Umgebung erstellen (empfohlen)
|
|
python -m venv venv
|
|
|
|
# Aktivieren
|
|
# Linux/Mac:
|
|
source venv/bin/activate
|
|
# Windows:
|
|
venv\Scripts\activate
|
|
|
|
# Dependencies installieren
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 2.2 PyAudio installieren (für Mikrofon)
|
|
|
|
**Linux:**
|
|
```bash
|
|
sudo apt install python3-pyaudio portaudio19-dev
|
|
pip install pyaudio
|
|
```
|
|
|
|
**Windows:**
|
|
```bash
|
|
pip install pipwin
|
|
pipwin install pyaudio
|
|
```
|
|
|
|
**Mac:**
|
|
```bash
|
|
brew install portaudio
|
|
pip install pyaudio
|
|
```
|
|
|
|
### 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
|
|
|
|
```bash
|
|
# Normal:
|
|
python bridge.py
|
|
|
|
# Mit eigener Config:
|
|
python bridge.py --config config.local.yaml
|
|
|
|
# Simulation ohne Hardware:
|
|
python bridge.py --simulate
|
|
|
|
# Debug-Modus:
|
|
python bridge.py --debug
|
|
```
|
|
|
|
---
|
|
|
|
## 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 API testen
|
|
|
|
```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.2 Python Client testen
|
|
|
|
```bash
|
|
python esp32_client.py 192.168.178.XXX
|
|
```
|
|
|
|
### 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
|
|
|
|
---
|
|
|
|
## 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! 🤖*
|