feat: Raspberry Pi 5 kitchen satellite — Wyoming voice satellite with ReSpeaker pHAT
Add full Pi 5 satellite setup with ReSpeaker 2-Mics pHAT for kitchen voice control via Wyoming protocol. Includes satellite_wrapper.py that monkey-patches WakeStreamingSatellite to fix three compounding bugs: - TTS echo suppression: mutes wake word detection while speaker plays - Server writer race fix: checks _writer before streaming, re-arms on None - Streaming timeout: auto-recovers after 30s if pipeline hangs - Error recovery: resets streaming state on server Error events Also includes Pi 5 hardware workarounds (wm8960 overlay, stereo-only audio wrappers, ALSA mixer calibration) and deploy.sh with fast iteration commands (--push-wrapper, --test-logs). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -64,6 +64,9 @@ ESP32-S3-BOX-3
|
||||
| Display Reset | GPIO48 | inverted |
|
||||
| Backlight | GPIO47 | LEDC PWM |
|
||||
| Left top button | GPIO0 | strapping pin — mute toggle / factory reset |
|
||||
| Sensor dock I2C SCL | GPIO40 | sensor bus (AHT-30, AT581x radar) |
|
||||
| Sensor dock I2C SDA | GPIO41 | sensor bus (AHT-30, AT581x radar) |
|
||||
| Radar presence output | GPIO21 | AT581x digital detection pin |
|
||||
|
||||
---
|
||||
|
||||
@@ -102,7 +105,18 @@ On-device `micro_wake_word` component with `hey_jarvis` model. Can optionally be
|
||||
|
||||
### Display
|
||||
|
||||
`ili9xxx` platform with model `S3BOX`. Uses `update_interval: never` — display updates are triggered by scripts on voice assistant state changes. Static 320×240 PNG images for each state are compiled into firmware.
|
||||
`ili9xxx` platform with model `S3BOX`. Uses `update_interval: never` — display updates are triggered by scripts on voice assistant state changes. Static 320×240 PNG images for each state are compiled into firmware. No text overlays — voice-only interaction.
|
||||
|
||||
Screen auto-dims after a configurable idle timeout (default 1 min, adjustable 1–60 min via HA entity). Wakes on voice activity or radar presence detection.
|
||||
|
||||
### Sensor Dock (ESP32-S3-BOX-3-SENSOR)
|
||||
|
||||
Optional accessory dock connected via secondary I2C bus (GPIO40/41, 100kHz):
|
||||
|
||||
- **AHT-30** (temp/humidity) — `aht10` component with variant AHT20, 30s update interval
|
||||
- **AT581x mmWave radar** — presence detection via GPIO21, I2C for settings config
|
||||
- **Radar RF switch** — toggle radar on/off from HA
|
||||
- Radar configured on boot: sensing_distance=600, trigger_keep=5s, hw_frontend_reset=true
|
||||
|
||||
### Voice Assistant
|
||||
|
||||
@@ -202,7 +216,7 @@ cd ~/gitea/homeai/homeai-esp32
|
||||
|
||||
## Known Constraints
|
||||
|
||||
- **Memory**: voice_assistant + micro_wake_word + display is near the limit. Do NOT add Bluetooth or LVGL widgets — they will cause crashes.
|
||||
- **Memory**: voice_assistant + micro_wake_word + display + sensor dock is near the limit. Do NOT add Bluetooth or LVGL widgets — they will cause crashes.
|
||||
- **WiFi**: 2.4GHz only. 5GHz networks are not supported.
|
||||
- **Speaker**: 1W built-in. Volume capped at 85% to avoid distortion.
|
||||
- **Display**: Static PNGs compiled into firmware. To change images, reflash via OTA (~1-2 min).
|
||||
|
||||
Reference in New Issue
Block a user