Aller au contenu
Aux fils des idées English
Waveshare · ESP32-P4 · 7 pouces

Waveshare ESP32-P4 7B en écran Home Assistant

Un écran tactile de 7 pouces en 1024 × 600, construit autour des mêmes puces que le Tab5. Plus grand, moins cher, avec moins de choses à bord. C'est l'écran de ma maison depuis le 14 octobre 2026.

L'accueil sur la Waveshare 7B en 1024 × 600 : horloge, cadre Ok Nabu, carte centrale et cinq cartes de prévisions
Écran
7", 1024 × 600
Processeur
ESP32-P4 à 400 MHz
Mémoire
32 Mo PSRAM, 32 Mo flash
Radio
ESP32-C6, Wi-Fi 2,4 GHz
Statut
Prise en charge depuis la 3.9.0

Ce qui change à l'écran

Le même micrologiciel que le Tab5, choisi pour cette carte à la compilation. L'accueil et chaque fenêtre gardent la mise en page du Tab5, ramenée à 1024 × 600 : mêmes places, mêmes proportions, en plus petit. Les grandes polices sont réduites, les petites gardent leur taille pour rester lisibles. Dans Home Assistant, la carte se présente comme un Tab5 : les packages et le blueprint la trouvent sans rien changer.

L'écran Home Assistant sur la Waveshare ESP32-P4 7B : l'accueil
L'accueil
Lumières Home Assistant sur la Waveshare 7B : ampoules, anneau de luminosité et couleurs
Les lumières
Tableau de bord énergie Home Assistant sur la Waveshare 7B : la course du soleil, les barres de production solaire et le meilleur créneau
L'énergie

Rendus du micrologiciel sur PC en 1024 × 600 : les mêmes pixels que sur la carte.

La configuration ESPHome

Pour partir de zéro avec ESPHome sur cette carte : un exemple complet et court, qui allume l'écran, le tactile, le Wi-Fi et le rétroéclairage, montre une température de Home Assistant et allume une lumière. Remplacez les deux entités par les vôtres.

waveshare-7b-home-assistant.yamlGitHub
# Waveshare ESP32-P4-WIFI6-Touch-LCD-7B avec ESPHome et Home Assistant : écran, tactile,
# Wi-Fi et rétroéclairage, une température de Home Assistant au centre et un bouton qui
# allume une lumière. Broches et réglages du micrologiciel « Écran Home Assistant » (3.9.0),
# qui tourne sur la carte ; cet exemple, lui, est compilé avec ESPHome 2026.9.1 mais pas
# essayé tel quel.
esphome:
  name: waveshare-7b
  friendly_name: Waveshare 7B
  # ESPHome 2026.9.0 plante en réglant l'écran d'un ESP32-P4 révision 3 : 2026.9.1 au moins.
  min_version: 2026.9.1

esp32:
  variant: esp32p4
  # ESP32-P4 révision 3 (de série), dont 400 MHz est la fréquence normale.
  engineering_sample: false
  cpu_frequency: 400MHz
  flash_size: 32MB
  framework:
    type: esp-idf
    advanced:
      enable_idf_experimental_features: true
      execute_from_psram: true

# À sa vitesse par défaut, la PSRAM donnait une trentaine de « lcd.dsi underrun » par seconde.
psram:
  mode: hex
  speed: 200MHz

# Le Wi-Fi est sur une deuxième puce, un ESP32-C6, reliée en SDIO.
# Son reset (GPIO54) est actif à l'état haut : false donne « sdmmc_card_init failed ».
esp32_hosted:
  variant: esp32c6
  active_high: true
  clk_pin: GPIO18
  cmd_pin: GPIO19
  d0_pin: GPIO14
  d1_pin: GPIO15
  d2_pin: GPIO16
  d3_pin: GPIO17
  reset_pin: GPIO54
  slot: 1
  sdio_frequency: 20MHz
  use_psram: true

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "Waveshare 7B secours"

captive_portal:

api:
  encryption:
    key: !secret api_encryption_key
  # Sans Home Assistant connecté, ESPHome redémarre au bout de 15 min par défaut.
  reboot_timeout: 60min

ota:
  - platform: esphome

logger:
  hardware_uart: USB_SERIAL_JTAG

# Bus du tactile GT911 et des puces audio.
i2c:
  - id: bsp_bus
    sda: GPIO7
    scl: GPIO8
    frequency: 400kHz

# Alimentation du lien MIPI-DSI de l'écran : LDO 3 à 2,5 V.
esp_ldo:
  - voltage: 2.5V
    channel: 3

# Écran EK79007 : le modèle d'ESPHome connaît la carte (reset GPIO33 compris).
display:
  - id: panel
    platform: mipi_dsi
    model: WAVESHARE-ESP32-P4-WIFI6-TOUCH-LCD-7B
    dimensions:
      width: 1024
      height: 600
    pixel_mode: 16bit
    color_order: RGB
    update_interval: never
    auto_clear_enabled: false

# Le code de Waveshare dit le reset du GT911 non relié, mais il est sur GPIO23 : sans lui
# et sans les deux miroirs, un seul appui reconnu en cinq minutes.
touchscreen:
  - id: touch
    platform: gt911
    reset_pin: GPIO23
    update_interval: 50ms
    transform:
      swap_xy: false
      mirror_x: true
      mirror_y: true

# Rétroéclairage : sortie inversée, à 5 kHz.
output:
  - platform: ledc
    id: backlight_pwm
    pin:
      number: GPIO32
      inverted: true
    frequency: 5000Hz

light:
  - platform: monochromatic
    id: backlight
    name: "Rétroéclairage"
    output: backlight_pwm
    restore_mode: RESTORE_DEFAULT_ON

# À remplacer par vos entités. Pour le bouton, cochez dans Home Assistant « Autoriser
# l'appareil à effectuer des actions Home Assistant » (options de l'appareil ESPHome).
sensor:
  - platform: homeassistant
    id: living_room_temperature
    entity_id: sensor.temperature_salon
    on_value:
      - lvgl.label.update:
          id: temperature_label
          text:
            format: "%.1f °C"
            args: [x]

# Les polices intégrées à LVGL n'ont pas les accents : Roboto, téléchargée à la compilation
# (il ne lui manque que des accents combinants, d'où ignore_missing_glyphs).
font:
  - file: "gfonts://Roboto"
    id: font_text
    size: 28
    glyphsets: [GF_Latin_Core]
    ignore_missing_glyphs: true
  - file: "gfonts://Roboto@700"
    id: font_big
    size: 64
    glyphsets: [GF_Latin_Core]
    ignore_missing_glyphs: true

lvgl:
  displays: [panel]
  touchscreens: [touch]
  # La dalle est montée à l'envers par rapport au pilote : 180 pour la carte à l'endroit,
  # 0 si vous la montez à l'envers. Le tactile suit tout seul.
  rotation: 180
  color_depth: 16
  byte_order: little_endian
  buffer_size: 100%
  default_font: font_text
  pages:
    - id: home_page
      widgets:
        - label:
            id: temperature_label
            align: CENTER
            y: -70
            text: "--"
            text_font: font_big
        - button:
            align: CENTER
            y: 100
            width: 320
            height: 100
            widgets:
              - label:
                  align: CENTER
                  text: "Lumière du salon"
            on_click:
              - homeassistant.action:
                  action: light.toggle
                  data:
                    entity_id: light.salon

Validé et compilé avec ESPHome 2026.9.1 le 28/10/2026, pas essayé tel quel sur la carte : ses broches et ses réglages sont ceux du micrologiciel complet, qui tourne sur la mienne.

Chaque réglage particulier est expliqué en commentaire, et le problème qu'il règle juste en dessous. Deux choses n'y sont pas : le son (ES8311 et ampli, deux micros sur ES7210) et la remise à zéro complète après un redémarrage logiciel ; elles sont dans carte-waveshare-7b.yaml, le fichier de la carte dans le micrologiciel complet. La même carte sans Home Assistant : Vigie sur la 7B.

Les problèmes réglés à son arrivée

Tout est déjà corrigé dans le micrologiciel ; c'est utile si vous partez de zéro avec ESPHome sur cette carte.

  • Redémarrages en boucle : ESPHome 2026.9.0 plante en réglant l'écran des ESP32-P4 révision 3 ; il faut ESPHome 2026.9.1 au moins.
  • Pas de Wi-Fi : le reset de l'ESP32-C6 est actif à l'état haut, comme sur le Tab5.
  • Tactile presque mort : la dalle est montée à l'envers par rapport au pilote, et le contrôleur tactile GT911 doit être réinitialisé par GPIO 23.
  • Haut-parleur qui sature : le pilote ES8311 monte jusqu'à +32 dB ; le volume est plafonné à 0 dB et son bas de course relevé, pour un son propre sur tout le curseur.
  • Boucle de redémarrages après un redémarrage logiciel : le lien avec la puce Wi-Fi restait bloqué ; chaque redémarrage remet maintenant à zéro tout le cœur numérique.

Ce que la carte n'a pas

  • Pas de capteur de mouvement : les huit jeux ne sont pas inclus par défaut (on peut les ajouter en compilant soi-même, mais ceux qui se jouent en inclinant ne répondent pas).
  • Pas de puce d'horloge : l'heure vient du réseau à chaque démarrage ; après une coupure de courant, le réveil attend le Wi-Fi.
  • Un connecteur de batterie, mais pas de jauge : ce micrologiciel ne lit pas encore la batterie.
  • Pas de prise casque, et le Wi-Fi en 2,4 GHz seulement.

L'installer

  1. Branchez sur l'ordinateur le port USB-C de l'ESP32-P4 et ouvrez la page d'installation dans Chrome ou Edge.
  2. Choisissez « Waveshare ESP32-P4 7B », installez, puis donnez le Wi-Fi.
  3. Suivez les mêmes étapes Home Assistant que pour un Tab5.

Les mises à jour arrivent ensuite par Home Assistant, depuis le dossier de cette carte. Carte montée à l'envers ? Le réglage « Screen direction » de l'appareil dans Home Assistant retourne l'image aussitôt, sans recompiler. Elle remplace un Tab5 ? Désactivez d'abord l'ancien appareil dans Home Assistant.

Pas encore essayé depuis la page d'installation sur une vraie carte : la mienne a reçu le micrologiciel publié par une mise à jour sans fil. Pas vérifiés non plus sur la carte : le micro et le mot d'éveil, les caméras. Si vous l'essayez, racontez-le dans les Discussions.

Mesuré sur la carte

  • Démarrage : rétroéclairage à 1 s, première image à 4,8 s, Wi-Fi à 9,4 s.
  • Consommation à l'entrée USB : 1,56 W sur l'accueil à la luminosité habituelle (multimètre USB, moyenne à 100 mesures par seconde), 3,1 W écran à 100 %, 1,2 W écran éteint.
  • Composants : écran MIPI-DSI EK79007, tactile GT911, son ES8311 et ampli NS4150B, deux micros sur ES7210, 17 GPIO libres sur deux connecteurs.

Le détail (broches, schéma, méthode de mesure) est dans la documentation de la 7B. La tablette d'origine : le M5Stack Tab5 et ses versions.