Aller au contenu

Carte Waveshare 7B (expérimentale)

Le même firmware tourne aussi sur une deuxième carte, la Waveshare ESP32-P4-WIFI6-Touch-LCD-7B : un écran tactile de 7 pouces en 1024×600, construit autour des mêmes puces que le Tab5 (un ESP32-P4, un ESP32-C6 pour le Wi-Fi, un ES7210 pour les micros). Un écran moins cher et plus grand, avec moins de choses à bord : pas de capteur de mouvement, pas de puce d'horloge, pas de jauge de batterie (elle a bien un connecteur de batterie, dont ce firmware ne se sert pas encore).

Statut : expérimental. La carte de l'auteur est l'écran de tous les jours de sa maison depuis le 14/10/2026 : écran, tactile, rétroéclairage, son et Wi-Fi marchent, et Home Assistant la voit comme un Tab5. Une seule carte, cela dit, et une page de l'énergie n'est pas encore adaptée à son écran (ce qui reste) ; les jeux sont laissés de côté par défaut. Si vous l'essayez, racontez ce que ça a donné dans Discussions → Hardware compatibility : ça aide beaucoup.

Le choix de la carte tient en une ligne à la compilation (ADR-0061) ; sur le Tab5, rien ne change.

Ce qui change à l'écran

L'accueil reprend la mise en page du Tab5, ramenée à 1024×600 : mêmes places, mêmes proportions, en plus petit. Les grosses polices sont réduites à 0,82 (à peu près 1024 / 1280 et 600 / 720), les petites gardent leur taille pour rester lisibles. Les popups font de même : chacun garde la mise en page du Tab5, en plus petit. Là où un texte de taille fixe ne tenait plus, il se décale un peu (les lignes des plantes perdent un peu de marge, une quantité de pluie perd son « mm » dans une colonne météo étroite, la touche « Marche / Arrêt » de la télécommande passe sur deux lignes) ; les images des caméras sont demandées en 720 × 405 au lieu de 960 × 540. Le détail est dans l'ADR-0061.

Accueil Lumières Énergie
L'accueil sur la 7B en 1024×600 : horloge, cadre Ok Nabu, carte centrale et les cinq cartes de prévisions Le popup Lumières sur la 7B : ampoules, anneau de luminosité et couleurs, tout dans l'écran Le popup Énergie sur la 7B, page Aujourd'hui : la course du soleil, les barres de production et le meilleur créneau

Ces images viennent du rendu hors tablette (le firmware qui tourne sur un PC, diagnostiquer), qui dessine chaque écran en 1024×600 à chaque changement du firmware : ce sont les mêmes pixels que sur la carte, sans le tactile. Le rendu de cette carte n'existe qu'en français.

Ce que la carte n'a pas, et ce que ça donne à l'écran :

  • Pas de capteur de mouvement (IMU), donc pas de jeux par défaut : le firmware de cette carte se compile sans les huit consoles (ADR-0065) : pas d'Arcade, pas de « Jeux » dans la roue de navigation ; le tap du bouton manette ouvre le lecteur audio (popup Musique) et son appui long la télécommande, les deux se changent dans le blueprint. Pour les compiler quand même, ajoutez tab5_jeux: oui à Tab5/user_entities.yaml (ou -s tab5_jeux oui) ; les jeux qui se jouent en inclinant (Fil d'Or, Arcanoïde, Coureur d'Or, Neon Apron) ne reçoivent alors rien, et aucun n'est mis en page pour le 1024×600.
  • Un connecteur de batterie, mais pas de jauge, et rien de lu par ce firmware : le schéma de Waveshare montre un connecteur pour une batterie lithium d'un élément (J4, MX1.25), un chargeur (ETA6098), un convertisseur qui remonte la batterie à 5 V et un interrupteur ON/OFF. Pas de jauge : la tension de la batterie n'arrive au P4 que par un pont diviseur (200 kΩ / 100 kΩ, un tiers de la tension) sur GPIO 20, et ce firmware ne la lit pas encore. L'icône de batterie, les réglages de charge et les entités de batterie restent donc, sans effet (« Tab5 Batterie » reste inconnue), et l'économie d'énergie « sur batterie » ne se déclenche jamais. Rien de cette page n'a été essayé avec une batterie.
  • 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. (La carte a un support de pile 1220 pour l'horloge propre du P4 ; ce firmware ne s'en sert pas. La carte recharge cette pile : n'y mettre qu'une ML1220 rechargeable, jamais une CR1220, qui n'est pas faite pour être chargée. Le wiki de Waveshare dit aussi : piles rechargeables seulement.)
  • Pas de détection de prise casque, pas d'alimentations commutables : leurs interrupteurs sont gardés pour que Home Assistant retrouve les mêmes entités, et ne font rien.

L'installer

Depuis le navigateur, depuis la 3.9.0-rc.6 (dans le canal bêta jusqu'à la prochaine stable) : sur la page d'installation, choisissez « Waveshare ESP32-P4 7B » et branchez le port USB-C de l'ESP32-P4 ; les étapes sont celles d'un Tab5 (installer le firmware). Ce firmware est compilé et signé par le projet avec ESPHome 2026.9.1, pour une carte montée dans un sens ou dans l'autre (« Sens de l'écran », plus bas) et sans les jeux ; ses mises à jour arrivent ensuite par Home Assistant, depuis le dossier de cette carte sur le site, jamais depuis celui du Tab5. Pas encore essayé depuis la page d'installation sur une vraie carte : celle de l'auteur tourne avec un firmware compilé sur un PC. Les étapes Home Assistant restent les mêmes (fichiers, ajout de l'appareil, sources, blueprint).

Ou compilez-le vous-même, pour ajouter les jeux : la page Compiler son propre firmware avec trois différences.

  1. ESPHome 2026.9.1 ou plus récent. La 2026.9.0 plante au démarrage de l'écran de l'ESP32-P4 révision 3 de cette carte (esphome#18984) ; en dessous de 2026.9.1, la compilation s'arrête avec un message clair. Le Tab5, lui, se compile toujours à partir de 2026.9.0.
  2. Une ligne dans Tab5/user_entities.yaml : tab5_carte: waveshare-7b (ou -s tab5_carte waveshare-7b en ligne de commande).
  3. Premier flash par l'USB : branchez sur l'ordinateur le port USB-C de l'ESP32-P4, puis esphome run tab5-ha-hmi.yaml. Le Wi-Fi exactement comme sur le Tab5 : le réseau ouvert « Tab5 Fallback AP » avec un téléphone, ou Improv depuis ESPHome Web. Les mises à jour suivantes passent par le Wi-Fi.

Avant le premier flash, si vous tenez à la démo d'usine, sauvegardez la flash avec esptool read-flash : sur la carte de l'auteur, chaque lecture redémarre la carte, et un bloc de 4 Ko à 0x37C000 n'a pas pu être lu (rempli de zéros dans la sauvegarde).

Carte montée dans l'autre sens ? La dalle est montée à l'envers par rapport au réglage par défaut de son pilote : le firmware tourne donc l'image de 180° en logiciel, à chaque image. Si vous montez la carte à l'envers, choisissez Retourné dans son réglage « Sens de l'écran » dans Home Assistant (page de l'appareil, carte Configuration ; réglages de la tablette) : l'image tourne aussitôt, sans redémarrer ni recompiler, et le choix est gardé d'un démarrage et d'une mise à jour à l'autre : le firmware publié sert les deux montages et la carte continue de recevoir ses mises à jour. L'image part alors vers la dalle telle que LVGL la dessine, sans l'étape des 180° : redessiner tout l'écran prend environ 69 ms au lieu de 83 ms (4 passes de chaque, sur la carte de l'auteur, le 16/10/2026, avec le même code compilé pour cet angle). Rien d'autre à changer : ESPHome tourne les appuis avec l'image, le tactile suit tout seul, même sur une carte neuve qui montre encore l'image à l'envers. Jusqu'à la 3.9.0-rc.6, il fallait carte_rotation: "0" à la compilation ; compiler avec -s carte_rotation 0 et choisir « Retourné » tournerait l'image deux fois (ADR-0069).

La carte s'annonce dans Home Assistant avec le nom et le modèle du Tab5 (tab5-ha-hmi) : les packages et le blueprint la trouvent sans rien changer. Elle remplace un Tab5 dans le même Home Assistant ? Désactivez d'abord l'entrée ESPHome du Tab5. Sinon Home Assistant garde les deux, ajoute un suffixe _2 aux entités de la nouvelle carte, et les envois continuent de partir vers l'ancienne.

Les problèmes rencontrés, et comment ils ont été réglés

Ce qui s'est passé sur la carte de l'auteur à son arrivée (14/10/2026), dans l'ordre. Tout est déjà dans le firmware : vous ne devriez pas les revoir.

Ce qu'on a vu Cause Correction
Redémarrages en boucle, puis mode sans échec ESPHome 2026.9.0 plante en réglant l'horloge de l'écran d'un P4 révision 3 (mipi_dsi_ll_set_phy_pllref_clock_source) ESPHome 2026.9.1 ; la compilation de cette carte refuse un ESPHome plus ancien
Pas de Wi-Fi, sdmmc_card_init failed le reset de l'ESP32-C6 était réglé actif bas esp32_hosted: active_high: true, comme sur le Tab5 (même câblage)
Une trentaine de « lcd.dsi underrun » par seconde (premier firmware d'essai) la PSRAM tournait à sa vitesse par défaut psram: speed: 200MHz
Tactile presque mort : un appui reconnu en 5 minutes, le curseur de luminosité figé la dalle est montée à l'envers par rapport au défaut du pilote, et le contrôleur tactile n'était jamais réinitialisé (le code de Waveshare dit que sa broche de reset n'est pas reliée) rotation: 180 dans LVGL, le GT911 inversé en X et en Y, et son reset sur GPIO 23, comme dans les autres configurations publiques qui marchent sur cette carte : depuis, chaque appui tombe au bon endroit
Le premier son n'était qu'un claquement le micro gardait le bus I2S que le haut-parleur partage avec lui ; la cause exacte du claquement n'a pas été établie le haut-parleur à 48 kHz comme les autres configurations, la règle du bus partagé du Tab5 (ADR-0010) : le son marche depuis ce soir-là
Le haut-parleur saturait complètement au volume 100 % (17/10/2026) le pilote ES8311 d'ESPHome écrit le volume tel quel dans le registre de volume du DAC : 0,75 = 0 dB, 1,0 = +32 dB de gain numérique (l'ES8388 du Tab5 s'arrête à 0 dB) volume_max: 75% sur le lecteur de la 7B : 100 % à l'écran ou dans Home Assistant vaut maintenant 0 dB ; à l'oreille, 100 % et 80 % saturaient, 75 % était propre
Le volume ne s'entendait que dans le dernier tiers de son curseur (18/10/2026) le registre de l'ES8311 donne 0,5 dB par pas (volume × 255, 0xBF = 0 dB) : avec le volume_min à 0 par défaut, 20 % valait ≈ −76 dB, muet alors que le lecteur disait « playing » volume_min: 40% : le bas du curseur vaut ≈ −44 dB, le haut reste à 0 dB. Testé à l'oreille le 19/10/2026 avec le haut-parleur du pack officiel : son très propre, aucune distorsion, progression bien équilibrée
Redémarrages en boucle après un redémarrage logiciel (16/10/2026, après quelques redémarrages depuis Home Assistant), Wi-Fi jamais revenu, puis mode sans échec ; seule une coupure débloquait le lien SDIO avec le C6 tombait, et le mauvais état, côté P4, survivait à esp_restart(), qui ne remet à zéro que les CPU chaque redémarrage logiciel finit par un reset de tout le cœur numérique (Tab5/ecran/tab5_lien_c6.cpp, dépannage)
La carte redémarrait toutes les 15 minutes tant que Home Assistant ne la connaissait pas le reboot_timeout par défaut d'ESPHome sans client de l'API (premier firmware d'essai) le firmware complet attend 60 minutes, comme le Tab5

Deux choses apprises en route :

  • Le rétroéclairage se règle en analogique, pas en hachant. GPIO 32 n'allume et n'éteint pas le pilote de LED (AP3032) : il passe par un filtre RC (10 kΩ, 100 nF) vers l'entrée de contre-réaction du pilote, et le PWM devient une tension continue qui décale le courant des LED. Plus la fréquence du PWM est haute, plus c'est lisse : le firmware est à 5 kHz, comme le code de Waveshare.
  • Partir des configurations qui marchent déjà. Les trois corrections du tactile étaient toutes dans des configurations ESPHome publiques de cette carte (agillis/esphome-modular-lvgl-buttons, Jordi1990/openamber, le forum Home Assistant), pas dans le code du fabricant. Les lire d'abord aurait épargné une soirée.

Ce qui reste à faire

  • Pas vérifié sur la carte : le micro et le mot d'activation, le popup Caméras (décodage JPEG), une coupure de courant sans réseau, le firmware publié par le projet (page d'installation, puis une mise à jour depuis Home Assistant).
  • Pas encore adapté au 1024×600 : en allemand et en turc, « Tout fermer » du popup Volets (« Alle schließen », « Tümünü kapat » : 140 et 143 px dans une police qui ne rétrécit pas avec l'écran) dépasse de son bouton de 134 px. Les autres popups suivent l'écran, la page « Bilan » du popup Énergie comprise depuis le 18/10/2026. Pour chaque écran, le rendu compte à chaque changement ce qui dépasse de sa zone : à peu près autant que sur le Tab5 lui-même, surtout dans les popups Volets, Réveil et Caméras, qui font pareil là-bas.
  • Signalé par d'autres sur cette carte, puis vu ici aussi : une faible lueur avec le rétroéclairage à 0 % (l'écran éteint est désormais une dalle noire, ADR-0064). La saturation du haut-parleur rapportée au début a été totalement réglée par le volume_max: 75% (gain unitaire à 0 dB).
  • La version du firmware de la puce Wi-Fi C6 est illisible sur cette carte (« Tab5 Version du C6 » reste inconnue depuis le 14/10/2026, alors que le Tab5 répond 1.4.1) : son firmware d'usine est peut-être plus ancien que la bibliothèque ESP-Hosted du P4 (2.12.12 avec ESPHome 2026.9.1). Le mettre à jour est possible, depuis ESPHome (update: avec platform: esp32_hosted, le firmware envoyé par le lien SDIO) ou par le port série du C6 lui-même sur le connecteur H4 (TXD, RXD, GND, IO9 = BOOT). Pas fait, par choix : une mise à jour ratée laisserait l'écran sans Wi-Fi, et le Wi-Fi marche tel quel. Comme la demande restait sans réponse et figeait l'écran 1 s à chaque fois (3 à 4 fois après chaque démarrage, mesuré le 16/10/2026), la 7B ne la fait plus : le capteur dit « inconnue » tout de suite (carte_c6_version: "false" dans Tab5/paquets/carte-waveshare-7b.yaml, à remettre à "true" après une mise à jour du C6).

Mesuré sur la carte (16/10/2026)

Firmware main 46ad7f03, détail et méthode dans Consommation.

  • Démarrage : première image à 5,6-5,8 s, Wi-Fi à 10,4-11,7 s, Home Assistant connecté à 11,5-12,7 s (4 démarrages, lus sur les capteurs « Chronologie du démarrage » de la carte). Avant, il fallait une vingtaine de secondes avant la première image, comme sur le Tab5 ; #478 a supprimé le coût de la création des textes.
  • Une seconde de moins à chaque démarrage (17/10/2026) : le démarrage attendait 1 s avant l'écran, une attente faite pour le Tab5, dont le reset de l'écran passe par un expandeur ; la 7B n'en a pas, le reset de sa dalle est une broche du P4 (ADR-0005, carte_attente_ecran_ms: "0"). Sur 10 redémarrages par le bouton « Redémarrage Système », contre les 10 de la nuit du 16/10/2026 : rétroéclairage allumé à 0,97 s (2,02 s), première image à 4,78-4,84 s (5,84-5,90 s), Wi-Fi à 9,38-9,44 s (10,37-10,43 s) ; les autres étapes gardent leur durée, et l'écran revient avec son image (vu par l'auteur).
  • L'horloge peut s'afficher en retard : la carte n'a pas d'horloge temps réel, l'heure n'est connue qu'une fois le Wi-Fi monté et l'heure reçue (10 s ou plus après la mise sous tension) ; la première image arrive avant.
  • Puissance à l'entrée USB : 1,96 W sur l'accueil à la luminosité habituelle, 3,14 W à 100 %, 1,24 W rétroéclairage éteint. Les popups et les pages ne coûtent rien de mesurable.
  • Mesure précise à l'USB (19/10/2026, multimètre FNIRSI FNB-58) : mesuré en liaison directe HID à 100 éch/s sur l'écran d'accueil à luminosité par défaut (~60 %) : 5,028 V (5,010–5,044 V), 309,8 mA (278,1–323,3 mA), puissance moyenne 1,558 W (p95 1,569 W, max 1,626 W). La lecture audio (annonce TTS) ajoute environ 0,1 à 0,2 W crête.

Matériel

Waveshare ESP32-P4-WIFI6-Touch-LCD-7B
Processeur principal ESP32-P4 (ESP32-P4NRW32), révision v3.2 sur la carte de l'auteur, à 400 MHz, sa fréquence normale (ESP-IDF ne propose 360 MHz qu'aux puces d'avant la v3 : les 360 MHz demandés jusqu'au 16/10/2026 étaient ignorés ; l'avertissement « expérimental » d'ESPHome vise ces anciennes puces)
Mémoire 32 Mo de PSRAM (mode hex, 200 MHz), 32 Mo de flash
Écran 7 pouces, 1024×600, dalle en paysage, contrôleur EK79007 en MIPI-DSI (2 voies), modèle ESPHome WAVESHARE-ESP32-P4-WIFI6-TOUCH-LCD-7B
Tactile GT911, I2C en 0x5D, interrogé toutes les 50 ms (sans interruption)
Rétroéclairage pilote de LED AP3032, gradation analogique depuis GPIO 32 (LEDC, 5 kHz, inversé)
Son DAC ES8311 (0x18), ampli NS4150B activé par GPIO 53, un connecteur deux broches pour le haut-parleur (validé avec le haut-parleur officiel du pack Waveshare, son très propre jusqu'à 75% / 0 dB)
Micros deux, par un ADC ES7210 (0x40), 16 kHz / 16 bits comme le Tab5 ; le firmware lit MIC1 (slot gauche), comme la démo Waveshare
Wi-Fi et Bluetooth ESP32-C6-MINI-1 en SDIO (ESP-Hosted), reset sur GPIO 54 ; Wi-Fi en 2,4 GHz seulement
Connecteur série de l'ESP32-C6 « C6-UART », 4 broches (TXD, RXD, GND, IO9 ; IO9 à la masse = mode téléchargement), pour flasher le C6 directement
USB USB-C « USB » (l'USB Serial/JTAG du P4 lui-même), USB-C « USB TO UART » (pont CH343P vers l'UART0 du P4, GPIO 37 TX / GPIO 38 RX, avec reset et boot automatiques), USB-A hôte
Alimentation les deux ports USB-C ; un connecteur de batterie lithium d'un élément (J4, MX1.25) avec un chargeur ETA6098, un survolteur 5 V et un interrupteur ON/OFF ; pas de jauge, la tension de la batterie divisée par trois sur GPIO 20 (pas lue par ce firmware)
Pile de l'horloge support 1220 sur l'horloge propre du P4, rechargé par la carte : ML1220 rechargeable seulement, jamais une CR1220 (pas utilisée par ce firmware)
GPIO libres 17, sur deux connecteurs PH2.0 de 12 broches : GPIO 2-5, 28-31, 34 et 36 sur P3, GPIO 46-52 sur P1
Absent de cette carte jauge de batterie, capteur de mouvement, puce d'horloge, expandeurs d'E/S, prise casque
Présent, pas utilisé lecteur microSD, connecteur de caméra MIPI-CSI, USB-A, connecteurs I2C / UART / RS485, bus CAN (émetteur-récepteur TJA1051T/3 sur GPIO 21 RX / GPIO 22 TX avec cavalier de terminaison 120 Ω H5), entrée batterie

La bande du Wi-Fi et les lignes alimentation, USB, pile et GPIO libres viennent du schéma et du wiki de Waveshare ; elles n'ont pas été essayées sur la carte de l'auteur.

Tout ce que le firmware règle pour cette carte est dans Tab5/paquets/carte-waveshare-7b.yaml, la taille de son écran dans Tab5/paquets/geometrie-waveshare-7b.yaml. Ce qui ne dépend pas de la carte (journal, OTA, économie d'énergie, lecteur…) est recopié du fichier du Tab5, et tests/test_carte_7b.py garde les deux égaux.

Broches

Toutes les broches que le fichier de la carte configure. Le reset de l'écran (GPIO 33) est réglé par le modèle d'écran d'ESPHome, pas dans le YAML. Comme pour le Tab5, tests/test_doc_broches.py compare chaque ligne, dans les deux langues, à carte-waveshare-7b.yaml.

Fonction Broche Dans le YAML
Bus I2C, SDA (tactile et codecs, 400 kHz) GPIO 7 bsp_bus · sda
Bus I2C, SCL GPIO 8 bsp_bus · scl
Reset du tactile GPIO 23 touch · reset_pin
PWM du rétroéclairage (LEDC, 5 kHz, inversé) GPIO 32 backlight_pwm · pin
Sélection de mot I2S (micros et haut-parleur) GPIO 10 mic_bus · i2s_lrclk_pin
Horloge bit I2S GPIO 12 mic_bus · i2s_bclk_pin
Horloge maître I2S GPIO 13 mic_bus · i2s_mclk_pin
Données I2S en entrée, depuis l'ES7210 (micros) GPIO 11 tab5_microphone · i2s_din_pin
Données I2S en sortie, vers l'ES8311 (haut-parleur) GPIO 9 tab5_speaker · i2s_dout_pin
Activation de l'ampli du haut-parleur GPIO 53 speaker_enable · pin
Liaison ESP32-C6 (SDIO), horloge GPIO 18 esp32_hosted · clk_pin
Liaison ESP32-C6 (SDIO), commande GPIO 19 esp32_hosted · cmd_pin
Liaison ESP32-C6 (SDIO), donnée 0 GPIO 14 esp32_hosted · d0_pin
Liaison ESP32-C6 (SDIO), donnée 1 GPIO 15 esp32_hosted · d1_pin
Liaison ESP32-C6 (SDIO), donnée 2 GPIO 16 esp32_hosted · d2_pin
Liaison ESP32-C6 (SDIO), donnée 3 GPIO 17 esp32_hosted · d3_pin
Reset de l'ESP32-C6 GPIO 54 esp32_hosted · reset_pin

Sources : le paquet de support de la carte et le schéma de Waveshare, le modèle d'écran d'ESPHome et les configurations publiques citées plus haut. Les broches de la liaison du C6 sont celles qu'ESP-Hosted prend par défaut sur un P4, que cette carte suit.