Bonjour à tous,
Je cherche à faire un thermomètre avec
-une sonde Pt100
un affichage SSD1306 (en fait l'afficheur d'un Heltec ESP32
enregistrement des mesures (avec heure) sur une carte SD
J'utilise la carte Adafruit MAX 31865 et la bibliothèque Adafruit
J'affiche sans problème la température et l'heure.
La carte SD s'initialise bien mais (comme je m'y attendais...) , les deux ensemble ne fonctionnent pas.
La carte SD fonctionne mais pas la Max31865 (erreur de mesure Under/Over voltage
J'ai utilisé les sorties VSPI (SCLK 18, MISO 19,MOSI 23, ) pour les deux cartes
Le CS de la SD est sur la GPIO5 et le CS de la MAX 31865 sur la GPIO2
J'ai monté une résistance pull-up de 47 K sur les lignes MOSI et MISO
J'ai bien déclaré les broches GPIO2 et GPIO5 comme sortie
Pouvez-vous m'aider ?
Grand merci d'avance
Référence du module pour carte SD utilisé si l'embase SD n'est pas sur la carte ESP32 ?
Un lien vers la carte ESP32 Heltec utilisée ne serait pas superflu !
(Heltech comme Ttgo, a la manie de multiplier les modèles de caretes et leurs versions successives)
Il est peut être du genre ne pas "laisser les autres s'exprimer" sur MISO.
Une recherche sur le forum permettarit sans doute de tomber sur les cas précédents
(erreur de conception du module , pas de mise en haute impédance de MISO quand il n'est pas sélectionné)
Le symptôme le plus visible : à l'oscilloscope la pin 12 MISO est tirée à ZÉRO par le W5100, quelque soit la position de son CS.
Quand j'essaie d'initialiser la SD La pin MISO ne dépasse pas 800 mV.
Il faut que je débranche le MISO du W5100 pour que la SD soit vue.
Il faut absolument initialiser la carte Ethernet si l'on désire utiliser la SdCard seule, et initialiser la SD ensuite.
Et cela suffit. La pin MISO remonte. Je pense qu'avec un Ethernet shield avec SD intégrée, on doit avoir le même problème.
Un dernier problème : La carte SD ne s'initialise pas toujours.
Après raccourcissement des fils du SPI, toujours le même problème.
Solution : un condensateur 10µF entre VCC et GND du module SD.
C'est un exemple avec une carte Ethernet mais cela peut constituer une piste.
les modules SD à problème sont ceux conçus par Catalex et leurs clones
il en a été question à plusieurs reprises sur ce forum et d'autres forums : https://forum.arduino.cc/index.php?topic=595428.0
Bonjour à tous,
Merci pour votre intérêt.
Je n'ai pas oublié deux résistances pull-up de 47 K sur les lignes MOSI et MISO
Le module Heltec ESP32 : WiFi Kit 32 (Phaseout) – Heltec Automation
La carte SD : pas de référence particulière (couleur verte avec l'indication MH-SD Card Module, trouvée sur le Net je ne sais plus où ....
Je vais essayer
de démarrer la carte MAX avant le module SD
de changer de module SD
la résistance de 470 ohm en série sur la ligne MISO en provenance de la carte SD
oursgenial:
J'ai utilisé les sorties VSPI (SCLK 18, MISO 19,MOSI 23, ) pour les deux cartes
Le CS de la SD est sur la GPIO5 et le CS de la MAX 31865 sur la GPIO2
(...)
Bonjour,
S'il te reste le HSPI et des broches de libres, tu peux scinder le problème
note que les périphériques VSPI et HSPI peuvent être reliés à (presque) n'importe quelle broche de l'esp32
donc il y a peut-être une autre solution : mettre les 2 MISO des modules sur 2 pins différentes de l'ESP32, et router le périphérique SPI, cad. le MISO de l'esp32, vers l'une ou l'autre pin selon le besoin ...
-démarrer la carte MAX avant le module SD : ça ne marche pas
de changer de module SD : ça ne marche pas
la résistance de 470 ohm en série sur la ligne MISO en provenance de la carte SD :ça ne marche pas.
Je vais essayer de changer la broche MISo de la SD
Je ne suis pas sûr que les ports HSPI soient disponibles sur cette carte. Elles ne sont pas documentées
sur le plan "pinout" : https://heltec.org/project/wifi-kit-32/
A propos de la mémoire flash : je ne comprends pas
A bientôt
Un ESP32 (le soc) est incapable de travailler seul sans l'accompagnement d'une mémoire externe Flash reliée en SPI (pas de mémoire Flash DANS un ESP32, juste de la RAM et un peu de ROM)
Elle se fait oublier sous le capot d'un module......mais sans elle l'ESP32 ne peut pas faire grand chose faute de code d'application à exécuter
les deux bus SPI apparaissent également sur le brochage de la carte :
de changer de module SD : ça ne marche pas
si les divers modules SD testés présentent le même défaut de conception...
Un oscilloscope ou un petit analyseur logique sont utiles pour voir ce qui se passe sur le bus SPI
al1fch:
il faut dans ce cas tenir compte de la présence de la mémoire Flash SPI sur l'un des deux bus il me semble
non, il y a 4 périphériques SPI dans l'esp32 ; les 2 1ers sont "normalement" dédiés à la flash, les 2 autres, HSPI et VSPI peuvent être utilisés sans entrave
il y a 2 matrices pour acheminer les lignes des périphériques vers les pins : la 1ère les relie aux pins par défaut, la 2ème permet de les relier sur n'importe quel pin, moyennant une petite perte de vitesse
J'ai essayé le conseil de trimarco232 : j'ai mis les MISO, MOSI, CLK des deux modules sur des pins différentes .
SPI: CS, DI, DO, CLK
SD : 5, 23,19, 18
Adafruit(2, 13, 12, 14);
A nouveau, ils marchent séparément mais pas ensemble. C'est le module Adafruit qui ne fonctionne pas.
C'est le VSPI
Je ne sais pas comment faire appel au HSPI (15,13,12,14)
J'ai un sketch "exemple" (voir pièce jointe) mais je ne sais pas comment m'en servir (maigres compétences insuffisantes).
l'exemple doit fonctionner
pour le hspi, si tu veux utiliser les pins par défaut, (cad SCLK = 14, MISO = 12, MOSI = 13 et SS = 15), tu appelles juste : hspi->begin();
si tu veux mettre le CS sur la pin 2, faut tout lui dire : hspi->begin(14,12,13,2);
bien entendu, dans la suite il ne faut pas se tromper de périphérique dans le code :
Bonjour,
Merci pour ta réponse. Mon sketch fait appel à des bibliothèques (SD,SPI,MAX31865).
Je pense qu'elles démarrent le VSPI.
Je me dis qu'il faut les bidouiller pour qu'elles utilisent le HSPI ?
Cela dépasse très largement mes compétences.
J'ai contourné le problème en postant les résultats directement sur une GoogleSheet en utilisant l'article de Yves Pelletier (Électronique en amateur: Envoi de données de l'ESP32 / ESP8266 vers Google Sheets)
Donc, mon problème est résolu. En plus, je ne dois pas lire ma SD dans Excel.
Mais j'aimerais comprendre. Le principe des 3 connexions (MOSI,MISO,CLK) communs et génial.
Pourquoi cela ne marche pas chez moi ?
oursgenial:
Bonjour,
Merci pour ta réponse. Mon sketch fait appel à des bibliothèques (SD,SPI,MAX31865).
Je pense qu'elles démarrent le VSPI. c'est dans doute le SPI par défaut
Je me dis qu'il faut les bidouiller pour qu'elles utilisent le HSPI ? oui, il faut initialiser les 2 périphériques avant de pouvoir les utiliser
Cela dépasse très largement mes compétences. pour l'instant ...
J'ai contourné le problème en postant les résultats directement sur une GoogleSheet en utilisant l'article de Yves Pelletier (Électronique en amateur: Envoi de données de l'ESP32 / ESP8266 vers Google Sheets) lien marche pas
Donc, mon problème est résolu. bien ! En plus, je ne dois pas lire ma SD dans Excel.
oursgenial:
Mais j'aimerais comprendre. Le principe des 3 connexions (MOSI,MISO,CLK) communs et génial.
Pourquoi cela ne marche pas chez moi ? mystère : avec la résistance, ça devait marcher
Le lien est un peu capricieux..
Tape Électronique en amateur: mai 2020 et cherche dans mai 2020 envoi de données de l'ESP32 (c'est le dernier de la colonne)