mardi 6 octobre 2026

Module RFID-RC522 et ESP32 CYD

Dans cet article, nous lisons le numéro de série d'une carte ou d'un tag RFID grâce à un module RFID-RC522 branché à un Cheap Yellow Display (ESP32-2432S028).


J'ai déjà eu l'occasion d'explorer le module RFID-RC522 dans le passé, l'ayant utilisé tour à tour avec un Arduino Uno, un Raspberry Pi, un Raspberry Pi Pico, un ESP32 et un ESP8266, un MSP430 Launchpad et un STM32 Nucleo!


Mais l'utilisation d'un tel module avec l'ESP32 CYD présente un défi particulier: puisque le module communique par le protocole SPI, 4 connecteurs sont nécessaires (SCLK, MOSI, MISO et CS). Mais le CYD ne comporte que trois broches GPIO réellement utilisables (22, 27 et 35).

Pour contourner cette difficulté, des petits malins ont eu l'idée d'utiliser un "microSD Sniffer". Ce dispositif a été mis au point par la compagnie américaine Sparkfun afin d'intercepter et analyser les signaux impliqués dans la communication avec une carte microSD.   Des fabricants asiatiques ont copié le concept et vendent un produit identique pour une fraction du prix initial.


Il s'agit d'insérer le sniffer dans le lecteur de carte microSD du CYD pour avoir accès aux broches GPIO 5, 18, 19 et 23. Si votre projet ne nécessite aucune lecture ou écriture d'une carte microSD, vous pouvez faire ce que vous voulez de ces 4 broches: allumer des LEDS, lire des boutons, etc. (vous ne pouvez pas lire un signal analogique, par contre).


Dans notre cas, puisque le module RFID-RC522 utilise le protocole SPI, nous pouvons même continuer d'utiliser la carte microSD (qui sera insérée dans le "microSD Sniffer") à la condition de ne pas utiliser la même broche CS (chip select).

Connexions

Supposons dans un premier temps que notre projet ne nécessite pas l'utilisation d'une carte microSD.



On peut brancher le module RFID-RC522 au microSD Sniffer de cette façon:

  • Broche SDA du RC522 : Broche CD (GPIO 5) du Sniffer
  • Broche SCK du RC522 : Broche CLK (GPIO 18) du Sniffer
  • Broche MOSI du RC522 : Broche CMD (GPIO 23) du Sniffer
  • Broche IRQ du RC522 : Pas branchée
  • Broche GND du RC522 : Broche GND du Sniffer
  • Broche RST du RC522 : Pas branchée
  • Broche 3.3 V du RC522 : Broche VCC du Sniffer

Et le microSD Sniffer, bien entendu, est inséré dans le lecteur de carte microSD du Cheap Yellow Display.

Installation de la bibliothèque RFID_MFRC522v2

J'ai ensuite installé la bibliothèque RFID_MFRC522v2 par GithubCommunity.


La façon la plus rapide de vérifier que tout fonctionne correctement est d'essayer l'exemple "DumpInfo" fourni avec la bibliothèque:

Menu Fichier - Exemples - RFID_MFRC522v2 - DumpInfo


Vous devez simplement vous assurer, à la ligne 43 de l'exemple, de remplacer la broche #10 par la broche #5:    MFRC522DriverPinSimple ss_pin(5);

Si tout va bien, lorsque vous approchez une carte ou un tag RFID du module RC522, les informations de la carte s'affichent dans le moniteur série.

Sketch #1: affichage du numéro de série (UID) de la carte à l'écran du CYD

J'ai écrit le sketch ci-dessous spécialement pour le CYD: lorsque vous approchez un tag RFID du module RC522, le numéro de série de la carte (UID), constitué de 4 octets,  s'affiche sur l'écran du CYD.

-

-

Sketch #2: utilisation simultanée du RC522, de l'écran tactile et d'une carte microSD

