L'exploitation des données avec Arduino et un module de carte SD

Data Logging with Arduino and an SD Card Module

L'enregistrement des données est un aspect crucial de nombreux IoT, surveillance environnementale et projets basés sur les capteurs. Avec un Arduino et un module de carte SD, tu peux Stocker les données du capteur, les horodatages et autres lectures pour une analyse future. Ce guide vous montrera comment Connectez un module de carte SD à Arduino, Écrivez et lisez des données et dépannez les problèmes communs.


1. Ce dont vous avez besoin

Conseil d'administration d'Arduino (Uno, Mega, Nano, etc.)
Module de carte micro SD (basé sur SPI)
Carte microSD (FAT32 FORMATET, 2 Go - 32 Go recommandé)
Fils de cavalier
Capteurs (facultatif, par exemple, DHT11, BMP280, etc.)

🔹 Note: Le module SD communique avec Arduino en utilisant SPI (interface périphérique en série).


2. Câblage du module de carte SD à Arduino

Broche de module de carte SD Épingle arduino uno Arduino Mega Pin
VCC 5V 5V
GND GND GND
Miso 12 (SPI MISO) 50 (SPI MISO)
Mosi 11 (Spi Mosi) 51 (Spi Mosi)
SCK 13 (SPI SCK) 52 (SPI SCK)
CS (Chip Select) 10 (SPI CS) 53 (SPI CS)

3. Installation de la bibliothèque requise

  1. Ouvrir Arduino ide.
  2. Aller à Sketch → Inclure la bibliothèque → Gérer les bibliothèques.
  3. Rechercher SD et installer le Bibliothèque SD par Arduino.

4. Initialisation de la carte SD (test si le module SD fonctionne)

Utilisez ce qui suit Code de test de base Pour vérifier si le module SD fonctionne:

#include <SPI.h>
#include <SD.h>

const int chipSelect = 10;  // Set CS pin for SD card

void setup() {
    Serial.begin(115200);
    Serial.print("Initializing SD card...");

    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
    Serial.println("SD card is ready.");
}

void loop() {
    // Nothing here
}

Ce que fait ce code:

✔ Initialise le Module SD.
✔ Tirages "La carte SD est prête" si détecté.
✔ Tirages "L'initialisation de la carte SD a échoué!" S'il y a une erreur.

🔹 Dépannage:
✅ Vérifiez que la carte SD est FAT32 formaté.
✅ Assurer câblage correct (Miso, Mosi, SCK et CS).
✅ Essayez un autre PIN CS (par exemple, 4 au lieu de 10) et mettre à jour le code.


5. Écrire des données sur la carte SD

Cet exemple crée un fichier (data.txt) et y écrit des lectures de capteurs.

#include <SPI.h>
#include <SD.h>

const int chipSelect = 10;  

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
    
    File dataFile = SD.open("data.txt", FILE_WRITE);
    if (dataFile) {
        dataFile.println("Hello, this is a test log!");
        dataFile.close();
        Serial.println("Data written to SD card.");
    } else {
        Serial.println("Failed to open file.");
    }
}

void loop() {
    // Nothing here
}

Ce que fait ce code:

✔ Crée ou ouvre data.txt.
✔ Écrit "Bonjour, c'est un journal de test!" au fichier.
✔ Ferme le fichier après avoir écrit.

🔹 Fonctions de traitement des fichiers:
SD.open("filename.txt", FILE_WRITE); → Ouvrir le fichier pour l'écriture.
dataFile.println("Text"); → Écrivez des données dans le fichier.
dataFile.close(); → Fermez le fichier pour enregistrer les données.


6. lire les données de la carte SD

Utilisez ce code pour lire et afficher les données de la carte SD.

#include <SPI.h>
#include <SD.h>

const int chipSelect = 10;

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }

    File dataFile = SD.open("data.txt");
    if (dataFile) {
        Serial.println("Reading file...");
        while (dataFile.available()) {
            Serial.write(dataFile.read());  // Print file content
        }
        dataFile.close();
    } else {
        Serial.println("Failed to open file.");
    }
}

void loop() {
    // Nothing here
}

Ce que fait ce code:

✔ Ouvrir data.txt pour lire.
✔ Imprime le contenu du fichier à Moniteur en série.

🔹 Conseil: Assurez-vous que le fichier existe avant de lire pour éviter les erreurs.


7. Données du capteur de journalisation à la carte SD

Cet exemple de journaux Données de température et d'humidité d'un capteur DHT11.

Composants requis

Capteur de température et d'humidité du DHT11
Bibliothèque DHT (bibliothèque de capteurs DHT Adafruit)

Câblage pour le capteur DHT11

Broche DHT11 Épingle arduino
VCC 5V
GND GND
DONNÉES 2

Code: journalisation des données DHT11 à la carte SD

#include <SPI.h>
#include <SD.h>
#include <DHT.h>

#define DHTPIN 2      // Pin connected to DHT sensor
#define DHTTYPE DHT11 // Define sensor type (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE);

const int chipSelect = 10;

void setup() {
    Serial.begin(115200);
    dht.begin();

    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
}

void loop() {
    float temp = dht.readTemperature();
    float humidity = dht.readHumidity();

    if (isnan(temp) || isnan(humidity)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }

    File dataFile = SD.open("log.txt", FILE_WRITE);
    if (dataFile) {
        dataFile.print("Temperature: ");
        dataFile.print(temp);
        dataFile.print(" °C, Humidity: ");
        dataFile.print(humidity);
        dataFile.println(" %");
        dataFile.close();
    } else {
        Serial.println("Failed to write to SD card.");
    }

    Serial.print("Logged: Temp = ");
    Serial.print(temp);
    Serial.print(" °C, Humidity = ");
    Serial.println(humidity);

    delay(2000);  // Log every 2 seconds
}

Ce que fait ce code:

✔ Lecture température et humidité de Capteur DHT11.
✔ Enregistre les données dans log.txt sur la carte SD.
✔ Imprime les valeurs à Moniteur en série.


8. Conseils de dépannage

Problème: Carte SD non détectée?
✅ Assurez-vous que la carte SD est Fat32 formaté.
✅ Revérifier Câblage Miso, Mosi, SCK et CS.
✅ Essayer une carte SD différente (certaines cartes sont incompatibles).

Problème: Les données n'enregistrent pas?
✅ Toujours Fermez le fichier en utilisant dataFile.close();.
✅ Assurer Assez d'espace de stockage est disponible sur la carte SD.


9. Applications pratiques

Système de surveillance météorologique - Logation de la température, de l'humidité et de la pression de l'air.
Surveillance de l'énergie - Enregistrer tension et courant lectures au fil du temps.
Suivi GPS - Magasin latitude et longitude Données d'un module GPS.
Journalisation de l'événement - Enregistrer les déclencheurs du capteur ou les pressions de bouton.


10. Conclusion

En utilisant un Module de carte SD avec Arduino est un excellent moyen de stocker les données du capteur, enregistrer des événements ou créer un enregistreur de données portable. Avec Communication SPI, tu peux facilement Lire et écrire des fichiers, ce qui le rend idéal pour IoT et projets d'automatisation.

Laissez un commentaire

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.