Constructeur ESP32-S3-BOX-3

VérifiéPrudence

Fournit des modèles complets de matériel, un recueil de lambdas d'affichage, des modèles d'interaction tactile et des configurations d'assistant vocal pour ESP32-S3-BOX-3.

Spar Skills Guide Bot
DeveloppementAvancé
22/07/2026
Claude Code
#esphome#esp32-s3-box-3#voice-assistant#display-lambda#i2s-audio

Recommandé pour

Synthèse automatique

Skill spécialisé pour configurer le kit ESP32-S3-BOX-3 sous ESPHome : modèles matériels complets, lambdas d'affichage ILI9xxx, tactile GT911, pipeline audio I²S (ES7210/ES8311) et assistant vocal.

Points forts

  • Fournit des modèles prêts à l'emploi (base matérielle, assistant vocal, UI tactile multi-pages, lecteur audio)
  • Inclut un cookbook de lambdas d'affichage et des patterns d'interaction tactile (boutons, swipes, gestes)
  • Documente le pinout du BOX-3 et le dépannage des erreurs typiques (PSRAM non détectée, buffer DMA I²S, tactile muet, scintillement)
  • Couvre l'intégration micro_wake_word avec Home Assistant Assist et le ducking audio

Limites

  • Ne concerne que le matériel ESP32-S3-BOX-3, pas les autres cartes ESP32
  • Suppose une connaissance préalable d'ESPHome et du framework ESP-IDF
  • Les modèles peuvent nécessiter des ajustements selon la version d'ESPHome (ex. changement PSRAM en 2025.2+)
Quand l'utiliser

À utiliser dès que vous créez ou déboguez un projet ESP32-S3-BOX-3 sous ESPHome avec affichage, tactile, audio ou assistant vocal.

Quand l'éviter

Pour une configuration ESPHome générique ou un autre microcontrôleur, orientez-vous plutôt vers le skill esphome-config-helper.

Analyse de sécurité

Prudence
Score qualité82/100

No destructive, exfiltrating, or obfuscated behavior appears in the content: it consists of ESPHome YAML templates, C++ display lambdas, and hardware pin/audio guidance. The only execution surface is Bash running a local flashing script plus WebFetch, both of which are legitimate for an embedded-hardware build/flash workflow but are powerful enough to warrant listing as a caution, especially since the bundled flash script's contents cannot be verified from the SKILL.md itself.

Points d'attention
  • •Declares and instructs use of Bash to execute a bundled shell script (scripts/flash-box3.sh) whose contents are not shown/auditable here
  • •Declares WebFetch permission but the document gives no explicit URL allowlist or described use case
  • •Workflow instructs copying template files and editing WiFi credentials; correctly steers credentials toward secrets.yaml rather than hardcoding
Comment cette analyse est faite

Exemples

Fresh BOX-3 base setup
Create a complete ESPHome config for my ESP32-S3-BOX-3 from scratch, with PSRAM octal mode, ILI9342C display, GT911 touch, and the ES7210/ES8311 audio bus using ESP-IDF.
Voice assistant with wake word
Set up a box-3 voice assistant with micro_wake_word using okay_nabu, wired to Home Assistant Assist, plus audio ducking so the speaker mutes while listening.
Debug PSRAM / touch / audio errors
My BOX-3 logs show 'PSRAM not detected' and 'Touch not responding' after flashing — walk me through the correct PSRAM and GT911 settings, and check my I2S DMA buffer config for audio popping.

name: esphome-box3-builder description: This skill should be used when the user asks to "configure esp32-s3-box-3", "set up box-3", "create box-3 voice assistant", "display lambda on box-3", "configure ili9xxx display", "set up gt911 touch", "configure i2s audio", "es7210 microphone", "es8311 speaker", "box-3 audio pipeline", or mentions error messages like "I2S DMA buffer error", "Touch not responding", "Display flicker", "Audio popping", "PSRAM not detected". Provides complete ESP32-S3-BOX-3 hardware templates, display lambda cookbook, touch patterns, and voice assistant configurations. version: 0.1.0 allowed-tools: Read, Write, Edit, Grep, Glob, WebFetch, Bash

