Comment interfacer le module de carte MicroSD avec ESP32 à l'aide de l'IDE Arduino

Comment Interfacer Le Module De Carte Microsd Avec Esp32 A L Aide De L Ide Arduino



ESP32 est une carte microcontrôleur avancée qui peut interfacer différents nombres de périphériques. Comme d'autres capteurs, vous pouvez également interfacer le module de carte MicroSD avec l'ESP32. Vous pouvez utiliser le capteur de la carte MicroSD pour les applications d'enregistrement de données ou augmenter la capacité de stockage de votre carte microcontrôleur.

Cet article expliquera les étapes d'interfaçage d'une carte MicroSD avec une carte ESP32 à l'aide de l'IDE Arduino.

Table des matières:







1. Module de carte MicroSD



2. Comment interfacer l'ESP32 avec le module de carte MicroSD



3. Matériel





4. Coder

5. Sortie



6. Exécution de différentes fonctions sur la carte MicroSD à l'aide de ESP32

Conclusion

1. Module de carte MicroSD

Le module de carte MicroSD est un capteur ESP32 qui permet de connecter la carte SD à votre carte microcontrôleur. Il fonctionne via le protocole de communication SPI. Il permet à l'ESP32 ou à toute autre carte microcontrôleur comme Arduino d'accéder aux données stockées sur la carte SD via le protocole SPI.

La tension de fonctionnement du module de carte SD est de 3,3 V, il n'est donc pas possible de le connecter directement à l'ESP32 ou à toute autre carte microcontrôleur. Pour cela, nous devons utiliser le module de carte SD ou le capteur qui fonctionne sur 5V.

1.1. Brochage

La carte MicroSD comporte un total de six broches. Deux d'entre elles sont des broches d'alimentation : VCC et GND. Pendant la lecture, quatre broches sont utilisées pour le protocole de communication SPI. Voici les détails de chacune de ces six broches :

Broches d'alimentation :

  • VCC : Se connecte à la broche ESP32 5V.
  • GND : Se connecte à la broche de masse (GND) de l'ESP32.

Broches SPI :

  • MISO: (Master In Slave Out) Se connecte à la broche ESP32 MOSI (Master Out Slave In).
  • FUMÉE: Se connecte à la broche ESP32 MISO (Master In Slave Out).
  • SCK : Se connecte à la broche ESP32 SCK (Serial Clock).
  • SS : (Slave Select) Se connecte à la broche spécifiée dans le code Arduino comme broche SS (Slave Select).

2. Comment interfacer l'ESP32 avec le module de carte MicroSD

Pour interfacer l'ESP32 avec le module de carte MicroSD, vous devrez configurer les broches d'alimentation du capteur de votre carte SD. Ensuite, configurez les broches SPI. Ici, vous avez deux choix : vous pouvez soit définir les broches SPI par défaut, soit définir vos propres broches SPI personnalisées.

Lors de l'utilisation des broches SPI par défaut, nous allons ajouter le SD.h. et SD_MMC.h bibliothèques. Par défaut, ces bibliothèques prennent les broches VSPI SPI (23, 19, 18, 5) pour la communication SPI. Cependant, vous pouvez également définir d'autres broches pour la communication SPI.

L'ESP32 contient deux interfaces SPI HSPI et VSPI avec leurs broches détaillées comme suit :

IPS FUMÉE MISO CLK CS
VSPI D23 J19 J18 D5
HSPI J13 J12 J14 J15

En rapport: Référence de brochage ESP32 – Un guide complet

2.2. Préparez la carte SD

Ensuite, avant de pouvoir procéder à la lecture et à l'écriture de données sur une carte MicroSD, vous devez d'abord la configurer en formatant toutes les données précédentes qu'elle contient.

Ouvrez votre carte SD à l'aide de n'importe quel lecteur de carte et format il.

Sélectionnez le FAT32 pour le système de fichiers de votre carte et cliquez sur Commencer .

Après avoir formaté la carte, sélectionnez D'ACCORD .

Votre carte SD est maintenant prête à être interfacée avec l'ESP32 à l'aide du module carte SD.

2.3. Diagramme schématique

Pour connecter le capteur de la carte MicroSD à l'ESP32, suivez la configuration ci-dessous :

Voici le tableau de configuration des broches du fil de connexion :

Carte Micro SD ESP32
GND GND
VCC VIENS
CS D5
FUMÉE D23
SCK J18
MISO J19