Ce deuxième sketch est un prétexte pour vérifier que la présence du module RC522 n'empêche pas l'utilisation d'une carte microSD (insérée dans le sniffer) ni du capteur tactile XPT2046 (puisque tous ces dispositifs communiquent en SPI).

Petite modification aux connections: puisque le broche GPIO #5 est utilisée par le lecteur de carte microSD, elle ne peut pas servir au module RC522. La broche SDA du RC522 sera plutôt connectée au GPIO 27 du CYD (fil jaune du connecteur CN1).


Nous continuons par contre d'utiliser les mêmes broches MOSI, MISO et SCLK, qui seront partagée avec le lecteur de carte microSD.


-

-

Au démarrage, le programme se comporte de la même façon que le précédent: un message demandant de présenter sa carte s'affiche à l'écran du CYD.


Lorsqu'on approche un tag RFID du module RC-522, le numéro de série du tag s'affiche à l'écran, ainsi qu'un bouton intitulé "photo".


Si l'utilisateur touche le bouton "photo", l'écran affiche une image se trouvant sur la carte SD, ainsi qu'un bouton "retour"  qui permet de tout reprendre à partir du début.


Pour que ça fonctionne, vous devez avoir placé une petite image en format jpg intitulée "image.jpg" sur votre carte microSD. L'Image que j'ai utilisée était de 133 pixels de large par 100 pixels de hauteur.

Je ne sais pas exactement dans quel contexte ce programme pourrait s'avérer utile, mais j'ai atteint mon but: j'ai vérifié qu'on peut utiliser le module RC522 (lecture du tag RFID), le capteur tactile (boutons "photo" et "retour") et la carte microSD (lecture d'un fichier jpeg se trouvant sur la carte) dans le même programme!

Yves Pelletier


À lire également:

mercredi 30 septembre 2026

Récepteur radio FM RDA5807M et ESP32 CYD

Dans cet article, je décris l'assemblage d'un récepteur radio FM constitué d'un circuit intégré spécialement conçu à cette fin, le RDA5807M, qui sera piloté par un ESP32-2432S028 CYD (Cheap Yellow Display)­.


Le circuit

Le RDA5807M combine, dans un minuscule circuit intégré, tout ce qui est nécessaire pour capter le signal des stations de radio FM. Il suffit de brancher à sa sortie un casque d'écoute ou des enceintes amplifiées, et de lui envoyer des instruction par i2c au moyen d'un microcontrôleur. Les commerçants chinois l'offrent pour un prix dérisoire sous la forme de minuscules modules carrés d'environ 1,2 cm de côté. Il faut souder des fils séparés d'une distance inférieure à 2 mm, ce qui demande une certaine habileté. 


Quant au Cheap Yellow Display, il combine un microcontrôleur ESP32 et un écran tactile. On pourra donc programmer un script qui permettra à l'utilisateur de modifier la fréquence et le volume en appuyant sur l'écran tactile.

Nous utiliserons le connecteur CN1 du CYD, situé juste à côté du lecteur de cartes microSD, puisqu'il comporte deux des rares broches GPIO disponibles (22 et 27) ainsi qu'une alimentation de 3,3 V.


J'ai branché le module RDA5807M au CYD de la façon suivante:
  • Sortie 3,3 V (fil rouge sur la photo): connecteur #5 du RDA5807M.
  • Broche GPIO 27 (fil jaune sur la photo): sera désignée comme broche SDA: connecteur #1 du RDA5807M.
  • Broche GPIO 22 (fil bleu sur la photo): sera désignée comme broche SCL: connecteur #2 du RDA5807M.
  • Broche GND: connecteur #6 du RDA5807M.
Un casque d'écoute est branché aux sorties audio (#7 et #8) du RDA5807M. J'ai ajouté à chaque sortie un condensateur de 100 µF et une résistance de 100 Ω. 

Installation des bibliothèques dans l'IDE Arduino

Pour la communication entre l'ESP32 et le RDA5807M, j'ai utilisé la bibliothèque Radio de Matthias Hertel, qui peut évidemment être installée à partir du gestionnaire de bibliothèques de l'IDE Arduino.

Comme d'habitude avec le CYD, j'ai utilisé la bibliothèque TFT_eSPI de Bodmer pour la gestion de l'affichage à l'écran, et  la bibliothèque NPT2046_Bitbang_Slim pour la gestion du capteur tactile.




Un premier test

La façon la plus efficace de vérifier le bon fonctionnement du module est d'utiliser l'exemple intitulé "TestRDA5807M" qui est distribué avec la bibliothèque Radio.

(Menu Fichier - Exemples - Radio - TestRED5807M)



Il faut toutefois effectuer une modification au sketch: puisque la broche GPIO 27 de l'ESP32 n'est généralement pas utilisée pour la communication i2c, il faut indiquer dans notre programme que la communication i2c s'effectuera par les broches 27 (SDA) et 22 (SCL).

J'ai donc ajouté l'instruction "Wire.begin(27,22);" à l'intérieur du setup(), avant les premiers appels à la bibliothèque Radio.


Il faut également modifier la valeur numérique de la fréquence indiquée à la ligne 45: choisissez la fréquence d'une station FM locale que vous pouvez capter.


Si tout va bien, lorsque vous exécutez ce sketch, vous pouvez entendre l'émission diffuée par la station choisie.


Mon sketch 



Vous pouvez voir ci-dessous un sketch que j'ai réalisé spécialement pour le CYD: il permet de changer de station et de modifier le volume grâce à des boutons sur l'écran tactile.

-
-


samedi 26 septembre 2026

Communication MIDI avec l'ESP32 CYD

Aujourd'hui je continue mon exploration de l'ESP32-2432S028 CYD (Cheap Yellow Display) par quelques expérimentations de communication MIDI avec un clavier électronique.


Il s'agit d'une communication MIDI classique impliquant l'utilisation des bons vieux câbles MIDI munis d'un connecteur DIN à 5 broches. De nos jours, le MIDI par USB ou par Bluetooth est de plus en plus en vogue, mais ce n'est pas ce dont il sera question aujourd'hui.



MIDI: pour quoi faire?

MIDI est l'acronyme de Musical Instrument Digital Interface. Depuis le début des années 1980, c'est le protocole qui permet à des appareils électroniques musicaux d'échanger de l'information. Par exemple, grâce au protocole MIDI, un clavier ou un séquenceur peuvent acheminer des instructions à un synthétiseur, qui produira les sons qui lui ont été demandés.

Connexions

Le MIDI est une communication série (UART) à  31 250 baud. Dans ce contexte, l'ESP32 comporte un avantage intéressant: on peut désigner à peu près n'importe quelle broche GPIO comme entrée (Rx) ou sortie (Tx) UART. J'ai décidé d'utiliser à cette fin les broches GPIO 22 et 27, puisqu'elles sont facilement accessibles par le connecteur CN1 du Cheap Yellow Display. C'est le connecteur qui se trouve juste à côté du lecteur de carte microSD.


Les 4 fils issus du connecteur CN1 sont utiles pour une communication MIDI bi-directionnelle. De gauche à droite sur la photo:

  • Sortie 3,3 V (fil rouge sur la photo): servira à alimenter l'optocoupleur recommandé pour la réception de messages MIDI.
  • Broche GPIO 27 (fil jaune sur la photo): sera désignée comme entrée UART (Rx) qui pourra recevoir des messages (en provenance d'un clavier MIDI, par exemple).
  • Broche GPIO 22 (fil bleu foncé sur la photo): sera désignée comme sortie UART (Tx) qui pourra envoyer des messages (vers un clavier MIDI, par exemple).
  • Broche GND: pour que tous les appareils impliqués utilisent la même référence pour mesurer les tensions.

Pour faire mes tests, j'ai utilisé une interface MIDI que j'ai fabriquée moi-même, conçue pour fonctionner à un niveau logique de 3,3 V.  Vous pouvez vous référer à cet article publié en septembre 2023  pour les détails du circuit.


Vous pouvez acheter une interface toute faite, ou en assembler une sur une breadboard. Remarquez que pour bien des applications, on a besoin d'une communication dans une seule direction. Si vous désirez seulement envoyer des messages vers le clavier MIDI (broche Rx), le circuit nécessite simplement deux résistances. Pour recevoir des informations à partir du clavier, par contre, il faut utiliser un optocoupleur (voir l'article détaillé pour les schémas de circuit).

Installation de la bibliothèque "MIDI Library"

La programmation est plus simple si on utilise une bonne bibliothèque. J'ai utilisé la MIDI Library, qui s'installe facilement grâce au gestionnaire de bibliothèques de l'IDE Arduino.


Voyons deux exemples simples démontrant une communication MIDI dans chaque direction.

Communication MIDI du CYD vers un clavier

Lorsqu'on exécute le sketch ci-dessous, le clavier musical joue une suite de notes ascendantes en utilisant différents timbres (programmes). Pour faciliter le débogage, le numéro du programme s'affiche dans le moniteur série.

-

-


Communication MIDI d'un clavier vers le CYD

Dans ce deuxième exemple, chaque fois qu'on appuie sur une touche du clavier, son numéro MIDI s'affiche en vert sur l'écran du CYD. Ce même numéro s'affiche en rouge lorsqu'on relâche la touche­.

(Voir l'article "Exploration du Cheap Yellow Display" pour plus d'informations sur l'utilisation de la bibliothèque TFT_eSPI pour affichage à l'écran.)

-

-


Yves Pelletier


À lire également:

mercredi 23 septembre 2026

Afficher sur l'écran de l'ESP32 CYD des jpegs stockés sur la carte micro SD

Dans cet article, je vous présente de quelle façon j'ai procédé pour afficher des images en format jpeg à l'écran de l'ESP32-2432S028 "Cheap Yellow Display". Les fichiers jpeg ont préalablement été enregistrées sur une carte microSD insérée dans le lecteur de l'ESP32 CYD.



Les bibliothèques nécessaires

Comme d'habitude, je programme l'ESP32 en utilisant l'IDE Arduino. Deux bibliothèques de Bodmer doivent être installées: TFT_eSPI et JPEGDecoder.


Pour que la bibliothèque TFT_eSPI fonctionne correctement, vous devez modifier le fichier User_Setup.h pour qu'il contienne les paramètres de l'ESP32 CYD. Si ça peut vous être utile, j'ai publié le contenu de mon fichier User_Setup.h dans ce récent article.

L'exemple ESP32_SDcard_jpeg

Bonne nouvelle: la bibliothèque TFT_eSPI est accompagnée d'un exemple intitulé "ESP32_SDcard_jpeg" qui va énormément nous simplifier la tâche. 

Vous trouverez cet exemple dans les menus de l'IDE Arduino:

Fichier - Exemples - TFT_eSPI - Generic - ESP32_SDcard_jpeg



Ce sketch permet d'afficher à l'écran de l'ESP32 CYD quatre images en format jpeg qui doivent être enregistrées à la racine de la carte microSD.  Ces images se trouvent dans le dossier "Data" qui accompagne l'exemple ESP32_SDcard_jpeg. Vous pouvez également les trouver sur le gitHub de Bodmer.


Il y a un petit contretemps: si vous exécutez l'exemple  ESP32_SDcard_jpeg tel qu'il est présenté, aucune image ne s'affiche à l'écran, et le moniteur série présente un message d'erreur affirmant qu'aucune carte SD n'a été trouvée.

Le problème se situe à la ligne 39 de l'exemple.


J'ai effacé les paramètres de la fonction SD.begin. Ainsi  "SD.begin(5, tft.getSPIinstance())" est devenu "SD.begin()".

... et cette fois, ça fonctionne. Les 4 images s'affichent tour à tour à l'écran.


Il est ensuite facile de modifier le sketch pour qu'il affiche les images de votre choix, que vous aurez préalablement enregistrées sur la carte microSD.

Redimensionner les images

Le programme ne redimensionne pas les images. Ainsi, si une image est plus grande que l'écran (320 X 240 pixels), seule une portion de l'image s'affiche (le coin supérieur gauche).

Pour voir les images au complet, il faut les redimensionner afin que leur taille n'excède par 320 X 240 pixels. 

Pour ce faire, j'ai utilisé GIMP, qui est gratuit et disponible sur tous les systèmes d'exploitation. Une image de 320 X 240 pixels occupera tout l'écran, mais il peut aussi être pertinent d'utiliser des images encore plus petites, qui seront utilisées comme icônes, accompagnées de texte, etc.

Sur la photo ci-dessous, par exemple, l'écran affiche simultanément 4 photos de format 133 X 100 pixels.

.

Diaporama

Pour terminer voici un sketch qui affiche en boucle tous les fichier jpeg situés dans un répertoire intitulé "diaporama" sur la carte microSD. Le nom des fichiers jpeg n'a pas d'importance. Chaque image est affichée pendant 5 secondes.

-

-


Yves Pelletier


À lire également:

vendredi 18 septembre 2026

Télémètre à ultrasons HC-SR04 et ESP32 CYD

Suite à ma première exploration de l'ESP32 CYD (Cheap Yellow Display, ou encore ESP32-2432S028 si vous préférez son nom officiel), j'étais curieux d'essayer un mini projet impliquant le branchement d'un capteur. Le télémètre à ultrasons HC-SR04 m'a semblé un choix intéressant, pour un premier essai, puisqu'il n'utilise que deux broches GPIO.

Ce projet consiste donc à afficher, sur l'écran du CYD, la distance mesurée par un module HC-SR04.

Il faut toutefois s'assurer d'utiliser un HC-SR04 qui accepte de fonctionner sous une tension de 3,3 V. Certains modèles sont vendus avec la garantie qu'ils fonctionnent à 3,3 V, et certains modules qui, en principe, nécessitent une tension de 5 V acceptent quand même de fonctionner à 3,3 V.

Pour la connexion du HC-SR04, j'ai utilisé le connecteur identifié CN1; il se trouve sous la LED RGB (et à côté du lecteur de carte microSD) au verso du CYD.

Le connecteur CN1

Ce qui est écrit sur le circuit imprimé est parfois très difficile à lire. Il est bon de savoir que les quatre connexions de CN1, en commençant par la plus rapprochée du lecteur de carte SD , sont 3,3 V, GPIO 27, GPIO 22 et GND.

J'ai branché le module HC-SR04 de cette façon:

  • Vcc du HC-SR04 : 3,3 V du CYD
  • trig du HC-SR04 : GPIO 27 du CYD
  • echo du HC-SR04 : GPIO 22 du CYD
  • GND du HC-SR04: GND du CYD

Si vous voulez faire un test rapide pour vérifier le bon fonctionnement du capteur HC-SR04, le sketch minimaliste que je proposais pour l'Arduino Uno dans cet article (publié il y a 15 ans!) fonctionne parfaitement, à la condition de modifier le  numéro des broches. Il s'agit d'assigner la valeur 27 à la variable trigPin et la valeur 22 à la variabl echoPin. La mesure de la distance en cm s'affiche dans le moniteur série.

Sketch #1: affichage de la mesure à l'écran du CYD

Mais puisque le CYD comporte un écran, aussi bien l'utiliser pour afficher la mesure. C'est ce qu'accomplit le sketch ci-dessous. Pour l'utiliser, il est nécessaire d'installer la bibliothèque TFT_eSPI de Bodmer. Au besoin, vous pouvez vous référer à mon article précédent dans lequel j'ai publié le contenu de mon fichier User_Setup.h.

-

-

Sketch #2: l 'utilisateur choisit les unités de mesure

Dans un deuxième sketch, puisque l'écran du CYD est tactile, j'ai ajouté des boutons qui permettent à l'utilisateur de modifier les unités de mesure de la distance affichée: millimètres, centimètres, mètres, pouces ou pieds.


Plusieurs bibliothèques facilitent la gestion du contrôleur tactile XPT2046. J'ai choisi la bibliothèque NPT2046_Bitbang_Slim.

-

-

Yves Pelletier


À lire également:

jeudi 10 septembre 2026

Exploration du Cheap Yellow Display (ESP32-2432S028)

Dans cet article, je fais une première exploration de l'ESP32-2432S028, que ses utilisateurs ont affectueusement rebaptisé "Cheap Yellow Display" ou CYD (qui peut se traduire par "écran jaune bon marché").


Cette carte combine dans un format compact un microcontrôleur ESP32, un écran tactile, un lecteur de cartes microSD en plus de quelques autres gadgets que j'aurai l'occasion d'énumérer plus loin dans cet article. 

Notez que la carte existe depuis déjà quelques années. La principale raison pour laquelle je ne me suis pas précipité pour en acquérir une plus tôt (et je crois bien qu'il s'agit de son principal inconvénient), c'est qu'avec tout ce qui est déjà inclus sur la carte, il ne reste que très peu de broches GPIO disponibles (seulement 3, en fait). Dans les circonstances, le CYD s'apparente plus à un minuscule ordinateur à programmer soi-même qu'à une véritable carte de prototypage...un joujou pour informaticien plutôt qu'un joujou pour électronicien.

Cette contrainte est contournable (le CYD pourrait, par exemple, communiquer par WiFi, Bluetooth ou autre avec un deuxième module ESP32 qui, lui, disposerait de dizaines de ports GPIO utilisables). Mais comme vous le constaterez plus loin dans cette article, je trouve que les concepteurs auraient pu libérer quelques broches supplémentaires.

Et il faut bien admettre que le CYD comporte des avantages évidents. Pour brancher un écran tactile à un module ESP32 conventionnel, il faut quand même brancher 14 bouts de fil! Alors qu'ici, tout est déjà branché dès le départ.


J'ai donc commandé un Cheap Yellow Display auprès d'un revendeur chinois. Une semaine plus tard, on le déposait devant ma porte, au Québec. Ça vient avec un câble USB, un stylet en plastique et quelques fils utiles pour brancher un éventuel capteur. 

Voici le verso du CYD. Au cas où vous n'auriez pas fait le lien, ça s'appelle "Cheap Yellow Display" parce que le circuit imprimé est de couleur jaune.


Vous constaterez peut-être que j'ai hérité du modèle qui comporte deux ports USB (un USB-C et un micro-USB). Les deux ports ont la même fonction (alimenter et programmer la carte). On utilise celui qu'on préfère. D'autres modèles ne comportent qu'un port micro-USB.

Lorsque j'ai alimenté la carte par le port USB, un petit programme s'est exécuté, ce qui m'a permis de constater rapidement que ma carte était fonctionnelle.

Premier test: le WiFi

Pour programmer la carte, j'ai utilisé l'IDE Arduino, en réglant le type de carte à "ESP32 Dev Module".

( Menu Outils / Carte / esp32 / ESP32 Dev Module )


(Si les cartes ESP32 ne sont pas visibles dans le menu Carte, vous pouvez les installer en consultant ce guide).

Puisque l'élément central de la carte est l'ESP32, mon premier programme a consisté à vérifier rapidement si le WiFi était fonctionnel­.

Pour ce faire, j'ai téléversé dans la carte le programme d'exemple "WiFiScan".


( Menu Ficher / Exemples / WiFi / WiFiScan )

Lors de l'exécution du programme, une liste des réseaux Wi-Fi détectés s'affiche dans le moniteur série. De l'IDE Arduino.


Affichage à l'écran

Maintenant que nous avons vérifié que l'ESP32 est fonctionnel, essayons d'afficher quelque chose à l'écran.

Une première difficulté, c'est que certains exemplaires du CYD sont munis d'un écran qui utilise le contrôleur ILI9341, alors que d'autres utilisent plutôt le ST7789. Il faut parfois faire quelques essais pour découvrir soi-même de quel type d'écran il s'agit.  Dans mon cas, c'est le ST7789.

Peu importe le type de contrôleur, la bibliothèque TFT_eSPI de Bodmer fera parfaitement l'affaire (on dit également beaucoup de bien de la bibliothèque Lovyan GFX, mais je ne l'ai encore jamais essayée). 

Donc, installation de la bibliothèque TFT_eSPI au moyen du gestionnaire de bibliothèque de l'IDE Arduino.


La bibliothèque TFT_eSpi a une particularité inhabituelle:  avant de l'utiliser, il faut obligatoirement modifier le contenu du fichier "User_Setup.h" situé dans le répertoire de la bibliothèque afin d'y indiquer les paramètres correspondant à notre écran et à notre microcontrôleur. 


Vous pouvez voir ci-dessous le contenu du fichier User_Setup.h que j'ai utilisé. Il provient du gitHub de witnessmenow.

-

-

Il s'agit des instructions appropriées pour les CYD comportant 2 ports USB. Pour les autres modèles, il est possible que vous deviez plutôt utiliser le contrôleur ILI9341. Si vous constatez que les couleurs à l'écran son inversée, effacez l'instruction "#define TFT_INVERSION_OFF".

Pour vérifier que je peux efficacement programmer l'affichage à l'écran, j'ai téléversé l'exemple "Demo_3D_cube".

(Menu Fichier - Exemples - TFT_eSPI - 480 x 320 - Demo_3D_Cube)



Un cube tourne et se déplace sur l'écran. 


Détection d'une touche sur l'écran

L'écran comporte également un contrôleur XPT2046 pour détecter les positions où on touche l'écran. La bibliothèque TFT_eSPI que nous venons d'utiliser comporte en principe tout ce qui est nécessaire pour accomplir cette tâche...mais pas dans le cas du Cheap Yellow Display. La raison? Le contrôleur tactile XPT2046 n'est pas connecté aux mêmes broches SPI que le contrôleur d'image ST7789. 

Le remède consiste à utiliser une autre bibliothèque pour détecter les touches. (C'est un peu frustrant: les sketches que j'ai déjà conçus pour un écran tactile branché à un ESP32 ne fonctionnent donc pas sur le Cheap Yellow Display!)

J'ai choisi la bibliothèque XPT2046_Bitbang_Slim qui permet à l'utilisateur de définir les broches SPI dédiées au contrôleur tactile. Il s'agit d'une bibliothèque assez minimaliste, mais elle fonctionne bien et, contrairement à d'autres bibliothèques, elle n'interfère pas avec le fonctionnement du lecteur de carte SD.

On peut l'installer facilement dans le gestionnaire de bibliothèque.


Voici un sketch inspiré de l'exemple fourni avec la bibliothèque. Chaque fois que vous touchez l'écran, les coordonnées brutes et calibrées sont affichées à l'écran et dans le moniteur série.

-

-



Les coordonnées brutes s'échelonnent grosso modo de 0 à 4000 mais leur valeur exacte varie d'un écran à l'autre. Si la calibration est juste, les valeurs calibrées correspondront aux coordonnées des pixels sur l'écran (de 0 à 320 pour x, et de 0 à 240 pour y). 

Avec le stylet, touchez un point situé complètement à la gauche de l'écran, afin de connaître la plus petite valeur brute de la coordonnée x. Il faut assigner cette valeur à la constante xRawMin du sketch, et procéder de façon similaire pour xRawMax, yRawMin et yRawMax.


Utilisation d'une carte microSD

Aucune mauvaise surprise concernant le lecteur de carte microSD. J'ai inséré une carte dans le lecteur, et exécuté l'exemple "SDtest", qui a fonctionné correctement sans nécessiter la moindre modification.

(Menu Fichier - Exemples - SD - SD_Test )

Ce script affiche dans le moniteur série le nom des fichiers et répertoires qui se trouvent sur la carte.


Contrôle de la LED RGB

La présence d'une LED sur une carte de développement n''est généralement pas matière à débat, et c'est souvent le point de départ pour nous assurer que la carte fonctionne correctement. Dans le cas du CYD, il s'agit d'une LED RGB, donc en fait 3 LEDs: une rouge, une verte et une bleue. Dans un contexte où les entrées/sorties disponibles sont rares,  3 sorties réservées à cette seule LED, c'est beaucoup! On peut aussi critiquer son positionnement (au verso de l'écran) et déplorer l'absence de diffuseur (si on tente de mélanger les couleurs, ça donne en fait 3 points lumineux bien distincts).

Personnellement, j'aurais préféré une seule LED située au recto à côté de l'écran, et les deux autres sorties auraient été disponibles pour y brancher ce qu'on veut!

Vous pouvez allumer ou faire clignoter chaque couleur sachant que la LED rouge est contrôlée par la broche GPIO 4, la verte est contrôlée par la broche GPIO 16 et la bleue est contrôlée par la broche GPIO 17.

Sortie pour haut-parleur

La broche GPIO 26. est branchée à un amplificateur, ce qui nous permet d'y brancher directement un haut-parleur, même s'il est de faible impédance (connecteur SPEAK). L'idée n'est pas mauvaise, mais les utilisateurs se plaignent souvent de la mauvaise qualité sonore, le gain de l'amplificateur étant beaucoup trop élevé.

Utilisation de la photorésistance

Une photorésistance été placée sur la carte, en principe pour permettre au programmeur de varier l'intensité du rétroéclairage de l'écran en fonction de l'intensité lumineuse ambiante. Ce capteur de lumière est très peu sensible et il a été maladroitement positionné près d'une ouverture sur le côté de l'écran qui laisse passer la lumière du rétroéclairage . Dans mon cas, rien à faire: j'ai beau modifier la sensibilité du convertisseur analogique/numérique, la photorésistance retourne le même résultat peu importe qu'il fasse nuit noire où qu'on soit en plein soleil! 

En ce qui me concerne, il s'agit d'un autre gaspillage des broches GPIO de l'ESP32 (la broche GPIO 34 dans ce cas)!

Brancher un capteur à une broche GPIO disponible

Les entrées/sorties disponibles sont rares, et étrangement conçues. Un connecteur JST nommé "CN1" permet d'accéder à GND, GPIO 22, GPIO 27 et 3,3 V.  Un  autre connecteur du même genre, nommé P3, permet d'accéder à GND, GPIO 35, GPIO 22 et GPIO 21.

...Sauf que la broche GPIO 21 contrôle le rétroéclairage de l'écran, ce qui la rend à peu près inutilisable pour toute autre fonction (pourquoi les concepteurs l'ont-ils rendue accessible?). La broche GPIO 22 est accessible à deux endroits différents, et la broche GPIO 35 peut uniquement servir comme entrée. 

Si on met de côté les broches d'alimentation (GND et 3,3V), il ne nous reste que trois broches utilisables: GPIO 22, GPIO 27 et GPIO 35! C'est bien peu!

Vous désirez brancher un capteur I2C? C'est faisable, en utilisant les broches du connecteur CN1. Mais puisque la broche 27 n'est généralement pas utilisée pour les communications I2C, il faut la désigner explicitement à l'intérieur de notre programme ce qui, encore une fois, complique inutilement la programmation (il sera parfois nécessaire de modifier une bibliothèque pour que ça fonctionne).

Conclusion

Le produit est certainement intéressant, malgré quelques lacunes irritantes.


Yves Pelletier


À lire également: