Data logging is een cruciaal aspect van veel IoT-, milieu-monitoring- en sensor-gebaseerde projecten. Met een Arduino en een SD-kaartmodule sensorgegevens, tijdstempels en andere metingen opslaan voor toekomstige analyse. Deze gids laat u zien hoe u connecteer een SD-kaartmodule naar Arduino, gegevens schrijven en lezen, en veelvoorkomende problemen oplossen.
1. Wat u nodig hebt
✅ Arduino-board (Uno, Mega, Nano, etc.)
✅ Micro SD-kaartmodule (op SPI-basis)
✅ MicroSD-kaart (FAT32-geformatteerd, 2GB–32GB aanbevolen)
✅ Jumperdraden
✅ Sensoren (optioneel, bijv. DHT11, BMP280, enz.)
🔹 Opmerking: De SD-module communiceert met Arduino via SPI (Serial Peripheral Interface).
2. Bedrading van de SD-kaartmodule 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) |
| SCKk | 13 (SPI SCK) | 52 (SPI SCK) |
| CS (Chip Select) | 10 (SPI CS) | 53 (SPI CS) |
3. De vereiste bibliotheek installeren
- Open Arduino IDE.
- Ga naar Sketch → Bibliotheek toevoegen → Bibliotheken beheren.
- Zoeken naar SD installeer de SD Library van Arduino.
4. De SD-kaart initialiseren (testen of de SD-module werkt)
Gebruik het volgende basistestcode om te controleren of de SD-module werkt:
#include
#include
const int chipSelect = 10; // Stel CS-pin in voor SD-kaart
void setup() {
Serial.begin(115200);
Serial.print("SD-kaart initialiseren...");
if (!SD.begin(chipSelect)) {
Serial.println("Initialisatie SD-kaart mislukt!");
return;
}
Serial.println("SD-kaart is gereed.");
}
void loop() {
// Hier niets
}
Wat deze code doet:
✔ Initialiseert de SD-module.
SD-kaart is gereed indien gedetecteerd.
SD-kaart initialisatie mislukt! als er een fout optreedt.
🔹 Problemen oplossen:
✅ Controleer of de SD-kaart FAT32 geformatteerd.
✅ Zorg voor correcte bedrading (MISO, MOSI, SCK en CS).
✅ Probeer een andere CS-pin (bijv. 4 in plaats van 10) update de code.
5. Gegevens naar de SD-kaart schrijven
Dit voorbeeld maakt een bestand aan (data.txt) and writes sensor readings to it.
#include
#include
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD-kaart initialisatie mislukt!");
return;
}
File dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("Hallo, dit is een testlog!");
dataFile.close();
Serial.println("Gegevens naar SD-kaart geschreven.");
} else {
Serial.println("Fout bij het openen van bestand.");
}
}
void loop() {
// Niets hier
}
Wat deze code doet:
✔ Maakt of opent data.txt.
✔ Schrijft "Hallo, dit is een testlog!" aan het bestand.
✔ Sluit het bestand na het schrijven.
🔹 Bestandsbeheerfuncties:
✔ SD.open("filename.txt", FILE_WRITE); → Open bestand om te schrijven.
✔ dataFile.println("Tekst"); → Gegevens naar bestand schrijven.
✔ dataFile.close(); → Sluit het bestand om gegevens op te slaan.
6. Gegevens lezen van de SD-kaart
Gebruik deze code om gegevens van de SD-kaart lezen en weergeven.
#include
#include
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("Initialisatie SD-kaart mislukt!");
return;
}
File dataFile = SD.open("data.txt");
if (dataFile) {
Serial.println("Bestand lezen...");
while (dataFile.available()) {
Serial.write(dataFile.read()); // Bestandsinhoud afdrukken
}
dataFile.close();
} else {
Serial.println("Openen van bestand mislukt.");
}
}
void loop() {
// Hier gebeurt niets
}
Wat deze code doet:
✔ Opent data.txt om te lezen.
✔ Drukt de inhoud van het bestand af op Serial Monitor.
🔹 Tip: Zorg ervoor dat het bestand bestaat al voor het lezen om fouten te voorkomen.
7. Sensorgegevens registreren op de SD-kaart
Dit voorbeeld registreert temperatuur- en vochtigheidsgegevens van een DHT11-sensor.
Required componenten
✅ DHT11 temperatuur- & vochtigheidssensor
✅ DHT-bibliotheek (Adafruit DHT Sensor Library)
Bedrading voor DHT11-sensor
| DHT11-pin | Arduino Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| DATA | 2 |
Code: DHT11-gegevens registreren op een SD-kaart
#include
#include
#include
#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-kaart initialisatie mislukt!");
return;
}
}
void loop() {
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temp) || isnan(humidity)) {
Serial.println("Mislukt om van DHT-sensor te lezen!");
return;
}
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Temperatuur: ");
dataFile.print(temp);
dataFile.print(" °C, Luchtvochtigheid: ");
dataFile.print(humidity);
dataFile.println(" %");
dataFile.close();
} else {
Serial.println("Mislukt om naar SD-kaart te schrijven.");
}
Serial.print("Geregistreerd: Temp = ");
Serial.print(temp);
Serial.print(" °C, Luchtvochtigheid = ");
Serial.println(humidity);
delay(2000); // Log elke 2 seconden
}
Wat deze code doet:
✔ Leest temperatuur & vochtigheid van de DHT11-sensor.
✔ Registreert de gegevens in log.txt op de SD-kaart.
✔ Drukt de waarden af naar Serial Monitor.
8. Tips voor probleemoplossing
Probleem: SD-kaart niet gedetecteerd?
✅ Zorg ervoor dat de SD-kaart FAT32 geformatteerd.
✅ Dubbelchecken MISO-, MOSI-, SCK- en CS-bedrading.
✅ Probeer een andere SD-kaart (sommige kaarten zijn niet compatibel).
Probleem: Worden de gegevens niet opgeslagen?
✅ Altijd sluit het bestand met behulp van dataFile.close();.
✅ Zorg voor voldoende opslagruimte is beschikbaar op de SD-kaart.
9. Praktische toepassingen
✔ Weather-monitoringsysteem – Registreer temperatuur, luchtvochtigheid en luchtdruk.
✔ Energy-monitoring – Opnemen spanning en stroom readings over time.
✔ GPS-tracking breedtegraad en lengtegraad gegevens van een gps-module.
✔ Gebeurtenisregistratie – Registreer sensortriggers of knopdrukken.
10. Conclusie
Met behulp van een SD-kaartmodule met Arduino is een geweldige manier om sensorgegevens opslaan, gebeurtenissen registreren of een draagbare datalogger maken. Met SPI-communicatie bestanden lezen en schrijven IoT- en automatiseringsprojecten.
