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 |
|---|---|---|
![]() |
![]() |
![]() |
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.
- 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.
- Une ligne dans
Tab5/user_entities.yaml:tab5_carte: waveshare-7b(ou-s tab5_carte waveshare-7ben ligne de commande). - 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:avecplatform: 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"dansTab5/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.


