Le lecteur de carte mémoire Micro SD ajoute une mémoire à un montage : il permet à un Arduino, un ESP32 ou tout autre microcontrôleur de lire et d’écrire des fichiers sur une carte Micro SD. Mesures horodatées, journaux de données, images, fichiers de configuration — tout ce qui ne tient pas dans la mémoire interne se range sur la carte et se relit ensuite sur un ordinateur.
Le module communique en SPI, le bus le plus rapide d’un microcontrôleur, et se branche directement sur ses broches SPI. Un régulateur 3,3 V embarqué alimente la carte, qui ne supporte pas 5 V : c’est le module qui s’en charge, pas vous.
Caractéristiques techniques
| Cartes acceptées | Micro SD jusqu’à 2 Go, Micro SDHC jusqu’à 32 Go — formatage FAT16 ou FAT32 |
|---|---|
| Interface | SPI standard : MISO, MOSI, SCK et CS |
| Alimentation | VCC de 4,5 à 5,5 V continu — le 5 V de l’Arduino convient |
| Consommation | 0,2 à 200 mA selon l’écriture en cours |
| Régulation | Régulateur 3,3 V embarqué, qui alimente la carte Micro SD |
| Niveaux logiques | Interface annoncée 3,3 V et 5 V, avec conversion de niveau sur la carte |
| Broches | 6 broches mâles sérigraphiées, au pas de 2,54 mm |
| Fixation | 4 trous pour vis M2, aux coins de la carte |
Brochage : six broches, un seul bus
Les six broches sont sérigraphiées sur la carte et portent les noms du bus SPI :
| GND | La masse. À relier au GND du microcontrôleur — c’est la référence commune, sans laquelle rien ne fonctionne. |
|---|---|
| VCC | L’alimentation. À relier au 5 V d’un Arduino, ou au 3,3 V d’un ESP32 : le module accepte les deux. |
| MISO | Les données qui partent de la carte vers le microcontrôleur (Master In, Slave Out). |
| MOSI | Les données qui partent du microcontrôleur vers la carte (Master Out, Slave In). |
| SCK | L’horloge du bus, générée par le microcontrôleur. |
| CS | La sélection du module. C’est la seule broche que vous choisissez librement : n’importe quelle sortie numérique fait l’affaire. |
MISO, MOSI et SCK ne se choisissent pas : ce sont les broches matérielles du bus SPI du microcontrôleur. Sur un Arduino Uno ou un Nano, elles sont fixes — MISO en 12, MOSI en 11, SCK en 13. Seule la broche CS se déclare dans le programme, et c’est elle qui désigne le module quand plusieurs périphériques partagent le même bus.
Câblage sur un Arduino Uno
Module VCC | → Arduino 5V |
|---|---|
Module GND | → Arduino GND |
Module MISO | → Arduino D12 |
Module MOSI | → Arduino D11 |
Module SCK | → Arduino D13 |
Module CS | → Arduino D10 |
Les broches du module sont mâles : elles se piquent directement sur une plaque d’essai. Pour rejoindre les broches femelles d’un Arduino, il faut des fils femelle-femelle — l’extrémité femelle se clipse sur le module, l’autre sur la carte.
Mini-projet : un enregistreur de mesures
Le montage le plus utile avec ce module consiste à noter une mesure toutes les deux secondes dans un fichier, puis à relire ce fichier sur un ordinateur après une nuit d’enregistrement.
Ce qu’il faut
| La mémoire | Le lecteur Micro SD de cette page, avec une carte formatée en FAT32 |
|---|---|
| Le cerveau | Uno R3 + câble USB |
| La mesure | Capteur de température LM35, sur l’entrée analogique A0 |
| Les liaisons | Une plaque d’essai et des fils femelle-femelle |
Le câblage
Le module se câble comme au tableau précédent. On ajoute le capteur : sa sortie sur A0, son alimentation sur 5V, sa masse sur GND. La LED de la carte Arduino (broche 13) sert de témoin : on l’allume pendant l’écriture, pour voir que la carte travaille.
Le programme
À copier dans l’IDE Arduino, puis à téléverser. La bibliothèque SD est fournie avec l’IDE, il n’y a rien à installer.
/*
* Enregistreur de mesures sur carte Micro SD
* Carte : Arduino Uno R3
* Module : lecteur Micro SD en SPI (VCC, GND, MISO, MOSI, SCK, CS)
* Capteur : LM35 sur l'entree analogique A0
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "SD.h"
#include "SPI.h"
const byte PIN_CS = 10; // broche Chip Select du module
const byte PIN_LED = 13; // LED temoin d'ecriture
const char FICHIER[] = "MESURES.TXT";
bool cartePrete = false;
unsigned int numero = 0;
void setup() {
pinMode(PIN_LED, OUTPUT);
Serial.begin(9600);
// SD.begin() monte la carte et initialise le bus SPI.
// Elle renvoie true si la carte a repondu : c'est le controle
// indispensable avant d'ecrire quoi que ce soit.
cartePrete = SD.begin(PIN_CS);
if (cartePrete) {
Serial.println("Carte SD prete.");
} else {
Serial.println("Carte absente, non formatee en FAT32, ou mal cablee.");
}
}
void loop() {
if (cartePrete) {
enregistrer();
}
delay(2000); // une mesure toutes les deux secondes
}
void enregistrer() {
numero = numero + 1;
long lecture = analogRead(A0); // 0 a 1023
long millivolts = (lecture * 5000) / 1024; // tension lue, en millivolts
long dixiemes = millivolts / 10; // le LM35 donne 10 mV par degre
File fichier = SD.open(FICHIER, FILE_WRITE); // FILE_WRITE complete le fichier
if (fichier) {
digitalWrite(PIN_LED, HIGH);
fichier.print(millis() / 1000); // secondes ecoulees depuis le demarrage
fichier.print(" s ; mesure ");
fichier.print(numero);
fichier.print(" ; ");
fichier.print(dixiemes / 10); // partie entiere
fichier.print(",");
fichier.print(dixiemes % 10); // dixieme de degre
fichier.println(" degres C");
fichier.close();
digitalWrite(PIN_LED, LOW);
Serial.println("Mesure enregistree.");
} else {
Serial.println("Ecriture impossible : verifiez la carte SD.");
}
}Comment ça marche
SD.begin(PIN_CS)monte la carte et rendtruesi elle répond. C’est le seul contrôle vraiment indispensable : sur un montage qui écrit sans vérifier, une carte mal enfoncée donne un programme qui tourne dans le vide sans rien enregistrer.SD.open(FICHIER, FILE_WRITE)ouvre le fichier en écriture à la fin : chaque nouvelle mesure s’ajoute aux précédentes au lieu de les écraser. C’est ce qui permet d’enchaîner plusieurs sessions sur la même carte.fichier.close()n’est pas facultatif. Tant que le fichier reste ouvert, ce qui vient d’être écrit peut rester en mémoire et disparaître si l’Arduino est mis hors tension. Fermez à chaque mesure.- Le fichier créé s’appelle
MESURES.TXTet se lit dans n’importe quel tableur après avoir retiré la carte du module. Une ligne par mesure, les valeurs séparées par des points-virgules.
Vérifier que ça fonctionne
Ouvrez le moniteur série à 9600 bauds. Au démarrage, le message « Carte SD prete. » doit apparaître. S’il affiche l’autre message, la cause est presque toujours l’une de ces trois : la carte n’est pas enfoncée jusqu’au déclic, elle est formatée en exFAT ou en NTFS, ou MISO et MOSI ont été inversés. Le format des fichiers se vérifie en branchant la carte sur un ordinateur.
Pour aller plus loin
Avec millis(), l’horodatage ne donne que le temps écoulé depuis la mise sous tension. Pour des dates et des heures réelles — et pour garder la bonne heure même après une coupure — ajoutez une horloge temps réel DS3231, branchée sur deux autres broches de l’Arduino : elle tient l’heure à la seconde près, la garde par une petite pile même après une coupure, et se relit au démarrage pour horodater chaque ligne du fichier.
Questions fréquentes
Faut-il une carte Micro SD ou une carte SD ?
Micro SD. Le support du module est un logement à ressort pour carte Micro SD (et Micro SDHC), pas un logement grand format. Une carte Micro SDHC jusqu’à 32 Go suffit largement : un fichier texte de mesures pèse quelques kilo-octets par jour.
La carte SD ne supporte que 3,3 V, est-ce un risque ?
Non, grâce au régulateur embarqué : la tension d’entrée est ramenée à 3,3 V sur la carte, et l’interface logique du module est annoncée compatible 3,3 V comme 5 V. C’est précisément pour cela qu’on utilise ce module plutôt qu’un simple support de carte soudé sur une plaque à trous : un support nu alimenté en 5 V détruirait la carte.
Puis-je l’utiliser sur un ESP32 ou un ESP8266 ?
Oui. Reliez VCC au 3,3 V et non au 5 V, et gardez les mêmes broches SPI. C’est le montage habituel d’un enregistreur connecté : la carte stocke les mesures, le module Wi-Fi les envoie. La carte wifi NodeMCU V3 Lua ESP8266 convient pour ce type de projet, avec l’alimentation en 3,3 V.
Pourquoi le programme n’écrit-il rien alors qu’il compile ?
Vérifiez dans cet ordre : la carte est-elle formatée en FAT32, la broche CS du programme correspond-elle au câblage (D10 sur un Uno), et le module est-il bien alimenté ? Un module alimenté par la sortie 3,3 V d’un Arduino Uno fonctionne mal : cette sortie fournit peu de courant, alors qu’une écriture peut demander jusqu’à 200 mA. Prenez le 5 V.
Peut-on brancher plusieurs modules SPI en même temps ?
Oui. MISO, MOSI et SCK se partagent entre tous les périphériques SPI ; chacun garde sa propre broche CS. Le programme prend soin de n’activer qu’une seule broche CS à la fois, ce que fait la bibliothèque SD pour vous — mais il faut penser à mettre la broche CS des autres modules au repos.
À combiner avec
Si vous débutez, le KIT Starter contient déjà la carte Uno R3, une plaque d’essai et les fils : en y ajoutant ce lecteur et une carte Micro SD, l’enregistreur de cette page se monte en quelques minutes. Commencez par une carte en FAT32 plutôt qu’une grande capacité : c’est le format que la bibliothèque SD gère le plus sûrement.









