Gegevenslogging is een cruciaal aspect van velen IoT, milieumonitoring en op sensor gebaseerde projecten. Met een Arduino en een SD -kaartmodule, je kan Bewaar sensorgegevens, tijdstempels en andere lezingen voor toekomstige analyse. Deze gids laat je zien hoe je het moet Sluit een SD -kaartmodule aan op Arduino, Schrijf en lees gegevens en lost problemen op met veel voorkomende problemen.
1. Wat je nodig hebt
✅ Arduino Board (Uno, mega, nano, enz.)
✅ Micro SD-kaartmodule (SPI-gebaseerd)
✅ MicroSD -kaart (FAT32 geformatteerd, 2 GB - 32 GB aanbevolen)
✅ Jumper draden
✅ Sensoren (optioneel, bijvoorbeeld DHT11, BMP280, enz.)
🔹 Opmerking: De SD -module communiceert met Arduino met behulp van SPI (seriële perifere interface).
2. De SD -kaartmodule bedraden naar Arduino
SD -kaartmodule -pin | Arduino Uno Pin | 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. De vereiste bibliotheek installeren
- Open Arduino IDE.
- Gaan naar Sketch → Baten Library → Bibliotheken beheren.
- Zoeken naar SD en installeer de SD -bibliotheek door Arduino.
4. De SD -kaart initialiseren (test als SD -module werkt)
Gebruik het volgende basistestcode Om te controleren of de SD -module werkt:
#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
}
Wat deze code doet:
✔ Initialiseert de SD -module.
✔ Afdrukken "SD -kaart is klaar" indien gedetecteerd.
✔ Afdrukken "SD -kaartinitialisatie is mislukt!" Als er een fout is.
🔹 Problemen oplossen:
✅ Controleer of de SD -kaart is FAT32 geformatteerd.
✅ Ervoor zorgen Correcte bedrading (Miso, Mosi, SCK en CS).
✅ Probeer nog een CS Pin (bijv. 4 in plaats van 10) en update de code.
5. Gegevens schrijven naar de SD -kaart
Dit voorbeeld Maakt een bestand (data.txt
) en schrijft er sensorwaarden aan.
#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
}
Wat deze code doet:
✔ Creëert of opent data.txt
.
✔ Schrijft "Hallo, dit is een testlogboek!" naar het bestand.
✔ Sluit het bestand na het schrijven.
🔹 Functies voor het afhandelen van bestanden:
✔ SD.open("filename.txt", FILE_WRITE);
→ Bestand openen voor schrijven.
✔ dataFile.println("Text");
→ Gegevens schrijven naar bestand.
✔ dataFile.close();
→ Sluit het bestand om gegevens op te slaan.
6. Gegevens lezen van de SD -kaart
Gebruik deze code voor Lees en toon gegevens van de SD -kaart.
#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
}
Wat deze code doet:
✔ Geopend data.txt
voor lezen.
✔ Drukt de inhoud van het bestand af aan Serie -monitor.
🔹 Tip: Zorg ervoor dat het bestand Bestaat voordat u leest om fouten te voorkomen.
7. Gegevens inloggen sensor naar de SD -kaart
Dit voorbeeld registreert Temperatuur- en vochtigheidsgegevens van een DHT11 -sensor.
Vereiste componenten
✅ DHT11 Temperatuur- en vochtigheidssensor
✅ DHT Library (Adafruit DHT Sensor Library)
Bedrading voor DHT11 -sensor
Dht11 pin | Arduino Pin |
---|---|
VCC | 5V |
GND | GND |
GEGEVENS | 2 |
CODE: DHT11 -gegevens inloggen op SD -kaart
#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
}
Wat deze code doet:
✔ Leest Temperatuur en vochtigheid van de DHT11 -sensor.
✔ Logt de gegevens in log.txt
op de SD -kaart.
✔ Drukt de waarden af op Serie -monitor.
8. Tips voor probleemoplossing
Probleem: SD -kaart niet gedetecteerd?
✅ Zorg ervoor dat de SD -kaart is FAT32 geformatteerd.
✅ Controle Miso, Mosi, SCK en CS -bedrading.
✅ Poging Een andere SD -kaart (Sommige kaarten zijn onverenigbaar).
Probleem: Gegevens niet opslaan?
✅ Altijd Sluit het bestand gebruik dataFile.close();
.
✅ Ervoor zorgen genoeg opslagruimte is beschikbaar op de SD -kaart.
9. Praktische toepassingen
✔ Weerbewakingssysteem - Logtemperatuur, vochtigheid en luchtdruk.
✔ Energiemonitoring - Dossier spanning en stroom Metingen in de loop van de tijd.
✔ GPS -tracking - Winkel breedtegraad en lengte Gegevens van een GPS -module.
✔ Gebeurtenislogboekregistratie - Record sensor -triggers of knoopdrukken.
10. Conclusie
Een SD -kaartmodule met Arduino is een geweldige manier om Bewaar sensorgegevens, loggebeurtenissen of maak een draagbare datalogger maken. Met SPI -communicatie, je kunt gemakkelijk Lees en schrijf bestanden, waardoor het ideaal is voor IoT- en automatiseringsprojecten.