An adatnaplózás kulcsfontosságú szempont számos IoT-, környezetvédelmi megfigyelő és szenzoralapú projektek. Egy Arduino és egy SD-kártya modul tárolja a szenzoradatokat, időbélyegeket és egyéb mérési eredményeket a jövőbeli elemzésekhez. Ez az útmutató bemutatja, hogyan kell csatlakoztasson egy SD-kártya modul az Arduinohoz, adatok írása és olvasása, valamint a gyakori problémák hibaelhárítása.
1. Amire szüksége lesz
✅ Arduino kártya (Uno, Mega, Nano stb.)
✅ Micro SD-kártya modul (SPI-alapú)
✅ MicroSD-kártya (FAT32 formátumú, 2GB–32GB ajánlott)
✅ Mérőzsinórok
✅ Szenzorok (opcionális, pl. DHT11, BMP280, stb.)
🔹 Megjegyzés: Az SD-modul az Arduino-val a következő módon kommunikál: SPI (Serial Peripheral Interface).
2. A huzalozás SD-kártya modul az Arduinohoz
| SD-kártya modul Pin | Arduino Uno kivezetés | Arduino Mega láb |
|---|---|---|
| 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. A szükséges könyvtár telepítése
- Megnyitás Arduino IDE.
- Ugrás ide: Vázlat → Könyvtár hozzáadása → Könyvtárak kezelése.
- Keresés: SD SD Library by Arduino.
4. Az SD-kártya inicializálása (Az SD-modul működésének tesztelése)
Use the following alapvető tesztkód az SD-modul működésének ellenőrzéséhez:
c
#include
#include
const int chipSelect = 10; // CS pin beállítása az SD-kártyához
void setup() {
Serial.begin(115200);
Serial.print("SD-kártya inicializálása...");
if (!SD.begin(chipSelect)) {
Serial.println("Az SD-kártya inicializálása sikertelen!");
return;
}
Serial.println("Az SD-kártya készen áll.");
}
void loop() {
// Itt nincs semmi
}
Mit csinál ez a kód:
✔ Inicializálja a SD modul.
✔ Nyomatok An SD-kártya készen áll ha észlelhető.
✔ Nyomatok SD-kártya inicializálása sikertelen! hiba esetén.
🔹 Hibaelhárítás:
✅ Ellenőrizze, hogy az SD-kártya FAT32 formátumú.
✅ Biztosítsa helyes bekötés (MISO, MOSI, SCK és CS).
✅ Próbáljon ki egy másikat CS láb (pl. 4 a 10 helyett)
5. Adatok írása az SD-kártyára
Ez a példa létrehoz egy fájlt (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 kártya inicializálása sikertelen!");
return;
}
File dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
dataFile.println("Hello, ez egy teszt napló!");
dataFile.close();
Serial.println("Adatok kiírva az SD kártyára.");
} else {
Serial.println("Fájl megnyitása sikertelen.");
}
}
void loop() {
// Itt nincs semmi
}
Mit csinál ez a kód:
data.txt.
✔ Írja Hello, ez egy tesztnapló! a fájlhoz.
✔ Írás után bezárja a fájlt.
🔹 Fájlkezelő függvények:
✔ SD.open("filename.txt", FILE_WRITE); → Fájl megnyitása írásra.
✔ java
dataFile.println("Szöveg"); → Adatok írása fájlba.
✔ dataFile.close(); → Az adatok mentéséhez zárja be a fájlt.
6. Adatok olvasása az SD-kártyáról
Használja ezt a kódot a adatok olvasása és megjelenítése az SD-kártyáról.
#include
#include
const int chipSelect = 10;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD kártya inicializálása sikertelen!");
return;
}
File dataFile = SD.open("data.txt");
if (dataFile) {
Serial.println("Fájl olvasása...");
while (dataFile.available()) {
Serial.write(dataFile.read()); // Fájltartalom kiírása
}
dataFile.close();
} else {
Serial.println("Nem sikerült megnyitni a fájlt.");
}
}
void loop() {
// Ide nem kerül semmi
}
Mit csinál ez a kód:
data.txt az olvasáshoz.
✔ Kinyomtatja a fájl tartalmát ide: Serial Monitor.
🔹 Tipp: Győződjön meg arról, hogy a fájl olvasás előtt létezik az hibák elkerülése érdekében.
7. Szenzoradatok mentése az SD-kártyára
Ez a példa naplózza hőmérsékleti és páratartalom-adatok egy DHT11 érzékelőből.
Szükséges összetevők
✅ DHT11 hőmérséklet- és páratartalom-szenzor
✅ DHT Library (Adafruit DHT Sensor Library)
DHT11 érzékelő bekötése
| DHT11 lábkiosztás | Arduino Pin |
|---|---|
| VCC | 5V |
| GND | GND |
| DATA | 2 |
Kód: DHT11 adatok mentése SD-kártyára
c
#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-kártya inicializálása sikertelen!");
return;
}
}
void loop() {
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temp) || isnan(humidity)) {
Serial.println("Nem sikerült olvasni a DHT szenzorból!");
return;
}
File dataFile = SD.open("log.txt", FILE_WRITE);
if (dataFile) {
dataFile.print("Hőmérséklet: ");
dataFile.print(temp);
dataFile.print(" °C, Páratartalom: ");
dataFile.print(humidity);
dataFile.println(" %");
dataFile.close();
} else {
Serial.println("Nem sikerült írni az SD-kártyára.");
}
Serial.print("Naplózva: Hőm = ");
Serial.print(temp);
Serial.print(" °C, Páratartalom = ");
Serial.println(humidity);
delay(2000); // Log every 2 seconds
}
Mit csinál ez a kód:
✔ Olvasás hőmérséklet és páratartalom -ből a DHT11 szenzor.
✔ Adatok naplózása itt: log.txt az SD-kártyán.
✔ Kinyomtatja az értékeket ide: Serial Monitor.
8. Hibaelhárítási tippek
Probléma: Nem észlelhető az SD-kártya?
✅ Győződjön meg arról, hogy az SD-kártya FAT32 formátumú.
✅ Ellenőrzés MISO, MOSI, SCK és CS bekötés.
✅ Próbálja ki egy másik SD-kártya (egyes kártyák nem kompatibilisek).
Probléma: Nem mentődnek az adatok?
✅ Mindig fájl bezárása használatával dataFile.close();.
✅ Biztosítsa elegendő tárhely elérhető az SD-kártyán.
9. Gyakorlati alkalmazások
✔ Időjárás-megfigyelő rendszer – Hőmérséklet, páratartalom és légnyomás rögzítése.
✔ Energy Monitoring feszültség és áramerősség readings over time.
✔ GPS nyomkövetés szélesség és hosszúság adatok egy GPS-modulból.
✔ Eseménynaplózás
10. Összegzés
Használatával egy SD-kártya modul Arduino-val nagyszerű módja annak, hogy tárolhat szenzoradatokat, naplózhat eseményeket, vagy készíthet hordozható adatnaplózót. A(z) SPI-kommunikáció, könnyedén fájlok olvasása és írása, így ideális a IoT és automatizálási projektek.
