Utilisation écran TFT avec carte SD.

Bonjour à toutes et tous;
Je débute avec Arduino, et je me trouve face au problème suivant :
J'ai le projet de faire une mini station météo avec un écran 1.8 pouce. J'ai donc acheté l'écran et il possède un emplacement pour une carte micro SD. Voilà l'écran
Pour l'instant j'ai un code qui fonctionne correctement, c'est à dire que j'arrive à afficher sur l'écran les données collectées par un DHT22 (température et humidité).
La phase suivante serait de pouvoir enregistrer sur une carte micro SD ces données. Et c'est là que j'ai plusieurs questions.

  • Puis-je écrire sur la carte micro SD présente avec l'écran, ou bien cette carte micro SD ne peut être utilisée seulement en lecture pour afficher une image seulement?
  • Si je peux écrire sur la carte, pourriez-vous m'indiquer comment connecter les 4 pins correspondants à la carte (MISO, SCLK, MOSI, CS). Le branchement de l’écran est réalisé, est utilise certains pins qui à ma compréhension devrait aussi être utilisé par la carte.

Dites moi si vous avez besoin de plus de détails. J'espère que le lien que j'ai mis fonctionnera.

Dans l'attente de vous lire je vous remercie d'avance et vous souhaite une bonne soirée à toutes et tous.

Puis-je écrire sur la carte micro SD présente avec l'écran, ou bien cette carte micro SD ne peut être utilisée seulement en lecture pour afficher une image seulement?

Au vu de ce que je vois, il y a sur la carte deux fonctions complètement indépendantes, un écran d'un côté et un lecteur de carte de l'autre. Il n'y a que l'alimentation de commun.
Le ST7735 n'est pas capable d'afficher tout seul des images, elle ne peut donc pas être pour que le contrôleur affiche quoi que se soit.

Le lecteur est utilisable exactement comme si c'était une carte indépendante. A partir de la la carte Arduino peut lire la carte, calculer l'image et l'envoyer à l'afficheur ou l'inverse. On peut aussi stocker des données n'ayant aucun rapport avec l'afficheur...

Si je peux écrire sur la carte, pourriez-vous m'indiquer comment connecter les 4 pins correspondants à la carte (MISO, SCLK, MOSI, CS). Le branchement de l'écran est réalisé, est utilise certains pins qui à ma compréhension devrait aussi être utilisé par la carte.

Il faut brancher effectivement MISO de la carte sur MISO de l'Arduino, et pareillement pour SCLK, MOSI, CS!
A priori, je pense que l'on peut mettre du 5V, la carte SD fonctionnant en 3,3V. Il y a des résistances série sur les fils. Mais je n'ai pas vraiment de certitudes sauf l'indication dans la pub "compatible Arduino".

Bonsoir;
Merci Vileroi pour ta réponse.
Donc si je résume, et si j'ai compris (là c'est pas si évident :slight_smile: ) je peux utiliser le lecteur de carte SD indépendamment de l'écran.
Donc je dois charger la librairie SD pour pouvoir l'utiliser.

Par contre pour les branchements là je coince. En effet Certains pins nécessaire pour la carte SD sont déjà pris, par le montage que j'ai fait, pour l'écran. Je pense à MOSI, MSIO, SCLK, CS, qui sont déjà des pins utilisés pour l'écran.
Voici une copie du projet dans l'ensemble venant d'un internaute. J'ai respecté à la lettre les branchements concernant l'écran. Je n'ai pas encore mis en place le relais ni la connexion vers l'aérateur.

Existe-t-il une autre manière de câbler l'écran, pour permettre la connexion du lecteur de SD?

Je voudrais pouvoir enregistrer les valeurs de l'humidité sur SD pour pouvoir analyser le taux d'humidité qui déclenchera la mise en route de l'extracteur.

Désolé si mes explications et demandes ne semblent pas très claires, mais je débute.

Voilà.
Bonne soirée à toutes et tous.

Bonsoir

Par contre pour les branchements là je coince. En effet Certains pins nécessaire pour la carte SD sont déjà pris, par le montage que j'ai fait, pour l'écran. Je pense à MOSI, MSIO, SCLK, CS, qui sont déjà des pins utilisés pour l'écran.

