Ecran LCD 80*160 et ESP32-S3

Bonsoir,

j'ai un petit écran LCD ( DollaTek 0.96 Pouces 80x160 RVB IPS Color 65K Écran pour Arduino : Amazon.fr: Commerce, Industrie et Science ) et une carte ESP32-S3-wroom
Je n'arrive pas à trouver comment câbler les deux pour pouvoir utiliser l'écran. Ce que j'ai trouvé ne me semble pas clair et/ou ne correspond pas à mon matériel.

Et puis j'aime bien comprendre ce que je fais, pas juste suivre un tuto YT :wink:

Quelqu'un aurai-t-il une doc à me proposer ?

Merci

Bonjour,
tu vas sur ..... Youtube vers cette adresse : VolosProjects
C'est un gars sérieux qui donne des exemples qui marchent. Tu y trouveras cablage, soft avec commentaires et des conseils pour modifier les bibliotheques utilisées.
Exemple pour ton affichage : ESP32 Clock (80x160 SPI)

1 Like

merci je vais regarder ça

Bonsoir,

j'ai pris un moment pour essayer de faire fonctionner cet afficheur et rien à faire, je n'y arrive pas.

IDE : 2.3.2
ESP32 : 3.1.1
carte utilisée : ESP32-S3-WROOM-1 (mais pareil avec ESP32-C3)
bibliothèque : TFT_eSPI (Bodmer) 2.5.43

j'ai bien édité
~/Arduino/libraries/TFT_eSPI/User_Setup_Select.h pour pointer vers ~/Arduino/libraries/TFT_eSPI/User_Setup/Setup43_ST7735.h, changé les n° de PIN prévues (et pareil en laissant les valeur par défaut)

J'ai essayé quelques exemples : plantage.

J'ai allégé le code au maximum :

#include <Arduino.h>

#include <TFT_eSPI.h>
#include <SPI.h>

TFT_eSPI tft = TFT_eSPI();


void setup() {
  delay(1000); 
  Serial.begin(115200);
  Serial.println("hello world");

  tft.init();  //plantage ici

}

void loop() {
  // Compte de 1 à 10 en boucle
  for (int i = 1; i <= 10; i++) {
    Serial.println(i); 
    delay(1000);       
  }
}

Le plantage se fait à l'instruction tft.init();

Commentée : l'exécution est correcte.
Sinon plantages :

hello world
Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x42002a07  PS      : 0x00060530  A0      : 0x82002a90  A1      : 0x3fca14e0  
A2      : 0x3fc96380  A3      : 0x00000001  A4      : 0x00000013  A5      : 0x00000017  
A6      : 0x000000ff  A7      : 0x60004000  A8      : 0x00000010  A9      : 0x08000000  
A10     : 0x3fc96494  A11     : 0x019bfcc0  A12     : 0x00000001  A13     : 0x00000000  
A14     : 0x00000004  A15     : 0x019bfcc0  SAR     : 0x0000001e  EXCCAUSE: 0x0000001d  
EXCVADDR: 0x00000010  LBEG    : 0x40056f5c  LEND    : 0x40056f72  LCOUNT  : 0xffffffff  


Backtrace: 0x42002a04:0x3fca14e0 0x42002a8d:0x3fca1510 0x42001ae5:0x3fca1530 0x42006c9a:0x3fca1560 0x4037b7b2:0x3fca1580




ELF file SHA256: 568bf07d7

Rebooting...
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
Saved PC:0x40378b62
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce2820,len:0x1188
load:0x403c8700,len:0x4
load:0x403c8704,len:0xbf0
load:0x403cb700,len:0x30e4
entry 0x403c88ac
hello world
Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.

.......

Quelqu'un a une idée ??

J'ai une piste ici :

Pas trop le temps maintenant d'approfondir mais c'est juste pour vous dire de ne pas trop vous casser la tête là-dessus :wink: Je vais peut-être y arriver. Et si ce n'est pas le cas, je reviens !

Bon, c'est le cas : je ne m'en sors pas :frowning: :sos:

Un post du lien cité dans le message précédent évoque un problème de choix de PIN pour la configuration du fichier et propose une config fonctionnelle pour une Lilygo T-deck :

#define TFT_MISO 38
#define TFT_MOSI 41
#define TFT_SCLK 40
#define TFT_CS   12 // Not connected
#define TFT_DC   11
#define TFT_RST  -1  //

mais ça ne marche pas pour ma carte :


Sur celle-ci je vois bien plein de PIN marquées SPI mais comme je n'y comprend rien au fonctionnement de ce bus je suis perdu.

Quelqu'un pourrait-il me donner un petit coup de pouce ?
Merci !

Bonsoir @ProfesseurMephisto

Les cartes DEVKIT-C d'Espressif sont les cartes modèles pour les diverses variantes d'ESP32

je propose
image

Ce sont les GPIO définis par défaut pour une carte 'ESP32-S3' dans son fichier pins_arduino.h :

static const uint8_t SS = 10;
static const uint8_t MOSI = 11;
static const uint8_t MISO = 13;
static const uint8_t SCK = 12;

:point_right:Chaque carte ESP32x connue du 'core ESP32 pour IDE Arduino' a son propre fichier pins_ arduino.s dans ce répertoire :
image

J'ai essayé de définir :

#define TFT_MISO 11
#define TFT_MOSI 12
#define TFT_SCLK 13
#define TFT_CS   10  // Chip select control pin
#define TFT_DC   9   // Data Command control pin
#define TFT_RST  14  // Reset pin (could connect to RST pin)

mais ça plante pareil :frowning:

image

tu as inversé MOSI et MISO !
MOSI sort en GPIO11
MISO entre en GPIO12

Effectivement.

malheureusement, même en changeant ça ne fonctionne pas mieux

C'est quoi la signification de la PIN SS ?

et avec les valeurs suivantes ?

static const uint8_t SS = 10;
static const uint8_t MOSI = 11;
static const uint8_t MISO = 13;
static const uint8_t SCK = 12;

image
Slave Select, ou Chip Select (activation d'esclave)

SS ? regardes l'article de Wikipedia :wink:

Merci, c'est plus clair. Mais les dénominations qui changent :frowning:
de même SCLK = CLK ?

Ça plante toujours !

edit : je suis pris d'un doute... Mes premiers essais ont été faits écran branché. Puis, pour ne pas passer mon temps à câbler et décâbler la breadboard j'ai fais les suivants avec l'écran débranché. Est-ce que cela peut être gênant pour le diagnostic ?
Je vais quand même recâbler tout ça

tiens une doc mais si j'ai fait une faute pardonne moi
https://docs.espressif.com/projects/esp-idf/en/v5.0/esp32/api-reference/peripherals/lcd.html
et il y a aussi ca

tiens sa et ca ne vient pas d'une ia :slight_smile:

Fin de plaisanterie ?

Trouvé à l'adresse : ESP32 Core 1 panic'ed (StoreProhibited). Exception was unhandled when tft.init() is executed. · Issue #3332 · Bodmer/TFT_eSPI · GitHub

Ajout d'un #define :

#define TFT_MISO 13
#define TFT_MOSI 12
#define TFT_SCLK 14
#define TFT_CS   15   // Chip select control pin
#define TFT_DC   16   // Data Command control pin
#define TFT_RST  -1   // Reset pin (could connect to RST pin)

#define USE_HSPI_PORT // <<------ c'est ça qu'il faut ajouter !

il n'y a plus de plantage.

Reste à connecter l'afficheur pour travailler la suite !

Exellent je suis content pour toi

Bonjour @ProfesseurMephisto

#define USE_HSPI_PORT // <<------ c'est ça qu'il faut ajouter !

Les ESP32 contiennent 4 blocs SPI, les deux premiers (SPI0 et SPI1) sont utilisés pour la mémoire FLASH et la PSRAM éventuellle. Restent disponibles SPI2 ( HSPI) et SPI3 (VSPI)

La bibliothèque que tu utilises nécessite donc de préciser le bloc choisi : HSPI ou VSPI
HSPI est associé par défaut aux GPIOs 12, 13, 14 et 15

Merci pour l’explication, je sors lentement du brouillard… reste que ce bug semble récent (suggestion de downgrade de la lib ESP32) et cette ligne ne semblait pas nécessaire avec des versions précédentes. L’architecture n’a pourtant sûrement pas changé…

changements possibles dans l'architecture logicielle

Le 'Core ESP32 pour IDE Arduino' est une couche au dessus de l'IDF (framework) qui évolue.
Des changements apparaissent soit volontaires soit par apparition de bugs.
Pour les premiers les bibliothèques doivent suivre le mouvement et clairement indiquer avec quelle version du Core ESP32 elles sont compatibles

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.