3. Matériel

Pour le matériel, vous avez juste besoin de quelques câbles de liaison, d'une planche à pain ainsi que d'un ESP32 et d'un module de carte SD.

4. Coder

Nous allons maintenant écrire un code qui créera un fichier texte à l'intérieur de la carte MicroSD et après cela, il y écrira une chaîne de texte. Une fois cela fait, nous lirons le contenu du fichier texte sur le moniteur série Arduino IDE.

Démarrez Arduino IDE et compilez le code donné. Après cela, gravez-le sur votre carte ESP32 :

#include

#include

Fichier monFichier ;
const int CS = 5 ;

// Écrit le message donné dans un fichier au chemin spécifié
vide Écrire un fichier ( const carboniser * chemin , const carboniser * message ) {
// Ouvre le fichier. Il prend en charge un fichier à ouvrir à la fois
// ferme l'autre fichier avant d'ouvrir un nouveau fichier
mon fichier = DAKOTA DU SUD. ouvrir ( chemin , FILE_WRITE ) ;

si ( mon fichier ) {
En série. imprimer ( 'Écrire à %s ' , chemin ) ;
mon fichier. imprimer ( message ) ;
mon fichier. fermer ( ) ; // Ferme le fichier
En série. imprimer ( 'complété.' ) ;
} autre {
En série. imprimer ( 'Erreur à l'ouverture du fichier' ) ;
En série. imprimer ( chemin ) ;
}
}

// Imprimer le contenu du fichier au chemin spécifié
vide Lire le fichier ( const carboniser * chemin ) {
// Fichier ouvert
mon fichier = DAKOTA DU SUD. ouvrir ( chemin ) ;
si ( mon fichier ) {
En série. imprimer ( 'Lecture du fichier à partir de %s \n ' , chemin ) ;
// Lit le fichier complet jusqu'à atteindre le dernier
alors que ( mon fichier. disponible ( ) ) {
En série. écrire ( mon fichier. lire ( ) ) ;
}
mon fichier. fermer ( ) ; // Ferme le fichier
} autre {
// Si le fichier ne parvient pas à s'ouvrir, affiche une erreur :
En série. imprimer ( 'erreur d'ouverture de test.txt' ) ;
}
}

vide installation ( ) {
En série. commencer ( 9600 ) ;
retard ( 500 ) ;
alors que ( ! En série ) { ; }

En série. imprimer ( 'Initialisation de la carte SD...' ) ;
si ( ! DAKOTA DU SUD. commencer ( CS ) ) {
En série. imprimer ( 'Initialisation échouée!' ) ;
retour ;
}
En série. imprimer ( 'Initialisation terminée.' ) ;

Écrire un fichier ( '/test.txt' , 'Linuxhint.com' ) ;
Lire le fichier ( '/test.txt' ) ;
}

vide boucle ( ) {

}

4.1. Explication du code

Pour une meilleure compréhension, nous diviserons ce code en sous-parties.

Initialisation et configuration : Tout d’abord, le code a commencé par inclure quelques bibliothèques importantes liées au module de carte SD. La bibliothèque SPI.h est ajoutée pour la communication avec la carte SD et SD.h pour gérer les opérations de la carte SD. Ensuite, il définit une variable globale mon fichier de type fichier pour gérer les opérations sur les fichiers. La constante CS est définie sur la broche 5, qui sera utilisée comme broche Chip Select (CS) pour la carte SD.

Fonction Configuration() : Dans la fonction de configuration, la communication série est démarrée. Après cela, nous avons initialisé le module de carte SD à l'aide de la fonction SD.begin(CS). De plus, nous avons également défini deux fonctions différentes pour lire et écrire du texte dans un fichier texte.

Écrire sur la carte SD : La fonction WriteFile() ouvre le fichier test.txt pour l'écriture à l'aide de SD.open(path, FILE_WRITE). Après cela, il écrit la chaîne Linuxhint.com dans le fichier en utilisant myFile.println(message).

Lecture depuis la carte SD : Pour lire le contenu du fichier, nous avons utilisé la fonction ReadFile(). En cas de lecture réussie, les données seront envoyées au port série Arduino et affichées sur le moniteur série Arduino IDE.

5. Sortie

Dans la sortie, vous pouvez voir la même chaîne que celle que nous avons définie dans le code Arduino IDE s'affiche sur votre moniteur série Arduino IDE.

6. Exécution de différentes fonctions sur la carte MicroSD à l'aide de ESP32

Nous pouvons effectuer diverses opérations telles que la création, la suppression ou l'ajout de répertoires sur les cartes MicroSD directement via le code Arduino IDE.

6.1. Création de répertoires sur une carte MicroSD

Le code ci-dessous créera un nouveau répertoire à l'intérieur de la carte MicroSD. Il définit une fonction appelée createDir qui prend un objet système de fichiers (fs::FS) et un chemin en entrée. Cette fonction tente de créer un répertoire avec le chemin spécifié et imprime des messages indiquant le succès ou l'échec.

#include 'FS.h'

#inclure 'SD.h'

#include 'SPI.h'

vide createDir ( fs :: FS & fs , const carboniser * chemin ) {

En série. imprimer ( 'Création du répertoire : %s \n ' , chemin ) ;

si ( fs. mkdir ( chemin ) ) {

En série. imprimer ( 'Dir créé' ) ;

} autre {

En série. imprimer ( 'mkdir a échoué' ) ;

}

}

vide installation ( ) {



En série. commencer ( 115200 ) ;

// Initialise la carte SD

si ( ! DAKOTA DU SUD. commencer ( ) ) {

En série. imprimer ( 'Échec du montage de la carte' ) ;

retour ;

}

// Crée un répertoire nommé 'monrép'

createDir ( Dakota du Sud , '/monrépertoire' ) ;

}

vide boucle ( ) {



}

Dans la sortie, vous pouvez voir qu'un nouveau répertoire est créé avec /monrép nom.

6.2. Liste des répertoires sur la carte MicroSD

Dans le code ci-dessous, nous allons lister tous les répertoires présents à l'intérieur de la carte MicroSD. Le listDir La fonction répertorie de manière récursive le contenu d’un répertoire sur une carte SD. Il imprime des informations sur les répertoires (préfixés par « DIR ») et les fichiers (préfixés par « FILE »), y compris leurs noms et tailles.

#include 'FS.h'
#inclure 'SD.h'
#include 'SPI.h'

vide listDir ( fs :: FS & fs , const carboniser * nom de répertoire , uint8_t les niveaux ) {
En série. imprimer ( 'Répertoire de liste : %s \n ' , nom de répertoire ) ;
Racine du fichier = fs. ouvrir ( nom de répertoire ) ;
si ( ! racine ) {
En série. imprimer ( 'Échec de l'ouverture du répertoire' ) ;
retour ;
}
si ( ! racine. estRépertoire ( ) ) {
En série. imprimer ( 'Pas un répertoire' ) ;
retour ;
}
Fichier fichier = racine. ouvrir le fichier suivant ( ) ;
alors que ( déposer ) {
si ( déposer. estRépertoire ( ) ) {
En série. imprimer ( ' TOI : ' ) ;
En série. imprimer ( déposer. nom ( ) ) ;
si ( les niveaux ) {
listDir ( fs , déposer. nom ( ) , les niveaux - 1 ) ;
}
} autre {
En série. imprimer ( ' DÉPOSER: ' ) ;
En série. imprimer ( déposer. nom ( ) ) ;
En série. imprimer ( ' TAILLE: ' ) ;
En série. imprimer ( déposer. taille ( ) ) ;
}
déposer = racine. ouvrir le fichier suivant ( ) ;
}
}

vide installation ( ) {
En série. commencer ( 115200 ) ;
si ( ! DAKOTA DU SUD. commencer ( ) ) {
En série. imprimer ( 'Échec du montage de la carte' ) ;
retour ;
}
listDir ( Dakota du Sud , '/' , 0 ) ;
}

vide boucle ( ) {

}

En sortie, vous pouvez voir deux fichiers différents. L’un est un fichier texte et l’autre est un répertoire que nous avons créé dans le code précédent.

6.3. Suppression de répertoires

Nous allons maintenant supprimer les répertoires et fichiers texte précédemment créés. Pour cela nous allons utiliser le supprimerRep fonction, il tentera de supprimer un répertoire spécifié par le chemin. En cas de succès, il imprime Répertoire supprimé ; sinon, il s'imprime échec du répertoire rm .

#include 'FS.h'
#inclure 'SD.h'
#include 'SPI.h'

vide supprimerRep ( fs :: FS & fs , const carboniser * chemin ) {
En série. imprimer ( 'Suppression du répertoire : %s \n ' , chemin ) ;
si ( fs. est rm ( chemin ) ) {
En série. imprimer ( 'Répertoire supprimé' ) ;
} autre {
En série. imprimer ( 'échec du rmdir' ) ;
}
}

vide installation ( ) {
En série. commencer ( 115200 ) ;

si ( ! DAKOTA DU SUD. commencer ( ) ) {
En série. imprimer ( 'Échec du montage de la carte' ) ;
retour ;
}


}

vide boucle ( ) {

}

6.4. Obtenir le type de carte MicroSD

Carte MicroSD ou S sécurisé D La carte numérique a été conçue à l'origine par l'association des cartes SD et conçue pour être utilisée dans des appareils portables tels que les smartphones et les appareils photo. Les cartes SD contiennent principalement quatre types de familles :

  • SDSC (SD de capacité standard) : Ces cartes offrent une gamme modeste de capacité de stockage de 2 Go et utilisent les systèmes de fichiers FAT-12 et FAT-16.
  • SDHC (SD haute capacité) : Ces cartes vont de 2 Go à 32 Go et utilisent le système de fichiers FAT-32.
  • SDXC (SD à capacité étendue) : Ces cartes utilisent le système de fichiers exFAT et vont de 32 Go à 2 To.
  • SDIO : Les cartes SDIO remplissent un double objectif en combinant le stockage de données avec les fonctions INPUT/OUTPUT.

Pour vérifier le type de votre carte, exécutez le code ci-dessous :

#include 'FS.h'
#inclure 'SD.h'
#include 'SPI.h'

vide installation ( ) {
En série. commencer ( 115200 ) ;

si ( ! DAKOTA DU SUD. commencer ( ) ) {
En série. imprimer ( 'Échec du montage de la carte' ) ;
retour ;
}

uint8_t type de carte = DAKOTA DU SUD. type de carte ( ) ;
si ( type de carte == CARD_NONE ) {
En série. imprimer ( 'Aucune carte SD connectée' ) ;
retour ;
}

En série. imprimer ( 'Type de carte SD : ' ) ;
si ( type de carte == CARD_MMC ) {
En série. imprimer ( 'MMC' ) ;
} autre si ( type de carte == CARD_SD ) {
En série. imprimer ( 'SDSC' ) ;
} autre si ( type de carte == CARD_SDHC ) {
En série. imprimer ( 'SDHC' ) ;
} autre {
En série. imprimer ( 'INCONNU' ) ;
}

uint64_t Taille de la carte = DAKOTA DU SUD. Taille de la carte ( ) / ( 1024 * 1024 ) ;
En série. imprimer ( 'Taille de la carte SD : %lluMB \n ' , Taille de la carte ) ;
}

vide boucle ( ) {
}

Comme j'ai une carte de 32 Go, vous voyez qu'elle se situe dans la gamme des SDHC cartes.

6.5. Obtenir la taille de la carte MicroSD

Vous pouvez également obtenir la taille de la carte SD en téléchargeant le code ci-dessous sur votre carte ESP32.

#include 'FS.h'
#inclure 'SD.h'
#include 'SPI.h'

vide installation ( ) {
En série. commencer ( 115200 ) ;

si ( ! DAKOTA DU SUD. commencer ( ) ) {
En série. imprimer ( 'Échec du montage de la carte' ) ;
retour ;
}

uint8_t type de carte = DAKOTA DU SUD. type de carte ( ) ;
si ( type de carte == CARD_NONE ) {
En série. imprimer ( 'Aucune carte SD connectée' ) ;
retour ;
}

uint64_t Taille de la carte = DAKOTA DU SUD. Taille de la carte ( ) / ( 1024 * 1024 ) ;
En série. imprimer ( 'Taille de la carte SD : %lluMB \n ' , Taille de la carte ) ;

// D'autres fonctions (listDir, createDir, RemoveDir, etc.) peuvent être appelées ici
}

vide boucle ( ) {

}

D'après la sortie, vous pouvez voir que j'ai une carte SD d'environ 30 Go.

Conclusion

Un module de carte MicroSD est utilisé pour lire et écrire les données de la carte SD à l'aide de la carte ESP32. Le module de carte MicroSD communique avec le microcontrôleur en utilisant l'interface SPI. Vous pouvez donc soit utiliser la bibliothèque SPI, soit définir vos propres broches SPI dans le code. Une fois connecté, vous pouvez lire, écrire un fichier texte, ou créer de nouveaux répertoires sur votre carte SD.