pour décoincer voilà une petite image pour montrer le câblage de composants sur un bus SPI (CS/SS est particulier à chaque périphérique, MOSI, MISO et SCLK sont communs)

bus SPI.png

bus SPI.png

Donc si je résume, et si j'ai compris (là c'est pas si évident :) ) je peux utiliser le lecteur de carte SD indépendamment de l'écran.

Exact.

Donc je dois charger la librairie SD pour pouvoir l'utiliser.

A priori l'écran doit l'utiliser, mais tu doit être obligé de la charger pour ton programme. La broche SS peut être choisie librement

pour un UNO, NANO ou promini avec la biblio SD il vaut mieux utiliser la pin 10 pour CS, et ne pas l'utilser autre part
quant aux autres lignes SPI en 5V provenant de l'arduino :resistance de 220 ohms en série pour les lignes arrivant au st7735, la R2 de 220 relié au +Vcc doit etre pour les leds backlight, resistance de 10 ohms (marqué 100) en série pour le SPI SD, je suis sceptique et quand on lit dans description :
"La communication en série I2C est adoptée."

celui-ci avec convertisseur 5-3v3 74hc541, la commande du retroeclairage par transistor, le reg 3v3 plus puissant

Bonjour à toutes et tous;
Je vous remercie pour vos réponses, et je vais essayer de comprendre comment faire.
Et je peux vous dire que c'est pas gagné d'avance.

Vileroi : En fait l'écran n'utilise pas la librairie SD, mais je devrais l'ajouter pour utiliser la carte SD.
Ce qui me pose problème est de comprendre où brancher les câbles utilisés par ce lecteur de carte SD.

Al1fch : En fait si je comprends bien ton schéma cela veut dire que l'écran et le lecteur de carte sont tous les deux des "Slaves" dans mon cas. Est-ce correct?
Quant je regarde la dénomination des pins de l'écran je n'ai que le pin "CS" qui soit présent pour chaque élément. 1 "CS" pour l'écran et 1 "CS" pour le lecteur de carte.
C'est principalement ce branchement qui me pose problème.
J'ai utilisé le pin 10 pour le "CS" de l'écran, OK pour un branchement sur UNO. Pour le "CS" du lecteur de carte puis-je le connecter sur un autre pin, et le déclarer dans mon programme?

Je reviendrais vers vous si je ne trouve pas la solution.

Merci et bonne journée à toutes et tous.

Ce qui me pose problème est de comprendre où brancher les câbles utilisés par ce lecteur de carte SD.

réponse:

(CS/SS est particulier à chaque périphérique, MOSI, MISO et SCLK sont communs)

MOSI, MISO et SCLK etant communs; Tous les MOSI sont reliés ensembles, tous les MISO sont reliés ensembles, tous les SCLK sont reliés ensembles, par conte les SS doivent avoir une broche différente pour chacun d'eux.
Pour le lecteur de SD, si la broche 10 est prise et si tu as une Uno/Nano/Minipro, tu brend n'imporet quelle broche E/S, au moment de l'initialisation elle sera déclarée par [SD.begin(cspin)](http://file:///C:/Program Files (x86)/Arduino/reference/www.arduino.cc/en/Reference/SDbegin.html)

aux autres lignes SPI en 5V provenant de l'arduino

On voit sur la photo de l'écran les résistances série pour la SD.

Bonjour Vileroi, et merci pour ton aide.
Donc si je comprends bien ce que tu me dis:
En fait je n'ai que la broche CS à connecter sur un pin de l’Arduino. Genre pin 3 et faire un define de ce pin dans mon programme, ou seul le SD.begin le fera pour moi ?
Sans m'occuper des autres broches du lecteur de carte SD.

Pour être honnête cela me semble bizarre mais en tant que débutant je ne dois m'étonner de rien.
Merci et bonne soirée.

En fait je n'ai que la broche CS à connecter sur un pin de l'Arduino. Genre pin 3 et faire un define de ce pin dans mon programme, ou seul le SD.begin le fera pour moi ?
Sans m'occuper des autres broches du lecteur de carte SD.

Non, il faut bien connecter les 3 autres broches aussi. J'ai un problème, n'ayant jamais essayé les écrans séries. Pourquoi l'écran n'est-il pas sur les broches SDA SCL de l'Uno? Il est tout a fait possible de partager toutes les broches sauf les SS. Si on veut avoir accès à l'écran, c'est la broche SS de l'écran que l'on met à LOW et celle de la SD à HIGH. La bibliothèque SD ne gère pas le niveau de SS. Pour faire une lecture, ce sera à toi de positionner correctement les deux broches SS.

Si SS est sur la pin 3, il faut la définir en sortie, et la mettre à LOW pour faire les lectures/écritures. Pour les trois autres pins, c'est la bibliothèque qui se charge de faire ce qu'il faut y compris des initialisations. Mais si MOSI est mis en entrée par le gestionnaire de l'écran, cela risque de ne pas marcher. Il vaut mieux déplacer l'écran sur d'autres broches.

Bonjour;
Merci Vileroi pour tes explications, je vais revoir tous les branchements, et essayer de connecter l'écran sur les broches SDA et SCL de l'Arduino. Ce sont celles qui sont en haut à la suite des broches 2 à 13 ?

Bref je vais essayer de repartir de zéro, et voir ce que cela donne.

En tous cas merci pour ta gentillesse, et ton temps passé à essayer de me faire comprendre quelque chose.
Bonne journée à toi.

Je reviendrai dire comment cela s'est fini.

SDA et SCL de l'Arduino. Ce sont celles qui sont en haut à la suite des broches 2 à 13 ?

diamétralement opposées:

Attention pas de méprise avec les noms de signaux, l'écran possède une interface SPI pas I2C.
SDA ==> MOSI
SCL ==> SCLK
Le "schéma" en #2 était bon pour l'écran.

mea culpa : je vous ai induit en erreur, je voulais faire remarquer que le vendeur du lien aliexp n'était pas tres crédible dans sa description du produit :

"La communication en série I2C est adoptée." ce qui est completement faux, chose que je n'ai pas précisé
alors "compatible UNO en 5v ?" : s'il suffisait de mettre des résistances en série sur les lignes data du TFT et du lecteur SD pour faire un convertisseur 5-3v3 pourquoi beaucoup d'autres installent un 4050, 74lv125, 74hc541 pour le meme produit final ?

le vendeur du lien aliexp n'était pas très crédible dans sa description du produit

Je constate aussi des erreurs de la part du fabricant à propos des écrans.

s'il suffisait de mettre des résistances en série sur les lignes data du TFT et du lecteur SD pour faire un convertisseur 5-3v3 pourquoi beaucoup d'autres installent un 4050, 74lv125, 74hc541 pour le meme produit final ?

C'est bien ce qui est fait sur ton écran, on voit bien ces fameuses résistances:

C'est aussi ce que j'ai sur une carte lecteur SD, sur laquelle il n'y a comme circuit que le régulateur 3V3. pour passr de V à 3,3V, on passe aussi par des résistances:

Pour moi la réponse est dans "pourquoi faire simple quand on peut faire compliqué?". Si un circuit est en 3,3V et que l'on a un signal en 5V, en mettent une résistance en série, à l'état bas, pas de problème. Si on envoie un état haut de 5V, il va y avoir un courant partant de la source traversant la résistance et passant par la diode de protection du lecteur SD:
R.gif

Les puristes ne veulent pas "bidouiller" et ne veulent pas utiliser la diode de protection pour limiter le courant. Les "bricoleurs du dimanche" se disent autant en profiter. Deux écoles se défendent, mais ne se mettent pas d'accord.
C'est un peu comme si en finissant de refaire électricité de la maison, il te manque 1m de fil rouge pour une phase, mais qu'il te reste 15m de fil bleu. Certains vont mettre le fil bleu, d'autre vont acheter une bobine de 10m de fil rouge. Qui a raison?

R.gif

d'apres le schema du lecteur sd lcstudio les résistances 10k sur la carte sont cablées en pull-up
perso je n'ai jamais utilisé de tft+sdcard avec carte arduino 5 volts en me contentant des résistances séries.

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