ESP32-S3-BOX-3 Builder Skill

Specialist skill for ESP32-S3-BOX-3 hardware providing complete configuration templates, display lambda cookbook, touch interaction patterns, and voice assistant integration for complex audio/display/touch projects.

Purpose

This skill accelerates ESP32-S3-BOX-3 development by providing:

  • Complete hardware initialization templates
  • Display lambda rendering cookbook (text, shapes, icons, multi-page UI)
  • Audio pipeline recipes (I²S, ES7210 ADC, ES8311 DAC)
  • Touch interaction patterns (buttons, swipes, gestures)
  • Voice assistant integration (wake word, ducking, Home Assistant Assist)
  • Material Design UI components
  • Hardware-specific troubleshooting and workarounds

Use this skill for ESP32-S3-BOX-3 specific projects. For general ESPHome configuration, use the esphome-config-helper skill instead.

When to Use This Skill

Use this skill when:

  • Configuring ESP32-S3-BOX-3 hardware from scratch
  • Implementing display lambda rendering (ILI9xxx)
  • Setting up I²S audio pipeline (ES7210, ES8311)
  • Configuring GT911 touch interaction
  • Building voice assistant with wake word detection
  • Creating multi-page touchscreen UI
  • Troubleshooting BOX-3 specific issues

Delegate to specialized ESPHome agents for:

  • Deep technical explanations (esphome-box3 agent)
  • General ESPHome concepts (esphome-core agent)
  • Network configuration (esphome-networking agent)

Hardware Overview

The ESP32-S3-BOX-3 is a complete development kit with:

  • Module: ESP32-S3-WROOM-1 (16MB Flash, 16MB Octal PSRAM)
  • Display: ILI9342C (320x240, SPI, PSRAM required for 16-bit color)
  • Touch: GT911 capacitive (I²C, multi-touch)
  • Microphone: ES7210 4-channel ADC (I²S, 16kHz)
  • Speaker: ES8311 mono DAC (I²S, 48kHz, requires MCLK)
  • Sensors: BME688 environmental, ICM-42607-P IMU

Critical Requirements:

  • PSRAM must be explicitly configured (2025.2+ breaking change)
  • ESP-IDF framework recommended (better audio/display support)
  • Shared I²S bus for microphone and speaker
  • Reset pin GPIO48 shared between display and touch

For complete hardware specifications, consult:

  • references/box3-pinout.md - Complete GPIO pinout, component addresses, known issues

Configuration Templates

Available Templates

Located in templates/ directory:

  1. box3-base.yaml - Hardware initialization foundation

    • ESP-IDF framework with PSRAM octal mode
    • I²S audio bus configuration
    • ES7210 ADC and ES8311 DAC setup
    • ILI9xxx display basic config
    • GT911 touch initialization
    • Use as foundation for all BOX-3 projects
  2. box3-voice.yaml - Complete voice assistant

    • micro_wake_word with okay_nabu
    • Voice assistant pipeline (wake word → HA Assist → TTS)
    • Audio ducking with Nabu media player
    • State management for voice interaction
    • Use for voice-controlled BOX-3 projects
  3. box3-display-ui.yaml - Multi-page touchscreen UI

    • 3-page navigation system
    • Touch zone binary sensors
    • Display lambda with Material Design
    • Page state management with globals
    • Use for interactive touchscreen projects
  4. box3-audio-player.yaml - Music/media player

    • Media player entity
    • Volume control with touch buttons
    • Display showing playback status
    • Play/pause/skip controls
    • Use for audio playback projects

Using Templates

To use a template:

  1. Read the appropriate template file
  2. Customize device name, WiFi credentials
  3. Adjust UI elements, colors, fonts as needed
  4. Flash using BOX-3 specific script (see Scripts section)

Template Workflow:

# 1. Read template
cat .claude/skills/esphome-box3-builder/templates/box3-voice.yaml

# 2. Copy to project
cp .claude/skills/esphome-box3-builder/templates/box3-voice.yaml my-box3.yaml

# 3. Edit device-specific values
# - Update device name
# - Set WiFi credentials (use secrets.yaml)
# - Customize wake word model if desired
# - Adjust display text and layout

# 4. Flash with BOX-3 script
./.claude/skills/esphome-box3-builder/scripts/flash-box3.sh my-box3.yaml

Display Lambda Rendering

Lambda Rendering Cookbook

For complete display lambda examples and patterns, consult:

  • references/display-lambdas.md - Display lambda cookbook
    • Text rendering (fonts, alignment, wrapping)
    • Shapes (rectangles, circles, lines)
    • Icons (Material Design Icons integration)
    • Images and sprites
    • Animation patterns
    • Multi-page navigation
    • Coordinate system and positioning

Quick Display Patterns

Basic Text Display:

it.printf(160, 10, id(roboto_16), TextAlign::TOP_CENTER, "ESP32-S3-BOX-3");

Filled Rectangle (Card Background):

it.filled_rectangle(10, 30, 300, 80, COLOR_PRIMARY);

Multi-Line Text:

it.printf(20, 40, id(roboto_12), "Temperature: %.1f°C", id(temp_sensor).state);
it.printf(20, 60, id(roboto_12), "Humidity: %.1f%%", id(humidity_sensor).state);

Icon Rendering (Material Design Icons):

// Requires MDI font in assets/fonts/
it.printf(30, 100, id(mdi_icons_24), "\U000F0425");  // thermometer icon

Material Design UI Components

For Material Design color schemes, typography, and layouts, consult:

  • references/material-design.md - Material Design UI guide
    • Color palette (primary, accent, background, text)
    • Typography hierarchy (headlines, body, captions)
    • Card layouts and spacing
    • Icon integration
    • Touch zone sizing (minimum 48x48 pixels)

Font Integration

Required fonts are in assets/fonts/:

  • Roboto-Regular.ttf - Material Design typography
  • materialdesignicons-webfont.ttf - MDI icon font

Font Configuration:

font:
  - file: .claude/skills/esphome-box3-builder/assets/fonts/Roboto-Regular.ttf
    id: roboto_16
    size: 16

  - file: .claude/skills/esphome-box3-builder/assets/fonts/materialdesignicons-webfont.ttf
    id: mdi_icons_24
    size: 24
    glyphs: [
      "\U000F0425",  # thermometer
      "\U000F050F",  # water-percent
      "\U000F0493",  # play
      "\U000F03E4",  # pause
    ]

Icon codepoints reference: assets/fonts/mdi-codepoints.txt

Touch Interaction Patterns

Touch Configuration

For complete touch patterns and gesture detection, consult:

  • references/touch-patterns.md - Touch interaction patterns
    • Binary sensor zones for buttons
    • Swipe gesture detection
    • Long press patterns
    • Multi-touch handling
    • Page navigation integration

Quick Touch Patterns

Touch Button Zone:

binary_sensor:
  - platform: touchscreen
    name: "Button 1"
    x_min: 10
    x_max: 150
    y_min: 200
    y_max: 230
    on_press:
      - logger.log: "Button 1 pressed"

Page Navigation:

binary_sensor:
  - platform: touchscreen
    name: "Next Page"
    x_min: 240
    x_max: 310
    y_min: 200
    y_max: 230
    on_press:
      - lambda: |-
          id(current_page) = (id(current_page) + 1) % 3;
          id(box3_display).show_page(id(current_page));

Audio Pipeline Configuration

I²S Audio Setup

Shared I²S Bus (LRCLK=GPIO45, BCLK=GPIO17, MCLK=GPIO2):

i2s_audio:
  - id: i2s_shared
    i2s_lrclk_pin: GPIO45
    i2s_bclk_pin: GPIO17
    i2s_mclk_pin: GPIO2

ES7210 Microphone ADC (16kHz, GPIO16):

audio_adc:
  - platform: es7210
    id: es7210_adc
    bits_per_sample: 16bit
    sample_rate: 16000
    mic_gain: 24DB
    address: 0x40

microphone:
  - platform: i2s_audio
    adc_type: external
    i2s_din_pin: GPIO16
    sample_rate: 16000

ES8311 Speaker DAC (48kHz, GPIO15, requires MCLK):

audio_dac:
  - platform: es8311
    id: es8311_dac
    bits_per_sample: 16bit
    sample_rate: 48000
    use_mclk: true  # Required
    address: 0x18

speaker:
  - platform: i2s_audio
    dac_type: external
    i2s_dout_pin: GPIO15
    sample_rate: 48000
    buffer_duration: 100ms  # Prevents audio popping

Voice Assistant Integration

Wake Word Configuration

micro_wake_word (on-device detection):

micro_wake_word:
  models:
    - model: okay_nabu  # or hey_jarvis, alexa, hey_mycroft

Voice Assistant Pipeline:

voice_assistant:
  microphone: box_mic
  speaker: box_speaker
  noise_suppression_level: 1
  auto_gain: 31dBFS
  volume_multiplier: 2.0

  on_listening:
    - logger.log: "Listening..."

  on_tts_start:
    - logger.log: "Speaking..."

  on_end:
    - logger.log: "Done"

Audio Ducking

Nabu Media Player (30dB reduction during voice):

media_player:
  - platform: nabu
    name: "Media Player"
    on_play:
      - media_player.volume_set:
          volume: 70%  # Reduce to 70% when voice assistant active

Scripts and Utilities

BOX-3 Flashing Script

The validation and flashing utility provides BOX-3 specific workflow:

Script: scripts/flash-box3.sh

Usage:

# Validate, compile, and flash BOX-3
./.claude/skills/esphome-box3-builder/scripts/flash-box3.sh my-box3.yaml

# The script runs:
# 1. Validates configuration
# 2. Compiles firmware with BOX-3 optimizations
# 3. Flashes via USB (auto-detects /dev/ttyACM0 or /dev/ttyUSB0)
# 4. Monitors logs after flash

Troubleshooting BOX-3 Issues

Common BOX-3 Errors

I²S DMA Buffer Error:

  • Solution: Increase buffer_duration to 100ms in speaker config

Touch Not Responding:

  • Solution: Check GPIO48 reset pin (inverted: true, shared with display)

Display Flicker:

  • Solution: Ensure PSRAM enabled with color_palette: NONE

Audio Popping:

  • Solution: Verify sample rates (16kHz mic, 48kHz speaker), increase buffer_duration

PSRAM Not Detected:

  • Solution: Confirm psram: { mode: octal, speed: 80MHz } in config

Voice Assistant Crashes:

  • Solution: Disable Bluetooth/BLE completely (causes crashes on ESP32-S3)

UI Freezing During OTA:

  • Solution: Add execute_from_psram: true in esp32.framework.advanced

For complete BOX-3 troubleshooting, consult:

  • esphome-box3 agent (deep technical issues)
  • references/box3-pinout.md (hardware-specific known issues section)

Configuration Best Practices

PSRAM Configuration (Critical)

Always include explicit PSRAM config (2025.2+ requirement):

psram:
  mode: octal  # BOX-3 has 16MB Octal PSRAM
  speed: 80MHz

ESP-IDF Framework (Recommended)

Use ESP-IDF over Arduino for BOX-3:

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf
    advanced:
      execute_from_psram: true  # Prevents UI freezing during OTA

Display Configuration

16-bit color requires PSRAM:

display:
  - platform: ili9xxx
    model: S3BOX
    color_palette: NONE  # Requires PSRAM (2025.2+)
    # ...

Touch Configuration

Shared reset pin with display:

touchscreen:
  - platform: gt911
    reset_pin:
      number: GPIO48
      inverted: true  # Shared with display reset
    interrupt_pin:
      number: GPIO3
      ignore_strapping_warning: true

Integration with Other Skills and Agents

When to Use Other Resources

  • General ESPHome config: Use esphome-config-helper skill

    • Basic device setup
    • WiFi configuration
    • Common sensors (not BOX-3 specific)
  • Deep BOX-3 technical questions: Delegate to esphome-box3 agent

    • Audio pipeline architecture
    • Display lambda API deep dive
    • Voice assistant tuning
    • Hardware-specific optimizations
  • ESPHome core concepts: Delegate to esphome-core agent

    • YAML structure and organization
    • Substitutions and secrets
    • Package management

Additional Resources

Reference Files

For detailed BOX-3 information, consult:

  • references/box3-pinout.md - Complete ESP32-S3-BOX-3 hardware reference with GPIO pinout, I²C addresses, component specifications, and known issues
  • references/display-lambdas.md - Comprehensive display lambda cookbook with text rendering, shapes, icons, images, animation, and multi-page navigation patterns
  • references/touch-patterns.md - Touch interaction patterns including button zones, swipe gestures, long press detection, and page navigation integration
  • references/material-design.md - Material Design UI guide with color palette, typography hierarchy, card layouts, icon usage, and touch zone sizing guidelines

Template Files

Complete working BOX-3 configurations in templates/:

  • box3-base.yaml - Hardware initialization foundation
  • box3-voice.yaml - Voice assistant with wake word
  • box3-display-ui.yaml - Multi-page touchscreen UI
  • box3-audio-player.yaml - Music/media player

Asset Files

Material Design resources in assets/:

  • fonts/Roboto-Regular.ttf - Material Design typography
  • fonts/materialdesignicons-webfont.ttf - MDI icon font
  • fonts/mdi-codepoints.txt - Icon codepoint reference

Utility Scripts

Validation and flashing tools in scripts/:

  • flash-box3.sh - BOX-3 specific validation and flashing workflow

Quick Start Workflow

For new ESP32-S3-BOX-3 project:

  1. Select template based on project type (base, voice, display-ui, audio-player)
  2. Copy template to project directory
  3. Customize configuration:
    • Update device name and WiFi credentials
    • Adjust display text, colors, layout
    • Modify touch zones for custom UI
    • Configure wake word model if using voice
  4. Add custom features using references (display-lambdas.md, touch-patterns.md)
  5. Validate and flash using scripts/flash-box3.sh
  6. Monitor logs and troubleshoot if needed using reference guides

For adding to existing BOX-3 config:

  1. Consult references for specific feature (display, touch, audio)
  2. Copy relevant code from templates
  3. Integrate with existing config
  4. Test incrementally (add one feature at a time)
  5. Validate before final flash

This skill provides rapid BOX-3 development for complex audio/display/touch projects. For general ESPHome configuration or deep technical questions, use the esphome-config-helper skill or delegate to ESPHome specialist agents.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/esp32-s3-box-3-builder-mrwakbqr/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/esp32-s3-box-3-builder-mrwakbqr' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/esp32-s3-box-3-builder-mrwakbqr/download' --output '.skill-downloads/esp32-s3-box-3-builder-mrwakbqr/SKILL.md.part' && mv '.skill-downloads/esp32-s3-box-3-builder-mrwakbqr/SKILL.md.part' '.skill-downloads/esp32-s3-box-3-builder-mrwakbqr/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Edit, Grep, Glob, WebFetch, Bash

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/esp32-s3-box-3-builder-mrwakbqr/SKILL.md' && test -s '.skill-downloads/esp32-s3-box-3-builder-mrwakbqr/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/esphome-box3-builder' && cp -R '.skill-downloads/esp32-s3-box-3-builder-mrwakbqr' '.claude/skills/esphome-box3-builder'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/esp32-s3-box-3-builder-mrwakbqr'

openskills read 'esp32-s3-box-3-builder-mrwakbqr'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/esp32-s3-box-3-builder-mrwakbqr/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires